কোডিং এবং রক্ষণাবেক্ষণের সময় নোট, চিন্তাভাবনা, অ্যালগরিদম, সিদ্ধান্তগুলি লিখে রাখা কি স্বাভাবিক / গ্রহণযোগ্য? [বন্ধ]


22

কিছু লোকের এই সমস্যা রয়েছে যা তারা শব্দ ছাড়া চিন্তা করতে পারে না। এবং তাদের চিন্তাভাবনা এবং সিদ্ধান্তগুলি লিখে রাখাই এগিয়ে যাওয়ার সবচেয়ে কার্যকর উপায়।

সুতরাং - এটি কি স্বাভাবিক এবং গ্রহণযোগ্য যে আমি কোডিংয়ের সময় কিছু নোটপ্যাড ++ ফাইলে আমার চিন্তাভাবনা এবং সিদ্ধান্তগুলি লিখে রাখি?

কখনও কখনও এটি গ্রহণযোগ্য হওয়া উচিত, যেমন প্রযুক্তিগত ডকুমেন্টেশনগুলি পুনরায় তৈরি করার সময় বা আরও জটিল অ্যালগরিদমগুলি সম্পর্কে যুক্তি দেখানোর সময়, তবে কখনও কখনও এটি অদ্ভুত হতে পারে, উদাহরণস্বরূপ যখন আমি ডিজাইনের বিকল্পগুলি বিবেচনা করছি এবং রায় দেওয়ার চেষ্টা করছি।

উত্পাদনশীলতার উপর এই অনুশীলনের প্রভাব অস্পষ্ট। এক দিক থেকে - অভ্যন্তরীণ শব্দের সাথে যুক্তি লিখিত শব্দের চেয়ে দ্রুত হতে পারে। অন্য দিক থেকে - আরও জটিল সমস্যার জন্য লেখার প্রয়োজন। তদ্ব্যতীত, যদি কেউ আরও ডিজাইনের বিকল্পগুলির সাথে আটকে থাকে, তবে সিদ্ধান্তটি লিখিত হলে অনুভূতি আরও ভাল হয়, তাই এটি মনোবলকে বাড়িয়ে তোলে।


5
আমি এটি করারও প্রবণতা রাখি এবং সাধারণত যখন আমি না করি তখন অনুশোচনা করি। আপনি নির্দিষ্ট উপায়ে কেন কিছু করেছেন তা স্মরণে রাখার জন্য, বা টানেলের দৃষ্টিশক্তি নিয়ে আপনি যখন কনুইয়ের গভীরে নন তখন পরে কোনও সিদ্ধান্ত নিতে সক্ষম হবেন এটি পরে সত্যই সহায়ক। আমি যখন কিছু উল্লেখ করতে ভুলে যাই তখন আমি সাধারণত কেন তা ভুলে যাই এবং তারপরে আমার পদক্ষেপগুলি সন্ধান করতে আরও সময় ব্যয় করি।
সিউডোপাইচে

21
আমার মনে হচ্ছে আমরা প্রসঙ্গে কিছুটা মিস করছি? এই পর্যবেক্ষণ দক্ষতার কাছাকাছি অভিযোগ করা হয়েছিল? প্রায়শই, সমালোচনা মূল কারণের জন্য পরামর্শের সাথে আসে যা প্রাসঙ্গিক হতে পারে বা নাও পারে।
জিম রাশ

9
"মন্তব্য এবং ডকুমেন্টেশন" সোর্স কোডটিতে লিখে রাখা উচিত। নকশার বিকল্পগুলি বিবেচনা করার বিষয়ে আপনার চিন্তাভাবনাগুলি লিখিত হতে পারে তবে সাধারণত তা রাখা হয় না, এটি এমন জিনিস যা খুব কমই আপনাকে পরে সাহায্য করবে (আপনি যদি সেই উত্স কোড থেকে নিজেই পরিষ্কার না হন তবে আপনি সেই চিন্তা প্রক্রিয়াটির ফলাফলগুলি সম্পর্কে নোট রাখতে পারেন, তবে যা আপনি জিজ্ঞাসা করেছিলেন তা নয়)। আপনি যদি কোনও ইলেকট্রনিক ফর্ম, একটি পেন্সিল এবং কাগজ-ফর্ম পছন্দ করেন বা আপনি যদি নিজের মাথায় এই সব করতে পারেন তবে আপনার উপর নির্ভর করে, অন্য কেউ নয় তবে আপনি কী বলতে পারেন এটি আপনার পক্ষে সবচেয়ে ভাল।
ডক ব্রাউন

