# সফটয়্যার ইঞ্জিনিয়ারিং: ব্যবহারিক আঙ্গিক-১

> My thoughts on Software Engineering's practical aspects.

Published: 2012-11-25

**শুরুর আগে**

আমি কোন প্রফেশনাল সফটয়্যার কোম্পানীতে কখনো কাজ করি নি। যদিও কয়েকটা সফটয়্যার তৈরীতে কাজ করেছি, যেগুলি প্রফেশনালি ব্যবহৃত হচ্ছে, তবে এর প্রায় কোনটাতেই নিয়ম মেনে কাজ করা হয নি। তবে অসাধারন কয়েকজন সফটয়্যার ডেভেলপারের সাথে আমার ব্যক্তিগত হৃদ্বতা আছে, তাদের কাছ থেকে অনেক কিছু শিখেছি। এ সিরিজটাতে আমি যা লিখবো তার প্রায় পুরোটাই আমার পুথিগত বিদ্যা আর কমন সেন্সের মিশেল। বাকিটা আমার ব্যবহারিক জ্ঞান। তাই এ লেখাতে কিছুটা ভুল-ভ্রান্তি থাকাটা অস্বাভাবিক নয়। খুব সিরিয়াসলি নেয়ার কোন দরকার নেই।

**ভূমিকা**

আমার এ লেখাটা ইঞ্জিনিয়ারিংয়ের ছাত্রদের উদ্দেশ্যে লেখা, যারা তাদের কোর্স কারিকুলামে সফটয়্যার ইঞ্জিনিয়ারিং বিষয়টা পড়ে। বাংলাদেশের বেশিরভাগ বিশ্ববিদ্যালয়ে সিএসসি, আইসিটি, সিএসটি প্রভৃতি সাবজেক্টে তিন বা তার চেয়ে বেশি ক্রেডিটের সফটয়্যার ইঞ্জিনিয়ারিং কোর্স পড়ানো হয়। তবে ব্যক্তিগত অভিজ্ঞতা থেকে জানি, মোট ছাত্রদের প্রায় ৯০ শতাংশেরই ছাত্রবস্থায় কোন প্রফেশনাল কাজের অভিজ্ঞতা থাকে না। এছাড়া বিভিন্ন প্রজেক্টে কাজ করার সময় দেখায় যায় গ্রুপের সাধারনত ১/২ জন কাজ করে, বাকিরা করে না। আমার এ লেখার উদ্দেশ্য সফটয়্যার তৈরী করা শেখানো না, বরং বিভিন্ন প্রজেক্টে কাজ করার সময় কিভাবে কাজ করতে হবে সেটা শেখানো। এছাড়া এ লেখাটা ব্যবহারিক সফটয়্যার তৈরীর ক্ষেত্রেও কাজে লাগবে বলে আমার বিশ্বাস।

**সিদ্ধান্ত গ্রহণ**

প্রথমেই কোন প্রজেক্টে কাজ করার জন্য সিদ্ধান্ত গ্রহণ করতে হবে। কোন প্রজেক্টে কাজ করবো, আমাদের তৈরী সফটয়্যারের কি কি বৈশিষ্ট্য থাকবে ইত্যাদি ইত্যাদি। এরপর সিদ্ধান্ত নিতে হবে কি কি টুলস ব্যবহার করবো, প্রোগ্রামিং ভাষা কি হবে, সফটয়্যারের প্লাটফরম কি হবে ইত্যাদি। এই প্রত্যেকটি বিষয় নিয়ে ভবিষ্যতে আরো বিস্তারিত আলোচনা করা হবে।

**টিমমেট বাছাই**

কোন একটা সফটয়্যার প্রজেক্টে কাজ করার সবচেয়ে গুরুত্বপূর্ণ বিষয় হচ্ছে কাদের সাথে কাজ করা হবে সেটা ঠিক করা। কতজন নিয়ে কাজ করতে হবে, কারা কারা কাজ করবে, কার কি দায়ুত্ব হবে এসব আর কি। এ ব্যাপারে বিশাল বিশাল লেখা লিখে ফেলা যায়। আমার ইচ্ছা আছে ভবিষ্যতে এ নিয়ে বিস্তারিত পোস্ট দেয়া।
