কমিউনিটিতে ফিরে যান

ABAP ও ABAP

লার্স হভাম থাকেন ডেনমার্কের কোপেনহেগেনে এবং ভালোবাসেন ABAP প্রোগ্রামিং ভাষা। Exercism-এ ABAP ট্র্যাকটি তৈরি করার পর আমরা লার্সের সঙ্গে দেখা করে আড্ডা দিয়েছি, কীভাবে তিনি টেক ইন্ডাস্ট্রিতে পৌঁছালেন তা নিয়ে।

Youtube-এ দেখুন
দৈর্ঘ্য 31মিনিট

Jonathan: সবাইকে স্বাগতম। আমার নাম Jonathan। আমি Exercism পডকাস্টের হোস্ট, আর আজ আমার সঙ্গে আছেন Lars। Lars, আপনি বর্তমানে কোথায় থাকেন?

Lars: আমি ডেনমার্কের কোপেনহেগেনে আছি।

Jonathan: দারুণ। বাহ। তাহলে বিষুবরেখার বেশ একটু উত্তরে। আমি এই মুহূর্তে বিষুবরেখার অনেকটাই দক্ষিণে। আজকের শোতে আপনাকে পেয়ে সত্যিই ভালো লাগছে। এই আলোচনাটা করতে পারছি বলে খুব খুশি। আর আমি সরাসরি শুরু করে দিচ্ছি। এই সপ্তাহের শোতে চলুন। তাহলে Lars, নিজের সম্পর্কে একটু বলুন। আপনি কীভাবে টেক জগতে এলেন? কীভাবে এখন যেখানে আছেন সেখানে পৌঁছালেন?

Lars: হ্যাঁ, দেখা যাক, আমি এখন কোথায় আছি, যেমনটা বললাম কোপেনহেগেন। তবে মূলত SAP কাস্টম কোড ABAP-এর ক্ষেত্রে কনসাল্টিং করি। আর কীভাবে সেখানে পৌঁছালাম? হ্যাঁ, সবসময়ের মতো এটা একটা লম্বা গল্প। কিন্তু এটা টেক। তাহলে চলুন টেকের যাত্রার কথা বলি। যখন আমি ছোট ছিলাম, সেটা অনেক দিন আগের কথা। আমি আর আমার অভিন্ন যমজ। আমার আছে...

Jonathan: আপনার তো একজন অভিন্ন যমজ আছে, তাহলে আমি কীভাবে জানব আজ আপনার অন্য যমজ ভাইটা কথা বলছেন না?

Lars: Microsoft-এর কাজ করে।

Jonathan: আচ্ছা। ভয়ংকর।

Lars: কাজ। তাই তাকে SAP নিয়ে যেকোনো কিছু জিজ্ঞেস করতে পারেন। অন্যদিকে সে আমাকে Microsoft নিয়ে কিছু জিজ্ঞেস করতে পারে না, কারণ আমি উত্তর দিতে পারি না।

Jonathan: হ্যাঁ।

Lars: কিন্তু যখন আমরা ছোট ছিলাম, তখনই শুরু করি। Commodore 64-এ খেলা। মনে আছে, Commodore-এ BASIC প্রোগ্রামিং ভাষায় খুব সাধারণ কিছু প্রোগ্রাম করতাম, একটা সাদা-কালো খুব ছোট টিভি স্ক্রিনে। ঘণ্টার পর ঘণ্টা এটা করে কাটাতাম। এরপর নতুন কম্পিউটার, 386 আর 486-এ QBasic করতাম। সেদিন এখানে ৮ মেগাবাইট মেমরিতে আপগ্রেড করা ছিল বড় ব্যাপার। হ্যাঁ, ওটা ছিল QBasic, তারপর Pascal প্রোগ্রামিং। একসময় Windows-এ ঢুকলাম। আর অনেক Visual Basic করেছি। হ্যাঁ, Visual Basic আমার ভালো লাগে। ওটা নব্বইয়ের দশকের কোনো এক সময়ের কথা, আর একসময় Linux চালানো শুরু করলাম। আর হ্যাঁ। যারা পুরনো সেই ভালো দিনের Linux-এর কথা মনে রেখেছেন, তখন themes.org ওয়েবসাইটটা ছিল, যেখানে বিভিন্ন উইন্ডো ম্যানেজারের থিম ডাউনলোড করা যেত। খুবই Linux-এর ব্যাপার। আর আমার মনে হয় ওটাই ছিল প্রথমবার আমি সত্যিই কমিউনিটির সঙ্গে জড়িয়ে পড়ি, PHP-তে ওই ওয়েবসাইটটা বানানোর পেছনে সময় দিয়ে। হ্যাঁ,

