ওভার চিন্তাভাবনা বিকাশ


88

আমি এখন থেকে দেড় বছর ধরে অ্যাপ বিকাশকারী হিসাবে কাজ করছি (দীর্ঘকাল আমি জানি না), এবং আমাকে সবেমাত্র আমার প্রথম বড় প্রকল্প দেওয়া হয়েছে।

এটি খুব সহজেই যায়নি তা বলাই বাহুল্য, তাই আমি কীভাবে এটি ব্যবহার করতে পারি সে সম্পর্কে প্রকল্পের সাথে জড়িত একজন সিনিয়র প্রোগ্রামারের কাছ থেকে পরামর্শ চেয়েছিলাম।

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

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

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


5
এটি নকশার চেয়ে কোডিংয়ের সাথে সম্পর্কিত বলে মনে হচ্ছে
বালোগ পাল

22
আমি কেবল "F * সি কে ভবিষ্যতের জন্য, এখনই তৈরি করুন" এর জন্য +1-এড যদি তিনি এই বক্তব্যকে সমর্থন করার মত বোধ করেন তবে আমি যখনই আমি নির্দ্বিধায় কিছুটা বেশি স্ক্র্যাপ করার পরে কমিট লগে যুক্ত করি তখন আমি তাকে ক্রেডিট করতে পেরে খুশি হব (যা আমি যা চাই তার চেয়ে অনেক বেশি ঘটে)।
হাইলেম

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

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

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

উত্তর:


112

ক্যাপ্টেন অব্যাহত রেসকিউ!

আমি এখানে ক্যাপ্টেন সুস্পষ্ট হব এবং বলব যে এর মাঝখানে কিছুটা মাঠ পাওয়া যাবে।

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

পার্থক্য খুঁজে পাওয়া মুশকিল, কারণ আপনি সর্বদা আপনার পণ্যটির সাফল্য সম্পর্কে ভবিষ্যদ্বাণী করতে পারবেন না এবং যদি আপনাকে পরে এটি প্রসারিত করার প্রয়োজন হয়।

এখনই নির্মাণ করুন যদি ...

  • প্রকল্পটি বাতিল হতে চলেছে
  • প্রকল্পটির স্বল্প আয়ু রয়েছে
  • প্রকল্পের এক্সটেনশন থাকা উচিত নয়
  • প্রকল্পটির ঝুঁকি প্রভাবের মান নেই (বেশিরভাগ চিত্রের ক্ষেত্রে)

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

জেনারেল সমস্যাটি পরবর্তীতে ছেড়ে দিন, যদি এটি কখনও প্রয়োজন এবং প্রচেষ্টাটির জন্য মূল্যবান হতে পারে:

এক্সকেসিডি: সাধারণ সমস্যা

ভবিষ্যতের জন্য তৈরি করুন যদি ...

  • প্রকল্পটি সর্বজনীন হবে
  • প্রকল্পটি পুনরায় ব্যবহার করার একটি উপাদান
  • প্রকল্পটি অন্যান্য প্রকল্পের জন্য একটি পদক্ষেপ
  • প্রকল্পটির বর্ধনের সাথে অনুসরণীয় প্রকল্প বা পরিষেবা রিলিজ থাকবে

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

নির্দেশিকা

আমি বলতে চাই নীচের নীতিগুলি যথাসম্ভব যথাযথভাবে মেনে চলুন এবং আপনার নিজের দক্ষ, অভিযোজ্য পণ্য ডিজাইনের অবস্থানে রাখা উচিত:

  • জানুন যে YAGNI ,
  • KISS ,
  • যখনই আপনি চুলকানি স্ক্র্যাচিংয়ের মতো মনে করেন এবং একটি সংযোজন সম্পর্কে ভাবেন, তখন এটি লিখুন। আপনার প্রকল্পের প্রয়োজনীয়তাগুলি ফিরে দেখুন এবং সংযোজনগুলি অগ্রাধিকারগুলি কিনা তা নিজেকে জিজ্ঞাসা করুন। তারা প্রাথমিক ব্যবসায়িক মূল্য যুক্ত করে কিনা জিজ্ঞাসা করুন ।

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

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

কেবল সাধারণ জিনিসগুলি তৈরি করুন।

Dilemmata

Overengineering

এই জাতীয় প্রকল্পটি চালু করার সময় সাধারণত ট্রেন্ডার প্রোগ্রামাররা কি এটি অনুসরণ করে?

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