4
... পিএস: আমি সাধারণত পেনসিল এবং কাগজ বা এই জিনিসগুলির জন্য একটি সাদা বোর্ড পছন্দ করি এবং আমি মনে করি আমি যদি আমার মাথায় এইগুলি করার চেষ্টা করি তবে আমি এর থেকে বিপরীত একটি ভাল প্রোগ্রামার হয়ে উঠব না।
ডক ব্রাউন

7
কেন এটি গ্রহণযোগ্য হবে না? কার কাছে গ্রহণযোগ্য?
পল ডি ওয়েট

উত্তর:


62

এটি কেবল স্বাভাবিকই নয়, এটি একটি ভাল ধারণা।

একটি বিখ্যাত উক্তি আছে

"আমাকে একটি গাছ কেটে ছয় ঘন্টা সময় দিন এবং আমি প্রথম চারটি কুড়ালকে তীক্ষ্ণ করার জন্য ব্যয় করব"।

কোডিংয়ের সময়টি ব্যয় করার আগে আপনার চিন্তাগুলি সংগঠিত করতে এবং আপনার কাজের পরিকল্পনা করার জন্য সময় নিচ্ছেন। এই চিন্তাভাবনাগুলিকে কাগজে রাখা আপনাকে আপনার পরিকল্পনাগুলি প্রতিফলিত করার, তাদের সমালোচনা করার, এবং এমন পদ্ধতিতে সংগঠিত করতে সময় দেবে যা কেবল "আপনার মাথায়" করা হলে খুব কঠিন হবে difficult


8
এটি একটি ভাল উদ্ধৃতি, যদিও আমি ভুল গুণটি মুছে ফেলব। কোটিন আবিষ্কারক.com
পল

1
অবশ্যই একটি সত্য বিবৃতি এবং ভাল উক্তি, তবে আমার বোঝার প্রশ্নটির আলাদা ফোকাস রয়েছে। যতদূর আমি এটি বুঝতে পারি, ওপিতে আগে থেকেই পরিকল্পনার গুরুত্ব সম্পর্কে সন্দেহ নেই। তিনি জিজ্ঞাসা করছেন এই চিন্তাভাবনাগুলি / পরিকল্পনাগুলি লেখার পক্ষে আরও দক্ষ কিনা বা সেগুলি কেবল তাঁর মাথায় রাখার জন্য?
ডক ব্রাউন

2
রেকন এক ঘন্টার তীক্ষ্ণ করা পর্যাপ্ত চেয়ে বেশি। এই কাজটি সর্বোচ্চ 3 ঘন্টা অনুমান করা উচিত ছিল, তবে স্ল্যাক অর্থহীন অতিরিক্ত প্রস্তুতির জন্য ব্যয় করা হয়েছে। আবার কী ছিল নৈতিকতা? ;-)
স্টিভ জেসপ

26

হ্যাঁ, এটি পুরোপুরি গ্রহণযোগ্য এবং সাধারণ।

কোডটি কেন কোনও নির্দিষ্ট উপায়ে লেখা হয়েছিল তা নির্ধারণে সহায়তা করার জন্য কোডটি পুনর্বিবেচনা করার সময় আপনার সিদ্ধান্ত গ্রহণের প্রক্রিয়াটি ডকুমেন্টিং প্রায়শই মূল্যবান।

এই নোটগুলি যথেষ্ট সংক্ষিপ্ত হলে মন্তব্য হিসাবে সরাসরি কোডে অন্তর্ভুক্ত করা যেতে পারে। বহিরাগত প্রযুক্তিগত নকশা নথির অংশ হিসাবে বর্ধিত মন্তব্যগুলি প্রায়শই রাখা হয়।