Jonathan: আচ্ছা। বাহ।

Lars: আমার গায়ে কিছু সিলমোহর এঁটে দিল। Visual Basic, পিএইচডি-র প্রোগ্রামিং করতাম। হ্যাঁ।

Jonathan: আচ্ছা। দারুণ। দারুণ। হ্যাঁ, এটা ভালো।

Lars: আর একসময় বিশ্ববিদ্যালয়ে গেলাম, কম্পিউটার সায়েন্সে মাস্টার্স করলাম, যা যা প্রোগ্রামিং ছিল করলাম, আর হঠাৎ করেই একটা ছোট চাকরি পেয়ে গেলাম, কারণ হ্যাঁ, ভাড়া দেওয়ার জন্য টাকা দরকার ছিল। আর অন্য প্রোগ্রামিং করতাম। গত প্রায় ১৫ বছর ধরে SAP ABAP কাস্টম কোড ডেভেলপমেন্টের কাজটা আমার সঙ্গে লেগে আছে। আর হ্যাঁ। তাহলে পরের প্রশ্ন। কেন? কেন এটা থেকে গেল? কারণ ABAP এখন তেমন আধুনিক প্রোগ্রাম নয়। এটা অনেকটা COBOL-এর মতো, কিন্তু এটা আবার খুব interessting একটা প্রোগ্রামিং ভাষা, কারণ এটা অনেক বিস্তৃত, এতে অনেক রকম স্টেটমেন্ট আছে, আর অনেক রকম জিনিস ভুল হয়ে যেতে পারে।

Jonathan: আচ্ছা। তাহলে এতে অনেক সমস্যা সমাধান আর নানা রকম ডিবাগিং আছে। এটাই এর স্বভাব?

Lars: হ্যাঁ। সাধারণত আমি বলি, আমি এ ধরনের কাজ করি কারণ ডিবাগিং আমার খুব ভালো লাগে, আর ডিবাগ করার মতো পুরনো কোডের অভাব নেই, তাই না? যেমন গত সপ্তাহেই আমি ২০ বছরের পুরনো একটা প্রোগ্রাম ঠিক করছিলাম। ভাবলাম, আচ্ছা, দারুণ, দারুণ। আর পুরনো প্রোগ্রামের ভেতর তাকালে সবসময়ই থাকে, যদিও আমি এটা অনেক বছর ধরে করছি, তবুও কিছু পুরনো নতুন জিনিস শেখার থাকে, কিছু পুরনো ফিচার যা ব্যবহার করা হয়েছে আর এখনও প্রতিদিন চলে, তাই না?

Jonathan: আচ্ছা, তাহলে আপনি ১৫ বছর আগে যোগ দিলেন। একই কোম্পানিতে, নাকি SAP নিয়ে ABAP শেখা শুরু করে বিভিন্ন কোম্পানিতে গেছেন?

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

Jonathan: হ্যাঁ। আপনার জীবনে এটা যেন একটা কমন থিম, সেটা হলো ভাড়া দেওয়া। ভাড়া দেওয়া,

Lars: হ্যাঁ।

Jonathan: দেওয়ার উপায় খুঁজে বের করা।

Lars: আর তারপরও ওপেন সোর্স প্রজেক্টে বেশি সময় কাটানো, চ্যালেঞ্জিং কিছুতে গিয়ে পথ হারানো।

Jonathan: হ্যাঁ। তাহলে আপনার ব্যবসার অংশ হিসেবে কাজ করার জন্য কি কোনো দল আছে, নাকি সেই অর্থে আপনি বেশ একা? আপনার কাজের দিন বা সপ্তাহটা কেমন দেখতে?

Lars: আমি একাই, আর আমার নিজের কোম্পানি আছে। সহযোগিতার কথা বললে, আমি গ্রাহকের সঙ্গে সহযোগিতা করি, তাই না? আর ওপেন সোর্স জগতে আমার ওপেন সোর্স কমিউনিটিতে অনেক ভালো বন্ধু আছে, যারা মাঝে মাঝে কিছু কাজে সাহায্য করে। আর আমিও মাঝে মাঝে তাদের কিছু কাজে সাহায্য করি, তাই এটা উইন-উইন ব্যাপার।

Jonathan: হ্যাঁ। তাহলে আমি ভুল না হলে, Exercism-এ ABAP ট্র্যাকটি বানানোর দায়িত্ব আসলে পুরোপুরি আপনার, অথবা এর নির্মাণে আপনার অনেক বেশি সম্পৃক্ততা আছে। এটা নিয়ে একটু বলুন।

