بیایید صادقانه بگوییم، به عنوان بنیانگذار غیرفنی برای یک استارتاپ فنی، کار سختی پیش رو دارید.
بله، شما احتمالا کاریزما، مهارت فروش عالی و شبکهسازی مناسبی دارید، اما به احتمال زیاد هر گفتگوی تخصصی درباره توسعه فنی کسبوکارتان، شما را دچار کمی اضطراب میکند. بنابراین بیایید با مرور اصول اولیه نحوه انتخاب زبان برنامهنویسی برای شروع کار، از این اضطراب بکاهیم!
سناریوی اول: شما در حال حاضر دارای یک مدیر ارشد فناوری یا یک مسئول فنی هستید. آنها معمولاً یک زبان برنامهنویسی در ذهن دارند (احتمالاً زبانی که در آن مهارت بیشتری دارند).
سناریوی دوم: یک شخص برای کارهای فنی ندارید یا به دنبال یک مدیر ارشد فناوری هستید. در حالت ایدهآل، شما باید زبانی را انتخاب کنید که نیازهای استارتاپ شما را برآورده کند، نه زبانی که مدیر فنی با آن احساس راحتی کند. بنابراین داشتن ایدهای دقیق در مورد اینکه کدام زبان برای شروع استارتاپ شما بهتر است قبل از استخدام مدیر فنی، ارزشمند خواهد بود.
در اینجا از ورود به جزئیات فنی اجتناب میکنیم، چون این وظیفه مدیر فنی (آینده) شما است، اما چهار نکته اصلی وجود دارد که باید هنگام شروع کار به آنها توجه کنید.
هر زمانی که یک گروه از توسعهدهندگان شروع به صحبت در رابطه با مزایای یک زبان بر زبان دیگر میکنند، یک بحث کوچک به راه میافتد. اما چرا بحث؟ زیرا توسعهدهندگان خود را با یک (یا چند) زبان میشناسند و آن را جزوی از خود میدانند.
انتخاب زبان برنامهنویسی یک تصمیم فنی ساده نیست، بلکه باید آن را تصمیمی در نظر بگیرید که بر فرهنگ شرکت و توانایی شما در استخدام تاثیر میگذارد.
به دنبال استخدام چه کسی هستید؟
به عنوان مثال، توسعهدهندگان با روحیه استارتاپی ممکن است به سمت زبانهای جدیدتر مانند Swift، Node.js و Elixir بروند. از طرفی دیگر توسعهدهندگانی که تجربه کار در شرکتها را دارند ممکن است به دنبال Java، C#، PHP یا .NET بروند که برخی آنها را سنتی میدانند.
البته که اینها کلیگویی است اما با این وجود، نکتهای است که باید بخاطر بسپارید.
شما در کجا کار میکنید؟
در گذشته، بسیار مهم بود که همه در دفتر کار باشند. اما اکنون این مسئله وجود ندارد، زیرا فریلنسرها در حال تبدیل به یک شغل پذیرفته شده و همواره در دسترس هستند. استخدام از راه دور به شما این فرصت را میدهد تا توسعهدهندگان را براساس تجربه آنها به زبان مورد نظر خود انتخاب کنید، نه توانایی آنها برای اینکه هر روز در دفتر کار شما باشند. به علاوه اینکه توسعهدهندگان از راهدور احتمالا باتجربهتر هستند، نظرسنجی StackOverflow در سال 2016 برای بیش از 50,000 توسعهدهنده نتیجه گرفت:
“توسعهدهندگان با +11 سال تجربه تقریبا دوبرابر بیشتر از توسعهدهندگانی با سابقه کمتر از 5 سال کار میکنند.”
اگر برای یافتن توسعهدهنده در سایتی جستجو میکنید، کمی بیشتر تحقیق کنید. در جلسات توسعهدهندگان شرکت کنید و گروههای برنامهنویسی آنلاین را رصد کنید تا اطمینان حاصل کنید که میتوانید یک شخص با استعداد را پیدا کنید.
همانند سیاستمداران در یک دوره چهار ساله، استارتاپها نیز باید روی نتایج کوتاه مدت تمرکز کنند و پایههای موفقیت بلند مدت را بسازند. بنابراین چگونه میتوان بین جدال فرضی سرعت و انعطافپذیری به هردوی آن رسید؟
از یک طرف، هدف یک MVP این است که محصول ساده را در اسرع وقت وارد بازار کرده و پس از هر چرخه بازخورد از مشتری، سریعا تکرار شود. بحثهای زیادی در مورد سرعت کدنویسی در زبانهای خاص وجود دارد، همانطور که در زیر نظر یکی از اعضای Stack Exchange به نام Djheru را میبینید:
“برخی از زبانها و فریمورکها برای توسعه سریع برنامهها و برخی دیگر برای پایداری بیشتر و معماریهای انعطافپذیرتر طراحی شدهاند. میخواهم بگویم که زبانها/فریمورکهایی مانند Ruby به همراه فریمورک Rails، Node.js به همراه فریمورک Express و PHP به همراه فریمورک Laravel برای توسعه سریع طراحی شدهاند و زبانها/فریمورکهایی مانند Java به همراه فریمورک Spring و C# به همراه فریمورک .NET بیشتر روی پایداری و انعطافپذیری تمرکز دارند.”
اما چیزی که مطئمنا وجود دارد، بدون توجه به زبانی که یک برنامهنویس کار میکند، توسعهدهندگان باتجربه سریعتر از توسعهدهندگان جوانتر کار خواهند کرد.
منطقی است که از ابتدای کار، پایههای موفقیت را ایجاد کنیم، اما با این وجود تمرکز خود را بر این بگذارید که مشتریان و سرمایهگذاران را با چرخه تکرارهای سریع راضی نگه دارید. ما به این فرآیند MVP انعطافپذیر میگوییم.
“تجربه من این را میگوید که استارتاپها بیشتر از ساختار پیچیده، به یک برنامه ساده و کامل علاقهمند هستند.”
کاربر Djheru, Stack Exchange
انتخاب بین سرعت و انعطافپذیری به اهداف کسبوکار شما برمیگردد.
آیا شما از طرف سرمایهگذاران تحت فشار نیستید؟
پس روی معماری انعطافپذیرتر تمرکز کنید و مسیر بزرگ خود را از ابتدا با قدرت شروع کنید.
آیا شما باید مدل کسبوکار خود را آزمایش کنید و یا با بروزرسانیهای سریع، سرمایهگذاران را راضی نگه دارید؟
پس سرعت ضروری است، حتی اگر باعث ایجاد موانعی در ساختار آینده برنامه شما باشد.
در این دوره، مخازن گستردهای از کدها به صورت آنلاین موجود است. منبعباز به معنای ساده و رایگان بودن آن برای همه است – معمولا از طریق پلتفرمی مانند Github میتوانید به آنها دسترسی پیدا کنید. این قطعه کدهای تست شده میتوانند روند توسعه شما را به طور قابل توجهی تسریع کند. اگرچه ممکن است نیاز باشد که از ابتدای کار یک فناوری خاصی ایجاد شود، اما اکثر استارتاپها میتوانند با استفاده از برخی کدهای منبعباز راهاندازی شوند. شما هرگز نمیدانید، اما ممکن است شخصی نیمی از مشکلات شما را حل کرده باشد!
طبق گزارش Github در سال 2016، زبانهای Javascript، Java و Python سه زبان محبوب منبعباز در میان 5.8 میلیون کاربر فعال بودهاند.
“زبان Javascript دارای یک جامعه بزرگ است و همواره در حال توسعه و گسترش است. تقریبا میتوانید فریمورکهای زیادی برای هر چیزی که میخواهید پیدا کنید. بیش از یک میلیون پکیج برای Node.js وجود دارد. Node.js یک فریمورک سمت سرور نوشته شده با زبان Javascript است که با سرعت بالایش شناخته شده است.”
این سخن یکی از کارمندان مایکروسافت به نام Shrey Desai است که گستردگی و قدرت کدهای منبعباز را نشان میدهد.
اگرچه این مورد نباید شرط اصلی انتخاب زبان برنامهنویسی شما باشد، اما بخاطر داشته باشید که کد منبعباز ممکن است به شما در گسترش و توسعه سریعتر استارتاپتان کمک کند.
آخرین نکته ولی با همان اهمیت، اختراع مجدد چرخ در واقع به شما یک مزیت رقابتی میدهد. فقط به این دلیل که حوزه استارتاپ شما معمولاً از زبان خاصی استفاده میکند، به این معنی نیست که مجبورید از آن استفاده کنید. با این حال، توجه داشته باشید که استفاده از زبانی که برای حوزه شما مرسوم است ممکن است مزایایی داشته باشد. (مثلا فریمورکهای پایدار و یا کدهای منبعباز فراوان). به احتمال زیاد عملکرد مورد نیازتان، شما را به چند زبان محدود خواهد کرد.
سوال اصلی دیگر: رقبای شما از چه زبانی استفاده میکنند؟
زبان انتخابی آنها ممکن است نکاتی را در مورد اینکه چه چیزی میتواند برای استارتاپ شما بهتر باشد، ارائه دهد، به خصوص اگر آنها یک استارتاپ باشند تا یک شرکت. آیا پلتفرم یا سرویسدهندهای وجود دارد که مجبور شوید با آنها کار کنید؟ پس حتما این مورد را هم در نظر بگیرید.
به طور کلی، امیدواریم مدیر فنی (آینده) شما تخصص زیادی داشته باشد، اما شما باید تصویر فنی کلی برای آینده استارتاپ خود داشته باشید و از انتخاب زبانی که صرفا چون برای مدیر فنی راحتتر است خودداری کنید.
امیدواریم با این نکات، در مذاکرات آینده خود در در رابطه با بحثهای فنی احساس راحتی بیشتری بکنید. به قول Kevin Dewalt، فقط یک چیز وجود دارد که شما باید در خاطر داشته باشید:
این توسعهدهندگان عالی هستند که محصولات عالی میسازند و نه زبانهای برنامهنویسی.