আমার প্রথম স্টার্টআপ একটি ব্যর্থতা ছিল, এবং আশেপাশের বেশ কয়েকটি স্টার্টআপও ব্যর্থ হয়েছিল। আমাদের ছিল: GCP ক্রেডিটে $100K, একজন প্রতিষ্ঠাতা ইঞ্জিনিয়ার যিনি এন্টারপ্রাইজে সিস্টেম তৈরি করেছিলেন, এবং গো-টু-মার্কেট। এবং আমরা ব্যর্থ হয়েছি, এটি ভুলভাবে তৈরি করার কারণে নয়, বরং আমরা এটি ভালভাবে তৈরি করেছিলাম বলে। এটাই ছিল সমস্যা।
যখন আমরা "অপ্টিমাল নয়" এমন টেক স্ট্যাকের সাথে লড়াই করে সময় কাটাচ্ছিলাম, তখন আমরা সবচেয়ে গুরুত্বপূর্ণ জিনিস হারিয়েছি: সময়, গতি, এবং কৌশলগতভাবে একটি সুযোগ।
এই গল্পটি সাধারণ জ্ঞান ছাড়া মানুষদের সম্পর্কে নয়। আমার সাধারণ জ্ঞান ছিল, এবং আমরা জানতাম যে আমাদের জিনিসগুলি সহজ রাখা উচিত। কিন্তু যখন আপনার মানসিক মডেল পরিস্থিতির সাথে মেলে না, তখন আপনার সমস্ত সাধারণ জ্ঞান ভেসে যায়। আপনি "সঠিক" সিদ্ধান্ত নেন যা আপনাকে মেরে ফেলে।
এটি খারাপ ইঞ্জিনিয়ারিং সম্পর্কে একটি গল্পও নয়। এটি সম্পর্কে যে কীভাবে ভাল ইঞ্জিনিয়ারিং স্টার্টআপগুলিকে মেরে ফেলে। কীভাবে যে অভিজ্ঞতা আপনাকে সিনিয়র করে তোলে তা আপনার সবচেয়ে বড় দায়বদ্ধতা হয়ে ওঠে। কীভাবে "সঠিকভাবে করা" বা এমনকি "সহজভাবে করা" প্রায়শই ভুল করা।
এই নিবন্ধটি মানসিক মডেল উপস্থাপন করে আপনাকে সঠিক সিদ্ধান্ত নিতে এবং আমি যে ভুল সিদ্ধান্তগুলি নিয়েছি তা এড়াতে সাহায্য করার জন্য।
:::tip এটি কাদের জন্য: সিনিয়র ইঞ্জিনিয়াররা যারা প্রাথমিক পর্যায়ের স্টার্টআপ শুরু করছেন বা যোগ দিচ্ছেন। আপনি যদি এন্টারপ্রাইজ বা বিগ টেকে 5+ বছর কাটিয়ে থাকেন, তাহলে এটি আপনার জন্য সতর্কতা।
:::
\
GCP ক্রেডিটে $100K একটি উপহার মনে হতে পারে, কিন্তু এটি একটি ফাঁদ। এটি আপনাকে অতিরিক্ত-ইঞ্জিনিয়ারিং-এর দিকে ঠেলে দেয় কারণ "এটি ইতিমধ্যেই পরিশোধ করা হয়েছে।" আপনি কম্পিউট ইনস্ট্যান্স, লোড ব্যালেন্সার, কন্টেইনার রেজিস্ট্রি এবং এন্টারপ্রাইজ টুল পান যার জন্য এন্টারপ্রাইজ সেটআপ প্রয়োজন। আপনার কী পাওয়া দরকার? একটি "পুশ টু ডিপ্লয়" বাটন।
অবশ্যই, আপনি GCP/AWS/Azure-এ "GitHub থেকে VM-এ ডিপ্লয়" ওয়ার্কফ্লো তৈরি করতে পারেন। কিছু পণ্য কাছাকাছি আসে। কিন্তু এর জন্য অতিরিক্ত পদক্ষেপ প্রয়োজন: ক্লাউড বিল্ড কনফিগার করা, IAM রোল সেট আপ করা, ডিপ্লয়মেন্ট স্ক্রিপ্ট লেখা, সিক্রেট পরিচালনা করা এবং হেলথ চেক কনফিগার করা। আসল পণ্য ডিপ্লয় করার আগে আপনি ডিপ্লয়মেন্ট ইনফ্রাস্ট্রাকচার তৈরি করে সময় নষ্ট করেন।
ইতিমধ্যে, Railway বা Fly.io এর মতো প্ল্যাটফর্মগুলি আপনাকে দেয় যা স্টার্টআপগুলির প্রকৃতপক্ষে প্রয়োজন: GitHub থেকে স্টার্ট-অ্যান্ড-গো ডিপ্লয়মেন্ট সহ একটি স্থায়ী VM। যতটা সহজ হতে পারে: আপনি আপনার কোড পুশ করেন, এবং এটি ডিপ্লয় হয়। শুধু ব্যবহারের জন্য প্রস্তুত VM এনভায়রনমেন্ট ভেরিয়েবল, SSL, লোড ব্যালেন্সার, লগ ইত্যাদি সহ। এটি "ফ্রি" নয়, কিন্তু এটি প্রস্তুত।
ফ্রি ক্রেডিট আপনাকে অতিরিক্ত-ইঞ্জিনিয়ারিং-এর দিকে ঠেলে দেয় কারণ "এটি ইতিমধ্যেই পরিশোধ করা হয়েছে।" আপনি নিজেকে বিশ্বাস করান যে আপনি টাকা বাঁচাচ্ছেন যখন আপনি আপনার সবচেয়ে মূল্যবান সম্পদ খরচ করছেন: সময়।
\
ঐতিহ্যগত KISS নীতি আমাদের বলে আমাদের সফটওয়্যার সহজ রাখতে। কিন্তু স্টার্টআপগুলিতে, এটি ভুল লক্ষ্য। আপনার উচিত নয় আপনার সফটওয়্যার সহজ রাখা; আপনার উচিত আপনার সমাধানগুলি সহজ রাখা।
প্রকৃত সরলতা মোট প্রচেষ্টা দ্বারা পরিমাপ করা উচিত, কোড জটিলতা দ্বারা নয়:
মোট প্রচেষ্টা = প্রাথমিক নির্মাণ + রক্ষণাবেক্ষণ + ডিবাগিং + ফিচার যোগ করা + সিকিউরিটি আপডেট + স্কেলিং পরিবর্তন
যখন আপনি শূন্য থেকে তৈরি করেন, তখন আপনি এই সবগুলির মালিক চিরকাল। যখন আপনি একটি পরিষেবা ব্যবহার করেন, তখন এগুলির বেশিরভাগই শূন্য হয়ে যায়। "ফুলে ফেঁপে যাওয়া" তৃতীয়-পক্ষের পরিষেবাটি আসলে সহজ সমাধান কারণ এটি মোট প্রচেষ্টা কমিয়ে দেয়।
আমাদের প্রতিষ্ঠাতা ইঞ্জিনিয়ার একটি "অজানা লাইব্রেরি" ব্যবহার করার পরিবর্তে শূন্য থেকে OAuth তৈরি করার সিদ্ধান্ত নিয়েছিলেন। এক সপ্তাহ পরে, তিনি একটি PR জমা দিয়েছিলেন: JWT টোকেন, রিফ্রেশ টোকেন রোটেশন, সেশন ম্যানেজমেন্ট এবং রোল-ভিত্তিক অ্যাক্সেস কন্ট্রোল সহ পরিষ্কার OAuth বাস্তবায়ন। কোন নির্ভরতা নেই, কোন বিক্রেতা লক-ইন নেই, শুধু কোড যা আমরা নিয়ন্ত্রণ করেছি।
আমি PR অস্বীকার করিনি। এবং এটি একটি ভুল ছিল। এক সপ্তাহের কাজ ফেলে দেওয়া মনোবল চূর্ণ করবে। কিন্তু এটি কোড জটিলতা তৈরি করে এবং এটিকে ভুল রেলে রাখে। উপরন্তু, আগে থেকে পদ্ধতি নিয়ে আলোচনা না করাটাই ছিল আমাদের আসল ভুল। আমরা ইঞ্জিনিয়ারিং গর্বকে একটি কৌশলগত সিদ্ধান্ত নিতে দিয়েছি।
তারপর, একটি ক্লায়েন্টের Microsoft OAuth এবং Google OAuth প্রয়োজন ছিল। কাস্টম বাস্তবায়ন মানে দিনের পর দিন রিফ্যাক্টরিং, রিফ্রেশ টোকেন রোটেশন, এজ কেস, RBA এবং অন্যান্য জিনিস। প্রতিটি "সহজ" সংযোজনের জন্য আমাদের কাস্টম অথের গভীর বোঝার প্রয়োজন ছিল। প্রতিটি সিকিউরিটি আপডেট ছিল আমাদের বাস্তবায়ন করার জন্য। প্রতিটি নতুন প্রয়োজনীয়তা ছিল আমাদের কোড করার জন্য।
ক্লাসিক সিনিয়র ইঞ্জিনিয়ার ভুল: ফলাফলের পরিবর্তে নিয়ন্ত্রণের জন্য অপ্টিমাইজ করা। স্টার্টআপগুলিতে, বাস্তবতা সিনিয়র ইঞ্জিনিয়াররা কীভাবে চিন্তা করে তা সম্পূর্ণরূপে উল্টে দেওয়ার প্রয়োজন:
\
\
আমরা Angular বেছে নিয়েছিলাম কারণ আমাদের প্রতিষ্ঠাতা ইঞ্জিনিয়ার এটি গভীরভাবে জানতেন। স্মার্ট সিদ্ধান্ত, তাই না? আপনার শক্তি ব্যবহার করুন, মানসম্পন্ন কোড শিপ করুন। ফ্রেমওয়ার্কটি ঠিক ছিল, কিন্তু সমস্যা ছিল এর ইকোসিস্টেম।
Angular চমৎকার এবং আমাদের ইঞ্জিনিয়ার এর সাথে যে কোনো কিছু তৈরি করতে পারতেন।
কিন্তু "যে কোনো কিছু" শুরু করতেই সময় লাগত। ডিপ্লয়মেন্ট, অথেনটিকেশন এবং বেসিক UI কম্পোনেন্ট সেট আপ করার অর্থ ছিল একটি একক ফিচার লেখার আগে অসীম কনফিগারেশন। যখন আমরা Angular Material থিম ডিবাগ করছিলাম, প্রতিযোগীরা (এবং করবে) Next.js + Vercel ব্যবহার করে ইতিমধ্যেই ব্যবহারকারীদের অনবোর্ড করছিল।
শুধু Next.js + Vercel পথের সাথে তুলনা করুন: প্রথম দিনে npx create-next-app দিয়ে একটি স্কেলেটন অ্যাপ ডিপ্লয় করুন, Clerk অথেনটিকেশন এবং shadcn/ui কম্পোনেন্ট যোগ করুন, প্রথম দিনেই আসল ফিচার শিপ করুন। একই গন্তব্য, সম্পূর্ণ আলাদা যাত্রা।
পার্থক্যটি ফ্রেমওয়ার্কের গুণমান নয়, এটি ইকোসিস্টেম অপ্টিমাইজেশন। Next.js/React অন্য স্টার্টআপগুলির জন্য টুল তৈরি করা ভেঞ্চার-ব্যাকড স্টার্টআপগুলি দ্বারা বেষ্টিত:
Angular-এর ইকোসিস্টেম এন্টারপ্রাইজগুলিকে সেবা দেয়: শক্তিশালী, নমনীয়, অসীমভাবে কাস্টমাইজযোগ্য। 50 জনের দলের জন্য নিখুঁত(?) এবং 3 জনের দলের জন্য বিষ।
\
কিন্তু সঠিক টুল থাকা সত্ত্বেও, একটি চূড়ান্ত ফাঁদ আছে: জিনিস তৈরি করার বাধ্যবাধকতা কারণ আপনি পারেন, কারণ আপনার উচিত নয়। এই ফাঁদটি কারিগরিভাবে শক্তিশালী দলগুলিকে এবং আমরা কল্পনা করতে পারি তার চেয়ে বেশি স্টার্টআপকে মেরে ফেলে: এমন জিনিস তৈরি করা যা কেউ চায়নি কারণ আপনি পারেন, কারণ আপনার উচিত নয়।
আমরা কমপক্ষে একমাস সময় ব্যয় করেছি এমন ফিচারগুলিতে যা কারও প্রয়োজন ছিল না। কাস্টম OAuth যখন Auth0 বিদ্যমান ছিল। একটি Postgres-ভিত্তিক জব কিউ যখন Redis + Celery বিদ্যমান ছিল। প্রথম দিন থেকেই Terraform, যখন কনসোল ঠিকঠাক কাজ করছিল। প্রতিটি সিদ্ধান্ত উৎপাদনশীল মনে হয়েছিল, কিন্তু প্রতিটি ছিল আত্ম-বিনাশ যেমন গ্রাহকদের সাথে কথা বলা বা অন্যান্য গ্রাহক উন্নয়নের মতো বাস্তব চ্যালেঞ্জগুলি মোকাবেলা করার জন্য।
প্যাটার্নটি সহজ: যদি গ্রাহকরা এর জন্য আপনাকে বেছে না নেয়, তাহলে এটি তৈরি করবেন না।
যদি একটি SaaS-এর খরচ $50/মাস-এর কম হয়, তাহলে আপনি এটি তৈরি করার সামর্থ্য রাখেন না। আপনার সময় খুব ব্যয়বহুল।
কাস্টম OAuth তৈরি করতে মোট রক্ষণাবেক্ষণে এবং বিভিন্ন OAuth প্রদানকারী যোগ করতে 1-2 সপ্তাহ সময় লাগে। স্টার্টআপ বার্ন রেটে, এটি $5,000-$15,000 ইঞ্জিনিয়ারিং সময়, বা একটি সুযোগ হারানোর সময়। Auth0 25,000 সক্রিয় ব্যবহারকারী পর্যন্ত বিনামূল্যে, তারপর $35/মাস। আপনি একবার এটি তৈরি করার খরচে 35 বছরের জন্য Auth0 এর জন্য অর্থ প্রদান করতে পারেন।
সুতরাং, এটি অর্থ সম্পর্কে নয় বরং অগ্রাধিকার এবং সুযোগ খরচ সম্পর্কে।
আমার মতে, শুধুমাত্র তখনই তৈরি করুন যখন আপনি এটি ছাড়া ব্যবহারকারীদের সম্পর্কে জানতে পারবেন না। একটি সহজ উদাহরণ হল যখন আপনাকে পরীক্ষা করতে হবে যে ব্যবহারকারীরা AI-জেনারেটেড রিপোর্টের জন্য অর্থ প্রদান করবে কিনা। চাহিদা প্রমাণ করে এমন সবচেয়ে সহজ সংস্করণ তৈরি করুন। এবং অন্য সবকিছু পিছলে যাওয়ার চেষ্টা করে। হ্যাঁ, ইনফ্রাস্ট্রাকচার এড়িয়ে যান, "সঠিকভাবে করা" এড়িয়ে যান, ফিচার শিপ না করে সেরা অনুশীলনগুলি এড়িয়ে যান, টেস্ট এড়িয়ে যান। আবার, কোড লেখায় যতটা সম্ভব অলস হোন।
এগুলি সমর্থন নয় বরং গতির জন্য অপ্টিমাইজ করা আমার নিজের পছন্দ। আমি অনুমান করি আপনার স্ট্যাক আলাদা হবে কিন্তু এই নীতি আলাদা হবে না।
\
\
LLM-গুলি নির্মাণকে পণ্যবিশেষে পরিণত করেছে। Claude সহ যে কোনো জুনিয়র সেই কাস্টম অথ সিস্টেম তৈরি করতে পারে যা নিয়ে আপনি এত গর্বিত। আপনার মূল্য আর আপনি কী তৈরি করতে পারেন তাতে নেই, বরং আপনি কী তৈরি না করা উচিত তা জানাতে।
নেতৃত্ব হল সিগন্যাল থেকে শব্দ আলাদা করার ক্ষমতা। প্রকৃত সিনিয়রিটি মানে আপনি যা জানেন তার 90% উপেক্ষা করার শৃঙ্খলা থাকা এবং আগামীকালের আর্কিটেকচার নয়, আজকের সমাধান শিপ করা।