Lars: হ্যাঁ। ABAP ট্র্যাকটি বিভিন্ন কমিউনিটির সদস্য মিলে বানিয়েছেন। এরা মূলত abapGit ওপেন সোর্স প্রজেক্টের কমিউনিটি সদস্য। অবশ্যই আমরা একটু আলাদা, তাই আমাদের নিজেদের git ক্লায়েন্ট একেবারে শূন্য থেকে বানাতে হয়েছে, কিন্তু ওটা অন্য দিনের অন্য গল্প।

Jonathan: হ্যাঁ। হ্যাঁ। হ্যাঁ।

Lars: সেটা GitHub। তাই বিভিন্ন মানুষ Exercism-এ অবদান রাখে। তবে ABAP ট্র্যাকটা একটু আলাদা, তাই না? কারণ এটা এমন একটা প্রোগ্রামিং ভাষা যা দিয়ে আসলে শুরু করা বেশ কঠিন, কারণ আপনি Node-এর মতো একটা JavaScript রানটাইম বা একটা Python রানটাইম ডাউনলোড করে নিতে পারেন না। ABAP-এ সেটা খুব সহজে করা যায় না। এটা করার সর্বশেষ উপায় ছিল একটা কনটেইনার, যেটা আমার মনে থাকা মতে ১৬ গিগাবাইটের ছিল।

Jonathan: ১৬

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

Jonathan: হ্যাঁ।

Lars: আর এই আকারের একটা ডকার কনটেইনার চালু করতে সহজেই ১০ মিনিট লাগতে পারে।

Jonathan: ? না। না। নিশ্চয়ই।

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

Jonathan: তাহলে এতে আপনার দৈনন্দিন কাজে কী ধরনের চ্যালেঞ্জ তৈরি হয়? আমার ধারণা, কারণ আপনাকে প্রতিদিন নতুন চোখে একটা সমস্যার দিকে তাকাতে হয় আর যিনি এটা বানিয়েছেন তাঁর মাথায় ঢুকতে হয়, কারণ আপনার কাছে খুব কম... এটা বলা ঠিক হবে যে আপনার কাছে রেফার করার জন্য খুব কম ডকুমেন্টেশন আছে, তাই আপনি

Lars: ডকুমেন্টেশন অনেক আছে, কিন্তু সেটা শুধু টেক্সটে, আর সবসময় ১০০% সঠিক নয়।

Jonathan: . . আচ্ছা।

Lars: সঠিক উপায় হলো কোডটা চালিয়ে দেখা, এটা আসলে কী করে। তাই না? অবশ্যই ভাষার অনেক জিনিসই সঠিক। কিন্তু আমরা যখন SAP সিস্টেমে কাজ করি আর কিছু বানাই, তখন সাধারণত একই সিস্টেমে অনেক ডেভেলপার থাকি, আর এই একটা সিস্টেমে থাকে ২০ কোটিরও বেশি লাইন কোড আর ৮০,০০০-এরও বেশি ডেটাবেস টেবিল,

Jonathan: বাপরে।

Lars: যা ভালো। ওগুলোর একটা আমার ভালো লাগে। আর বিশেষ করে যদি সবকিছু খুব কাছাকাছি রেখে বানান, তাহলে অনেক দারুণ স্ট্যাটিক অ্যানালিসিস করা যায়, যা জিনিসগুলোকে জুড়ে দিতে পারে, কিন্তু যদি মাইক্রোসার্ভিস আর্কিটেকচার করেন, তাহলে সব ঢিলেঢালাভাবে সংযুক্ত। দুইয়েরই ভালো-মন্দ আছে।

Jonathan: তাহলে আপনি মনোলিথ সেটআপ পছন্দ করেন, এটা বলা কি ঠিক হবে, নাকি এটা একটু, আপনি যা-ই পছন্দ করুন,

Lars: হ্যাঁ। আমি মনো-ই পছন্দ করি, হ্যাঁ। আচ্ছা। তাহলে আপনার পছন্দে মনোলিথ ম্যানেজ করাই। হ্যাঁ। দারুণ। ওটা

Jonathan: লিগ্যাসি কোড। হ্যাঁ। যেসব জিনিস অনেক দিন ধরে আছে, সব ওই ধরনের জিনিস।

Lars: হ্যাঁ। পুরনো জিনিস আমার ভালো লাগে। বেশ মজার, তাই না? আমি সাধারণত বলি, যখন... যখন বুড়ো হয়ে যাব, তখন PL/1 বা APL প্রোগ্রামিং করতে চাই, ওই ধরনের প্রোগ্রামিং ভাষা। জানি না, সম্ভবত M-এও করতে পারব, তাই না? কিছু...

