Sunday, October 23, 2016

5 Mistakes Java developer makes that prevent them from growing their careers

ব্রুনো সোজা (Bruno Souza) জাভা ডেভেলপারদের ক্যারিয়ার উন্নতির লক্ষ্যে একটি নতুন সাইট তৈরি করেছে। গতকাল তার একটি ওয়েবইনার ছিল। এর টপিকটি হলো- একজন জাভা প্রোগ্রামার তার ক্যারিয়ার উন্নতির ক্ষেত্রে যে ৫ টি ভুল করে থাকে তার উপর। 

ওয়েবইনারটির লিংক: https://www.youtube.com/watch?v=pFbMYZUUT8Q


তবে এটিকে আমি বাংলাতে সংক্ষেপে বলার চেষ্টা করবো। তিনি শেষ থেকে শুরু করেছেন । এখানেও সেভাবেই লিখছি - 

পঞ্চমত, শুধুমাত্র টেকনোলজি জানলেই চলবে। 

ডেভেলপারা নিজেদের সময়ের সাথে নিজেদের নৈপুণ্য ধরে রাখতে এবং তা উত্তরোত্তর উন্নত করতে অনেক কাজ করে থাকে, প্রতিনিয়ত নতুন কিছু দেখে এবং শেখে। তবে একজন ভাল ডেভেলপার হওয়ার জন্যে এগুলোই একমাত্র বিষয় নয়। টেকনোলজি শেখার বাইরেও অনেক কিছু করতে হয়। যে জিনিসগুলো একজনের ক্যারিয়ারে সবচেয়ে বেশি প্রভাবিত করে তা শুধুমাত্র টেকনোলজি নয়। সফটওয়্যার কোম্পানিগুলোতে হায়ারিংগুলো সাধারণত পরিচিত নেটওয়ার্কের মধ্যে থেকেই বেশির ভাগ ক্ষেত্রে হয়ে থাকে। যাদের ইতিমধ্যে হায়ার করা হয়েছে তাদের পরিচিত রেফারেন্সের উপর ভিত্তি করে অনেক হায়ার হয়ে থাকে। এ জন্যে অনেক ভাল ভাল জবগুলো সাধারণত সহজে খুঁজে পাওয়া যায় না। সফটওয়্যার ফার্মগুলোর জব নোটিশগুলো সাধারণত তখনি প্রকাশ্যে পাওয়া যায় যখন তারা তাদের পছন্দমত লোক খুঁজে পায়নি নিজেদের নেটওয়ার্কের মাঝে। এক্ষেত্রে আপনি যদি দ্রুত হায়ার্ড হতে চান, তাহলে নিজেকে পরিচিত করে তুলতে হবে। আপনি যে জাভাতে এক্সপার্ট এই তথ্যটি যারা হায়ার করছে তাদের জানাতে হবে। তারা আপনাকে হায়ার করছে না কারণ আপনি হয়তো কখনো ইন্টারেস্ট দেখান নি। আপনাকে ভিজিবল হতে হবে। বিভিন্ন সোসাল কর্মকাণ্ডের সাথে নিজেকে জড়াতে হবে। জাগবিডির (http://www.jugbd.org) ইভেন্টগুলোতে যোগ দিতে পারেন। কোন ওপেন-সোর্স টেকনোলজিতে অংশগ্রহণ করতে পারেন। নিজে নিজে একটা সফটওয়্যার বা এপিআই লিখে সেগুলো শেয়ার করতে পারেন। কারণ আপনি নিজেও হয়তো জানেন না কতরকম অপরচুনিটি আসতে পারে। কেও হয়তো নতুন স্টার্টআপ দিতে পারে যেখানে আপনার মতো একজন ডেভলপারের প্রয়োজন হতে পারে। ইত্যাদি। 

চতুর্থত, অনেক বেশি অনুশীলন বা চর্চা না করা 

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

তৃতীয়ত, আপনি যা জানেন তা অন্যদের সাথে শেয়ার না করা 

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

আরেকটি কঠিন সত্য ব্যপার হলো, মানুষ আসলে আপনাকে খুব একটা কেয়ার করে না। আপনি আসলে তাদের জন্যে কি করতে সেটাই মুখ্য। সুতরাং আপনি যত বেশি শেয়ার করবেন, আপনি অন্যের জন্যে ততবেশি প্রয়োজনীয় হয়ে উঠবেন। 

দ্বিতীয়ত, ফোকাস 


আপনি নিজে দুনিয়ার সব মানুষকে অ্যাকসসে করতে পারবেন না বা সবার সঙ্গে সবকিছু শেয়ার করতে পারবেন না। আপনাকে একটি নির্দিষ্ট বিষয়ে ফোকাস করতে হবে। 

এক্ষেত্রে একটি স্পেসিফিক একটি লাইন ফলো করা যেতে পারে- 

I help (a person) to do (something) so he/she can have (something) 

Example - 

I help my coworker to learn Java so he/she can program in Java 

I help professional java developers do solve hard Java problems so they can have a secure and satisfying job or project


প্রথমত, সব কিছু নিজে করা

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


অনেকভাবেই টিমআপ করতে পারেন। একটি চমৎকার আইডিয়া হতে পারে জাভা ইউজার গ্রুপে জয়েন করা। অন্যের কোন ওপেন-সোর্স প্রজেক্টের সাথে জয়েন করতে পারেন।

Wednesday, October 19, 2016

I'm writing a book

Yes, that's true!

It's a book about a programming language called Java. The written language of the book is Bangla, and I targeting mostly Bangladeshi developers who know a basic programming language eg C or python and want to explore Java.

I, in fact, intend to write three separate part of the book.

Here is the outline of the books: 


Java :  Part 1 (Basic Java)
  1. Introduction 
  2. Your First Java Programming 
  3. Syntax 
  4. Data Types, Operators 
  5. Control flow-looping-branching 
  6. Array 
  7. Object Oriented Programming 
  8. Exception Handling 
  9. Generics 
  10. Java IO 
  11. Java NIO 
  12. String Operations 
  13. Collection Framework 
  14. Core Utilities 
  15. Unit Testing 

Java : Part 1.5 ( Java 8)
  1. Intro – like why should you care 
  2. Lambda Expression 
  3. Functional programming using Java 
  4. Stream API 
  5. New utilities-> Optional, Future, Completable Future etc 
  6. New Date Time API
Java : Part 2 (Advance Java)
  1. Java Memory Model 
  2. Thread & Concurrency 
  3. Annotation Processing 
  4. Java Reflection API 
  5. Java NIO2 → asynchronous I/O 
  6. Java Networking 
  7. JDBC 
  8. Example 
    1. Single Threaded Web server 
    2. Multi-Threaded Web Server 
    3. Multiplexed Web Server 

The first one is complete and hopefully, will be published by late November.