টিএল; ডিআর: এটি আপনি কী সমাধান করার চেষ্টা করছেন তার উপর নির্ভর করে।
আমি এই সম্পর্কে আমার গ্র্যাম্পসের সাথে একইরকম কথোপকথন করেছি, যখন আমরা সি # তে ফানক এবং অ্যাকশনটি কী দুর্দান্ত are আমার গ্র্যাম্পস একটি খুব পুরানো টাইমার প্রোগ্রামার, এটি পুরো কোডটি গ্রহণকারী কম্পিউটারগুলিতে সফ্টওয়্যার চালিত হওয়ার পরে উত্স কোডের কাছাকাছি ছিল।
তিনি জীবনে বেশ কয়েকবার প্রযুক্তি পরিবর্তন করেছেন। তিনি সি, সিওবিএল, প্যাসকাল, বেসিক, ফোর্টরান, স্মলটালক, জাভাতে কোড লিখেছেন এবং শেষ পর্যন্ত শখ হিসাবে সি # শুরু করেছিলেন। আমি তাঁর সাথে কীভাবে প্রোগ্রাম করবেন তা শিখেছি, আমি যখন তখন একজন কোলাহল ছিলাম তখন আমি তার কোলে বসে আইবিএমের সাইডকিকের নীল সম্পাদককে আমার প্রথম লাইন কোডটি খোদাই করেছিলাম। আমার বয়স যখন 20 বছর, আমি ইতিমধ্যে বাইরে খেলার চেয়ে কোডিংয়ে বেশি সময় ব্যয় করেছি।
এগুলি আমার স্মৃতিগুলির একটি সামান্য বিষয়, তাই আমি তাদেরকে পুনর্ব্যক্ত করার সময় যদি আমি বাস্তবিক না হই তবে আমাকে ক্ষমা করুন। আমি কিছুটা মুহুর্তের অনুরাগী।
তিনি আমাকে এই বলেছিলেন:
"আমাদের কি কোনও সমস্যার সাধারণীকরণের জন্য যাওয়া উচিত, বা নির্দিষ্ট সুযোগে সমাধান করা উচিত? আপনি কি জিজ্ঞাসা করবেন? আচ্ছা, এটি একটি ... প্রশ্ন।"
গ্র্যাম্পস তার মুখের উপর তার চশমার অবস্থান ঠিক করার সময় একটি ক্ষণিক মুহূর্তের জন্য এটি সম্পর্কে চিন্তা করতে বিরতি নিয়েছিল। তিনি তার কম্পিউটারে একটি ম্যাচ -3 গেম খেলছিলেন, যখন তাঁর পুরানো সাউন্ড সিস্টেমে একটি ডিপ বেগুনিটির এলপি শুনছিলেন।
"ঠিক আছে, এটি আপনি কোন সমস্যার সমাধান করার চেষ্টা করছেন তার উপর নির্ভর করবে", তিনি আমাকে বলেছিলেন। "এটি বিশ্বাস করা লোভনীয় যে সমস্ত নকশার পছন্দগুলির জন্য একটি একক, পবিত্র সমাধান বিদ্যমান, তবে একটি নেই isn't সফ্টওয়্যার আর্কিটেকচার পনির মতো, আপনি দেখুন see"
"... পনির, গ্র্যাম্পস?"
"আপনার পছন্দের সম্পর্কে আপনি যা ভাবেন তা বিবেচ্য নয়, সর্বদা এমন কেউ আছেন যা ভাবেন যে এটি দুর্গন্ধযুক্ত"।
আমি এক মুহুর্তের জন্য বিভ্রান্তিতে ঝিমঝিম খেয়েছি, তবে আমি কিছু বলার আগেই গ্র্যাম্পস এগিয়ে গেল।
"আপনি যখন গাড়ী বানাচ্ছেন, আপনি কীভাবে কোনও অংশের জন্য উপাদানটি বেছে নেবেন?"
"আমি ... আমি অনুমান করি এটি জড়িত ব্যয় এবং অংশটি কী করা উচিত তার উপর নির্ভর করে, আমার ধারণা।"
"এটি সেই অংশের উপর নির্ভর করে যে অংশটি সমাধান করার চেষ্টা করছে You আপনি স্টিলের তৈরি টায়ার বা চামড়ায় তৈরি উইন্ডশীল্ড তৈরি করবেন না You আপনি এমন উপাদানটি বেছে নিন যা আপনার হাতে থাকা সমস্যাটি সবচেয়ে ভাল সমাধান করে। জেনেরিক সমাধান? বা একটি নির্দিষ্ট? কোন সমস্যার জন্য, কোন ব্যবহারের ক্ষেত্রে? আপনি কি একবারে ব্যবহার করা হবে এমন কোনও কোডে সর্বাধিক নমনীয়তা দেওয়ার জন্য একটি সম্পূর্ণ কার্যকরী পদ্ধতির সাথে যাওয়া উচিত? আপনি কি খুব বিশেষায়িত, ভঙ্গুর কোড লিখতে চান? আপনার সিস্টেমের এমন একটি অংশ যা প্রচুর এবং প্রচুর ব্যবহার দেখতে পাবে এবং সম্ভবত প্রচুর পরিবর্তন দেখা যাবে? নকশার পছন্দগুলি কোনও গাড়ীর অংশের জন্য যে উপকরণগুলি বেছে নেন বা লেগো ইটের আকারের মতো আপনি একটি ছোট বাড়ি তৈরি করতে যাচ্ছেন তা পছন্দ মতো are "কোন লেগো ইট সবচেয়ে ভাল?"
প্রবীণ প্রোগ্রামারটি সামান্য লেগো ট্রেনের মডেলটির জন্য পৌঁছেছিল যা চালিয়ে যাওয়ার আগে তার টেবিলে রয়েছে।
"আপনি কেবল উত্তর দিতে পারেন যে আপনার যদি সেই ইটের প্রয়োজন তা জানেন তবে আপনি কীভাবে জানবেন যে নির্দিষ্ট সমাধানটি জেনেরিকের চেয়ে ভাল, বা বিপরীতে, আপনি যদি জানেন না যে আপনি কী সমস্যা করছেন সমাধানের চেষ্টা করছেন? আপনি যে পছন্দটি বুঝতে পারছেন না এমন কোনও অতীত আপনি দেখতে পাচ্ছেন না। "
".. আপনি শুধু ম্যাট্রিক্স উদ্ধৃতি করেছেন ? "
"কি?"
"কিছুই না, চলুন।"
"ঠিক আছে, ধরুন আপনি জাতীয় ইনভয়েস সিস্টেমটিতে কিছু তৈরি করার চেষ্টা করছেন that আপনি জানেন যে সেই নরকীয় এপিআই এবং এর ত্রিশ হাজার লাইনের এক্সএমএল ফাইলটি ভিতর থেকে কেমন দেখাচ্ছে that ফাইলটি তৈরির জন্য 'জেনেরিক' সমাধানটি কীভাবে দেখতে পেতেন? যেমন? ফাইলটি optionচ্ছিক পরামিতিগুলিতে পূর্ণ, কেবলমাত্র ব্যবসায়ের খুব নির্দিষ্ট শাখা ব্যবহার করা উচিত এমন ক্ষেত্রে পূর্ণ most বেশিরভাগ ক্ষেত্রে আপনি নিরাপদে সেগুলি উপেক্ষা করতে পারেন You আপনি যদি জেনেরিক চালান ব্যবস্থা তৈরি করতে চান না তবে আপনি কেবল ' ll সর্বদা বিক্রি হয় জুতো shoes জুতো বিক্রির জন্য কেবল একটি সিস্টেম তৈরি করুন এবং এটি সেখানে সেরা ডার্নড জুতো-বিক্রয় চালানের ব্যবস্থা হিসাবে তৈরি করুন Now এখন, যদি আপনাকে আরও বিস্তৃত অ্যাপ্লিকেশনটিতে কোনও ধরণের ক্লায়েন্টের জন্য চালান ব্যবস্থা তৈরি করতে হয় - একটি স্বাধীন, জেনেরিক বিক্রয় ব্যবস্থা হিসাবে পুনরায় বিক্রয় করা হবে,উদাহরণস্বরূপ - এখন কেবল সেই গ্যাস, খাদ্য বা অ্যালকোহলে ব্যবহৃত হয় সেই বিকল্পগুলি প্রয়োগ করা আকর্ষণীয়।এখন সেগুলি সম্ভব ব্যবহারের ক্ষেত্রে। তারা কেবল কিছু অনুমানমূলক হওয়ার আগে কেসগুলি ব্যবহার করবেন না এবং আপনি কেস ব্যবহার করবেন না তা প্রয়োগ করতে চান না । ব্যবহার করবেন না প্রয়োজনের ছোট ভাই "
গ্র্যাম্পস লেগো ট্রেনটিকে তার জায়গায় আবার রেখেছিল এবং তার ম্যাচ -3 গেমটিতে ফিরে আসে।
"সুতরাং, প্রদত্ত সমস্যার জেনেরিক বা একটি নির্দিষ্ট সমাধান বাছাই করার জন্য আপনাকে প্রথমে বুঝতে হবে যে সমস্যাটি কী তা কী। অন্যথায় আপনি কেবল অনুমান করছেন, এবং অনুমান করা প্রোগ্রামার নয়, পরিচালকদের কাজ is যেমন প্রায় আইটি-তে সমস্ত কিছুই নির্ভর করে।
তাই সেখানে যদি আপনি এটি আছে. "এটা নির্ভর করে". সফ্টওয়্যার ডিজাইনের কথা চিন্তা করার সময় এটি সম্ভবত সবচেয়ে শক্তিশালী দ্বি-শব্দের এক্সপ্রেশন।