আপনার মতে একজন আদর্শ প্রোগ্রামার কেমন? সাত বছরের বয়স থেকে কোডিং করছে এমন একজন কম্পিউটার উইজ কি, যিনি মিলিয়ন ডলারের অ্যাপ বানিয়েছেন? নব্বে বা بیশ বছরের অভিজ্ঞতা সম্পন্ন একজন ডেভেলপার কি, যিনি সব ভাষা জানেন (শুধু ভালো ভাষাগুলো) এবং আপনি কফি আনতে যে সময় লাগবেন সেটিতে একটি ওয়েবসাইট বানিয়ে ফেলেন? কি একজন কোড শিল্পী, যিনি এমন সুন্দর কোড লিখেন যে সবাই একসাথে বিস্ময়ে কান্না করুন এবং ঈর্ষায় দাঁত কাটান?
হয়তো? ঠিক আছে, সব ড্রিম প্রোগ্রামাররা ভালো লাগে। কিন্তু আপনি কি আমার কথা বিশ্বাস করবেন যখন আমি বলব যে 미친듯이 কোডিং দক্ষতা থাকলেই সব কিছু হয় না? এবং ভালো প্রোগ্রামিং শুধু একজন ভালো প্রোগ্রামারের অর্ধেক অংশ?
জाहিরভাবে আপনি একজন ভালো কোডার হতে পারবেন না যদি আপনি কোডিং না জানেন। কিন্তু আমি অনুভব করি যে কখনো কখনো একজন প্রোগ্রামার হওয়ার অন্যান্য, নন-কম্পিউটার দিকগুলো কিছুটা উপেক্ষা পায়। একজন পেশাদার ডেভেলপার হওয়ার অনেক কিছু আছে যা কোডিংয়ের সাথে একদম সম্পর্কিত নয়, এবং সবকিছু পেশাদারিত্বের সাথে সম্পর্কিত। সত্যিকারের পেশাদাররা যারা সময়মতো কাজ শেষ করে, যারা জানেন টিম প্লেয়ার কীভাবে হয়ে থাকা যায় (শুধু হিরো হয়ে এসে দিন বাঁচাতে হয় না), এবং যারা শেষ পর্যন্ত তাদের কর্মদাতা বা ক্লায়েন্টের জন্য একটি সম্পদ হয়।
তাহলে একজন ভালো ডেভেলপার হওয়ার চিহ্নগুলো কী? এখানে কিছু টি আমি সংগ্রহ করেছি— নিশ্চিতভাবে আরও অনেক আছে।
১. ক্লিন কোড লিখুন।
হ্যাঁ, এটি আসলে কোডিংয়ের কথা। আমি কোডিং অংশ আছে বলেছিলাম, ঠিক ন? 🙂 এর মূলত ভালো কোড প্রথমে কাজ করে, অন্য ডেভেলপারদের কাছে বোঝা যায়, এবং রিফ্যাক্টর করার সময় অত্যধিক যাতনা হয় না। কোড কম্পিউটারের সাথে কথা বলে, কিন্তু মানুষের সাথে কথা বলার জন্যও বানানো হয়েছে। আমি আপনাকে বলতে পারি না কতবার আমাকে মাসها পুরনো কোডে ফিরে যেতে হয়েছিল এবং অত্যধিক সময় ব্যয় করতে হতো শুধু যেন মনে পড়ে গত আমি কী ভাবছিলাম। ভালো নামকরণ করা এবং সুশৃঙ্খল ফাংশন, কমেন্ট এবং ডকুমেন্টেশন ভবিষ্যতে অন্যদের (আপনাকেও!) বাঁচানো সময়ের দশগুণ ফেরত দেবে।
ভালো কোড লিখার সম্পর্কে আরও তথ্য (নন-অফিলিয়েট লিংক, চিন্তা নয়!):
Clean Code
The Pragmatic Programmer
Refactoring: Improving the Design of Existing Code
২. ট্রেন্ডের সাথে আপডেট रहুন।
আমরা সবাই জানি ওয়েব ডেভেলপমেন্টে ট্রেন্ড কত দ্রুত পরিবর্তন হয়। আমি বলছি না যে আপনাকে একটি মেগপাই কোডার হয়ে সবচেয়ে নতুন হটনেসের পেছনে দৌড়াতে হবে। কিন্তু অন্য প্রান্তে, আপনি যদি কমফর্টেবল হয়ে কমপ্লেসেন্ট হয়ে যান, তবে আপনি একজন ডাইনোসর কোডার হয়ে যাবেন, যা খুব খারাপ। এখানে একটি সুস্থ মধ্যম পথ আছে, যেখানে আপনি কিছু কোর স্কিলে দক্ষ হবেন, কিন্তু অন্যান্য ট্রেন্ড এবং খবরের সাথে কমপক্ষে পরিচিত থাকবেন।
এখানে কিছু প্রকাশনা আছে যা আমাদের সবসময় পরিবর্তনশীল এই শিল্পে আপডেট থাকতে সাহায্য করতে পারে। আপনি যদি অন্য কোনো সহায়ক জিনিস জানেন তবে মন্তব্য করে জানাতে পারেন।
Hacker News
A List Apart
Smashing Magazine
CSS Tricks
৩. নতুন জিনিস গ্রহণযোগ্য হন এবং সেগুলো দ্রুত শিখুন।
আপনি যদি এখনো কোডিং শেখার প্রাথমিক অংশে আছেন, নিজের ওপর খুব কঠোর হবেন না। আমি পরামর্শ দিচ্ছি না যে আপনাকে এক সপ্তাহে Angular মাস্টার করতে হবে। কিন্তু এই সম্ভাবনার জন্য খুলে থাকুন যে যেকোনো সমস্যার সমাধান এমন কিছু হতে পারে যা আপনি এখনো না জানেন। এবং "এখনো" শব্দটি একটি গুরুত্বপূর্ণ পার্থক্য। কারণ সেটি যা আপনি জানেন না? সেটি শুধু এমন কিছু যা আপনি শিখতে পারেন এবং আপনার টুলকিটে যোগ করতে পারেন।
নতুন জিনিস দ্রুত এবং কার্যকরভাবে শিখার চেষ্টা করা গুরুত্বপূর্ণ। কারণ যত দ্রুত আপনি কিছুই শিখবেন, কোডিং এবং অন্যান্য নতুন জিনিস শিখার জন্য তত বেশি সময় পাবেন। কোডিং দক্ষতা শিখা নিজে একটি দক্ষতা যা আপনি শিখতে পারেন।
৪. ফোকাস করুন এবং কার্যকরভাবে কাজ করুন।
আমরা সবাই জানি মাল্টিটাস্কিং মানুষের জন্য অসম্ভব, কারণ আমাদের মস্তিষ্ক একটি একক থ্রেডে কাজ করে। আমরা যা করতে পারি সেটি হলো এক কাজ থেকে অন্য কাজে স্যুইচ করা, কিন্তু এটি খুব কার্যকর নয় এবং এটি আদর্শও নয়। আপনার চাকরি বা পরিস্থিতির উপর নির্ভর করে, ব্যাঘাত আপনার দৈনন্দিন জীবনের একটি অংশ হতে পারে। এটিই সীমিত সময় যা আপনার কোডিং-এর জন্য আছে সেটি সর্বোত্তমভাবে ব্যবহার করা ততটাই অপরিহার্য করে তোলে।
কাজ এবং নন-কাজের সময় যতটা সম্ভব আলাদা রাখুন, এবং একে অপরের মধ্যে ওভারফ্লো হলে দেবেন না। উদাহরণস্বরূপ, প্রতি কয়েক মিনিটে ফেসবুকে যাওয়া আপনার প্রোডাক্টিভিটি কাটিয়ে ফেলে। আপনি কাজ করলে, অন্যান্য ব্রাউজার ট্যাব বন্ধ করে এবং একটি যুক্তিসঙ্গত বেঞ্চমার্ক পাওয়া পর্যন্ত স্থিরভাবে কাজ করে ফোকাস রাখতে পারেন। পোমোডোরো টাইমার ব্যবহার করে ২৫ মিনিটের ভাগে কাজ করা একক কাজে ফোকাস রাখতে সাহায্য করতে পারে।
অতিরিক্ত পঠন:
Deep Work by Cal Newport
৫. কাজ সম্পন্ন করতে কত সময় লাগবে সেটি সঠিকভাবে অনুমান করুন।
এটি একটি কঠিন বিষয়, এবং আমি স্বীকার করছি যে আমি নিজেও এখনো এতে ভালো হওয়ার চেষ্টা করছি। কিন্তু আপনার দক্ষতাকে ঘন্টার পরিমাণে সঠিকভাবে মূল্যায়ন করতে পারা একটি খুব মূল্যবান দক্ষতা। আপনি কোম্পানির জন্য কাজ করুন নাকি নিজের জন্য, একটি ভুল অনুমান প্রজেক্টের টাইমলাইন গুলো বিখেঁড়ে দেবে এবং আপনার আশেপাশের লোকদের জন্য কাজ সৃষ্টি করবে। তীব্রতম পরিস্থিতিতে, কোনো প্রজেক্ট সম্পন্ন করতে কত সময় লাগবে সেটি বিশালভাবে কম অনুমান করলে আপনাকে বা আপনার কর্মদাতাকে টাকা খরচ করতে হবে।
এখানে একটি দ্রুত নোট: আপনাকে সবসময় X ঘন্টা নির্দিষ্ট করে পাথর কাটা অনুমান দরকার নয়। সাধারণত আপনি একটি রেঞ্জ দিতে পারেন, অথবা বলতে পারেন যে আপনি একটি বাস্তব অনুমান দিতে পারছেন না কারণ প্রজেক্টের প্যারামিটার সম্পর্কে আরও তথ্য দরকার। আপনি কোডিং করার সময় আপনার সময় ট্র্যাক করে রাখা একটি উপায় হতে পারে যে আপনি একটি প্রজেক্ট সম্পন্ন করতে কতক্ষণ লাগবেন সেটি অনুমান করা শুরু করুন। (এটি #৪ নম্বরের সাথে হাত মিলিয়ে চলে, কারণ আপনার অনুমান ভালো হবে যখন আপনি আধা সময় রেডডিট ব্রাউজ করে না থাকবেন)
৬. টেকনিক্যাল কনসেপ্ট নন-টেকনিক্যাল মানুষকে ব্যাখ্যা করতে পারুন।
হ্যাঁ, এটি বাধাদায়ক, না? আপনি যখন কোড ব্লক এবং মেথডের মাধ্যমে সুখে সাঁতার করছেন, এবং তারপর বাস্তব জগতে তেরি আনে নন-প্রোগ্রামার লোকদের সব কিছু ব্যাখ্যা করতে হয়? তারা কেন আপনার সোর্স কোড দেখে বুঝতে পারে না?
স্টিরিওটাইপিক কোডার হলো একটি একা মানুষ যিনি আর কিছু চান না, শুধু একটি ভৌগোলিক গুহায় বসে কীবোর্ডে হ্যাক করতে, বাইরের জগতের ব্যাধা ছাড়া। আমি নিজেও স্বীকার করি যে যখন আমি একটি বিশেষ বাধাদায়ক সমস্যা সমাধান করার গভীরতায় আছি, ব্যাঘাত পেলে আমার ধारा ভেঙে যায় এবং আমি রাগান্বিত হয়ে যাই। কিন্তু আপনার মতোই, আপনার সাথে কাজ करने वाले নন-টেকনিক্যাল লোকদের একটি জীবনমূল্য ফাংশন আছে। (শুরু করাই, তারা সব লোকের সাথে কথা বলে, যাতে আপনাকে করতে না হয়!)
আপনার টিমের সবার সাথে ভালো কাজ করার মানে হলো আপনাকে কোডের জিনিসগুলো তাদের কাছে ব্যাখ্যা করতে হবে, এবং এভাবে যে তারা বুঝতে পারে। এর প্রথম ধাপ হলো বুঝতে পারা যে আপনি যদি বিশ্বকে কোডিং সমস্যা সমাধানের দৃষ্টিকোণ থেকে দেখেন, তবে অন্যদের আচরণের नीতি হলো টাকা, ডেডলাইন এবং ক্লায়েন্ট।
আপনি যদি অন্যদের শর্তে এবং তাদের শব্দভাণ্ডারে কথা বলতে পারেন, তবে আপনি একজন দুর্দান্ত টিম প্লেয়ার হওয়ার দীর্ঘ পথ পেরে যাবেন। মনে করুন আপনাকে আপনার প্রজেক্টে কিছু ফিচার যোগ করতে বলা হয়। "না এটা বোকামি আমি চাই না!" চিৎকার করে গুহায় ফিরে যাওয়ার বদলে, ব্যাখ্যা করুন যে সেই ফিচারটি আরও ২০ ঘন্টার কাজ যোগ করবে, এবং ডেডলাইন সম্ভবত বাড়াতে হবে।
৭. কাজে আপনার ইগো নিয়ে যাবেন না।
এটি ১০০% প্রতিদিন অর্জন করা সবার জন্য অসম্ভব, শুধু সেরা কিছু ব্যতিক্রমে। কিন্তু আমরা কমপক্ষে চেষ্টা করতে পারি যে কাজের ক্ষেত্রে আমরা বিশুদ্ধভাবে আমাদের ইগো দ্বারা চালিত হব না। এর মানে কী? এর মানে আপনি শুধু নিজেকে ভালো দেখানোর জন্য নন। আপনি আপনার প্রজেক্ট, আপনার টিম, এবং আপনার কোম্পানিও ভালো দেখাতে চান। আপনি যদি অন্যদের সাহায্য করে এবং সবার সাফল্য নিশ্চিত করতে কঠোর পরিশ্রম করেন, শুধু নিজের জন্য না, তবে লোকেরা আপনার সাথে কাজ করতে পছন্দ করবে।
আপনি যদি নিজের চাহিদা পূরণের জন্য অন্যদের ওপর পা রেখে এগিয়ে যান, তবে আপনি সেতুতে আগুন দিচ্ছেন। এবং সেটি ধসকে যাওয়ার সময় আপনি তার মাঝপথে থাকবেন। হ্যাঁ, আপনি কিছু স্বল্পমেয়াদী লাভ করতে পারেন, কিন্তু কি আপনি সে অস্তিশ কামি হয়ে থাকতে চান যাকে সবাই ঘৃণা করে?
৮. আপনার ভুলগুলো লুকিয়ে রাখবেন না।
কেউ ভুল করা পছন্দ করে না। এটি মানবিক স্বভাব। কিন্তু পেশাদারিত্বের ক্ষেত্রে, আমাদের সেই মানবিক প্রবণতাকে জয় করতে হবে যা আমাদের ভুলগুলো দুনিয়া থেকে লুকাতে বলে।
আপনি যদি এমন কোনো ভুল করেন যা প্রজেক্টকে নেতিবাচকভাবে প্রভাবিত করবে, তবে আপনার এবং আপনার সাথে কাজ করা অন্যদের জন্য আপনি যা সেরা করতে পারেন সেটি হলো সত্য বলা, অবিলম্বে। আপনার সুপারভাইজারকে বলুন, ক্লায়েন্টকে বলুন, যাকে বলতে হয় বলুন, এবং ট্রায়েজের কাজে লেগে যান। আপনার ভুল লুকিয়ে রাখা এবং কেউ না দেখে আশা করা কখনো কখনো কাজ করতে পারে, কিন্তু আপনি যদি ধরা পড়েন তবে এটি আস্থা ভাঙবে এবং আপনার প্রজেক্ট বা এমনকি চাকরিই আপব্যয় করতে পারে।
এখন আপনাকে প্রতিটি ছোট ভুল রিপোর্ট করতে হবে না। কিন্তু যে ভুলগুলো ঠিক করতে অতিরিক্ত সময় লাগবে বা কিছু গুরুত্বপূর্ণ জিনিস ভাঙবে, সেগুলোর জন্য দয়া করে সত্য বলুন। দীর্ঘমেয়াদে এটি ভালো হবে।
৯. অন্যদের সাহায্য চাওয়া এবং অন্যদের সাহায্য করা।
আপনি আটকে যাওয়া বা কিছু বুঝতে না পারলে প্রশ্ন করবে সংকোচ করবেন না। আপনি যদি ডেডলাইনসহ একটি প্রজেক্টে কাজ করছেন, ঘন্টা পর ঘন্টা নিজে থেকে কিছু বুঝতে চেষ্টা করবেন না যখন আপনি সাহায্য চেয়ে এক ঘন্টার কমে সমাধান পেতে পারেন।
আপনাকে গুগল, স্ট্যাক ওভারফ্লো, বা স্ল্যাক ব্যবহার করে নিজে যতটা দূর যেতে পারেন সেটি ব্যালেন্স করতে হবে। কিন্তু আমি মনে করি একটি প্রবণতা আছে, বিশেষ করে আপনি যদি কোনো কোম্পানিতে থাকেন, স্বাধীন থাকতে এবং সাহায্য ছাড়া কিছুই করতে পারতে চাওয়ার। এটি আপনাকে অনেক সময় খরচ করতে পারে। কঠিন হলেও, আপনার গর্ব গিলে স্বীকার করুন যে আপনাকে সাহায্য দরকার। আপনি দ্রুত শিখবেন এবং কাজ শেষ করবেন।
এটির অন্য পeskedা হলো অন্যদের সাহায্য করা যখন তাদের সাহায্য দরকার। আমি যখন ওয়েব ডেভেলপার হিসেবে শুরু করেছিলাম, আমি আমার কোম্পানির অধিক অভিজ্ঞ লোকদের ওপর অনেক নির্ভর করতাম, এবং এতে আমি অনেক উন্নত হয়েছিলাম। যতক্ষণ আমি অভিজ্ঞ হয়েছি, নতুন লোকেরা আমাকে সাহায্য চেয়ে থাকত। বাধা পাওয়া প্রোগ্রামিংয়ের সবচেয়ে মজার অংশ নয়, কিন্তু এটি টিম প্লেয়ার হওয়ার অংশ। আপনি যদি গভীর কোডিংয়ের মাঝপথে আছেন, আপনি তাদের বলতে পারেন যে আপনি কয়েক মিনিটে ফিরে আসবেন। (যদি তাদের সমস্যা খুব জরুরি না হয়)
কেউ আপনাকে সাহায্য চাইলে, চেষ্টা করুন তাদের এমনভাবে সাহায্য করতে যাতে পরবর্তীবার তাদের জন্য সাফল্যের পথ প্রশস্ত হয়। শুধু উত্তর দেওয়ার বদলে, তাদের কিছু প্রসঙ্গ দিন যাতে তারা মৌলিক নীতিমালা এবং সমস্যা কীভাবে সমাধান হচ্ছে সেটি বুঝতে পারে। আপনি জানেন, পুরো "একজনকে মাছ ধরতে শেখাতে হবে" কথাটি 🙂
এই পয়েন্টগুলোর কোনোটি আপনার সাথে মিলে গেলো বা আপনাকে ছুঁয়ে গেলো? কোথাও অসहमত? নিচে মন্তব্য করে জানান!