Jonathan: সম্ভবত, আমাদের কাছে এখন সবকিছুই আছে। দেখা যাক আমাদের কী আছে। ABL, আপনি কি APL বললেন নাকি ABL?

Lars: APL। ওহ, এখানে কোনো APL ট্র্যাক নেই।

Jonathan: ওহ, হয়তো সুযোগ আছে।

Lars: PL/1। কোনো PL/1 ট্র্যাক নেই। আচ্ছা। আচ্ছা। তাহলে দুটো ট্র্যাক, যেটা কমিউনিটির কেউ...

Jonathan: ওহ, আপনি এখনই সাইন আপ করছেন, ওটা

Lars: না। তাহলে দৈনন্দিন কাজটা কেমন দেখতে, উদাহরণ হিসেবে ABAP ট্র্যাকটা? ABAP ট্র্যাকটা সঠিকটার একটা আনুমানিক রূপ, আর আমরা সবসময় এটাকে ১০০%-এর আরেক ধাপ কাছাকাছি নিয়ে যেতে চাই। তাই আমাদের এমনও মানুষ আছে যাদের সমাধান সঠিক, কিন্তু Exercism-এ কাজ করে না

Jonathan: আচ্ছা।

Lars: কারণ আমি যে অদ্ভুত ট্রান্সপাইলারটা বানিয়েছি। কিন্তু ধাপে ধাপে, দিন দিন এটা কাজ করতে শুরু করছে। আর আমরা ব্যাকএন্ডে আর Exercism রানারে আর সব জায়গায় আরও আরও ইউনিট টেস্ট যোগ করছি। তারপর আশা করি একদিন এটা ১০০% নিখুঁত হবে, কিন্তু

Jonathan: কে জানে। কে জানে ওই জায়গা থেকে কী আসবে। তাহলে এখন, সপ্তাহে সাধারণত কতজন ক্লায়েন্টের সঙ্গে কাজ করেন? একজন, দুজন নাকি তিনজন, নাকি ১০ জন পর্যন্ত হতে পারে?

Lars: শুধু একজন বা দুজন।

Jonathan: আচ্ছা। আর এটা কিছুদিন ধরে চলছে।

Lars: হ্যাঁ। হ্যাঁ। আমি এখন অনেক বছর ধরে কনসাল্টিং করছি।

Jonathan: আর এটা কি মূলত কোপেনহেগেনকেন্দ্রিক, নাকি মহামারির সময় দূরের কোথাও রিমোটে কাজ করার সুযোগ পেয়েছিলেন? আপনার ধরনটা কী, আপনি কি অনেক ভ্রমণ করেন, নাকি,

Lars: ছোটবেলায় অনেক ভ্রমণ করেছি, কিন্তু এখন সাধারণত বাড়িতে বসে রিমোট কাজ করি।

Jonathan: আচ্ছা।

Lars: এটা

Jonathan: হ্যাঁ। আপনি কফি মেশিনটা গরম রাখেন।

Lars: হ্যাঁ।

Jonathan: সবকিছু চলতে থাকুক। তাহলে শেষে, আপনি বললেন আপনি বেশ ছোটবেলা থেকেই প্রোগ্রামিং করে বড় হয়েছেন আর ছোটবেলা থেকেই এতে আগ্রহী ছিলেন। কোনো এক সময়ে প্রোগ্রামিং আপনার কাছে অর্থবহ হয়ে উঠেছিল? কোনো একটা মুহূর্ত ছিল যখন মনে হয়েছিল এটা আপনার কাছে খুলে গেছে, নাকি ছোটবেলা থেকেই এটা এমনভাবে বুঝতেন? আপনি এটা কীভাবে বর্ণনা করবেন?

Lars: ওহ, জানি না। আমার মনে হয় আমি সবসময়ই প্রোগ্রামিং করা বুঝতাম, তাই না?

Jonathan: হ্যাঁ।

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