প্রোটোটাইপিং / কুইক-এন-ডার্টি / কম বেশি

যত তাড়াতাড়ি সম্ভব একটি কার্যক্ষম উদাহরণ মেশানো কি একটি সাধারণ প্রবণতা?

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

ডিলবার্ট সরাসরি উত্পাদনে প্রোটোটাইপ শিপিংয়ে

প্রোটোটাইপিংয়ের সুস্পষ্ট সুবিধাগুলি রয়েছে তবে অপব্যবহার এবং অপব্যবহারের সম্ভাবনাও অনেক বেশি (ফলাফল হিসাবে পূর্বের তালিকাভুক্ত সুবিধার অনেকগুলি সঠিক বিপরীত)।

প্রোটোটাইপিং কখন ব্যবহার করবেন?

প্রোটোটাইপিং ব্যবহার করার জন্য সেরা ধরণের প্রকল্প সম্পর্কে ইঙ্গিত রয়েছে :

[...] প্রোটোটাইপিং সিস্টেমগুলিতে সর্বাধিক উপকারী যা ব্যবহারকারীদের সাথে অনেকগুলি ইন্টারঅ্যাকশন করে।

[...] অন-লাইন সিস্টেমগুলির বিশ্লেষণ এবং ডিজাইনে প্রোটোটাইপিং খুব কার্যকর, বিশেষত লেনদেন প্রক্রিয়াজাতকরণের জন্য, যেখানে স্ক্রিন ডায়লগগুলির ব্যবহার প্রমাণের তুলনায় অনেক বেশি। কম্পিউটার এবং ব্যবহারকারীর মধ্যে যত বেশি ইন্টারঅ্যাকশন হবে তত বেশি সুবিধা [...]

"আজ অবধি দ্রুত প্রোটোটাইপিংয়ের অন্যতম উত্পাদনশীল ব্যবহার হ'ল পুনরাবৃত্তকারী ব্যবহারকারী প্রয়োজনীয়তা প্রকৌশল এবং মানব-কম্পিউটার ইন্টারফেস ডিজাইনের একটি সরঞ্জাম হিসাবে" "

অন্য দিকে:

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

এবং যদি আপনার চারপাশে সবুজ দৈত্য থাকে তবে কেবল বাজেটের মধ্যে একটি প্রোটোটাইপ রাখার বিষয়টি নিশ্চিত করুন ...

প্রোটোটাইপিং পিরিয়ড বাড়ানোর বিষয়ে দিলবার্ট


1
প্রোটোটাইপিংয়ের বিষয়ে আপনি যে পয়েন্টগুলি তৈরি করেছেন তা কতটা গুরুত্বপূর্ণ তা আমি জোর দিয়ে বলতে পারি না। আমি মনে করি না যে এটিই আসলে প্রশ্নটি সম্পর্কে ছিল (মূলত যখন থামার এবং নকশা করা ঠিক ছিল ঠিক তখনই বোঝার মতো গড়ে তুলুন) তবে প্রোটোটাইপিং অবশ্যই সেই প্রক্রিয়ার একটি প্রাসঙ্গিক অঙ্গ। সুন্দর কাজ!
বেনিয়ামিন গ্রুইনবাউম

3
আমি এখানে কেন ডাউনটা পেলাম তা নিয়ে আমি বেশ বিস্মিত। সে সম্পর্কে তথ্য দেওয়ার জন্য দয়া করে যথেষ্ট দয়া করুন, যাতে আমি আমার উপায়গুলির ত্রুটিগুলি দেখতে পারি, বুদ্ধিমান।
হাইলেম

7
আমি এমন যান্ত্রিক ইঞ্জিনিয়ারের সাথে কাজ করতাম যিনি এটিকে এইভাবে রেখেছিলেন: আপনি কি নিজের পণ্যটি ইঞ্জিনিয়ারড বা ওভার ইঞ্জিনিয়ারড চান? এগুলি সত্যই দুটি বিকল্প।
গাই স্যারটন

1
@ সাম্যাথ ব্র্যান্ড: দুর্দান্ত সম্পাদনার জন্য ধন্যবাদ। অনেক ভাল.
হাইলিমে

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

54

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

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

