تکنولوژیها فرار نمیکنند! یکم آرومتر دوست برنامهنویسم...
من قبلا در اینکه چرا به Golang علاقمندم و چرا زبانی هست که برای آینده بیشتر ازش استفاده خواهم کردنوشتم. هنوز هم به اون نوشته معتقدم و مهمتر از اون Golang رو مسیر آیندهی زبانهای برنامهنویسی میدونم به همون دلایلی که توضیح دادم در اون پست.
دوستان برنامه نویس و توسعه دهنده، معماری نرم افزار و زبان های برنامه نویسی برای ما توسعه دهنده ها مقوله جالبی هستن که میتونیم میلیون ها سال در موردشون صحبت کنیم و خسته نشیم تا وقتی که تمام استخونای آخرین بازماندگان انسانها پوسیده شده اما بازار به این چیزا اهمیت نمیده.
برای استارتاپها سرعت لانچ و پیوت (Pivot) خیلی مهمتر از تکنولوژی و معماری نرم افزار هست خصوصا در ابتدای کار که همه چیز نامشخص و مبهم هست. (به تعریف استارتاپ رجوع کنید)
A startup is a human institution designed to deliver a new product or service under conditions of extreme uncertainty.
بعد خرابکاریها و شکستها و تجربههای متعدد الان معمولا پیشنهاد میدم محصول یا خدمات را با هرچیزی که دم دست هست و تسلط دارن پیاده کنن و خیلی مواقع به سادگی میشه تا حد مناسبی حتی بدون هزینه بالا برای سخت افزار اپ رو Scale کرد. این ایدئولوژی رو به شکل زیر بهش نگاه کنید.
- پروژه طی ۱ یا ۲ ماه لانچ بشه با مثلا لاراول و PHP و MySQL و ظرف دو ماه شکست بخوره یا موفق بشه و در همون حین توسعه دهنده ها شروع کنن به Scale و در زمان مناسب و در صورت لزوم بازنویسی با معماری و زبانی متفاوت.
- یا چندین ماه توسعه با در نظر گرفتن پارامترهای متعدد و استفاده از معماریهای پیچیده و بعد ظرف دو ماه شکست بخوره.
دوستان توسعه دهندهی عزیز من نمیگم بد و کثیف کد بزنید تاکیدم اینه به بازار هم اهمیت بدید و سرعت لانچ پروژه رو فدای اینکه ممکنه سرویس ترافیک بالایی داشته باشه یا اگر از فلان تکنولوژی استفاده کنیم کار خفنتر میشه و میشه با اینا کلاس گذاشت نکنید. برای این مسائل همون زمان وقت بذارید و در ابتدای کار روی دلیور پروژه در سریعترین زمان برنامهریزی کنید و این اصلا به معنای بد و نامرتب کدزدن نیست.
تو استارتاپ ها ما نرخ شکستمون خیلی بالاست و میشه روی این چیزا ریسک نکرد و بازار به مراتب اهمیت بیشتری داره در شروع کار. این خط آخر رو لطفا در حین طراحی معماری نرمافزار و انتخاب زبان و بانک اطلاعاتی و مواردی که در روند زمانی اجرای پروژه میتونه در نظر بگیرید و حساسیت زیادی به خرج ندید در ابتدای کار.
موردی مهمی که میلاد ریحانی بعد خوندن این مقاله به من یادآوری کرد این بود که در خیلی مواقع حین انتخاب زبان برنامهنویسی و تکنولوژی، توسعهدهندهها و جامعه کاربری برای اون تکنولوژی را هم لازمه لحاظ کنید. اگر پروژه نیاز به توسعه سریع پیدا کنه در آینده، شما خیلی مواقع فرصت آموزش نیروی جدید ممکنه نداشته باشید خصوصا در استارتاپها عموما چنین فضایی فراهم نیست. بنابراین لازمه روی تکنولوژیهای لبه حرکت نکنید و به خودتون این امکان را بدید که دستتون باز باشه. فاجعهبار تر از نداشتن بازار که عامل شکست یه استارتاپ میتونه باشه اینه که شما به خاطر نبود نیروی متخصص و ناتوانی در تربیت نیروی فنی شکست بخورید.
یکی از دوستان داخل گروه Golang این مقاله رو معرفی کرد که پیشنهاد میکنم بخونید.