মাঝে মাঝে প্রোগ্রামিং নিয়া লেখা বই-পুস্তক পড়তে আমার যতটা ভাল লাগে, প্রোগ্রামিং করতে ততটা নয়। বলা যায়, প্রায়ই আমি বই পড়ার ফাঁদে পা দিয়া ফালাই। কাজ করার মত মজার প্রজেক্টও সবসময় খুঁজে পাই না, অথচ আমি জানি আমার সামনেই রয়েছে অসীম সুযোগ। তোমারও কি একই সমস্যা? তবে তোমার জন্য রয়েছে আমার ভুবন কাঁপানো এগারোটি পরামর্শ।

(১) বিভিন্ন প্রোগ্রামারদের সাথে সময় কাটাও: গৌরনদী মিষ্টান্ন ভান্ডারের মত, এটাই সর্বোত্তম অনুপ্রেরণার ভান্ডার। কারণ, স্বভাবতই তাদের মাথায় এমন কিছু আইডিয়া রয়েছে যা তোমার নাই। হতে পারে তারা কোডার বন্ধু-বান্ধব, একটা প্রোগ্রামিং গ্রুপ অথবা কোন কনফারেন্স – এটা কোন মাথা ঘামানোর বিষয় না। কথা হল, সেইসব আইডিয়া মিলেমিশে তোমার ভিতর একটা তরতাজা দৃষ্টিভঙ্গি এনে দিতে পারে।

(২) নন-প্রোগ্রামারদের সাথেও সময় কাটাও: প্রথম কথা হল, যেইসব মানুষজনের সঙ্গ তোমায় হ্যাপি রাখে বা তোমার চিন্তা-ধারাকে চ্যালেঞ্জিং করে তোলে, তারা কোডিং করতে পারুক আর নাইবা পারুক, তাদের সংস্পর্শে থাকাটা বাঞ্ছনীয়। দ্বিতীয় কথা হল, একজন কম্পিউটার ব্যবহারকারীর দৃষ্টিকোণ থেকে তারা তোমাকে অনুপ্রেরণা দিতে পারে। কম্পিউটার ব্যবহার করতে গিয়ে তারা কি কি সমস্যায় পড়েছে? তুমি কি তাদেরকে সেইসব সমস্যার কোন সমাধান দিতে পার?

(৩) ডেডিকেটেড ওয়ার্কস্পেসে কাজ কর: যদি একটা ডেডিকেটেড ওয়ার্কস্পেস পাওয়া সম্ভব না হয়, তবে অন্ততপক্ষে এমন একটা জায়গায় কাজ কর যেখানটা তুলনামূলক শান্ত আর কোন প্রকার বাঁধা-বিঘ্ন ছাড়াই তুমি কম্পিউটারের উপর ফোকাস করতে পার। এটাকে নিজের গুহা বানিয়ে ফেল। একটা আরামদায়ক চেয়ার ব্যবহার কর যাতে মেরুদন্ডে সমস্যা না হয়। হাতের কাছে পানি রাখ। নড়াচড়া না করে সারাদিন আবার বসে থেক না - বেঁচে থাকো সোনামণি, বেঁচো থাকো জাদুমণি।

(৪) ভাল ডেভেলপমেন্ট এনভায়রনমেন্টে কাজ কর: (যদিও আমি ভিম এডিটর রিকমেন্ড করি) তুমি কোন এডিটর ব্যবহার কর তা নিয়ে আমার মাথাব্যথা নাই। তবে অবশ্যই এমন একটা এডিটর ব্যবহার কর যেটা তোমাকে ফ্লেক্সিবিলিটি দেবে আর কাজকে সহজ করবে। সব সময় ভার্সন কন্ট্রোল সিস্টেম ব্যবহার কর – বিশেষ করে, আমি গিট ব্যবহারে উৎসাহ দেব। সব সময় তোমার কাজের ব্যাক-আপ রাখ। যদি তুমি এইগুলা ব্যবহার না কর আর তোমার কাজ হারিয়ে যায় তবে তুমি যেইসব ঘোরতর হতাশার সম্মুখীন হবে, এইগুলা তোমাকে সেইগুলা থেকে রক্ষা করবে।

(৫) চোখ-কান খোলা রাখ: যেসব গুণী প্রোগ্রামারদের তুমি সম্মান কর, তাদের টুইটার ফীড আর ব্লগে চোখ রাখ। (তুমি চাইলে আমার টুইটার ফীড দেখতে পার – এখানে বেশিরভাগই প্রোগ্রামার।) RSS এগ্রিগেট, যেমন রুবি ইনসাইড বা ওল্ড-স্কুল প্লানেট, দরকারি তথ্যের বিশাল ভান্ডার হতে পারে। কারণ তারা বিশিষ্ট নয়া প্রোগ্রামারদের নিয়ে কাজ করে। যেসব টপিকের উপর তুমি সাধারণত পড় না সেরকম কিছু ব্লগও সাবস্ক্রাইব করে রেখ।

হ্যাঁ, এটা তোমাকে কোড পড়ার ফাঁদে ফালাইয়া দিতে পারে, কোড লিখতে উৎসাহ দেবে না। কিন্তু একটা বৃহত্তর কোডিং ইকোসিস্টেমের লেজ ধইরা থাকাটা তোমার জন্য সুফল বয়ে আনতে পারে এবং অনেক আইডিয়ার জন্ম দিতে পারে।

