“বেশি জানার কারণে” আটকে আছে [বন্ধ]


147

Http://news.ycombinator.com/item?id=4037794 এ আরও আলোচনা নোট করুন

আমার তুলনামূলকভাবে সহজ বিকাশের কাজ রয়েছে, তবে যতবারই আমি এটি আক্রমণ করার চেষ্টা করি তখন আমি গভীর চিন্তা-চেতনায় ছড়িয়ে পড়েছি - এটি কীভাবে ভবিষ্যতের প্রসার ঘটাতে পারে, ২ য় প্রজন্মের ক্লায়েন্টদের কী প্রয়োজন হবে, কীভাবে এটি "অ-কার্যক্ষম" প্রভাবিত করে দিকগুলি (যেমন পারফরম্যান্স, অনুমোদন ...), কীভাবে আর্কিটেক্টের পক্ষে পরিবর্তনের অনুমতি দেওয়া ভাল ...

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

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

এটা কি ভুল? এটি কি প্রাকৃতিক বিবর্তন, না কি আমি নিজেকে এক ঝাঁকুনিতে চালিত করেছি?

সুষ্ঠু প্রকাশ - অতীতে আমি একজন বিকাশকারী ছিলাম, আজ আমার কাজের শিরোনাম একটি "সিস্টেম আর্কিটেক্ট"। ভাগ্য যার অর্থ তা বোঝাচ্ছে - তবে এটি শিরোনাম।


কি দারুন. আমি সত্যই আশা করি না যে এই প্রশ্নটি বহু প্রতিক্রিয়া তৈরি করবে। আমি এটি সংক্ষেপে চেষ্টা করব।

কারণ:

  1. বিশ্লেষণ পক্ষাঘাত / ওভার ইঞ্জিনিয়ারিং / সোনার কলাই / (অন্য কোনও "অতিরিক্ত চিন্তা ভাবনা আপনাকে আঘাত করতে পারে")।
  2. প্রদত্ত কার্যটির জন্য খুব বেশি অভিজ্ঞতা।
  3. গুরুত্বপূর্ণ কিসের দিকে মনোনিবেশ করছেন না।
  4. পর্যাপ্ত অভিজ্ঞতা নেই (এবং এটি উপলব্ধি করে)।

সমাধান (কারণগুলির সাথে মিলছে না):

  1. প্রথম পরীক্ষা।
  2. কোডিং শুরু করুন (মজাদার জন্য)
  3. একজনকে ফেলে দিতে হবে (+ এক পিছু ফেলে দেওয়ার জন্য এপিআই)।
  4. সময়ের সীমাবদ্ধতা সেট করুন।
  5. ফ্লাফ দূরে সরিয়ে, স্টাফ সঙ্গে থাকুন।
  6. নমনীয় কোড তৈরি করুন ("ফেলে দিতে একের বিপরীতে কিন্ডা, না?)"

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

যেহেতু এই প্রশ্নটি বন্ধ রয়েছে তাই আমি আজকের মতো বেশিরভাগ ভোট দিয়ে উত্তরটি গ্রহণ করব। কখন / যদি এটি পরিবর্তন হয় - আমি অনুসরণ করার চেষ্টা করব।


47
সময়ের চাপ জিনিসকে অতিরিক্ত বিবেচনা করা বন্ধ করতে অনেক সাহায্য করে।
ব্যবহারকারী 281377


49
2 বিয়ার পান করুন ..
অ্যান্ড্রু টি ফিনেল

6
দ্বিতীয় সিস্টেমের প্রভাব, কেউ?
বিলি ওনিল

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

উত্তর:


90

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

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

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

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


15
অফিসিয়াল নাম: YAGNI
মার্ক র্যানসোম

48

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

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


43

40 বছর আগে ফ্রেড ব্রুকস এই সম্পর্কে লিখেছিলেন "ফেলে দিতে একটি লিখুন, আপনি যেভাবেই হবেন will" কিছুই পরিবর্তিত হয়েছে........


10
পূর্ববর্তী জেফ অ্যাটউড বলেছিলেন "সংস্করণ 1 সাকস তবে যাইহোক এটি ছেড়ে দিন"। codinghorror.com/blog/2009/12/…
অ্যালান বি

5
এটি কোনও সংস্করণের জন্য সত্য :)
নেমঞ্জা ত্রিফুনোভিক

2
@ অ্যালানবি, এখানে আরও একটি কোডিংহর পোস্ট রয়েছে যা আমার স্মৃতিতে আটকে আছে।
বেঞ্জল