Jonathan: আপনি এখনও সবকিছুর সঙ্গে লড়াই করছেন? না, ব্যাপারটা মজার, কারণ আমার অনেক অভিজ্ঞতায় হয়েছে এটা। আমাকে একটা ভাষার মতো কিছুতে ডুবে যেতে হয়। তারপর হঠাৎ যেসব ধারণা অপরিচিত ছিল, সেগুলো এক রাতের মধ্যে বদলে যায়। আর তখন প্রায় মনে হয়, আহ্, এটা তো পুরোপুরি বোঝা গেল। আর পডকাস্টে যাদের সঙ্গে কথা বলেছি তাদের কয়েকজনও বলেছেন, হ্যাঁ, তাদেরও একই ধরনের অভিজ্ঞতা হয়েছে। আমি জিজ্ঞেস করলাম, আপনি এটা কীভাবে করলেন? আর তারা বলল, আহ্, এক মেয়ে বলল, আমি শুধু একটা প্রোগ্রাম কল্পনা করি, একটা গল্পের মতো, আর ফাংশনগুলো হলো চরিত্র, এই ধরনের সবকিছু। তাই ওটা সত্যিই মজার ছিল। কিন্তু আপনি কীভাবে ঠিক করলেন যে ABAP-ই সেই জিনিস যেটায় মন দেবেন? এটা কি শুধু এই যে, এতে ভাড়া চলে যায়, নাকি এই যে, আমার এটা খুব ভালো লাগে, JavaScript বা যা-ই হোক তার চেয়ে এটাই পছন্দ, আর

Lars: প্রোগ্রামিংয়ে ঢোকার শুরুটা সবসময় হঠাৎ করেই হয়, তাই না? Raymond-এর একটা BASIC ঘরানার কাজ করা, Java করা, আর শুরুটা হঠাৎ করেই, আর এটা একটা খুব চ্যালেঞ্জিং প্রোগ্রামিং ভাষা হিসেবে আলাদা হয়ে দাঁড়াল, কারণ Java আর JavaScript-এর মতো ভাষায় যত স্টেটমেন্ট নেই, তার চেয়ে এটা অনেক বড়, অনেক বেশি স্টেটমেন্ট আছে। JavaScript-এ বড় একটা লাইব্রেরি থাকে। ABAP-তে এর তুলনায় আমরা প্রোগ্রামিং ভাষার অংশ হিসেবেই অনেক লাইব্রেরি জিনিস পাই, যেখানে JavaScript-এ আপনি লাইব্রেরি কল করার জন্য একই ধরনের ভাষা-গঠন ব্যবহার করেন।

Jonathan: আচ্ছা।

Lars: হ্যাঁ।

Jonathan: আচ্ছা। তাহলে ব্যাপারটা প্রায় এমন যে আপনি 거의 হঠাৎ করেই ABAP আবিষ্কার করলেন। তাহলে এখন সামনের দিকে তাকালে, পরের ধরুন ১০, ১০ বছরে, জানি না আপনি এত দূর পর্যন্ত ভাবতে চান কিনা, কিন্তু। প্রোগ্রামিং আর ব্যবসার দিক থেকে আপনার পরের পাঁচ থেকে ১০ বছর কেমন দেখতে? কোনো ধারণা আছে কি, আহ্, আমি এখানে থাকতে চাই, এটাই করতে চাই,

Lars: আহ্, আপনি সত্যিই কখনো জানেন না, তাই না? তাই আমি যতদিন কাজগুলো মজার মনে করি, ততদিন সেগুলো চালিয়ে যাই, তাই না? আর মজার না লাগলে ছেড়ে দিয়ে অন্য কিছু করি।

Jonathan: আচ্ছা, তাহলে সেটাই

Lars: পরিকল্পনা, তাই না? আমার মতে, প্রতিদিন কাজ চালিয়ে যেতে হলে এটা মজার হতে হবে। আমি মনে করি, ১০ বছর পরেও সম্ভবত মেনুতে ABAP-ই থাকবে। ব্যাপারটা একটু সেখানেই গিয়ে ঠেকে। প্রোগ্রামিং ভাষা আর প্রযুক্তির বেলায় আমি বেশ বাছবিচার করি। তাই আমি ABAP করি আর JavaScript/TypeScript করি, তারপর অন্য কোনো ভাষায় ঢুকতে চেষ্টা করি না।

Jonathan: হ্যাঁ। আচ্ছা। কিন্তু আমি যদি বলি, ঠিক আছে, Lars, আপনাকে এখন ABAP আর JavaScript ছাড়তে হবে, আর আপনাকে অন্য একটা প্রোগ্রামিং ভাষা নিতে হবে। আপনার কোনো ধারণা আছে কোনটা নিতে চান? হ্যাঁ, সেটাই করব।

Lars: হ্যাঁ, আমরা তো আগেই APL নিয়ে কথা বলেছি,

Jonathan: আচ্ছা। হ্যাঁ।

