পরস্পরবিরোধী প্রোগ্রামিং পরামর্শটি পুনরুদ্ধার করুন: কাজ করার কিছু পান এবং পুনরুক্তি বনাম। কোডিংয়ের আগে সত্যিই এটিকে মনে করে


19

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

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

পরামর্শের দ্বিতীয় অংশটি ছিল: সত্যিই কোনও প্রকল্প লেখার আগে কোনও প্রকল্পটি মনে করে।

আমি উভয় পদ্ধতিতে সাফল্য পেয়েছি এবং আমি বলব যে আমি প্রতিটি দর্শনের সাথে একমত।

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

আমি কীভাবে এই প্রকল্পগুলি সম্পর্কে যেতে পারি?

আমি কি এখনই কিছু করার কোডিং শুরু করি এবং যাচ্ছি (প্ল্যাটফর্ম / পদ্ধতি / ভাষা / আর্কিটেকচার) আমি যাচ্ছি - বা আইডিই খোলার আগেই কি আমি কোডিং থেকে বিরত থাকি এবং প্রচুর গবেষণা / পড়া করি?

প্রোগ্রামিং পরামর্শগুলির এই বিপরীতমুখী টুকরোগুলিকে আমি কীভাবে পুনর্মিলন করব?


একই সাথে একই সাথে উভয় করুন। Iterate, ডকুমেন্ট, পুনরাবৃত্তি, দস্তাবেজ, পুনরাবৃত্তি এবং একবার আপনি একটি পরিষ্কার পরিকল্পনা কাজ করে যে কাজ করে। এটি তৈরি করুন: ডি
ম্যাট ডি

1
কিছুটা সম্পর্কিত "এটি চালানোর, তাহলে এটি ডান বনাম এটিকে ঠিক আছে, তাহলে এটি রান করতে করতে করুন" উপর কেন্ট Beck এর প্রবন্ধ হল: facebook.com/notes/kent-beck/runright-and-vice-versa/...
থিয়াগো সিলভা


1
তারা কীভাবে পরস্পরবিরোধী তা আমি দেখতে পাচ্ছি না। আমি প্রথমে অনেক কিছু ভাবি এবং তারপরে কিছু দ্রুত তৈরি করি।
ফজরি

খুব গভীর. আমি রাজী. আমার গড় পেশাদার প্রকল্পটি প্রায় 40 -50% আপ ফ্রন্ট ডিজাইনের কাজ, 10, সর্বোচ্চ 15% কোডিং এবং বাকী পরীক্ষার জন্য।
মাওগ বলছেন মনিকা

উত্তর:


20

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

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

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

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


আমি যুক্ত করব: কোডিং শুরু করুন যদি এটি সত্যিই প্রয়োজন হয়। যদি কোনও সমস্যা না হয় তবে কোডিং শুরু করা উচিত নয়।
তাসিস্তো

5

এমন কিছু সিদ্ধান্ত রয়েছে যা সময়ের আগেই নেওয়া দরকার।

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

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

এটি বলেছিল, একবার প্রযুক্তিগত সিদ্ধান্ত নেওয়া হলে, আপনার প্রতিষ্ঠিত কাঠামোর মধ্যে আপনার স্বাধীনতা আছে। তারপরে লক্ষ্য হ'ল নমনীয়, পুনরাবৃত্ত হওয়া এবং (আমি সাহস করে বলার মতো) যথেষ্ট পরিমাণে চটজলদি থাকি যাতে গ্রাহক যখন তাদের যা চান সে সম্পর্কে তার মন পরিবর্তন করে, আপনি তাদের ন্যূনতম পরিমাণে গোলমাল করতে পারেন।

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


1

আমি উভয়কে পারস্পরিক একচেটিয়া হিসাবে দেখছি না।

যে কোনও প্রকল্প পরিচালনার মতো আপনার দীর্ঘমেয়াদী দৃষ্টি এবং স্বল্পমেয়াদী লক্ষ্য উভয়ই দরকার।

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

আপনি কতবার মুক্তি / ইত্যাদি। আপনি যে নির্দিষ্ট পদ্ধতিটি ব্যবহার করছেন তার উপর নির্ভর করে।

আপনার কী গবেষণা করতে হবে তার উপর নির্ভর করে আপনি কী জানেন যা আপনি স্বাচ্ছন্দ্য বোধ করেন না তার উপর নির্ভর করে।


1

"Iteration" এবং "এর মাধ্যমে চিন্তা করা" পরস্পরবিরোধী নয়, পরিবর্তে তারা পরিপূরক।

এমনকি তাদের চূড়ান্ত পর্যায়েও, তারা একই জায়গায় যাওয়ার জন্য দুটি পথ প্রতিফলিত করে।

  • চরম সংক্ষিপ্ততা হ'ল এক হাজার বানর হাজার কীবোর্ডে দূরে সরে যায়। পর্যাপ্ত সময়ের সাথে সাথে আপনি এমন কিছু পাবেন যা প্রয়োজনীয়তার সাথে মেলে।
  • "এটির মাধ্যমে চিন্তা করুন" এর চরমটি হ'ল একটি জলপ্রপাতের পদ্ধতির। আপনি যদি ভাগ্যবান হন তবে আপনার কোডটি সরবরাহের সময়গুলি পরে প্রকল্পের শুরু থেকে প্রয়োজনীয়তা নাটকীয়ভাবে পরিবর্তিত হয়নি। অথবা আপনি বিশ্লেষণ পক্ষাঘাতের সাথে সবেমাত্র শেষ করবেন এবং কিছুই সরবরাহ করেন নি।

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

তবে আপনি কেবল সেই পথের প্রধান অংশগুলি দেখতে পাবেন এবং অবশ্যই প্রতিটি পথ থামবে না। এখানেই পুনরাবৃত্তি খেলতে আসে। আপনি অ্যাপ্লিকেশনটির সংস্করণগুলির মাধ্যমে পুনরাবৃত্তি করতে এবং প্রতিক্রিয়া জানাতে শুরু করতে পারেন:

  • নীচের স্তরে বিশদে যে রাস্তাগুলি আসে তাদের চিহ্নিত করুন
  • উচ্চ স্তরের পথে এই দুর্বল অঞ্চলগুলিকে স্পষ্ট করতে স্টেকহোল্ডারদের প্রতিক্রিয়া দেখুন।

সিদ্ধান্ত নেন ল্যাটিন রুট মানে "কেটে"। Iteration আপনাকে সিদ্ধান্ত নিতে দেয় যে কেবল তত্ত্বের পরিবর্তে অনুশীলনে কী কাজ করে এবং পুনরাবৃত্তি আপনাকে সম্ভব হয় না এমন অন্যান্য বিকল্পগুলি কাটাতে দেয়।

সুতরাং আপনি কী করতে যাচ্ছেন তা বোঝার জন্য আপনাকে সমস্যাটি ভাবতে হবে। তবে তারপরে আপনাকে ধারণাকে প্রকৃত কোডে রূপান্তর করতে অ্যাপ্লিকেশনটির সংস্করণগুলির মাধ্যমে পুনরাবৃত্তি করতে হবে।


0

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

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

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