4
আমি ভারীভাবে নকশার বিকল্পগুলি বিবেচনা এবং সোর্স কোডের মতামত হিসাবে রায় দেওয়ার চেষ্টা করার বিষয়ে নোটগুলি অন্তর্ভুক্ত না করার পরামর্শ দেব , এগুলি কখনই "যথেষ্ট কম নয়" are কেবল সেই চিন্তাধারার চূড়ান্ত ফলাফলই, তবে ওপি যা বলছিল তা থেকে এটি সম্পূর্ণ আলাদা different
ডক ব্রাউন

3
"আমরা কেন এই সিদ্ধান্ত নিয়েছি?" এর লাইনে আমি প্রায়শই নিজেকে আলোচনায় দেখতে পাই। আমাদের আলোচিত বিকল্পগুলি সহ প্রসঙ্গটি সরবরাহ করতে আমার প্রতিদিনের প্রকল্প নোটগুলিতে ফিরে যাওয়া অবিশ্বাস্যরূপে সহায়ক। আমি মনে করি আমি ভাল সংস্থায় আছি: দ্য ওয়েরিং স্টোর অনুসারে জেফ বেজোসও তাই করেন।
কেডিগ্রিগরি ২

8
@DocBrown - কখনও কখনও এটি একটি ভাল ধারণা কারণে আপনি হয়নি অন্তর্ভুক্ত করা হয় না তাই ভবিষ্যতে ডেভেলপার প্রতিস্থাপন করতে তুমি কি করেছো চেষ্টা করবে না অন্যান্য সম্ভাব্য পদ্ধতি / আলগোরিদিম ব্যবহার
HorusKol

1
@ হারুসকোল: অবশ্যই, কিছু বিরল ক্ষেত্রে এটি তুচ্ছ সাধারণ জ্ঞান। তবে এটি "সিদ্ধান্ত গ্রহণের প্রক্রিয়াটি দলিলকরণ" থেকে একেবারেই আলাদা ।
ডক ব্রাউন

1
@ ডকব্রাউন ঠিক আছে, আমি মনে করি না যে কেউ তাদের উত্স কোডে নোটের পৃষ্ঠা চায়। :)
mcknz

20

এটা খুব ভাল ধারণা। যতক্ষণ না এটি বিলম্ব করার উপায় হয়ে যায় up

মূলটি হল ভারসাম্য। আমি খুঁজে পাই আমি সর্বাধিক উত্পাদনশীল যদি আমি আমার স্ব-বাক্সটি না রাখি তবে ধারণাগুলি তারা আসার সাথে সাথে ক্যাপচার করে।

যদি আমি নিম্ন স্তরে গ্রাইন্ড হয়ে থাকি এবং একটি উচ্চ স্তরের ধারণা আসে তবে আমি এটিকে কেবল নীচে টিকিয়ে রাখি এবং পরে এটিতে ফিরে আসব।

কাজের পরিকল্পনা করা একটি ভাল ধারণা তবে যদি না আপনাকে যোগাযোগ করতে বা দর্শকদের সামনে উপস্থাপন করতে না হয় তবে সেরা সরঞ্জামগুলি কলম এবং ন্যাপকিন। ধারণাটি ক্যাপচার করুন। এটিকে সুন্দর করে তুলতে সময় নষ্ট করবেন না।


মার্কডাউন এই নোটগুলি নেওয়ার আর একটি দুর্দান্ত উপায়। কীবোর্ডে আপনার হাত রাখে, তাই চিন্তার প্রক্রিয়াটিতে ন্যূনতম ব্যাঘাত ঘটে।
রাবারডাক

1
সম্পাদককে গুলি চালানো হোক বা কলম এবং ন্যাপকিন দখল করাই সর্বোত্তম বিকল্পটি হ'ল সম্পূর্ণরূপে আপনার ব্যক্তিগত টাচ-টাইপিং এবং হাতের লেখার দক্ষতা। আমার জন্য, আরও ভাল সমাধানটি পরিষ্কারভাবে সম্পাদক হ'ল।
cmaster - পুনর্বহাল মনিকা

9