Lars: খুব দারুণ, খুব, সম্ভবত আমার চেয়েও বয়সে বড় একটা ভাষা, জানি না, প্রায়। APL আর PL/1, আমার মনে হয় দুটোই ABAP-এর চেয়ে পুরনো।

Jonathan: . আচ্ছা। বাহ। তাহলে কৌতূহলবশত জানতে চাই, কেন ওগুলো? ওগুলোর কোন জিনিসটা আপনাকে টানে?

Lars: APL আমি সত্যিই চেষ্টা করিনি, কিন্তু ইন্টারনেটে কয়েকটা সিমুলেটর আছে যা চেষ্টা করা যায়। এতে অনেক গ্রিক অক্ষর, যেখানে সবকিছু ম্যাট্রিক্স, গুণ... আমি না, এটা দেখতে খুব অদ্ভুত আর হ্যাঁ, বোকামি। কিন্তু সেটাই আবার এটাকে মজার করে তোলে, তাই না? কিছু একটা চ্যালেঞ্জ থাকতে হবে। আর PL/1 তো শুধু... কিন্তু অন্য কিছু। আমি নিশ্চিত নই।

Jonathan: কিছু রহস্যময় আর একটু

Lars: হ্যাঁ। আসলে না। আমি পুরনো ক্লাসিক জিনিস পছন্দ করি, নতুন সব ফ্যান্সি জিনিস নয়। তাই আমি সম্ভবত বলতে পারি Rust, না। সম্ভবত একদিন Rust-এ ঢুকব, কিন্তু সেটা সত্যিই শুধু দরকারে, চাই বলে নয়।

Jonathan: হ্যাঁ। আর আপনি কি লক্ষ্য করেন যে ABAP ব্যবহারকারীর সংখ্যা কমছে নাকি বাড়ছে, নাকি সম্প্রতি ভাষাটার ব্যবহারে আবার একটা পুনরুত্থান ঘটেছে? এটা নিয়ে আপনার দৃষ্টিভঙ্গি কী?

Lars: হ্যাঁ, এটা বেশ কঠিন, কারণ ABAP হলো বড় বড় সিস্টেম, যা বড় বহুজাতিক প্রতিষ্ঠানের ভেতরে চলে, তাই আসল সংখ্যাটা আসলে কী, তা নিয়ে সঠিক আর প্রকৃত কোনো পাবলিক সংখ্যা পাওয়া বেশ কঠিন। কিন্তু গুজব হলো, যেসব ডেভেলপার এটা মন থেকে জানেন তাঁদের বয়স বাড়ছে আর তাঁরা ক্রমশ বাজার থেকে সরে যাওয়ার কাছাকাছি যাচ্ছেন।

Jonathan: আচ্ছা।

Lars: তাই COBOL-এর মতো, তাই না? এটা পুরনো ভাষা, আর তরুণদের কাছে এটা খুব মজার লাগে না, তাই না? তাই এটা আমার মতো বয়স্কদের ভাষা। কিন্তু সেজন্যই আমরা আসলে ABAP ট্র্যাকটা করেছি, তাই না? আমরা আরও তরুণকে ভাষাটায় আনতে চাই, আর Exercism এমন একটা ভালো প্ল্যাটফর্ম যেখানে অনেক রকম জিনিস চেষ্টা করা যায়। ঢুকে পড়ুন, শুরু করা খুব সহজ। সাইন ইন করুন, ক্লিক করুন, লগইন করুন। ABAP কোড লিখতে শুরু করুন। হয়ে গেল।

Jonathan: হ্যাঁ। আর আপনি কি খেয়াল করেছেন, অনেক মানুষ ট্র্যাকটা করছে? ABAP ট্র্যাকটা?

Lars: হ্যাঁ। এখন আমাদের প্রায় ৫,০০০ শিক্ষার্থী।

Jonathan: বাহ, দারুণ। হ্যাঁ।

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

Jonathan: হ্যাঁ।

Lars: তাই ওটার মাধ্যমে আমরা অনেক নতুন শিক্ষার্থী পেয়েছি। আর আমরা GitHub-এ অনেক ফিডব্যাক আর বাগ আর ইস্যু পেয়েছি। আর এটা এমন একটা ব্যাপার যার সঙ্গে ABAP জগতে আমরা সত্যিই অভ্যস্ত নই। একাধিক প্রতিষ্ঠান মিলে সহযোগিতা করা। আসলে GitHub-এ কিছু কোড শেয়ার করা কমিউনিটিতে খুব একটা সাধারণ ব্যাপার নয়।

