নবীন প্রোগ্রামারদের জন্য

শুরুর কথা:

উপরের হেডিং দেখে যদিও মনে হতে পারে এটা একটা উপদেশমূলক পোস্ট, কিন্তু এটা আসলে আমার অভিজ্ঞতা থেকে এবং দেখে শেখা কিছু বিষয় নিয়ে কথা। কারণ, আমি প্রোগ্রামিং শেখার প্রথমদিকে যে ভুলগুলো করতাম, এখন অনেক নতুন প্রোগ্রামারদেরকেও ঠিক একই ভুলগুলো করতে দেখি। সেজন্যই মনে হলো, এ বিষয়গুলো শেয়ার করা দরকার। আমি খুব ভালো মাপের কোনো প্রোগ্রামার না, কিন্তু যেহেতু অনেকদিন থেকেই প্রোগ্রামিং নিয়ে ঘাঁটাঘাঁটি, তাই অভিজ্ঞতার ঝুলিটা একেবারে খালি না।

কাজের কথা:

যাই হোক, কাজের কথায় আসি।
আমার মতো অনেকেরই হয়তো বিশ্ববিদ্যালয়ে কম্পিউটার বিজ্ঞান নিয়ে পড়াশুনা করার কারণে প্রোগ্রামিং নিয়ে কাজ করার সৌভাগ্য হয়েছে। আবার অনেকেই হয়তো স্কুল বা কলেজ থেকেই প্রোগ্রামিং এর সাথে পরিচিত। যারা স্কুল বা কলেজ থেকেই প্রোগ্রামিংকে জানার সুযোগ পায় তাদেরকে আমার মতো দেরিতে প্রোগ্রামিংয়ের গন্ধ পাওয়া মানুষজন কিছুটা ঈর্ষাই করে। কারণ আমরা যে বয়সে console এ“hello world!” প্রিন্ট করে তৃপ্তির ঢেঁকুর তুলি, তার থেকেও কম বয়সে অনেকে হয়তো একটা পুরো সফটওয়্যারই ডিজাইন করে ফেলে অথবা একটা ফ্রেমওয়ার্ক বা লাইব্রেরীই তৈরী করে ফেলে। Linus torvalds তো ২১ বছর বয়সে Linux এর কার্ণেলই তৈরী করে ফেলেছিলেন।
220px-Linus_Torvalds
মূল প্রসঙ্গ সেটা না। মূল কথা হলো, যারা প্রোগ্রামিং নিয়ে কাজ করা শুরু করে, তাদের একটা বিষয় মাথায় রাখা দরকার যে, প্রোগ্রামিংয়ের জগতটা অনেক বিশাল। আমরা যদি শুধুমাত্র দরজা দিয়ে ঢুকেই মনে করি, “অনেক কিছু করে ফেলেছি“, তাহলে সেটা বিরাট বোকামী ছাড়া আর কিছুই না। আর যেহেতু “Life is too short” তাই অল্প সময়ে অনেক কাজ করা প্রয়োজন।

কিভাবে কি করবো??

জগতের আশ্চর্যতম বস্তু এই চারকোণা বাক্স (কম্পিউটার আর কি!) যেটার ভেলকি দেখে সাধারণ একজন মানুষ আশ্চর্য হয়ে যায়, আর যখন আমি বুঝতে শিখলাম আমার লেখা কোড দেখে এই আজব যন্ত্র আমার ইন্সট্রাকশনেই কাজ করবে তখনকার অনুভূতি “পুরাই সেইরকম”, নিজেকে তখন ‘জাদুকর‘ মনে হওয়াটাও অসম্ভব না। 🙂 প্রথম করা কোড যখন কাজ করলো তখন অনুভূতি ছিলো এরকম-
3ull12
এটাতো গেলো শুরুর কথা, কিন্তু তারপর আস্তে আস্তে যখন প্রোগ্রামিং নিয়ে ভালোভাবে নাড়াচাড়া করা শুরু করা হয়, তখন অনেক রকম সমস্যায়ও পড়তে হয়। সেগুলো কাটিয়ে উঠে কিভাবে ভালো করা যায় সে ব্যাপারে আপাতত যে বুদ্ধিগুলো মাথায় আসছে সেগুলো বলি:

