বাংলায় Android Apps ডেভেলপমেন্ট গাইড লাইন – মেগা পোস্ট

কখন অ্যান্ড্রয়েড শুরু করবে না, আর কখন শুরু করবে

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

Android Development শুরু করব কিভাবে?

বর্তমানে অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য Java ও Kotlin উভয়েই অফিসিয়াল ল্যাঙ্গুয়েজ। দুইটা দিয়েই কাজ করা যাবে। কিন্তু যারা একদম নতুন করে শুরু করবে তাদের জন্য সিনিয়ররা জাভা দিয়েই শুরু করতে বলেন। এতে স্ট্রং আর স্ট্রিক্ট ল্যাঙ্গুয়েজ জাভা জানা হলো এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের কনসেপ্টগুলো বেশ ভালো করে জানা হবে। যেহেতু আমার এই পোস্টটা যারা একদম গোড়া থেকে অ্যান্ড্রয়েড শুরু করবে তাদের জন্য, তাই আমি জাভার দৃষ্টিকোণ থেকেই লিখছি।

Prerequisites of Learning Android Development

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

  • Java input and output from console
  • Simple arithmetic and bitwise operation
  • IF-Else
  • Loop
  • Array
  • ArrayList
  • List
  • HashMap
  • Stack class
  • Queue class
  • StringBuffer class
  • String class
  • Date and time related classes
  • File input and output
  • Linear Search
  • Binary Search
  • Bubble Sort
  • Quick Sort
  • Sieve of Eratosthenes
  • DFS
  • BFS
  • Inheritance
  • Interface
  • Abstraction
  • Polymorphism
  • Method overloading
  • Method overriding

মাস তিনেকের মধ্যে এই টপিকগুলো নিয়ে ভাল রকমের প্র্যাকটিস করা সম্ভব। খুব ভাল হয় নিজের মত করে কনসোলেই একটা ছোটখাটো প্রজেক্ট করে ফেল। হতে পারে সেটা একটা টেক্সট ফাইলে কিছু স্টুডেন্ট ইনফরমেশন read-write-search-delete-update করার মত সিম্পল প্রোজেক্ট। এটার মধ্যে তোমার জানা OOP knowledge-গুলো implement করার চেষ্টা করো। এগুলো হচ্ছে মিনিমাম কিছু জিনিস যেগুলো জানা না থাকলে পদে পদে ধাক্কা খেতে হবে। আরো অনেক অনেক কিছু শেখা লাগবে। সেগুলো পরে কাজ করতে করতে নিজে নিজেই শিখে নিতে পারবা।

শেখার জন্য ব্লগ বা ভিডিও টিউটোরিয়াল নয়, বই সর্বশ্রেষ্ঠ। জাভা শেখার জন্য এই বইগুলো আমি ফলো করিঃ

  • How to program Java by Deitel
  • Head First Java
  • Effective Java
  • জাভা প্রোগ্রামিং – আ ন ম বজলুর রহমান

Start Learning of Android App Development

অ্যান্ড্রয়েড অ্যাপ ডেভেলপ করার জন্য সবচেয়ে শক্তিশালী IDE হচ্ছে Android Studio. এটা ডাউনলোড করে তোমার পিসিতে ইন্সটল করে নাও। ইন্সটল করার সময় কোনো ঝামেলা হলে ইউটিউবের ভিডিও দেখে ঠিক করে নাও। তুমি যেহেতু অ্যাপ ডেভেলপমেন্ট শিখতে চাচ্ছ তার মানে আমি ধরেই নিচ্ছি তোমার পর্যাপ্ত ধৈর্য আর গুগলে সার্চ করার অভ্যাস আছে। কোনো একটা টপিকে আটকে গেলেই তুমি বোকার মত কাউকে নক দিবা না, তার আগে অবশ্যই কয়েক ঘন্টা গুগলে ঘাটাঘাটি করবে; এই বিশ্বাস তোমার উপর আমার আছে।

নিজে নিজে শেখার জন্য আমার মতে ভিডিও টিউটোরিয়াল দেখে শুরু করা ভালো। এতে দ্রুত কিছু আউটপুট চোখের সামনে ধরা দেয়। নিজের ইন্সপায়রেশনের জন্য এটার দরকার আছে। ইউটিউবে অনেক বিগিনার লেভেলের ভিডিও টিউটোরিয়াল সিরিজ আছে। সেগুলো দেখে নিয়মিত প্র্যাকটিস করা যেতে পারে। আমি কয়েকটা লিংক নিচে দিচ্ছিঃ