Jonathan: এটা কি শুধু এই কারণে যে মানুষগুলো, ব্যাপারটা খুব সাইলো হয়ে আছে, এই কোম্পানি নিজের কাজ করে আর অন্য কোম্পানি নিজের কাজ করে। তাই ডেভেলপাররা আসলে খুব একটা কথা বলেন না। তাঁরা নিজেদের নির্দিষ্ট প্রেক্ষাপটে থাকেন, আর শেয়ারিং আর সহযোগিতা একটু কম, নাকি কারণটা অন্য কিছু?

Lars: এটা SAP সিস্টেমের স্বভাবের কারণেও। কারণ এটা একটা স্ট্যান্ডার্ড সিস্টেম। এটা আপনার জন্য যা-ই দরকার করতে পারে, তাই সাধারণত আমি যখন গ্রাহকদের সাহায্য করি, সেটা এই কারণে যে গ্রাহকের বিশেষ কিছু দরকার।

Jonathan: হ্যাঁ।

Lars: আর সেটা তাদের ব্যবসাকে যা অনন্য করে তোলার ভিত্তিতে বিশেষ কিছু। তাই সম্ভবত এটা এমন কিছু যা অন্য গ্রাহকরা ব্যবহার করতে পারবে না, আর ব্যবহারও করবে না, কারণ ওই গ্রাহক অন্য এক গ্রাহকের চেয়ে ভিন্নভাবে অনন্য। কিন্তু একটা সোর্স কমিউনিটি গড়ে উঠছে, যা কোড শেয়ার করে, তবে সেটা সাধারণত ইউটিলিটির স্তরে। ইউটিলিটি, যেমন লগিং আর এরর হ্যান্ডলিং বা এই ধরনের জিনিস। কিন্তু এটা একদিন হয়ে যাবে। SAP জগতে যেকোনো কিছুতে শুধু পাঁচ বছরের বেশি সময় লাগে।

Jonathan: হ্যাঁ। শুধু যাতে সবকিছু সেই গতি পেতে শুরু করে। তো, এটা ছিল সেই জিনিসগুলোর একটা যা আমরা শোতে যারা আসেন তাঁদের সবাইকে জিজ্ঞেস করি, আর আমি, আপনি হয়তো যে ডকুমেন্টটা পাঠিয়েছিলাম সেটা দেখেছেন, কিন্তু আমরা। আমরা সাধারণত মানুষকে জিজ্ঞেস করি, টেক জগতে সেই একমত বা দৃষ্টিভঙ্গি কী যেটা আপনি ধরে রাখবেন আর ছাড় দেবেন না? অথবা সাধারণত, টেক জগতে সেই কোন পাহাড় যেটার জন্য আপনি মরে যাবেন, যাতে জিনিসটা চিরকাল টিকে থাকে, আর এটা হতে পারে তেমনই। বোকামি, যেমন ফ্রন্টএন্ডে থাকলে আমি সবসময় আমার CSS-এর পরে আমার লজিক লিখি। অথবা এটা সত্যিই তুচ্ছ হতে পারে, বা এমন কিছু হতে পারে যেমন, উদাহরণ হিসেবে, আমি কখনো GitHub ব্যবহার করব না। হতে পারে, কিন্তু আপনাকে শুধু যুক্তি দিতে বা উপস্থাপন করতে পারতে হবে, আপনার পয়েন্টটা ভেবেচিন্তে। কিন্তু সেই একটা জিনিস, সেই একটা মত কী যেটা আপনি।

Lars: একটা একটা। একটা মত

Jonathan: আচ্ছা। আমি আপনাকে দুটো দিতে পারি। দুটো দিতে পারি। হ্যাঁ। তিনটে। আচ্ছা। তিনটে। আপনি তিনটে মত দিতে পারেন, কারণ আমি জানি টেকনিক্যাল মানুষদের আসলে সাধারণত খুব একটা মতামত থাকে না।

Lars: হ্যাঁ। আমার মনে হয় মানুষ যদি আমাকে বর্ণনা করত, তাহলে কখনও কখনও আমার খুব জোরালো মতামত থাকে, আর হ্যাঁ। তাই আমার প্রধান মতামতগুলোর একটা হলো, না বলে দেওয়া, এটা সম্ভব হবে না। এমন কিছু করুন যা সমাধান আর প্রযুক্তির সঙ্গে বেশি মানায়। তাই Jenkins-এর মতো টুল ব্যবহার করতে না বলা। Jenkins-কে না বলা, এটা এমন একটা টুল যা আমি উল্লেখ করতে পছন্দ করি যেটা কারোই ব্যবহার করা উচিত নয়, তাই না?