38

এটা কি ভুল? এটি কি প্রাকৃতিক বিবর্তন, না কি আমি নিজেকে এক ঝাঁকুনিতে চালিত করেছি?

এটা নির্ভর করে. এটি বিকাশকারীর রাস্তা ধরে একটি সাধারণ পদক্ষেপ হয়ে থাকে।

  1. একসাথে ছুঁড়ে ফেলা শুরু করুন, এটি দ্বারা পাছায় কামড়ে নিন
  2. ওভার ইঞ্জিনিয়ারিং সমস্ত কিছুর বাইরে জীবন্ত নরকটি শুরু করুন, বুঝতে পারেন যে YAGNI
  3. কিছু প্রাকটিক মিডল গ্রাউন্ডে সেটেল করুন যেখানে সহজে স্টাফ একসাথে থাপ্পর দেওয়া হয় এবং হার্ড / চেঞ্জ-সম্ভাব্য স্টাফকে যথেষ্ট পরিমাণ ইঞ্জিনিয়ারিং দেওয়া হয় যাতে এটি সহজেই / পরিবর্তনের সাথে কাজ করা সহজ করে দেয়।

আপনি যদি 2 নম্বরে থাকেন তবে এটি কেবল এক অট্টালিকা।


4
+1 আপনি যখন ওভার ইঞ্জিনিয়ারিং "হ্যালো ওয়ার্ল্ড" শুরু করবেন তখন আপনি বুঝতে পারবেন যে আপনি 2 নম্বরে রয়েছেন।
Spoike

3
@ স্পোক - অথবা ফিজবজ uzz আলা, এন্টারপ্রাইজ ফিজবুজ !
ক্রেগটিটিপি

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

14

আমি সর্বদা মনে রাখতে চাই যে একটি বিষয় হ'ল "ভবিষ্যত আগে যা ছিল তা নয়"।

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

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

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

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

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


আমাদের বর্তমান কোড বেসের বেশিরভাগ গাম্ফের জন্য অকাল সাধারণকরণ দায়ী।
বেনজল

10

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

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

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

রিওয়ার্ক থেকে আমি 1 এবং 2 নিয়েছি ।


9

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


6
(আমার ডাউনটোট নয়) আপনি কখন পরীক্ষাগুলি লেখা বন্ধ করেন? আপনি সমস্যাটিকে কেবল ইন্ডিয়ারেশনের একটি স্তরের পিছনে ফেলেছেন।
এমএসএলটাররা

2
@ এসএমএল্টাররা আমার মনে হয় গ্রাহাম টিডিডি-তে উল্লেখ করছেন, যেখানে আপনি কোডের আগে পরীক্ষাগুলির একটি সেট লেখেন। তারপরে আপনি সরল কোডটি লিখুন যা এই পরীক্ষাগুলি পাস করে। তারপরে আপনি রিফ্যাক্টর। এই কৌশলটি অনুসরণ করা আপনাকে আপনার প্রাথমিক বিকাশকে অতিরিক্ত চিন্তাভাবনা থেকে বিরত রাখতে পারে যেহেতু আপনার লক্ষ্যটি পরীক্ষার পাস করা, নিখুঁত কোড তৈরি করা নয়।
ওলেকসি

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

6
@ ওल्डপ্রো পরীক্ষাগুলি একটি উপায়, শেষ নয়। তারা ভাল নকশা এবং ফোকাসযুক্ত কর্মপ্রবাহকে উত্সাহ দেয় এবং বাগগুলি হ্রাস করার জন্য হালকাভাবে কার্যকর হওয়ার একটি পার্শ্ব প্রতিক্রিয়া থাকে। সাধারণভাবে বলতে. সর্বদা না।
ফিল

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

4

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


4

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

সঠিকতা সবচেয়ে গুরুত্বপূর্ণ স্বল্পমেয়াদী এবং সহজেই পরীক্ষার মাধ্যমে প্রমাণিত হতে পারে।

রক্ষণাবেক্ষণ পরবর্তী সময়ে উন্নয়নে সহায়তা করবে তবে পিন করা শক্ত।

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


3

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


3

আমি মনে করি এটি একটি সিনড্রোম যে আপনি যে কাজগুলি করছেন তা আপনার পক্ষে খুব সহজ।

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

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


3

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

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

2

এটি বিশ্লেষণের মাধ্যমে কেবল পক্ষাঘাত। এটি অনেক ক্ষেত্রে অনেক লোকের সাথে ঘটে। আপনি এটি মাধ্যমে বিরতি করতে পারেন।