যে কোনও পেশাগত পরিস্থিতিতে এটি কেবল "সাধারণ এবং গ্রহণযোগ্য" নয়, এটি বাধ্যতামূলক। সাধারণ বিকাশ চক্রটি কোনও কোডিং এমনকি শুরু হওয়ার আগে দুটি ডকুমেন্টেশন পর্যায় নিয়ে গঠিত:

  1. কার্যকরী প্রয়োজনীয়তা ডকুমেন্ট: সাধারণত ব্যবসায়িক বিশ্লেষকরা লিখেছিলেন, কার্যকারিতা কার্যকর করার জন্য নির্দিষ্ট করে।

  2. বিস্তারিত পরিকল্পনা নথি: যা প্রায় কাছাকাছি আপনি কি শুধু আরো প্রথাগত, কথা বলছি, সিস্টেম কার্যকরী পচানি (ফ্যাক্টরিং), আলগোরিদিম, ইত্যাদি উল্লেখ আমার (খুব) পুরনো কিছু অনলাইনে যেমন হয় এই

কম আনুষ্ঠানিক ডকুমেন্টেশনের জন্য, আমি ১১০% ইনলাইন মন্তব্য সম্পর্কে পূর্ববর্তী মন্তব্যের সাথে একমত। এটাই একমাত্র উপায়; এক বা অন্য উপায়, অবশেষে সমস্ত কিছু হারিয়ে যায়। তবে ঝরঝরে এবং চিন্তাশীল ইনলাইন মন্তব্যগুলি একটি পৃথক কোডিং দক্ষতা, যা অন্য কোনও দক্ষতার মতো প্রচেষ্টা এবং অনুশীলনের মাধ্যমে বিকশিত হয়। আপনি আমার কিছু (খুব) পুরানো জিনিস দেখতে পাচ্ছেন, যেমন এটি । এই স্টাইলটি আপনাকে আবেদন করতে পারে বা নাও পারে। আমি প্রথমে আপনার পছন্দ মতো স্টাইল সহ কিছু ভাল মন্তব্যযুক্ত কোড সন্ধান করার এবং এটি নিজের কোডটিতে অনুকরণ করার পরামর্শ দেব। কিছুক্ষন পরে, আপনি উপযুক্ত দেখতে হিসাবে এটি মানিয়ে নিন।


4

এই ধরণের তথ্য রাখার একটি দুর্দান্ত জায়গাটি সরাসরি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমের (এসভিএন, গিট ইত্যাদি) প্রতিশ্রুতিবদ্ধ বার্তায় রয়েছে। আপনি একই জায়গায় পরিবর্তন এবং যুক্তি দেখতে পারবেন।


1
এটি তাদের অনুসন্ধানযোগ্যও করে তোলে। আপনি কমান্ডলাইন গিট এবং সোর্সট্রিতে প্রতিশ্রুতিবদ্ধ বার্তাগুলি সন্ধান করতে পারেন যেমন .. আপনি যদি কেবল নোটপ্যাড ব্যবহার করেন তবে সম্ভবত ফাইলগুলি আর কখনও খোলা যাবে না এবং কিছু বিস্তৃত বাশ না জেনে এবং সমস্ত সম্পর্কিত স্থান অনুসন্ধান করে একটি স্ক্রিপ্ট না লিখে অনুসন্ধান করা শক্ত।
আশা করি

আমি আমার প্রতিশ্রুতিবদ্ধ বিবৃতি পাশাপাশি কমিটের লিঙ্কগুলির সাথে বাগ বা বৈশিষ্ট্য অনুরোধ উভয় ক্ষেত্রে এটি করার চেষ্টা করি। আমি কোডটি কেন পরিবর্তন করেছি সে কারণে আমি কোডটিতে তারিখযুক্ত ইনলাইন মন্তব্যগুলিও করি। এটি আমাদের চতুর পুরানো কোড বেসে নাটকীয়ভাবে সহায়তা করে যেখানে মন্তব্যগুলি বেশিরভাগ ক্ষেত্রেই অজানা।
ডেলিওটগ