আরো কিছু রিসোর্স দিচ্ছি যেগুলো অনেক হেল্পফুলঃ

খুঁজলে আরো অসংখ্য রিসোর্স পাবা। যেটা দেখে তোমার ভাল লাগে সেটা দিয়ে শুরু করো। প্রথম লিংকের ভিডিওগুলো আমার কাছে ভাল লাগে। কারণ অনেক দ্রুত আর অল্প সময়ের একেকটা ভিডিও। এই ভিডিও দেখে ঘুম আসার চান্স নাই। এখানে ছোট ছোট ভিডিওতে একটা করে টপিক দেখানো হয়েছে। এরকম কয়েকটা টপিক শেখার পর তুমি এগুলো দিয়ে একটা প্রোজেক্ট করে ফেলবা। এখন আবার জিজ্ঞেস করো না “ভাই কী প্রোজেক্ট করব? আইডিয়া পাই না। আইডিয়া দেন!”। আইডিয়া একে বারেই না পেলে ক্যালকুলেটর বানাও। সায়েন্টিফিক ক্যালকুলেটর বানাও। বা কিছুই মাথায় না আসলে একটা অ্যাপ বানাও যার একেকটা অ্যাক্টিভিটিতে অ্যান্ড্রয়েডের একেকটা টপিক ইমপ্লিমেন্ট করে দেখাবা। কেউ যদি জিজ্ঞেস করে “কী কী শিখলা?” তাকে অ্যাপ ধরায় দিয়া বলবা “এইগুলা শিখছি!” 😛

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

Some topics about Android Development

নিচের টপিকগুলো তুমি পর্যায়ক্রমে শিখতে পারো। এই সিরিয়াল্যি শিখতে হবে তা না। দরকার অনুযায়ী আগে-পরে করে নিতে পারো।

উপরের টপিকগুলো শেখা হলে বা কনফিডেন্টলি ইউজ করা শিখে গেলে আস্তে আস্তে নিচের টপিকগুলো দেখা শুরু করতে পারোঃ

  • Data binding
  • RxJava
  • Kotlin
  • Learn about basic design pattern like: Singleton, Builder patter, Factory pattern etc
  • Learn MVP architectural pattern (important)***
  • Learn MVVP architectural pattern (important)***
  • HTTP response caching
  • Different types of Service
  • Audio-video streaming
  • Use of ORM instead of raw SQLite query
  • Java Threading
  • Exception
  • Use of Generics
  • Firebase Realtime Database
  • Learn to make RESTful web API and implement all HTTP methods

Android এর প্রাইমারি টপিকগুলো মোটামুটি কভার করার পর নিজেকে কোনো মতে ব্যাসিক লেভেল জানা অ্যান্ড্রয়েড ডেভেলপার বলা যেতে পারে। পাশাপাশি নতুন যে কোনো টপিক সামনে আসলে তা শিখে ফেলার তৃষ্ণা থাকতে হবে সমুদ্রসম! তোমার ধৈর্য থাকতে হবে ঢাকার বিখ্যাত ‘বাহন বাস’ বা ‘৭ নাম্বার’ বাসের ড্রাইভারের মত। রোদ, বৃষ্টি, ঝড় কোনো কিছুই যেন তোমাকে স্পর্শ না করে। তোমার অ্যাপ একবার রান করলে দশ বার ক্র্যাশ করবে। এটাই নিয়ম। নাল পয়েন্টার এক্সেপশন খেতে খেতে তোমার মাথা নাল হয়ে যাবার উপক্রম হবে। উপরের টপিকগুলো শেখার সময় তুমি যেই ঝামেলাগুলোতে পড়বা, বিশ্বাস করো! তোমার আগে যারাই শেখা শুরু করেছে তারাই সে ঝামেলায় পড়েছে! তাই অ্যাপ কাজ না করলেই অমুক তমুক ভাইদেরকে ইনবক্স না করে গুগলে ছোট্ট করে সার্চ দাও। দেখ তোমার আগে ঐ বেলতলা অনেকেই পার হয়ে এসেছে। তুমি একলাই হতভাগা ন্যাড়া নও!

