একজন সফটওয়্যার ইঞ্জিনিয়ার হিসেবে প্রোগ্রামিং ল্যাংগুয়েজ জানার পাশাপাশি আরও বেশ কিছু বিষয় খেয়াল রাখতে হয়। এ সকল বিষয়ের সমন্বয়েই একজন দক্ষ সফটওয়্যার ইঞ্জিনিয়ার গড়ে ওঠে। নিচে এই বিষয়গুলো সংক্ষেপে তুলে ধরা হলো:
১. পরিষ্কারভাবে কোড লিখুন: শুধুমাত্র কাজের উপযোগী করে কোনোভাবে কোড লিখলেই চলবে না। কোডটি যেন সহজেই পড়া ও সম্পাদনা করা যায় তার প্রতিও খেয়াল রাখতে হবে। এ কারনেই কোড ফরমেটিং ও সঠিকভাবে কোড লেখার নিয়ম জানতে হবে।
কোডিং করার সময় অবশ্যই এই কথা খেয়াল রাখবেন যে, আপনার পরে হয়তো অন্য কেউ এই কোড ডেভেলফ করতে হতে পারে। তার পরবর্তী ডেভেলপারের দিক নির্দেশনা সহ কোডিং করুন। এই কথাটা সকল প্লাটফর্ম এ এখন জরুরী হয়ে গেছে। এটা HTML কোডার থেকে শুরু করে সবার জন্যই জরুরী। এছাড়া যদি আপনি মনে করেন আপনার কোড পাইরেসি হতে পারে বা কোন কারনে ক্লায়েন্ট আপনার পাপ্য দিতে অস্বীকার করতে পারে তবে সেটা ভিন্ন ব্যাপার।
২. অবজেক্ট ওরিয়েন্টেড অ্যানালাইসিস ও ডিজাইন: অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর মূল উদ্দেশ্যই হলো পরবর্তীতে যেন প্রোগ্রামটা আবার প্রয়োজন মতো গোছানো যায়। তাই কোডিং করার সময় ভবিষ্যত ভেবেই আপনাকে কোড করতে হবে। তাই এই বিষয়ে অবশ্যই ধারনা থাকতে হবে।
৩. সফটওয়্যারের গুনগতমান জানা: সফটওয়্যার ইঞ্জিনিয়ারিং করতে সফটওয়্যারের গুনগত মান সম্পর্কে ধারনা থাকা আবশ্যক। এ বিষয়টি যে কেউ যত ভালোভাবে বুঝবে ও কাজে লাগাতে পারবে সে তত ভালো সফটওয়্যার তৈরি করতে পারবে।
৪. ডাটা সাজানো ও অ্যালগরিদমের ব্যবহার: সফটওয়্যার ডেভলপমেন্টের জন্য বেসিক ডাটা স্ট্রাকচার যেমন: array, list, stack, tree, map, set ইত্যাদির ব্যবহার ভালোভাবে জানা থাকতে হবে। ডাটা স্ট্রাকচার ও অ্যালগরিদমের যুক্তিমূলক ব্যবহার গুলো জানতে হবে।
৫. বিগ-ও নোটেশন: বিগ-ও নোটেশন(Big-O notation) এর মাধ্যমে অ্যালগরিদম বা কোড এর পারফরমেন্স সম্পর্কে ধারনা পাওয়া যায়। তাই সফটওয়্যারের পারফরমেন্স তুলনা করার জন্য বিগ-ও নোটেশন সম্পর্কে জানতে হবে।
৬. ইউ এম এল নোটেশন: সফটওয়্যার ডিজাইন ও বিশ্লেষনের জন্য ইউএমএল-ই হচ্ছে পরিপূর্ন ল্যাংগুয়েজ।
সফটওয়্যার ডেভলপিং এর সময় সঠিকভাবে ইউএমএল ব্যবহার না করলে ধরে নেওয়া হয় সফটওয়্যারটিতে কোনো ইঞ্জিনিয়ারিং জ্ঞানই প্রয়োগ করা হয়নি।
৭. সফটওয়্যারের তৈরির ধারাবাহিকতা: সফটওয়্যার তৈরি করা কোনো বিচ্ছিন্ন কাজ নয়। নিয়মমাফিক ও ধারাবাহিক ভাবে একটি সফটওয়্যার ডেভলপ করতে হয়। এতে করে ধাপগুলো সহজেই মনে রাখা যায়।
৮. ডিজাইন এর ধরন: একটি সফটওয়্যারকে সঠিকভাবে ডিজাইন করতে পারলে অনেক সাধারন সমস্যা এড়ানো সম্ভব।
তাই সফলতার জন্য সঠিকভাবে সফটওয়্যার ডিজাইনিং জানতে হবে। পারলে সময় নিয়ে এই কাজটা করা ভালো। মনে রাখবেন, ভালো সফটওয়্যার নির্মানের জন্য অনেক কোড এর দরকার নেই, শুধু প্ল্যানিং টা ঠিক হওয়া চাই।
৯. অপারেটিং সিস্টেম সম্পর্কে ধরনা থাকা: সফটওয়্যার তৈরি করতে হলে ওপারেটিং সিস্টেম সম্পর্কে বেসিক ধারনা থাকা প্রয়োজন। কারন সকল কাষ্টমাইজ সফটওয়্যার কোন না কোন অপারেটিং সিস্টেমের উপর ভর করেই চলে।
অপারেটিং সিস্টেম সম্পর্কে ভালো ধারনা থাকলে আপনি সহজেই সফটওয়্যারের মান ও পারফরমেন্স ভালো করতে পারবেন।
১০. কম্পিউটার সংগঠন সম্পর্কে ধারনা: অপারেটিং সিস্টেম সম্পর্কে ধারনার পাশাপাশি আপনার কম্পিউটারের সংগঠন অর্থাৎ হার্ডওয়্যার সম্পর্কেও জানতে হবে। কারন অপারেটিং সিস্টেমগুলো হার্ডওয়্যারের মাধ্যমেই পরিচালিত হয় আর হার্ডওয়্যার সম্পর্কে জানলে আপনি আরও সহজেই ভালো মানের সফটওয়্যার তৈরি করতে পারবেন।
১১. নেটওয়ার্কিং সম্পর্কে ধারনা: সফটওয়্যার ইঞ্জিনিয়ারিং এর জন্য নেটওয়ার্কিং এর উপরও আপনার ধারনা থাকতে হবে কারন সফটওয়্যার ডেভলপমেন্ট এর বিভিন্ন পর্যায়ে এসব কাজে লাগবে।
১২. চাহিদা পর্যালোচনা: বিভিন্ন সফটওয়্যারের চাহিদা পর্যালোচনা করা অনেক গুরুত্বপূর্ন একটি কাজ।
সঠিকভাবে চাহিদা পর্যালোচনা করা কিছুটা অভিজ্ঞতালব্ধ হলেও এটি অত্যন্ত গুরুত্বপূর্ন একটি কাজ।
১৩. সফটওয়্যার টেস্টিং: একটি সফটওয়্যার তৈরির পর তা সঠিকভাবে টেস্টিং করা অত্যন্ত গুরুত্বপূর্ন কাজ। এক্ষেত্রে সফটওয়্যারের ইউনিট টেস্টিং করা উচিৎ। এছাড়াও বিভিন্ন ধরনের কৌশল যেমন ব্ল্যাক বক্স, হোয়াইট বক্স, মোকিং, টি.ডি.ডি, ইনটিগ্রেশন টেস্টিং ইত্যাদি অবশ্যই জানা থাকতে হবে।
১৪. নির্ভরশীলতা ও রক্ষনাবেক্ষন: লাইব্রেরি প্রোগ্রাম ম্যানেজমেন্ট করা ও পরিচিত অন্যান্য টুলস যেমন: Maven, Ant, lvy ইত্যাদি টুলগুলো বড় বড় প্রোজেক্টের জন্য দরকার হয়।
এ কারনে এই সকল টুল সম্পর্কেও ধারনা থাকতে হবে।
১৫. অবজেক্ট রিলেশনাল ম্যাপিং: ওআরএম বা অবজেক্ট রিলেশনার ম্যাপিং হচ্ছে অবজেক্টকে ডাটাবেজে ম্যাপিং করার একটি গুরুত্বপূর্ন টুল। এর মাধ্যমে কোডের পরিমান অনেক কমে যায় ও পর্যালোচনাও সহজ হয়।
১৬. কন্টিনিউয়াস ইন্টিগ্রেশন: কন্টিনিউয়াস ইন্টিগ্রেশনের সাহায্যে সফটওয়্যার ডেভলপমেন্ট অনেক সহজ হয়ে যায়। এটি নিজে নিজেই মডিউল টেস্টিং থেকে শুরু করে অটো ভার্সনিংও করে থাকে।
কন্টিনিউয়াস ইন্টিগ্রেশন টুল যেমন: Hudson(http://hudson-ci.org/) ব্যবহার করা জানতে হবে।
১৭. ডি.আই: ডি.আই বা ডিপেনডেন্সি ইনজেকশন এর মাধ্যমে সহজেই অবজেক্ট তৈরি ও তা ম্যানেজমেন্টের সুযোগ পাওয়া যায়। এতে করে বড় ধরনের সফটওয়্যার তৈরি করা অনেক সহজ হয়ে যায়।
১৮. ভার্সন কন্ট্রোলিং সিস্টেম: ভার্সন কন্ট্রোলিং সিস্টেম যেমন: SVN, TFS, CVS ইত্যাদি ব্যবহার করে সফটওয়্যারের বিভিন্ন ভার্সন তৈরি করার সময় সাশ্রয় হয়। এসব টুলের পরিপূর্ন ব্যবহার জানা জরুরী।
১৯. আর্কিটেকচারাল গঠন সম্পর্কে ধারনা: সফটওয়্যারের আর্কিটেকচারাল গঠন সম্পর্কে ধারনা থাকাটা খুবই জরুরী। এজন্য আপনাকে MVC, MVP, MVVM ইত্যাদি সম্পর্কে জানতে হবে। এতে করে আপনি সহজেই সকলের বোধগম্য ভাবে কোডিং করতে পারবেন।
২০. বিভিন্ন দেশ ও ভাষার উপযোগী সফটওয়্যার তৈরি: সফটওয়্যার তৈরি করার সময় একে বিভন্ন ভাষার উপযোগী করে তৈরি করলে তা সহজেই ব্যবহারকারীরা ব্যবহার করতে পারে। তাই এই বিষয়টিও মাথায় রাখার চেষ্ঠা করবেন।
সবচেয়ে বড় কথা হচ্ছে আপনার সফটওয়্যার যেন ইউজার ফ্রেন্ডলি হয় সে দিকে যথেষ্ট পরিমান নজর দিবেন।
খুব শ্রীঘ্রই মাইসিস প্রোগ্রামিংএ আগ্রহীদের নিয়ে নতুন একটি প্রোগ্রামিং (পিএইচপি) কোর্স চালু করতে যাচ্ছে। আপনি যদি আগ্রহী থাকেন তবে সরাসরি যোগাযোগ করতে পারেন।
লেখাটা ভালো লাগলে আমাদের ফেসবুক ফেইজে লাইক দিয়ে কানেক্ট থাকতে পারেন।
।
অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।