নাহ, এটি অন্য কিছু। প্রতিশ্রুতিবদ্ধ বার্তাগুলিতে কী করা হয়েছিল তা বর্ণনা করা উচিত, তা নয়। আপনার ডকুমেন্টিং কোডের মন্তব্যে, ডকুমেন্টেশন এবং ইস্যু ট্র্যাকার রেজোলিউশনে কেন যায়। প্রতিশ্রুতিবদ্ধ বার্তায় আপনি পাঁচ পৃষ্ঠার নোট এবং নকশাকর্মের কাজ রাখতে পারবেন না, আপনার ইচ্ছাও করা উচিত নয়।
মনিকার সাথে লাইটনেস রেস

এটি ভার্সন নিয়ন্ত্রণ সিস্টেমে রাখা দুর্দান্ত put আরও ভাল জায়গা হ'ল ভিতরে একটি সরল পাঠ্য ফাইল। সেগুলি কমিট করার বার্তার চেয়ে ব্যবহার করা সহজ to
থরবজর্ন রাভন অ্যান্ডারসন

2

অন্যান্য ভাল উত্তরের পাশাপাশি, আমি যুক্ত করব যে আমি প্রায়শই আমি যা করার চেষ্টা করছি সে সম্পর্কে আমার চিন্তাভাবনাগুলি লিখে রাখি।

আমি যা করার চেষ্টা করছি তা বলার বিষয়ে খুব স্পষ্ট হওয়া আমাকে অনুমান, অনুমান এবং / অথবা প্রয়োজনীয়তাগুলি ধারণ করে না এমন প্রয়োজনীয়তাগুলি উপলব্ধি করতে সহায়তা করে।

এরপরে বিকল্পগুলিতে ইঙ্গিত দেওয়া হয়, যা আমি তারপরে আরও ভাল প্রতিটিটির সাথে মিশতে পারি; আমি অন্য কিছু মনে করি যদি এই লেখা আমার জায়গা বাঁচাতে সাহায্য করে।

আমি শ্বাস এবং গভীরতা অন্বেষণ করতে দ্রুত নোটগুলি গ্রহণ করি, তাই এটি পুনরাবৃত্ত হয়ে কাজ করে, সমাধানের গাছটিকে মূল্যায়ন, নেভিগেট এবং মূল্যায়ন, ব্যাক আপ, অনুসন্ধান, আবিষ্কার, উপলব্ধি এবং সিদ্ধান্ত গ্রহণে সহায়তা করে।


1

আপনার / (নতুন) টিম মেম্বারদের সময় বাঁচাতে পারে এমন কোনও কিছু লিখে সময় ব্যয় করা ভাল। এটি নিশ্চিত করুন যে এটির এমন কিছু বিষয় যা পরে প্রয়োজন হতে পারে এবং যদি এটি আসল দীর্ঘমেয়াদী প্রকল্প না হয় তবে তা ছাড়িয়ে দেবেন না।

এটি যা কিছু সময় নিতে হবে না। আপনি যদি ভাবতে সময় ব্যয় করেন তবে 1 থেকে 1 লিখে আপনার চিন্তাভাবনা লিখতে পারেন (যতক্ষণ তারা এগুলি / কারও পক্ষে উপকারী হতে পারে)।

আসল সমস্যাটি আপনি যা লিখছেন তা ওভারথাইঙ্কিং হতে পারে। আপনি লেখার জন্য কেবল এটির অর্থ এই নয় যে আপনাকে ইতিমধ্যে কিছু বিদ্যমান ফর্ম্যাটটি মেনে চলতে হবে বা একটি সম্পূর্ণ ডকুমেন্টেশন তৈরির সমস্ত পথে যেতে হবে।

যদি আপনার পছন্দটি কোনও কিছু না লিখে এবং কেবল একটি নোটপ্যাডে অপ্রাতিষ্ঠানিক নোট লেখার মধ্যে থাকে তবে কেবল অপ্রাতিষ্ঠানিক নোট লিখুন।


1

আপনি বলছেন: "কিছু লোকের এই সমস্যা রয়েছে যা তারা শব্দ ছাড়া চিন্তা করতে পারে না And এবং তাদের চিন্তাভাবনা এবং সিদ্ধান্তগুলি লিখে রাখাই এগিয়ে যাওয়ার সবচেয়ে কার্যকর উপায়" "