আপনাকে অনেক পরিকল্পনা করতে হবে এবং পরিকল্পনা করতে হবে, তবে এটি একবারে করবেন না। এটি অবশ্যই শুরুতে করা উচিত নয়। আমি বরং দেখতে পাচ্ছি যে কেউ তাদের প্রথম বৃহত প্রকল্পটি এটির মতো তৈরি করেছে:

  1. ডিজাইন করুন এবং কিছুটা আলোচনা করুন।
  2. একটি গোছা কোড লিখুন যা কিছু করে।
  3. সমস্যাগুলি এবং স্টপ কোডিং সনাক্ত করুন।
  4. নকশা সম্পর্কে গুরুতর হন এবং গতি বা আপনার কোড-মোজো হারানো সম্পর্কে উদ্বেগ বন্ধ করুন এবং প্রকল্প পরিচালককে উপেক্ষা করুন (আপনি তাকে / তার পক্ষে করছেন))
  5. প্রকল্পটি নিয়ন্ত্রণে রাখুন। আপনার messes ঠিক করুন। প্রত্যেকে পরিকল্পনাটি বোঝে তা নিশ্চিত করুন। প্রকল্পটি নিয়ন্ত্রণে রাখুন।

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

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


1
+1 এর জন্য doing your bosses a favor, এমনকি যদি তারা এটি নাও মনে করে
সুপারম

2
+1 দুর্দান্ত পোস্ট। এটি প্রকৃতপক্ষে একজন ভাল ম্যানেজার যিনি স্বীকৃতি দিয়েছেন যে একটি ভাল ডিজাইনের পারকোলেট হওয়া দরকার - এবং এটি কীবোর্ডকে অগত্যা জড়িত করে না!
রবি ডি

আরম্ভ যদি আমি এই উত্তরটি পড়া শুরু করার আগেই পড়ি! আপনাকে ধন্যবাদ, এবং যিনি এই শিল্পে সবে শুরু করছেন আমি তাদের এই পাগল শেখার বক্ররেখাকে ভালবাসছি!
sf13579

2
+1 এর জন্যYou have to plan and plan a lot, but don't do it all at once.
রাফায়েল এমশফ

2
@ গীক: মোজো, প্রবাহ, অঞ্চল ... বা যাই হোক না কেন গিরিযুক্ত / ট্রেন্ডি / হিপস্টার শব্দটি উত্পাদনশীলতার একটি অবস্থা বর্ণনা করতে বেছে নিতে পারে।
হাইলেম

24

প্রোগ্রামাররা সাধারণত ভবিষ্যতের কথা চিন্তা না করে এমন কিছু তৈরি করে যা এখন কাজ করে?

হ্যাঁ.

তাদের কি এমন করা উচিত?

না।

প্রথম নজরে দেখে মনে হবে যে "ভবিষ্যতের বিষয়ে চিন্তাভাবনা" KISS এবং YAGNI এর মতো প্রতিষ্ঠিত নকশার নীতিগুলি লঙ্ঘন করেছে , যা দাবি করে যে এখনই প্রয়োজনীয় কিছু নেই যা বাস্তবায়ন করা উচিত নয়।

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

এমনকি আপনি যদি কোনও প্রকল্পের কাজ শেষ করার পরে কাজ করছেন না, তবুও আপনার এটি বুদ্ধিমানভাবে বিকাশ করা উচিত। এটি আপনার কাজ, এবং আপনার এটি ভালভাবে করা উচিত, যাতে ভাল কাজটি কীভাবে করা হয় তা ভুলে যাবেন না।


3
যদিও আপনি যা বলছেন তা অনেকটাই বোঝায় আমার ব্যক্তিগত অভিজ্ঞতা আমাকে অন্যথায় বলে। সাধারণত যখন ডেভেলস মোডে আসে @ এফ *** কে এটি ... কেবল এটি @ শিপ করুন @ সেখানে কপি পেস্ট করা কোডের একটি নৌকা বোঝা হয়ে যায় পুরো জায়গা জুড়ে ing শেষ ফলাফল একেবারে কল্পনাশক্তিহীন। সামনের দিকে চিন্তা করা কেবল প্রসার ও পরিবর্তন সম্পর্কে নয় তবে রক্ষণাবেক্ষণের বিষয়টিও।
নিউটোপিয়ান

13

