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