আপনি ডকুমেন্টেশন পড়া বন্ধ করে দিয়েছেন, তাই এখন আপনি সিস্টেমগুলো বুঝতে পারছেন না
আমি বিশ্ববিদ্যালয় পর্যায়ে কম্পিউটার সায়েন্স নিয়ে পড়াশোনা করিনি। আমি জিওফিজিক্স নিয়ে পড়েছি।
আমি পড়ার মাধ্যমে সফটওয়্যার শিখেছি। আমি ডকুমেন্টেশন, সোর্স কোড এবং GitHub issues পড়েছি। আমি পুরনো ব্লগ পোস্ট এবং RFC থ্রেড পড়েছি। আমি কোনো বুটক্যাম্প ব্যবহার করিনি। আমি শুধু একটি ব্রাউজার এবং মূল উৎসগুলো (raw material) ব্যবহার করেছি।
যখন আমি Cloudflare Workers শিখেছিলাম, তখন আমার কাছে কোনো কোর্স ছিল না। আমার কাছে ছিল ডকুমেন্টেশন এবং changelog। রাত ১টার সময় একটি ত্রুটিপূর্ণ ডিপ্লয়মেন্ট (deployment) ঠিক করার জন্য আমি বাইন্ডিং কনফিগারেশনটি তিনবার পড়েছিলাম। আমি কয়েক বছর আগের GitHub থ্রেড থেকে উত্তর খুঁজে পেয়েছিলাম।
আমি বিষয়গুলো যতক্ষণ না পুরোপুরি বুঝতে পারছিলাম, ততক্ষণ সেগুলো নিয়ে বসে থাকতাম।
এখন আমি একটি নতুন প্যাটার্ন দেখতে পাচ্ছি। মানুষ কেন একটি সেকশন বিভ্রান্তিকর তা জিজ্ঞেস করে না। তারা সরাসরি X-এর জন্য কোড চায়। তারা কোনো ফাংশন কীভাবে কাজ করে তা বোঝার জন্য সোর্স কোড অনুসরণ (trace) করে না। তারা শুধু জিজ্ঞেস করে একটি ফাংশন কী করে।
আগে লক্ষ্য ছিল বিষয়টির উপলব্ধি বা বোধগম্যতা। এখন লক্ষ্য হলো আউটপুট। মানুষ এটাকে দক্ষতা বলে। আসলে এটি একটি ঋণ (debt)।
একটি 'half-open state' কী তা না জেনেই আপনি একটি circuit breaker তৈরি করতে পারেন। এটি আপনার টেস্টে কাজ করবে। কিন্তু ছয় সপ্তাহ পর ভারী লোডের সময় এটি প্রোডাকশনে ব্যর্থ হবে। আপনি ব্যর্থ হবেন কারণ আপনার কোনো মেন্টাল মডেল (mental model) নেই। আপনি 'কী' (what) তা পেয়েছেন কিন্তু 'কেন' (why) তা জানেন না।
'কেন' (why) অংশটিই একমাত্র গুরুত্বপূর্ণ।
ডকুমেন্টেশন পড়া একটি মেন্টাল মডেল তৈরি করে। আপনি ফুটনোটগুলোতে ট্রেডঅফ (tradeoffs) এবং এজ কেসগুলো (edge cases) দেখতে পান। পড়ার সময় আপনি যে জড়তা বা বাধা অনুভব করেন, সেখানেই প্রকৃত শেখা ঘটে।
যখন আমি Bookmark Brain তৈরি করি, আমাকে Cloudflare Vectorize বুঝতে হয়েছিল। আমি শুধু API ব্যবহার করিনি। আমি embedding dimensions, index behavior এবং query distance metrics নিয়ে পড়াশোনা করেছি। আমি HNSW পেপারটি পড়েছি। আমি বিভ্রান্তি কাটিয়ে জ্ঞান অর্জন না করা পর্যন্ত বিষয়টি নিয়ে বসে থাকতাম।
সেই জ্ঞানই আমার সিস্টেমগুলোকে প্রোডাকশনে সচল রাখে। রাত ২টায় যদি কিছু ভেঙে যায়, তবে আমার কাছে আমাকে গাইড করার মতো একটি মেন্টাল মডেল আছে। আমি যদি শুধু প্রম্পট ব্যবহার করতাম, তবে আমার কাছে একটি ডেমো থাকত, কিন্তু এমন কোনো সিস্টেম থাকত না যা নিয়ে আমি যুক্তি দিয়ে কাজ করতে পারি।
এটি ইঞ্জিনিয়ারিংয়ের ক্ষেত্রে একটি বিভাজন তৈরি করছে।
- কোড রিভিউতে: একজন ডেভেলপার তাৎক্ষণিকভাবে একটি N+1 সমস্যা শনাক্ত করতে পারেন কারণ তিনি ORM ডকুমেন্টেশন পড়েছেন। অন্য ডেভেলপারটি এটি মিস করেন কারণ তিনি শুধু কোডটি জেনারেট করেছিলেন।
- আর্কিটেকচারে: একজন ডেভেলপার Kafka partitions এবং offsets বোঝেন। অন্যজন শুধু শব্দগুলো জানেন কিন্তু কাঠামোর ধারণা তার নেই।
- ডিবাগিংয়ে: ডিবাগিং হলো আপনার মেন্টাল মডেলের একটি বহিঃপ্রকাশ। এটি ছাড়া আপনি কেবল এলোপাথাড়ি পরিবর্তন করবেন এবং ভালো কিছুর আশা করবেন।
AI পুরো একটি আর্কিটেকচার ধারণ করতে পারে না। এটি আপনার কোডবেসের সামগ্রিক চিত্র (big picture) দেখতে পায় না। আমি দেখেছি AI-জেনারেটেড ক্যাশিং লেয়ার প্রতিটি টেস্ট পাস করেছে, কিন্তু পরে প্রোডাকশনে ক্র্যাশ করেছে কারণ কোনো মানুষই race conditions সম্পর্কে বুঝতে পারেনি।
এই বিভাজনটি AI ব্যবহার করা নিয়ে নয়। এটি নিয়ে যে আপনি এটি কীভাবে ব্যবহার করছেন।
আপনি কি এটি ট্রেডঅফগুলো বোঝার জন্য ব্যবহার করেন? নাকি বোঝার কাজ এড়ানোর জন্য ব্যবহার করেন?
সেরা ডেভেলপাররা শুধু দ্রুত কাজ করেন না। তারা এখনও changelogs এবং সোর্স কোড পড়েন। তারা এমন একটি মেন্টাল মডেল তৈরি করছেন যা প্রম্পটিং দিয়ে তৈরি করা সম্ভব নয়।
ডকুমেন্টেশন পড়া একটি অভ্যাস। এটি আপনার প্রোডাক্টিভিটির ওপর কোনো কর (tax) নয়। বরং সিস্টেম ভেঙে পড়লে এটিই আপনাকে অপরিহার্য করে তোলে।
আপনি যদি পড়া বাদ দেন, তবে আপনি চিন্তা করাও বাদ দিচ্ছেন। আপনি এটি ততক্ষণ বুঝতে পারবেন না যতক্ষণ না আপনি প্রোডাকশনে এমন অবস্থায় পড়েন যেখানে আপনার ভরসা করার মতো কিছুই নেই।
Source: https://dev.to/dannwaneri/you-stopped-reading-the-docs-now-you-dont-understand-the-systems-go1
Optional learning community: https://t.me/GyaanSetuAi