(৬) ভাল ভাল কোড পড়: তোমার কিছু পছন্দের সফটওয়্যারের কথা চিন্তা কর আর সেগুলার সোর্সকোড পড়। তাদের কি কি সমস্যা রয়েছে? তুমি এটা থেকে কি শিখতে পার, ভাল হয়, তুমি সফটওয়্যারটাকে কিভাবে পরবর্তী ধাপে নিয়ে যেতে পার? ভাল কোডের সোর্সের অভাব নাই, কিন্তু গিটহাবের উপরে কথা হবে না।

(৭) নতুন ল্যাঙ্গুয়েজ শেখ: এটা হল ক্লাসিক পরামর্শ। নিচের প্রত্যেক বিভাগ থেকে অন্তত কিছু শেখার জন্য রিকমেন্ড করছি:

  • Mid-level: C, C++
  • Object-Oriented: Ruby, Python, Java, C#
  • Functional: Scheme, Haskell, Erlang
  • Shell: Bash, Zsh, awk, sed
  • Set-based: SQL

যত ল্যাঙ্গুয়েজ তুমি শিখবা, ততই তোমাকে সেই ল্যাঙ্গুয়েজের সমস্যা নিয়ে ভাবতে হবে। যতভাবে তুমি চিন্তা করতে পারবে, ততভাবে প্রব্লেম সলভ করার উপায় খুঁজে পাবে আর অনুপ্রেরণাদায়ক প্রজেক্টও পাবে। (আর অবশ্যই শুধু এই লিস্টের ভিতর নিজেকে সীমাবদ্ধ রেখ না।)

(৮) ভাল ভাল প্রয়োগকৌশল শেখ: একটা নির্দিষ্ট ভাষা না শিখে, The Pragmatic Programmer, Structure and Interpretation of Computer Programs এবং The Little Schemer এর মত বইগুলো থেকে ভাল ভাল কমন টেকনিকগুলো শেখ। (শেষের দুইটা মূলত স্কীমের উপর, কিন্তু বই দুইটা এত ভাল যে প্রত্যেকেরই পড়া উচিত।)

(৯) খেলনা প্রজেক্ট নিয়া কাজ কর: একটা ভাল খেলনা প্রজেক্ট নিয়া কাজ কর, এমন কিছু যা তোমাকে হতাশা থেকে মুক্তি দেবে। এটা কি ধরনের প্রজেক্ট সেটা কোন ব্যাপার না। (ট্যারা-বাঁকা হোক তবুও তোমার।) এই প্রজেক্টটাকে শেয়ার করতে বা এটাকে সাফল্যের দ্বারপ্রান্তে নিয়ে যেতে চাপ নিও না।

(১০) একটা গেইম বানাও: অনেক লোকই মনে করে গেইম ডেভেলপ করা মানে সময় নষ্ট করা। কারণ, খুব কম গেইমই বাণিজ্যিকভাবে সফল। কিন্তু তুমি যদি একজন গেইমার হও, তবে যেকোন মূল্যে একটা বানাইয়া ফেলাও। এটা থেরাপিটিক আর নানা বিষয়ে অনেক ডিপ কনসেপ্ট থাকা লাগে। বয়সকালে আমিও কয়েকটা ছোটখাটো গেইমস বানাইছিলাম, যার মোটামুটি সবগুলোই আনরিলিজড। তবে সেগুলো ভাল এক্সপেরিমেন্ট। কোথা থেকে শুরু করবা ভেবে না পেলে, এখানে দেখ

(১১) অনলি ব্রুট-ফোর্স ইজ রিয়েল: আমি জানি, এটা টপ টেনে থাকার মত, কিন্তু আমি এটাকে বোনাস টিপ হিসাবে উপস্থাপন করছি। যখন তুমি প্রেরণা নিয়া ঘাপলায় থাকবা, তখন তোমার প্রোগ্রামিং বই, RSS সাবস্ক্রিপশন, টুইটার, স্টাকওভারফ্লো আর অন্যান্য তথ্য ভান্ডার গুলায় নজর বুলাও। এখন এমন দুইটা সম্পর্কহীন টপিক খুঁজে বের কর যাতে তোমার একটু হলেও ইন্টারেস্ট আছে। এবার টপিক দুইটাকে একসাথে জুড়ে দেও। বিষয়টা ঘোলাটে হলেও সমস্যা নাই।

উদাহরণ হিসাবে পার্সার আর এক্সেসিবিলিটির কথাই ধরা যাক। তুমি এইগুলা নিয়া পড়াশুনা করতে পার। এখন একটা HTML পার্সার বানাও যা এক্সেসিবিলিটি ফ্যাক্টর নিয়া কাজ করবে। আজ পর্যন্ত, আমি এই টপিকে খুব বেশি কোড দেখিনি। তাই কাজ করার জন্য এটা একটা সুন্দর জিনিস হতে পারে। (এই ওপেনসোর্স এক্সেসিবিলিটি টেস্টারটা উদাহরণ হিসাবে দেখা যেতে পারে। জানি একটা উদাহরণ পর্যাপ্ত নয়।)

মূল লেখা: https://halffull.org/2009/01/03/10-ways-to-get-inspiration-as-a-programmer/

ভাবানুবাদ: মাকসুদুর রহমান মাটিন

তারিখ: ৬ মে, ২০১৬