Jonathan: কেন? কেন? সেটা কেন? এর কারণ কী?

Lars: আপনার পাইপলাইন কোডের কাছাকাছি রাখা অনেক সহজ। তাই যদি আপনি, আমার তো মনে হয় এটা অপ্রচলিত হয়ে গেছে।

Jonathan: আচ্ছা। তাহলে এটা এমন এক স্তরের অ্যাবস্ট্রাকশন যা আপনার লাগবে না, যদি আপনি জানেন আপনি কী করছেন।

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

Jonathan: আচ্ছা। হ্যাঁ, ভালো লাগল। আর আমি আপনাকে আরেকটা মত দিতে যাচ্ছি। আরেকটা কী, তৃতীয় মত কী,

Lars: হোয়াইট স্পেস, মানে হোয়াইট স্পেস। আমার সাইড প্রজেক্টগুলোর একটা হলো ABAP-এর জন্য স্ট্যাটিক অ্যানালিসিস। আর আসলে ABAP-তে, আমাদের অনেক রকম স্টেটমেন্ট আছে, ইন্ডেন্টেশন করার অনেক রকম উপায়, আর ABAP-এর কেস, ছোট হাতের অক্ষর আর হাঙ্গেরিয়ান নোটেশন, সবকিছু। হ্যাঁ। টেক্সটের কোথাও ডাবল স্পেস থাকা, এটা সত্যিই আমাকে খেপিয়ে তোলে।

Jonathan: এটা কি শুধু এই কারণে যে এতে সবকিছু এলোমেলো হয়ে যায়, আর এটা শুধু দুঃস্বপ্ন

Lars: এটা আপনাকে পড়ার ছন্দ থেকে বিচ্যুত করে, একটা টেক্সট বা কোডের একটা অংশ পড়ার মতো। আহ্, এখানে মাঝখানে দুইটা স্পেস আছে, এটা আমাকে অসতর্ক করে ফেলে।

Jonathan: আচ্ছা আচ্ছা, তাহলে দেখা যাক, Jenkins, পাইপলাইন কোডের কাছাকাছি রাখুন। Eclipse, দরকার নেই। আর ডাবল হোয়াইট স্পেস। তাহলে আমি আপনাকে তিনটা মত দিলাম, যেগুলো গুরুত্বে ভিন্ন, মনে হচ্ছে। না, এটা সত্যিই দারুণ। না, এটা ভালো। আর হ্যাঁ, আমার মনে হয় আপনি ভালোভাবেই নিজের অবস্থান ধরে রেখেছেন।

Lars: আর continuous integration-এর কথাও যখন বললাম, continuous integration-কে continuous waiting বানাবেন না।

Jonathan: আচ্ছা, তাহলে কোড পুশ করলেন, তারপর সেটা বসে বসে অপেক্ষা করে PR হওয়ার জন্য, এটাই কি আপনি

Lars: ফিডব্যাক দ্রুত ডেভেলপারের কাছে পৌঁছাবে, এক ঘণ্টা, দুই ঘণ্টা কোনো ফিডব্যাকের জন্য অপেক্ষা করার বদলে।

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

Lars: শুধু খারাপ আর্কিটেকচার।

Jonathan: হ্যাঁ। আচ্ছা। আচ্ছা। মজার। আচ্ছা, তাহলে আজকের শেষ প্রশ্ন। আশা করি এখন পর্যন্ত আপনার ভালো লেগেছে, কিন্তু আমি আপনাকে এটা জিজ্ঞেস করতে চাই। এই সপ্তাহে Exercism কমিউনিটির জন্য আপনার কী সুপারিশ আছে? যদি কমিউনিটির জন্য একটা জিনিস সুপারিশ করতে পারেন, সেটা কী হবে? যেকোনো কিছু হতে পারে। সুশি খান। গিয়ে নদীতে ঝাঁপ দিন, যা-ই হোক সেটা

Lars: অবশ্যই ট্র্যাকটা চেষ্টা করে দেখুন। সম্ভবত সেটাই

Jonathan: আমি আপনাকে ফ্রি একটা দিলাম। এটা ফ্রি। এটা ফ্রি, আচ্ছা।

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

Jonathan: হ্যাঁ।

Lars: কারণ টেক জগতে আর টেক জগতের বাইরে করার মতো এত এত জিনিস আছে যে সারাক্ষণ বোর হয়ে থাকলে সত্যিই এটা করার মতো নয়।

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

আমাদের কমিউনিটির আরও গল্প

আমাদের কমিউনিটির সদস্যদের কথা শুনুন, শিখুন এবং অনুপ্রাণিত হোন।