চৌকস বিকাশকারীদের একটি বক্তব্য রয়েছে, "আপনি যাচ্ছেন না এটি প্রয়োজন (YAGNI)" যা আপনাকে ভবিষ্যতে যা প্রয়োজন বলে মনে করবে তার চেয়ে এখন আপনার যা প্রয়োজন তা ডিজাইনের জন্য উত্সাহিত করে। ভবিষ্যতে কাজ করার জন্য কোনও নকশা প্রসারিত করার জন্য প্রস্তাবিত রুটটি রিফ্যাক্টর to

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

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


1
সামনে চিন্তা করার অন্যান্য কারণও রয়েছে: যে কার্যকারিতাটি আপনি বিকাশ করছেন তা একটি স্প্রিন্টের সাথে খাপ খায় না। সুতরাং, আপনি হয় এটি কৃত্রিমভাবে ভেঙে ফেলেছেন বা কোনও একক স্প্রিন্টের মধ্যে সম্পূর্ণ করতে পারবেন না এমন কোনও কার্যকারিতা বাস্তবায়ন করতে অস্বীকার করছেন।
জর্জিও

রিফ্যাক্টরিং উল্লেখের জন্য +1। আমি এখন পর্যন্ত অন্যান্য উত্তরগুলির কোনওটিরই বিশ্বাস করতে পারি না। আপনি যদি অ্যাক্ট করে থাকেন তবে YAGNI কেবলমাত্র কার্যকর।
আয়ান গোল্ডবি 20'14

7

এই জাতীয় প্রকল্পটি চালু করার সময় সাধারণত ট্রেন্ডার প্রোগ্রামাররা কি এটি অনুসরণ করে?

আমি সন্দেহ করি যে আপনার পরামর্শদাতার অর্থ হ'ল আপনার চূড়ান্ত সমাধানের জন্য কোনও অতিরিক্ত জটিলতা তৈরি করা উচিত নয়।

কোনও অ্যাপ্লিকেশনটিকে এটি এবং এটি করা উচিত এবং ব্যাপকভাবে বিভ্রান্ত হওয়া উচিত তা ভাবাই খুব সহজ।

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

উদাহরণস্বরূপ, যদি আপনাকে কনসেপ্ট মডেলের প্রুফ করতে বলা হয়, তবে যত তাড়াতাড়ি সম্ভব একটি কার্যক্ষম উদাহরণকে ম্যাসেজ করা কি একটি সাধারণ প্রবণতা?

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


6

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

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

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

এটি একটি আদর্শবাদী কল্পনা এবং জীবন এইভাবে কাজ করে না।

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

যে কোনও প্রবীণ বিকাশকারী সমালোচনা, নিন্দা ও অভিযোগ করতে পারে - এবং বেশিরভাগই!

যদিও সে আপনাকে বলবে যে আপনি প্রকল্পটি "চিন্তাভাবনা করে" ফেলেছেন। আমি আপনাকে প্রথমে "চিন্তা" করার জন্য অভিনন্দন জানাই। আপনি একজন উন্নত বিকাশকারী এবং তারপর অন্য লোক হিসাবে আপনার প্রথম পদক্ষেপ নিয়েছেন।

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

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

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

এটি আপনার ধারণাগুলি প্রদর্শনেরও একটি সুযোগ। এমন অনেক সময় হয়েছে যখন আমি একটি প্রোটোটাইপ উপস্থাপন করেছি যা জিনিসগুলি এমন স্তরে নিয়ে যায় যা তারা প্রত্যাশা করে না।


1
ইন্টারনেটে ছদ্ম-পরামর্শদাতাদের প্লেগ উল্লেখ করার জন্য +1
ফক্সলর্ড

5

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

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

আপনি যদি না জানেন তবে কীভাবে বর্ধিত উন্নয়ন কাজ করে তা আপনি সন্ধান করতে পারেন। সফল পদ্ধতিগুলি সাধারণত এক বা একাধিক স্তরে পুনরাবৃত্তি হয়, শক্ত প্রতিক্রিয়া সন্ধান করে এবং কিছু কঙ্কালের উপরে বৃদ্ধি পায়।


3

