রবিবার, ১০ ডিসেম্বর, ২০১৭

সফটওয়্যার ইঞ্জিনিয়ার হতে চাইলে একজন ইউনিভার্সিটির স্টুডেন্টের একাডেমিক পড়াশোনার পাশাপাশি কি ধরণের প্রস্তুতি নেওয়া উচিত ?

আসসালামু 'আলাইকুম, আমার কিছু মতামত পেশ করছি, আশা করি কাজে লাগতে পারে
১। স্কিল ডেভেলপমেন্ট এর জন্য ইউনিভার্সিটির প্রথম ও দ্বিতীয় বছয় প্রোগ্রামিং কন্টেস্ট এ সময় দিলে ভালো হয়, তখন প্রোগ্রামিং এর প্রতি একটা টান তৈরি হবে এবং প্রব্লেম সলভিং এর মজাটা পাওয়া যাবে। একটা সমস্যা কে কিভাবে ছোট ছোট ভাগে ভেঙ্গে সলভ করতে হয়, কোন সময় কোন ধরণের এলগরিদম ব্যবহার করতে হয়, কখন কম্প্রোমাইজ করতে হয় ইত্যাদি বিষয়ে একটা ভালো ধারণা এই সময় তৈরি হয়। ইউনিভার্সিটি গুলোতে প্রায়ই সিনিয়ররা কিংবা স্যারেরা কন্টেস্ট সংক্রান্ত বুটক্যাম্প বা নিদেনপক্ষে গাইডলাইন সেশন করে থাকেন, সেগুলোতে অংশগ্রহন করা যেতে পারে। যারা CSE/ICT এ পড়ছেন না, তারা সাধারণত ইউনিভার্সিটি থেকে কন্টেস্ট এ অংশগ্রহণ করতে পারেন না - তাদের অনলাইন কন্টেস্ট গুলাতে সময় দিতে হবে। অনলাইন কন্টেস্ট এর জন্য কয়েকট জনপ্রিয় সাইট হলঃ topcoder, codechef, uva, hackerrank