উত্তরটি হল - কেবল এটির সাথে পান ;-)

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

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

ভবিষ্যতে মনে রাখবেন নতুন অগ্রাধিকার মেটাতে রিফ্যাক্টর কোডটি ঠিক আছে। আপনি তাদের সবার সামনে ভবিষ্যদ্বাণী করতে পারবেন না তাই চেষ্টা করবেন না।

পরবর্তী কাজের জন্য কোড - কেবলমাত্র। কোডটি সহজ এবং ভাল তাই আপনার প্রয়োজন হলে রিফ্যাক্টর করা সহজ। প্রোগ্রামটি কাজ করে তা নিশ্চিত করুন। পদ্ধতি পুনরাবৃত্তি করুন।


1

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

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

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

এটি ঠিকঠাক পাওয়া সম্ভব নয়, বা কিছু ক্ষেত্রে এমনকি এটির যে কোনওটি ঠিক যখন আপনি শুরু করেন কারণ নকশাটি সত্যই আবিষ্কারের একটি যাত্রা; এটি শেষ হওয়ার মতো, প্রথম কাজটি করা নয়।

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

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

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

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

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


0

আপনি খুব বেশি জানেন না; আপনি যথেষ্ট জানেন না! এবং আপনি সম্প্রতি বুঝতে পেরেছেন যে।

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

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

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


-1

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


-2

আপনার অতিরিক্ত সময়ে কোডিং করুন, 10 বছর আগে আপনি যেভাবে করেছিলেন, কম উদ্বেগ এবং মজাদার সাথে।

একটি টিম ম্যানেজার এবং সরাসরি তরুণ বিকাশকারী হয়ে উঠুন - যারা এখন আপনার 10 বছর আগে একই মানসিক অবস্থার সাথে আছেন।


-2

না, আপনি এখনও যথেষ্ট জানেন না।

আপনার জ্ঞান সমৃদ্ধ করুন এই সাধারণ নিয়মগুলি দ্বারা:

  • কিসস: এটি ছোট এবং সরল রাখুন।
  • ইয়াগনি: আপনার দরকার নেই।
  • সবচেয়ে খারাপ আরও ভাল: কিছু খারাপ সমাধানগুলি রক্ষণাবেক্ষণের ক্ষেত্রে আরও ভাল।

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

সংক্ষেপে: আপনার কোডটি যথেষ্ট নমনীয় করুন, তবে বেশি নয়। পরিবর্তে, আপনার স্ব নমনীয় করুন, রিফ্যাক্টরিংয়ের উপর একটি বই কিনুন।


-2

দুটি জিনিস:

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

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


-2

তবে যতবারই আমি এটি আক্রমণ করার চেষ্টা করি তখন আমি গভীর চিন্তা-চেতনা শেষ করি

ভুল কিছুই নেই. আপনি কেবল লক্ষ্য করেছেন যে আপনার প্রক্রিয়াটি উন্নতি করার সময় এসেছে: এই ক্ষেত্রে আপনার চিন্তা প্রক্রিয়া।

অনেক লোক বিশ্লেষণে হারিয়ে যায় বা অন্য উপায়ে বিযুক্ত হয়ে পড়ে এবং এটিকে কখনও লক্ষ্য করে না। আপনি খেয়াল করেছেন যাতে ট্র্যাকে থাকার জন্য আপনি আপনার চিন্তা প্রক্রিয়াটি পরিবর্তন করতে পারেন।

এটির অনেকগুলি সমাধান রয়েছে এবং আমি উপরে যেটি দেখেছি তার মধ্যে সেরা সময়টি সীমাবদ্ধতা নির্ধারণ করে। আপনি শুরু করার আগে, সিদ্ধান্ত নিন যে আপনি কতক্ষণ (1 ঘন্টা?) বিশ্লেষণ এবং এটি সম্পর্কে চিন্তা করতে উত্সর্গ করবেন। একটি টাইমার সেট করুন।

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

তা ছাড়া, আমাদের পরিবেশ সর্বদা পরিবর্তিত হয়। নতুন প্রয়োজনীয়তা, নতুন প্রযুক্তি, নতুন হার্ডওয়্যার, ভাষা এবং সিস্টেম আপডেট ইত্যাদির জন্য আমাদের প্রায়শই আমাদের কোড আপডেট করতে হয় need


-2

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


-3

ইউ আর নট রুথলেস ইনফ

http://playswithfire.com/blog/2012/02/19/you-are-not-ruthless-enough/

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

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