ক্যাপস্টোন সপ্তাহ 5: কোনও ইঞ্জিনিয়ারের মতো ফ্রেমওয়ার্কগুলি শিখতে না জানুন এবং কীভাবে অকেজো

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

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

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

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

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