সম্ভব হলে ৩-৪ জনের টিম করে শেখা প্লাস কাজ করা শুরু করো। এমন মানুষদেরকে সাথে নাও যারা টাকা কামানোর চেয়ে কোড করতে বেশি ভালোবাসে। এমন কাউকে টিমে না নেয়াই উত্তম যে কাজ শেখার আগেই রেভিনিউ ভাগাভাগি নিয়ে চিন্তিত হবে। প্রথম দিকে কমন টাইপের কাজ করে হাত পাকাও। এরপর হুট করে কোনো একটা আইডিয়া মাথায় আসলে প্লেস্টোরে একাউন্ট খুলে আপ করো। ইনকাম নিয়ে বেশি টেনশন করো না। নিয়ত রাখো যে, নতুন যা যা শিখবা সেগুলো তোমার অ্যাপে ইমপ্লিমেন্ট করবা। কাজ শেখার জন্য হলে নিউজ পেপার লোড করার অ্যাপ বানাতেই পারো। তাই বলে এটা প্লে স্টোরে আপ করে হাজার হাজার ডলার কামানোর চিন্তা না করাই ভাল। যদি তোমার নিউজ পেপার অ্যাপে ইউনিক কিছু থাকে, যেটা অন্য অ্যাপে নাই তাহলে সেটা ভিন্ন কথা। ‘সকালে রান্নার টিপস, বিকালে সাজুগুজুর টিপস’ এই টাইপের অ্যাপ ডেভেলপ করে টাইম নষ্ট করো না।

মাইন্ড সেট করো প্রবলেম সলভার হবার জন্য, জাস্ট অ্যান্ড্রয়েড ডেভেলপার নয়! গড়ে তোলো নিজেকে কোর প্রোগ্রামার হিসাবে। আবারো বলছি, তুমি যদি মনে করো “আমি প্রোগ্রামিং তেমন একটা পারি না… তাই চিন্তা করতেছি অ্যাপ ডেভেলপার হবো!” তাহলে এটা তোমার দুঃস্বপ্ন! চিন্তা এই লাইনে হলে আগে ভাগেই সতর্ক হও। এই রাস্তা ছেড়ে ভাগো! হয় রিয়েল প্রোগ্রামিং শিখে আসো, নইলে এই দিকে পা বাড়ানোর দরকার নাই। টাকার দুঃখে তখন সকাল বিকাল ‘বাসর রাতের অ্যাপ’ বানানো ছাড়া উপায় থাকবে না।

আজ অ্যান্ড্রয়েড আছে। কাল যদি না থাকে তাহলেও যেন তোমার দুশ্চিন্তা না করতে হয়। নতুন যেই টেকনোলজি আসবে সেটাতে যেন সুইচ করতে পারো! সে জন্য প্রোগ্রামিংয়ের ব্যাসিক স্ট্রং করার কোনো বিকল্প নাই।

শেষ করছি একটা ইথিক্সের কথা দিয়ে। টাকার জন্য কখনো এমন কাজ করো না, এমন অ্যাপ বানিয়ো না যা তোমার ধর্ম সাপোর্ট করে না, যা তোমার দেশের মানুষের জন্য ক্ষতিকর, যা সমাজ ও মানব সভ্যতার জন্য ক্ষতিকর। এমন অ্যাপ তুমি বানিয়ো না যা গর্ব করে তোমার মাকে দেখাতে পারবে না। তুমি চটি অ্যাপ বানালে ঘটনা চক্রে হয়ত দেখবে তোমার ছোট ভাইবোনেরা সেগুলো ইউজ করছে। তোমার ছেলেমেয়েরা হয়ত কোন একদিন এই অ্যাপ ইউজ করবে। এই অ্যাপ থেকে ইনকাম হওয়া টাকাটা হারাম হবে না? তুমি মারা যাবে, এই অ্যাপের সকল ইউজারদের পাপের অংশ তোমার কবরেও পৌঁছে যাবে! কবরের আজাব সহ্য করতে পারবে তো?

অ্যাপ ডেভেলপার হবার চেয়ে ভালো মানুষ হওয়া বেশি জরুরি!

Leave a Reply