জড়তা দূর করা:

কিছুদিন প্রোগ্রামিং শেখার পর যখন ২-৪টা কোড করার মতো বিদ্যা অর্জন হয়ে যায়, তখন সেগুলোকে ঘুরিয়ে ফিরিয়ে বিভিন্নভাবে বিভিন্ন কোডে ব্যবহার করে আত্মতৃপ্তি অর্জন করা ছিলো আমার প্রথম দিককার বোকামী গুলোর মধ্যে অন্যতম। তখন অনেকদিন পর্যন্ত আমি নতুন কিছু না শিখে যা পারতাম তাই দিয়ে বিভিন্ন প্রবলেম সলভ করতাম আর অনলাইন জাজে প্রবলেম সলভের সংখ্যা বাড়ানোর চেষ্টা করতাম। তখন মনে হতো “আমি তো বিরাট প্রোগ্রামার হয়ে গেছি।”  সবার ক্ষেত্রে ব্যাপারটা হয়তো এরকম না, কিন্তু অনেকের ক্ষেত্রেই এ ব্যাপারটা সত্য। নতুন কিছু শেখার আগ্রহ কমে গেলে সেটা খুব খারাপ একটা ব্যাপার হয়ে দাঁড়ায়। এজন্য জানা বিদ্যা চর্চা করার পাশাপাশি নিয়মিত নতুন নতুন বিষয়গুলো (সেটা হতে পারে কোনো এলগোরিদম বা কোনো ল্যাংগুয়েজকে আরো ভালোভাবে জানা) শেখার চেষ্টা করা উচিত।
এক্ষেত্রে নিউটনের গতির(!) ২য় সূত্রের প্রয়োগ করা যায় (modified version :P) –

দক্ষতা ও যোগ্যতার উন্নয়ন প্রতিনিয়ত নতুন জিনিস শেখার সমানুপাতিক।

 নিয়মিত নতুন জিনিস শেখা হচ্ছে কিনা সেটা বোঝার বুদ্ধি হচ্ছে, একটা সময় চিন্তা করা- “গত ১-২ সপ্তাহে আমি কি নতুন কিছু শিখেছি?” যদি উত্তর হয় “না“, তাহলে বুঝতে হবে আমি জড়তার শিকার। তখন বাহ্যিক বল(!) প্রয়োগ করে এ জড়তা কাটানোর চেষ্টা করতে হবে।কি করছি সেটা জানা / Know your code:
 
আপনার অবস্থা যদি হয় এরকম-
my-code-doesnt-work-i-have-no-idea-why
তাহলেও কিন্তু বিপদ! কারণ আপনি কি করছেন সেটা আপনাকে অবশ্যই ভালোভাবে জানতে হবে। ‘কোড করে বোঝা‘র চেয়ে ‘বুঝে কোড করা‘টাই বুদ্ধিমানের কাজ। কারণ সেক্ষেত্রে আপনার কোড করতে সময় একটু বেশী লাগলেও, কয়েক ঘন্টা ধরে Debugging করতে হবে না।
এ অবস্থা পরিবর্তনের জন্য বুদ্ধি হলো আপনি যেই কোনো একটা ল্যাংগুয়েজ অবশ্যই খুব ভালোভাবে শেখার চেষ্টা করুন। আপনি ১০ টা ল্যাংগুয়েজ একটু একটু করে পারার চেয়ে একটা ল্যাংগুয়েজ খুব ভালোভাবে পারাই যথেষ্ট। C, Python, C++, Java যেকোনো একটা ল্যাংগুয়েজ এতটুকু ভালোভাবে শিখুন যাতে করে কোনো একটা কোডের আইডিয়া বা প্রবলেমের সলুশন মাথায় আসলে, কোড করতে সময় না লাগে।
কোনটা ব্যবহার করবেন, কেন?
 