২। এর পরের ২ বছরে একটা নির্দিষ্ট track
(PHP/.NET/Java/Ruby/NodeJS/JavaScript/Android/iOS/C) বেছে নিয়ে তার উপর স্পেশালাইজেশন তৈরি করা উচিত। এর জন্য প্রথমেই যেটা প্রয়োজন হবে সেটা হল কমপক্ষে ২-৩ টা ভালো বই কাভার টু কাভার পড়া এবং এর বিষয়গুলো আত্বস্থ করা। বইয়ের প্রতিটা কোড ব্লক, এক্সারসাইজ, প্রব্লেম সলভিং নিজ হাতে টাইপ করে করে রান করে দেখতে হবে। অনেক সময় বিরক্তি আসতে পারে, কিন্তু তারপরও এটি চালিয়ে যেতে হবে ততদিন পর্যন্ত যতদিন নিজের মনে কনফিডেন্স না আসে। অনেক সময় এরকম হতে পারে যে একটা track এ অনেকদিন সময় দেয়ার পরও হচ্ছে না, তখন অন্যান্য track নিয়ে চেষ্টা করা যেতে পারে। অনেকে চিন্তা করেন যে কোনটা দিয়ে শুরু করবেন - একটু ঢুঁ মেরে দেখুন প্রত্যেকটির সাইট ও অনলাইন ডকুমেন্টেশন এ, কাছের বড় ভাইদের জিজ্ঞেস করুন, ইন্ডাস্ট্রিতে কাজ করছে এমন কোন বন্ধু বা আত্বীয়কেও জিজ্ঞেস করে দেখতে পারেন। যেটা নিয়েই শুরু করুন না কেন, লেগে থাকতে হবে আর যথেষ্ট সময় দিলে যেকোন লাইনেই ভালো করা সম্ভব।
৩। যখন মনে হবে যে একটা কনফিডেন্স আসছে, অনেকগুলো ছোট ছোট প্রজেক্ট হয়ে গিয়েছে আর সহজেই একটা প্রব্লেম সলভ করা যায় একটু চিন্তা করলে, তখন পার্সোনাল কিছু প্রজেক্ট তৈরিতে হাত দেয়া উচিত যেখানে এই জ্ঞান পরিপূর্ণ ভাবে কাজে লাগবে। হতে পারে একটা Small POS system / Student Management System / HR Management / URL shortener / Invoice Generator / Job site / Blog / Twitter clone / University Portal / E-commerce store etc এরকম যেকোন কিছু যা আপনার ভালো লাগে। অনলাইনে এধরণের ভালো ভালো সলিউশন গুলো থেকে ফিচার বাছাই করে সেগুলা ইম্প্লেমেন্ট করলে একটা আইডিয়া তৈরি হবে যে আসলে কি থাকে এ ধরণের সফটওয়্যার এ। যেমন - একটা Invoice Generator বানানোর জন্য freshbooks.com, invoicemachine.com ইত্যাদি সাইট এ ফ্রি একাউন্ট করে দেখা যেতে পারে কি কি ফিচার তারা দেয় এবং সেখান থেকে ৮/১০ টা মূল ফিচার নিয়ে নিজের একটা ভার্শন বানানো যেতে পারে।
৪। এর পাশাপাশি ভালো ওপেন সোর্স প্রজেক্ট খুঁজে খুঁজে সেগুলার কোড পড়তে হবে ও ডাউনলোড করে চালিয়ে দেখতে হবে। কিছু কিছু যায়গায় মডিফাই করে দেখতে হবে কি ইম্পাক্ট হয়, কোন অংশ কিভাবে কাজ করে ইত্যাদি। একজন অভিজ্ঞ প্রোগ্রামার মাত্রই সে অন্যের লেখা প্রচুর কোড পড়ে এবং ভালো কোড দেখে নতুন নতুন জিনিস শেখে। গিটহাব এর explore পেজ এ নতুন ও ট্রেন্ডিং কোড নিয়মিতভাবে আপডেট করা হয়, এখানে চোখ রাখা যেতে পারে। যেমন - ওপেন সোর্স Invoice Generator এর কোড হিসেবে invoiceninja.com এর কোড দেখা যেতে পারে, E-commerce store হিসেবে sylius.org এর কোড দেখা যেতে পারে।
৫। এরপর যদি সুযোগ থাকে তাহলে এরকম ১/২ টা প্রজেক্ট এ কন্ট্রিবিউট করতে পারলে খুব ভালো হবে। এক্ষেত্রে শুরু করতে হবে কোন বাগ সলভ / ডকুমেন্টেশন আপডেট / খুব ছোট কোন ইম্প্রুভমেন্ট ইত্যদি দিয়ে। এখানে অনেকের মধ্যে একটা হেজিটেশন কাজ করে যে "আমি করতে পারি এমন কিছু কি এখানে আছে?" বা "আমার চেয়ে অনেক অনেক বড় বড় ডেভেলপাররা কাজ করছে, আমি কি পাত্তা পাবো?" ইত্যাদি - এগুলো মাথা থেকে ঝেড়ে ফেলে দিয়ে দেখতে হবে ছোট ছোট কাজ কি আছে এবং সেখান থেকে শুরু করতে হবে। গিটহাব এ এধরণের প্রজেক্ট এর কন্ট্রিবিউটর পেজ এ গেলে দেখা যাবে যে মাত্র ১টা কমিট করেছে এমন লোকও অনেক আছে। তারা যদি করতে পারে, তাহলে আমিও পারবো এমন মানসিকতা রাখতে হবে। যেমন invoicenija.com এর কন্ট্রিবিউটর পেজে দেখা যাবে যে ৮৫ জন কন্ট্রিবিউটর এর মধ্যে ২৯ জনের আছে ১টা করে কমিট, ১০ জনের আছে ২টা করে কমিট, ৭ জনের ৩টা করে কমিট, ৭ জনের ৪টা করে কমিট ইত্যাদি।
৬। স্কিল ডেভেলপমেন্ট এর পাশাপাশি আপডেটেড থাকার জন্য track এর রেগুলার আপডেট ফলো করতে হবে। এজন্য reddit, stackoverflow, quora, sitepoint, etc সাইটে সবসময় চোখ রাখতে হবে, পাশাপাশি নিজের track এর এগ্রেগেটেড সাইট গুলো ও ফোরাম গুলোও দেখতে হবে। যেমন PHP তে যারা কাজ করেন তারা planet-php.net, phpdeveloper.org, laravel-news.com, laracasts.com, symfony.fl ইত্যাদি সাইট এ চোখ রাখতে পারেন, অংশগ্রহণ করতে পারেন phpXperts গ্রুপ সহ অন্যান্য গ্রুপ এ। নতুন কোন ফিচার / লাইব্রেরি / কোড স্নিপেট ভালো লাগলে ডাউনলোড করে চালিয়ে দেখতে পারেন। আর এই ফিল্ডের বড় বড় অভিজ্ঞ প্রোগ্রামারদের ব্লগ এ নিয়মিত ভিজিট করতে হবে, তাদের পোষ্ট পড়তে হবে এবং তাদের চিন্তাধারা গুলো বুঝার চেষ্টা করতে হবে। দেশে কাজ করছেন এমন অভিজ্ঞ প্রোগ্রামারদেরদের সাথে যোগাযোগ রাখার চেষ্টা করা যেতে পারে, এজন্য তাদেরকে ফেসবুক/টুইটারে ফলো করতে হবে।
৭। এভাবে নিজের স্কিল যখন একটা পর্যায় পর্যন্ত পৌঁছে যাবে, তখন সম্ভব হলে কিছু ফ্রিল্যান্সিং কাজ করা যেতে পারে। এজন্য সরাসরি আপওয়ার্ক বা এধরণের ফ্রিল্যান্সিং সাইট থেকে বিড করে কাজ নেয়া যেতে পারে বা অন্য কোন টিম / বড় ভাইয়ের সাথে জয়েন্টলি কাজ করা যেতে পারে। উদ্দেশ্য হল হাত পাকানো - ক্লায়েন্ট এর সাথে কমিউনিকেশন, রিকোয়রমেন্ট বুঝা, এস্টিমেট করা, মাইলষ্টোন এ ভাগ করে কাজ করা, কাজের ডেলিভারি দেয়া, কমিটমেন্ট ধরে রাখা ইত্যাদি বিষয়গুলো এই ফাঁকে আয়ত্তে এসে যাবে। অনেক সময় বিভিন্ন কোম্পানী পার্ট-টাইম বা ইন্টার্নশিপ এর সুযোগ দেয়, সেরকম ম্যানেজ করতে পারলে আরো ভালো। এখানে খেয়াল রাখতে হবে যে কাজ করতে গিয়ে যেন ওভার কমিটমেন্ট না হয়ে যায় - এমন যেন না হয় যে সময় মত কাজ না দিতে পারার কারণে কিংবা লো কোয়ালিটির কাজের কারণে নিজের বা নিজের কমিউনিটির বা দেশের সুনাম নষ্ট হল। এই বিষয়ে অনেক সুন্দর সুন্দর আর্টিকেল ও গাইডলাইন অনলাইন এ পাওয়া যায় - সেগুলা পড়তে হবে এবং নিজেকে যতটা সম্ভব ডিসিপ্লিন এর মধ্যে রাখতে হবে।
৮। গ্রাজুয়েশন এর পর জব এর জন্য প্রস্তুতি হিসেবে একটা ভালো রেজুমে বানাতে হবে - এখানে হাইলাইট করতে হবে পার্সোনাল প্রজেক্ট, ওপেন সোর্স কন্ট্রিবিউশন, নিজের ব্লগ, পছন্দের সাইট/রিসোর্স এর লিঙ্ক ইত্যাদি। একটু খুঁজলেই সুন্দর সুন্দর রেজুমের ফরম্যাট পাওয়া যায় অনলাইন এ, একেবারেই না পেলে গুগল ডকস এর টেমপ্লেট থেকে বেছে নেয়া যেতে পারে। রেজুমে তে গৎবাঁধা সব টেকনোলজির নাম না দিয়ে স্পেশালাইজেশন গুলো হাইলাইট করতে হবে। ইউনিভার্সিটির প্রজেক্টওয়ার্ক গুলো যদি রেলেভেন্ট হয়, তাহলে সেগুলোর নাম দেয়ার পাশাপাশি হাল্কা বর্ণনা দেয়া যেতে পারে।
এভাবে প্রস্তুতি নিলে আশা করা যায় একজন নিজেকে জব ফিল্ডের জন্য তৈরি করতে পারবে। এখানে একটা কথা না বললেই নয়, সেটা হল কোন শর্টকাট উপায়ে রাতারাতি স্কিল অর্জন করার কোন উপায় নেই - সফল হতে হলে অবশ্যই সময়, মেধা ও শ্রম ব্যয় করতে হবে। কেউ যদি এরকম আশ্বাস দেয় যে একটা কোর্স করলেই চাকুরী পাওয়া যাবে, বা কয়েকটি টিউটরিয়াল পড়েই ফ্রিল্যান্সিং করে টাকা কামানো যাবে তাহলে বুঝতে হবে যে এখানে কোন ফাঁক আছে। এসব বিষয়ের দিকে না ঝুঁকে মূল লার্নিং এ সময় দিলেই সফল হওয়া যাবে।
সবার জন্য অনেক অনেক শুভকামনা।

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন