21 August, 2018

প্রোগামিং সম্পর্কে কিছু কথা

১। কেন প্রোগ্রামিং/কোডিং/ডেভেলপিং শিখব ? লাভ কি এগুলা শিখে?
এর উত্তর সবাই জানি মনে হয়। ফ্রিল্যান্সার/ডেভেলপার/সফটওয়ার ইঞ্জিনিয়ার বা আস্ত একটা কোম্পানির মালিক, কে না হতে চায়?
সুতরাং কেন শিখবো এই টপিকস আপাতত বাদ।
২। ক্যারিয়ার প্যাথঃ ডেভেলপার বা প্রোগ্রামার হিসেবে এখন হাজার হাজার ফিল্ডে কাজ করার সুযোগ আছে। তবে স্কিল থাকতে হবে সেরকম। ডেভেলপিং সেক্টরের অন্যতম কিছু ফিল্ড ও সেগুলোতে ব্যবহৃত হট প্রোগ্রামিং ল্যাংগুয়েজ, লাইব্রেরী ও ফ্রেমওয়ার্ক গুলো হলঃ
- ওয়েব ডেভেলপমেন্ট (HTML5,CSS3,Bootstrap,JavaScript, PHP, Java, Python [ React.JS, Angular.JS,Vue.JS, Spring, Laravel, Django, Flask] )
- ডেস্কটপ ডেভেলপমেন্ট (C++, C#, Java, Python [Qt, .NET, JavaFX, Swing] )
- মোবাইল (Android/iOS) ডেভেলপমেন্ট ( Java, Kotlin, Xamarin, ReactNATIVE, Swift, Objective C, C++ )
- গেম ডেভেলপমেন্ট (C++, C#, Java, Python)
- বিভিন্ন ধরনের সিস্টেম ডিজাইন (লো লেভেল কাজকারবার যেমনঃ ইলেক্ট্রনিক ডিভাইসের ইন্টারফেসিং, অপারেটিং সিস্টেম, রোবোটিক্স, সাইন্টিফিক কাজ কারবার ইত্যাদি ইত্যাদি) (C/C++, Rust, Scala, Python, Java)
- আর্টিফিসিয়াল ইন্টিলিজেন্ট ( কৃত্রিম বুদ্ধিমত্তা) (Python, Java, R, C/C++)
- ভার্চুয়াল রিয়েলিটি (JavaScript, C++, Python, Java, C#)
- সাইবার সিকিউরিটি ( C/C++, Python, PHP, MySQL, Java)
ইত্যাদি।
৩। কোডিং এর শুরুঃ জব ট্রেন্ড সহ বিভিন্ন ফ্যাক্টর বিবেচনায় নিলে বলা যায়, আপনি যদি বিগিনার হন, তাহলে উচিত হবে C/C++, Java, Python এই ৩ টার যে কোন একটা প্রোগ্রামিং ভাষা ভালো ভাবে শেখা। একটা বলতে একটাই। একটার একটু আরেকটার একটু এভাবে শেখা বোকামি। তবে, একটা ভাষা শেখার পর অন্য আরেকটা শেখা ওয়ান টুর ব্যাপার।
শুরুর দিকে ল্যাংগুয়েজ সিলেক্ট করা অনেকের জন্য ঝামেলার কাজ। তবে, জব পোস্ট/ট্রেন্ড/গিটহাব রিপজিটরি ইত্যাদি বিবেচনায় নিলে প্রথম ল্যাংগুয়েজ হিসেবে ‘জাভা’ শেখা যেতে পারে।উপরে বলা প্রায় প্রত্যেকটা ফিল্ডে 'জাভা' ইউজ করা যায়। আর ‘জাভা’ ১০০% অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ। তাই এটা শিখতে পারলে সফটওয়ার ডেভেলপিং এর অনেক কিছুই ক্লিয়ার হয়ে যাবে। তবে ‘জাভা’ গ্রহের ‘ সব থেকে সহজে শেখা যায়’ এমন প্রোগামিং ভাষা নয়।
জিমেইল সহ প্রায় সব এন্টারপ্রাইজ লেভেলের ওয়েব এপ 'জাভা' দিয়ে ডেভেলপ করা। 'জাভা' অনেক ফাস্ট আর সিকিউরড।এর আছে মহা সমুদ্রের মতন API (Application Programming Interface) যা দিয়ে খুব সহজে যে কোন কিছু ডেভেলপ করা যায়। 'জভা'-র গুন বর্ননা করে শেষ করা যাবে না। Jetbrains এর Intelij IDEA সহ Android Studio, Pycharm, CLion ইত্যাদি 'জাভা' দিয়ে ডেভেলপ করা। এন্ড্রয়েডের সব এপ্লিকেশন, গেম 'জাভা' দিয়ে ডেভেলপ করা ( Kotlin can be defined as purified JAVA, until now…)
৪। শুরুর পরঃ মোটামুটি লেভেলের সিনট্যাক্স জানার পর নতুন শেখা ভাষাটি দিয়ে প্রব্লেম সল্ভিং এর প্রাকটিস করতে হবে, পারলে কম্পিটিশন করতে হবে। এই জন্য অনলাইনে অনেক সাইট আছে। যেমনঃ Codeforces, HackerRank, Codechef, UVA, Light OJ, SPOJ, HackerEarch, TopCoder ইত্যাদি।এতে করে স্কিল ডেভেলপ হবে। লজিক গুলো স্ট্রং হবে। গতি আসবে ।
৫। ডিসক্রিট ম্যাথ, ডাটা স্ট্রাকচার ও বিভিন্ন এলগরিদম শিখতে হবেঃ বিভিন্ন রিসোর্স থেকে বহুল ব্যাবহৃত ডাটা স্ট্রাকচার ও এলগরিদম গুলো শিখতে হবে ও নিজের লজিক ডেভেলপ করতে হবে। অর্থাৎ কোন সমস্যা আসলে আমি কিভাবে, কোন টেকনিকে তা সমাধান করব।
৬। যে কোন একটা IDE (Integrated Development Environment) সম্পর্কে ভালো ধারনা রাখতে হবে। তাহলে কোডিং/ডেভেলপিং অনেক তাড়াতাড়ি করা যাবে। ওপেনসোর্স কিছু Editor ও IDE হলঃ
  • Eclipse
  • Netbeans
  • Atom
  • Visual Studio Code
  • Intelij IDEA Community Edition
  • Android Studio
  • Notepad++
  • Sublime Text
  • Vim, Neo Vim, Emacs
৭। ডেভেলপার টুলস ও ডিবাগিং সম্পর্কে ভালো ধারণ থাকতে হবেঃ
  • Google Chrome
  • Firefox
এর ডেভেলপার টুলস সম্পর্কে ভালো ধারনা থাকতে হবে। টেস্টিং সম্পর্কে পড়াশুনা করা যেতে পারে, আরো ভালো ডেভেলপার হওয়ার জন্য।
৮। ওপেন সোর্স প্লাটফর্ম ইউস করার অভ্যাস থাকতে হবে। যেমনঃ লিনাক্স এবং বিশেষ করে এর শক্তিশালী CLI ( Command Line Interface ) এর ব্যাবহার জানতে হবে।
৯। ভার্সন কন্ট্রোল সম্পর্কে জানতে Git ও Github এর ব্যাবহার জানতে হবে।
১০। বিভিন্ন FTP ( File Transfer Protocol ) ক্লায়েন্ট যেমনঃ File Zilla সম্পর্কে ধারনা রাখতে হবে।
১১। ডাটাবেস সম্পর্কে জানতে হবে। যেমনঃ MySQL, MongoDB ইত্যাদি
সব সময় নিত্য নতুন জিনিস ডেভেলপ হচ্ছে তাই সব সময় শেখার উদ্যোম রাখতে হবে।