অনেকেই প্রথমদিকে যেই সমস্যাটা অনুভব করেন সেটা হলো, কোন কম্পাইলার বা  IDE ব্যবহার করবো? এক্ষেত্রে আপনার যুক্তি যদি হয়, ল্যাবে স্যার turbo C তে কাজ করায় তাই ওটাই ব্যবহার করতে হবে। তাহলেও আমি বলবো আপনি ভুল করছেন। windows,Linux এর নতুন ভার্সন বের হলেই তো ওটা ব্যবহার করার জন্য হামলে পড়েন। তাহলে IDE পুরনোটা ব্যবহার করার এতো ঝোঁক কেনো?
অবশ্যই সেই IDE টা ব্যবহার করবেন, যেটা popular, well-documented, community-driven and updated. তাতে করে ওটার যে কোনো সমস্যায় খুব সহজেই সমাধান পাবেন। আর কাজও হবে অনেক দ্রুত। কোড রান করতেই যদি সমস্যা হয়, তাহলে কোড করবেন কিভাবে?
Challenge Yourself:
 
কোড করার ক্ষেত্রেও সেই জড়তার ব্যাপারটা চলে আসে। আগেই বলেছি, প্রথম দিকে আমি যেটা পারবো নিশ্চিত, এরকম কোডই বেশী করতাম। কিন্তু Efficiency আনার জন্য এটা আসলে ভালো বুদ্ধি না। আগে শেখা এলগোরিদমের কোড বারবার (পুরোপুরি আয়ত্ত্ব হয়ে যাবার পরও) করার চাইতে নতুন একটা এলগোরিদম শিখে সেটাকে কোডে ইমপ্লিমেন্ট করাটা অনেক বেশী গুরুত্বপূর্ণ। যখন কোনো প্রজেক্ট করতে চাইবেন বা কিছু বানানোর চেষ্টা করবেন সেক্ষেত্রে এমন একটা কিছু করেন যেটা কঠিন। আপনি খুব সহজেই পারবেন এরকম কিছু করলে আপনার লাভটা কি? কঠিন কিছু করার চেষ্টা করার মানেই আপনি নিজেকে নিজে চ্যালেঞ্জ করছেন। আর এটাই সবচাইতে ভালো বুদ্ধি কোডিংয়ে দক্ষতা বাড়ানোর।
 
অনেক বেশী জানার চেষ্টা করা:
 
বড় বড় প্রোগ্রামারদের ব্লগ বা আর্টিকেলগুলোতে নিয়মিত চোখ বুলাতে পারেন। সেগুলো বুকমার্ক বা সাবস্ক্রাইব করে রাখুন। সবকিছু না বুঝলেও কিছু কিছু জিনিস অবশ্যই শিখতে পারবেন। কেনো বার বার ঘুরিয়ে ফিরিয়ে অনেক কিছু জানার, শেখার কথা বলছি?? কারণ, সেই প্রচলিত প্রবাদ-

Hard training, Easy war. কঠিন প্রস্তুতি, সহজ যুদ্ধ।

যুদ্ধের মাঠে নামতে আপনাকে অবশ্যই পূর্ণ প্রস্তুতি নিয়ে নামতে হবে। নাহলে অবস্থা হবে এরকম-