পরিকল্পনা বন্ধ এবং কোডিং শুরু করার জন্য পরামর্শ শোনার কয়েকটি ভাল কারণ রয়েছে;

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

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

  3. কঠোর তফসিল সীমাবদ্ধতার উপস্থিতিতে, আপনার প্রকল্পটি আদৌ সম্পন্ন করার সম্ভাবনা সীমাবদ্ধ। অনেক দীর্ঘ পরিকল্পনা করুন এবং পরিকল্পনাটি যত ভাল হোক না কেন, আপনি সময় মতো এটি সম্পাদন করতে পারবেন না এবং আপনি কখনই বাজারে উঠবেন না। শুরু থেকে হ্যাকিং শুরু করুন এবং সম্ভবত আপনি ভাগ্যবান হয়ে উঠবেন এবং প্রথমবারেই সঠিক হয়ে উঠবেন। আপনি অলৌকিকভাবে পণ্য সরবরাহ। অথবা, আপনি এত ভাগ্যবান নন, এবং স্ল্যাজের অর্ধ-বেকড টুকরো সরবরাহ করুন তবে এটি সময়মতো বাজারে আসে এবং আপনি কিছু শিখেন learn অথবা আপনি ব্যর্থ হতে পারে। "সম্ভবত আপনি ব্যর্থ হন" "বাজারে কখনই যায়নি" এর চেয়ে আরও ভাল প্রতিকূল কারণ আপনি অনেক দীর্ঘ পরিকল্পনা করেছিলেন। মূল বোঝাপড়াটি হ'ল প্রথম থেকেই আপনার সম্ভাবনাগুলি সীমাবদ্ধ, তাই আপনি হ্যাক করে কিছুই হারান না। আপনার ব্যবস্থাপক হয়ত জানেন যে সাফল্যের খুব কম সম্ভাবনা রয়েছে এবং একটি জুনিয়র রিসোর্সকে কেবল একটি শেখার অনুশীলন হিসাবে অর্পণ করেছেন। সাফল্যের চেয়ে ব্যর্থতা থেকে আমরা আরও ভাল শিখি। আপনি কি সম্ভবত জিজ্ঞাসা করছেন, "আমি কখন একটি পুরো প্রকল্প পেতে পারি?"

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

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

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

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


-6

আমাকে আপনার কোডটি দেখান এবং আমি আপনাকে বলব যে আপনি কে

আপনার কোডটি আপনার ভিজিট কার্ড। আপনি যদি অগোছালো কোড লিখেন, অন্য লোকের কাছে নিজেকে কী বলবেন? শুধু ভেবে দেখুন। অফিসে যখনই আমরা খুঁজে পেয়েছি কোডের একটি সত্যই খারাপ অংশ, আমরা নিজেকে জিজ্ঞাসা করি, এটি কে লিখেছেন এবং কীভাবে তিনি বিশ্ববিদ্যালয়ের মধ্য দিয়ে পেরিয়েছিলেন?

আপনি কি কোড হয়ে যাচ্ছেন

আপনার কোড জীবনের জন্য আপনার প্রোগ্রাম।

খারাপ কোড লেখার একজন প্রোগ্রামার স্ট্রিপটিজ ক্লাবে নৃত্যের নৃত্যের মতো

কিছু লোক স্ট্রিপিজ ক্লাবে নাচের বিষয়টি যত্ন করে না। তবে যদি তারা টলেন্টড নৃত্যশিল্পী হয় তবে তারা তাদের দক্ষতা নষ্ট করছে। আপনি যদি দরিদ্র নর্তকী হন তবে ভাল পা রাখেন, তবে আপনি অনেকের জন্য স্ট্রিপ করতে পারেন।

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


4
আমি আমার পরামর্শদাতাকে সম্পর্কে ব্যক্তিগত মন্তব্য করার জন্য লোকদের জিজ্ঞাসা করি নি, আমি জিজ্ঞাসা করেছি সীমানাগুলি যেখানে চিন্তাভাবনা নকশার নিদর্শনগুলির সাথে সম্পর্কিত। "আপনাকে অর্থের সাথে প্রলুব্ধ করা" একটি বোকা অপ্রাসঙ্গিক অনুমান এবং প্রকৃতপক্ষে আমাকে যে টাকা দেয় তাকে দ্বিধা করবেন না।
sf13579

4
একটি খণ্ডের ভিত্তিতে কারও বুদ্ধি বিচার করা হাস্যকর। বেঁচে থাকা এমন কোনও বিকাশকারী নেই যাঁদের ন্যূনতম কোডের কমপক্ষে একটি অংশে তাদের নাম নেই।
ব্রায়ান গ্রিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.