যদি আপনার চিন্তাভাবনা এবং সিদ্ধান্তগুলি লিখে রাখার সবচেয়ে কার্যকর উপায় হয় তবে কেন সবচেয়ে কার্যকর পদ্ধতিতে অগ্রসর হওয়া স্বাভাবিক এবং গ্রহণযোগ্য হবে না? আপনার জন্য যা ভাল কাজ করে আপনি তা করেন। এটি অন্য কারও পক্ষে সবচেয়ে ভাল কাজ করে না। সেক্ষেত্রে আপনি অন্য কাউকে আপনার জন্য সর্বোত্তম কী তা আপনাকে বলতে দেবেন না এবং তাদের জন্য সর্বোত্তম কী তা আপনি তাদের বলবেন না। প্রত্যেকেই তাদের জন্য সর্বোত্তম যা করে।


1

মানুষ একবারে প্রায় সাতটি "জিনিস" তাদের মাথায় ধরে রাখতে পারে। এটিই সাত-অঙ্কের ফোন নম্বরগুলির কারণ। প্রোগ্রামারদের দক্ষতার সাথে কাজ করার জন্য তাদের মেমরি থেকে জিনিসগুলি লোড করার জন্য কিছু সিস্টেমের সন্ধান করতে হবে এবং প্রয়োজনমতো তাড়াতাড়ি পুনরুদ্ধার করতে হবে। আপনার নোটগুলি নেওয়া একটি সুস্পষ্ট এবং প্রত্যক্ষ উপায়, তবে মাঝারি জটিল কিছুতে কাজ করা প্রত্যেককেই এটি কোনও না কোনওভাবে করতে হবে । আপনি যখন কারও সাথে প্রোগ্রাম জুড়েন, তাদের পদ্ধতিটি অনুসন্ধান করার জন্য একটি বিন্দু তৈরি করুন।

একটি সাধারণ উপায় হল পরীক্ষা চালিত বিকাশ। এই পদ্ধতিতে আপনি একটি ব্যর্থ পরীক্ষা লেখেন, আপনি এই ব্যর্থ পরীক্ষায় উত্তীর্ণ হওয়ার জন্য পর্যাপ্ত কোডটি লিখেছেন, তারপরে আপনি আপনার কোডটি রিফ্যাক্টারে আপনার বিদ্যমান বিদ্যমান পরীক্ষাগুলি পাস করার সময় এটি আরও সুন্দর দেখানোর জন্য তৈরি করেছেন। এই পদ্ধতিটি আপনার সমস্ত "নোটগুলি" পরীক্ষার মধ্যে এনকোড করে রাখে। লোকেরা নোট গ্রহণ না করে এইভাবে খুব দ্রুত কাজ করতে পারে, কারণ তারা কেবলমাত্র পরবর্তী পরীক্ষায় মনোনিবেশ করে।

আর একটি সাধারণ উপায় হ'ল আপনার কোডে আপনার নোটগুলি সিউডোকোড মন্তব্য বা স্টাব হিসাবে লিখুন, তারপরে ধীরে ধীরে এটি আসল জিনিসটির সাথে প্রতিস্থাপন করুন। এইভাবে আমি সাধারণত অ্যালগোরিদম লিখি। আমার প্রথম খসড়াটি সিউডোকোড সহ কেবল একটি প্রধান ফাংশন, তারপরে ধীরে ধীরে এটি বিমূর্ততার গভীর এবং গভীর স্তরে ভরে যায়।

আপনার জন্য যে কোনও পদ্ধতি কার্যকর তা ব্যবহার করে খারাপ লাগবেন না, তবে আপনার "দক্ষ" সহকর্মীরা কী কী পদ্ধতি ব্যবহার করছেন তা লক্ষ্য করার চেষ্টা করুন। আপনার মত একই মানব সীমাবদ্ধতা রয়েছে।


1
টিডিডি একটি নোট নেওয়ার মহড়া? আমি তাই মনে করি না.
রবার্ট হার্ভে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.