2013-10-24_204737-vert
Try to be a ‘কচ্ছপ’:
কচ্ছপের কোনো কিছু কামড়ে ধরে থাকার কথা আমরা মোটামুটি সবাই জানি। শুধু প্রোগ্রামিং না, যে কোনো কিছুতেই ভালো করতে চাইলে আপনাকে অবশ্যই কচ্ছপের এই গুণ অর্জন করতে হবে। আমি এমন অনেক প্রোগ্রামারের কথা জানি, যারা শুরুতে খুব ভালো কিছু করতে না পারলেও শুধুমাত্র এই ‘কচ্ছপ-প্রকৃতি‘র কারণে আজকে Google, Microsoft, Facebook এ জব করা প্রোগ্রামার। তাই, আপনার যদি প্রোগ্রামিং ভালো লাগে, তাহলে আপনাকে অবশ্যই এটা নিয়ে পড়ে থাকতে হবে। কেউ একদিনে ভালো প্রোগ্রামার হতে পারে না, সম্ভব না।
শেষ কথা:
একেবারে শেষে এসে যেটা মনে পড়ে গেলো সেটা হলো, ‘বিদ্যানাশী‘ এবং ‘সময়-হরণকারী‘ বিষয়গুলো থেকে দূরে থাকুন। (you know what i mean )
সারাদিন শেষে আপনার যদি মনেই হয়, ‘আজকে আমাকে দিয়ে কোনো কাজ হলো না, আজকে সারাদিনে আমি কিছুই করতে পারলাম না‘ তাহলে নিজের মধ্যে হতাশা তৈরী হওয়াই স্বাভাবিক। আর তখন ভালো কিছু করার চেষ্টা করা বৃথা।
যাইহোক, আশা করি সবাই আদিকাল হতে চলে আসা সাফল্য সুনিশ্চিত বটিকা ‘Hard-work‘, ‘Time-management‘, ‘Determination‘ এই ব্যাপারগুলো মাথায় রেখে চেষ্টা করে যাবেন।
বি:দ্র:- আগেই বলেছি, পুরো পোস্টের কথাগুলো আমার অভিজ্ঞতা এবং উপলদ্ধি থেকে বলা। অন্য কারো এসব ব্যাপারে ভিন্নমত থাকতেই পারে।
Just do coding………………………….
Want to like or share?:
0

9 comments

  1. ভাই, আপনার কথাগুলো অনেক ভালো লাগলো। প্রোগ্রামিং আমার অন্তর থেকেই ভালো লাগে।সারা দিন এটা নিয়ে পরে থাকরে ইচ্ছা করে কিন্তু এলগরিদম , ডাটাস্ট্রাকচার কিছু জানিনা। তাই অনেক প্রব্লেমই সলভ করতে পারিনা।এলগরিদম কোথা হতে শুরু করবো তা বুঝতেই পারসিনা। আপনাদের সহযোগিতা কামনা করছি। ধন্যবাদ

    1. অল্প অল্প করে শেখা শুরু করেন। প্রথমে যে এলগোরিদমগুলো সহজ মনে হয় সেগুলো শিখে ফেলেন, তাহলে কনফিডেন্স তৈরি হবে। 🙂

  2. বড় বড় প্রোগ্রামারদের ব্লগ বা আর্টিকেলগুলোতে নিয়মিত চোখ বুলাতে পারেন।>> kichu link ditey paren?

    1. আপনার কাছে যাদের ব্লগ বা আর্টিকেলগুলো ভালো মনে হয় সেগুলোকে সাবস্ক্রাইব করে রাখেন। আর প্রোগ্রামিং নিয়ে ঘাঁটাঘাঁটি করলে নিজেই অনেক চমৎকার ব্লগ খুঁজে পাবেন। 🙂

  3. Apnar post ta pore khub valo laglo.Class 9 theke kono dhorner background sarai online e coding sekha suru kori but kon language ta valo kore aotto korbo ta nie confused silam.Python,Java ar C er pura joga khichuri banie felesilam.But finally ektu late holeo Python kei amar main language hisebe dhori ar apnar blog ti pore amar decision ta firm korlam.Thanks again 🙂

  4. ধন্যবাদ ভাইয়া। বিষয় গুলো খুবই সুন্দর ভাবে তুলে ধরার জন্য।

    1. সময় নিয়ে লেখাটি পড়ার জন্য আপনাকেও ধন্যবাদ। 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *