بایگانی برچسب: s

چرا گولنگ زبان مناسب شما نیست؟

در دنیای امروز، یکی از بحث‌های مهم برای هر استارتاپ و سازمانی، اینه که چطور و با چه ابزاری، محصول خودشون رو بسازند. این موضوع می‌تونه از لحظه تصمیم‌گیری برای راه‌اندازی استارتاپ در ذهن بنیان‌گذاران باشه، حین پیاده‌سازی محصول کمینه ارزشمند (MVP) ذهنشون رو بیشتر درگیر کنه و حتی پس از ارائه محصول نهایی هم همیشه فکر بازسازی و بازنویسی محصول یکی از مشغله‌های ذهنیشون باقی بمونه. چند وقت اخیر، یکی از فازهایی که میان خیلی از برنامه‌نویسان – بخصوص نسل جدید و تازه‌نفس برنامه‌نویس – رایج شده، استفاده از گولنگ در ساخت MVP و … است.

در این پست، قصد من اینه که توضیح بدم چرا گولنگ انتخاب مناسبی نیست و چرا بهتره که در یک سازمان کوچک، سمتش نریم و از ابزارهای دم‌دستی‌تری مثل پایتون یا PHP استفاده کنیم. ضمنا اینجا یک سلب ادعا بکنم که «دم‌ستی» به معنای «بد» بودن اون ابزار نیست و اتفاقا در این متن بخصوص، یک مزیت برای اون ابزار ایجاد کرده.

چطور برای پروژه خود یک زبان یا فرمورک مناسب انتخاب کنیم؟

مطلب اصلی، در واقع اینجا شروع میشه. در این قسمت یک سری ویژگی رو کنار هم می‌چینیم و گولنگ رو در کنار ابزارهای قدیمی‌تر مثل PHP یا پایتون قرار می‌دیم که ببینیم کدوم یکی برنده از میدان بیرون میاد و اگر قراره که یک استارتاپ راه بندازیم، محصولمون رو با کدوم یکی از این ابزارها بنویسیم. توجه هم داشته باشید که این بخش متاثر از نظرات شخصی من هم هست و طبیعتا ازتون میخوام که در نقدهایی که به این مطلب وارد می‌کنید، این مورد هم در نظر بگیرید.

جمعیت توسعه‌دهندگان

مهم‌ترین فاکتور در انتخاب زبان و فرمورک برنامه‌نویسی، دقیقا جمعیت توسعه‌دهندگان اونه. می‌پرسید چرا؟ چون اگر امروز خودتون کد رو بزنید، طبیعتا وقتی بیشتر با جنبه بیزنسی کارتون مواجه شید، وقت کمتری برای کد زدن خواهید داشت و نیازمند بزرگ‌تر کردن تیم توسعه استارتاپتون هستید. پس از این جهت نیاز دارید که این مورد رو حتما در نظر بگیرید. دقت کنید که Go از سال ۲۰۰۹ عرضه عمومی شده و چندین ساله که داره بعنوان یک ابزار توسعه وب دیده میشه (که تعداد این سال‌ها به انگشتای دست هم نمی‌رسه).

حالا از طرف دیگر، شما نگاه کنید که چقدر می‌تونید لاراول‌کار پیدا کنید؟ افرادی که لاراول یا جنگو (یا حتی روبی آن ریلز!!!) کار می‌کنند تعدادشون به شدت بیشتر از کسانیه که با Go کار می‌کنند. نتیجه منطقی اینه که سمت ابزاری برید که بزرگ کردن تیم توسعه‌ش براتون کم‌هزینه باشه.

تعداد کتابخانه‌ها و ابزارهای توسعه

مورد مهمی که باید بهش توجه کنید، اینه که زبان مورد استفاده‌تون چقدر ابزار داره؟ چندتا ORM استخوان‌دار داره؟ چقدر طول می‌کشه تا ایده اولیتون رو صرفا با «به هم چسبوندن ابزارهای موجود» بسازید؟ متاسفانه در این مورد هم باید بگم که Go بازندست. البته این رو هم باید در نظر داشت که Go زیادی جوانه و خب طبیعتا از بین این همه شرکت بزرگی که برای توسعه به سمتش رفتند، بالاخره از این جهت هم به بلوغ کافی می‌رسه. اما بحث ما، بحث حال حاضره. در حال حاضر، پایتون از این جهت – به نظر من – بهترین گزینه می‌تونه باشه. می‌دونید چرا؟ چون برای هر چیزی که فکرش رو بکنید یک کتابخونه ارائه کرده و واقعا شما نیاز به پیاده سازی منطقی جز منطق خالص کسب و کار خودتون ندارید.

مقیاس‌پذیری

خب، جایی که Go واقعا حرفی برای گفتن داره و برنده‌ست، در مقیاس‌پذیریه. سرعت بالای Go باعث میشه با حداقل سخت‌افزار روی مقدار زیادی درخواست و کاربر همزمان پاسخ خوبی بده. در صورتی که مقیاس کردن پایتون یا PHP انقدر راحت نیست. اگر مقیاس‌پذیری براتون امری به شدت حیاتیه و حس می‌کنید که می‌تونید تو مدت زمان کوتاهی ممکنه نیاز به مقیاس بالایی داشته باشید، سمت Go برید.

سهولت استقرار

قبل‌تر در همین وبلاگ در مورد مهندسین DevOps توضیح داده بودم (لینک) و خب یه حقیقت تلخ در مورد این عزیزان اینه که نیروهای گرانقیمتی هستند. وقتی شما از ابزاری مثل Go یا حتی پایتون برای توسعه محصولتون استفاده کنید، احتمالا بعد مدتی نیاز دارید که برای استقرار و … محصول، از یک مهندس DevOps کمک بگیرید. این نیاز ممکنه از لحظه استقرار MVP با شما باشه تا وقتی که محصولتون رو بازسازی و ری‌فکتور می‌کنید. در صورتی که برای مثال یک پروژه Laravel ای رو می‌تونید به سادگی روی یک هاست سی‌پنل، میزبانی کنید.

و تیر آخر: زمان توسعه محصول!

در قسمت اول به این موضوع اشاره کردم ولی لازمه که دوباره هم اشاره بشه. چرا که این بخش به بخش کدنویسی و تست (و کلا کارهای برنامه‌نویسانه) محدود نیست و لازمه که موارد دیگر مثل استراتژی ورود به بازار، ارائه بتاهای عمومی و … هم در نظر بگیرید. متاسفانه Go در این مورد بازندست چرا که ابزارهایی به کاملی و خوبی جنگو، ریلز یا لاراول نداره. تنها راه‌حلی که بتونید با Go با سرعت زیادی به این مرحله برسید؛ اینه که چند توسعه‌دهنده حرفه‌ای استخدام کنید که خب هزینه‌هاتون رو شدیدا افزایش می‌ده.

جمع‌بندی

حالا که این همه مثنوی هفتاد من سرودم، جای داره که یک جمع‌بندی کلی ارائه بدم از مباحث بالا. اگر موارد بالا رو در نظر گرفتید و دیدید که زبانی مثل Go یا Rust در فاکتورهای بالا برای شما کارآمد و مناسب هستند و انتخاب شخصیتونن و در عین حال، منابع کافی هم براشون دارید؛ خب دیگه پرسش نداره و بهتره هرچه سریع‌تر کارتون رو شروع کنید. در غیر این صورت، اگر از سر جوزدگی قراره از این ابزارها استفاده کنید، چند بار با خودتون مرور کنید که کدوم یکی از این‌ها، نیازهای شما رو مرتفع می‌کنند.

در پایان جا داره بگم که زبان برنامه‌نویسی صرفا ابزاریه که ما بتونیم باهاش برنامه بسازیم و برنامه‌های کامپیوتری، پاسخ‌هایی هستند به نیازهای ما. انتخاب ابزار مناسب، امکان‌سنجی خودش رو نیاز داره و امیدوارم که در این پست؛ تونسته باشم به شما کمی در این امکان‌سنجی، کمک کرده باشم.

با تشکر از وقتی که گذاشتید و این مطلب رو خوندید. امیدوارم این مطلب براتون مفید واقع شده باشه.

Share

رضایت و نارضایتی، از دربستی های موبایلی

uber-login-signup

چند وقتی هست که خیلی از اهالی تکنولوژی، یا کسایی که دنبال آلترناتیوی برای زندگی بهتر و دیجیتالی تر هستند، باب شده که از ابزارهایی مثل اسنپ و تپ سی، استفاده کنند. حالا، بیاید چند تا توییت، با هشتگ اسنپ رو از توییتر بخونیم و ببینیم که چند نفر راضی و چند نفر از وضعیت ناراضی هستند :

 

 

 

توییت اول، پیگیری پشتیبانی اسنپ (که خودم چندین بار باهاش مواجه شدم) رو نشون میده. از این بابت کارشون قابل تقدیر و تشکره که حتی شده به ظاهر هم دنبال رفع نارضایتی هستند. اما توییت دوم، داره یک نارضایتی کلی رو بیان میکنه، آیا همه اسنپ های خالی رو نشون میده؟! یا هر اسنپی که دور و برمونه؟ حالا این مقوله، کاملا بر میگرده به این که کد چطور نوشته شده. اما دلیل اصلی نارضایتی اینه که چرا توی روز بارونی (یا شرایط مشابهی که باعث میشه راننده های «مستقل» گرون تر بگیرن) راننده ای اکسپت نمی کنه! که این به نظرم توجیه و آموزش راننده رو نیاز داره. و اما توییت سوم … کمی بی ادبانه و با لحن تند بیان شده. به نظر من لحن قشنگی نیست، اما صراحتی که در بیانش داشته واقعا جالبه. چیزی که خودم هم بهش رسیدم. راننده ای که همه جوره بهش فهموندم دوست ندارم زیاد حرف بزنه (حتی با گذاشتن هدفون و بلند کردن صدا تا حدی که بفهمه دارم آهنگ گوش میدم) ، گرفته تا راننده ای که حاضر نبود از نقشه استفاده کنه!

بیایید توییت های بیشتری رو بررسی کنیم و ببینیم که مردم دیگه از چه چیزی توی این سرویس ناراضی هستند :

خب، این توییت نارضایتی از قیمته. شاید الگوریتم قیمت گذاری تغییر کرده که بازی رو برد-برد کنه. مثلا شده که مسیری رو با ۱۴ هزار تومن رفتم، و موقع برگشت (که ساعت ترافیک دار بوده) هزینه رفته روی ۱۵ یا ۱۶ هزار تومن. البته هنوز مطمئن نیستم که این بخاطر موقعیت من در مبدا برگشت بوده، یا بخاطر ترافیک زیاد.  

در این توییت هم شاهد نارضایتی از ماشین نداشتن، و غیرقابل اعتماد بودن هستیم. در واقع ایشون بیان کردن (برداشت من البته!) که در ساعتی که ایشون نیاز مبرم به ماشین داشته، احتمالا اسنپ ماشین نداشته. شاید آژانسی که معمولا ازش ماشین میگیره، ماشین نداشته و نزدیک ترین شریان اصلی و ایستگاه تاکسی برای دربست گرفتن هم ازش خیلی دور بوده. خب این مشکل رو به همین راحتیا نمیشه حل کرد و باید زیرساختی تر حل بشه. نه تنها آموزش درست و با کیفیت میخواد، بلکه نیروی کار سازمان یافته بیشتری هم نیاز داره.

 

خب اینجا به همون مشکل الگوریتم قیمت دهی اشاره شده باز. به نظرم بهتر بود در آپدیتی که این رویه در پیش گرفته شده بود، اطلاعی به کاربران داده میشد.

و اما … در کل، میزان رضایت بیشتره یا نارضایتی؟

به عنوان یک کاربر سرویس، شخصا بیشتر ناراضیم تا راضی. چرا که :

  1. در ساعتای شلوغ و پرترافیک، کم پیش میاد که با همون بار اول درخواست اسنپ دادن، ماشینی پیدا شه که اکسپت کنه.
  2. راننده های نزدیک، زودتر پیام رو دریافت نمیکنن، و نتیجه میشه این که راننده ای که در میدان نور (تقاطع کاشانی – ستاری) حضور داره، مسافری رو از شهر زیبا (منتهی علیه غربی کاشانی 😐 ) رو اکسپت کنه و این خودش معطلی برای مسافر هست
  3. خیلی از مشکلات کلاسیک مردم با راننده ها حل نشده. یک نمونش راه بلد بودن هست، نمونه دیگرش پرچونگی و پرحرفی راننده ها، که اگر هشتگی مثل «راننده»، «مسافر کش» یا «راننده تاکسی» رو در توییتر سرچ کنید، میرسید به این مشکلات.

و با گشت و گذار در توییتر هم بیشتر به ناراضی ها میرسیم. میشه گفت که مردم وقتی راضی باشن فیدبک نمیدن یا خیلی کم پیش میاد که فیدبک بدن. اما مردمی که ناراضی هستند معمولا خیلی سریع عدم رضایت خودشون رو جایی که میدونن پشتیبانی اون سرویس فعال هست، منتشر میکنن تا فیدبک بگیرن (مثل اولین توییتی که بررسی کردیم). حالا مهم نیست که کدوم بیشتره، مهم اینه که چرا انقدر ناراضی داره این سرویس؟! چرا با سرچ هشتگ، بیش از این که به معرفی و … برسیم، به نارضایتی رسیدیم؟! این ها سوالاتی هست که باهاش مواجه هستیم. سوالاتی که برای یک بیزنس میتونن بسیار بسیار مهم باشن.

ریشه مشکل کجاست؟ چاره چیه؟!

خب، ریشه مشکل میتونه احتمالا عدم وجود زیرساخت، و نداشتن دانش مدیریتی و تجاری کافی باشه. با حالت مافیایی ای که بازار به خودش گرفته، عده ای خاص (که عموما سواد درست و حسابی هم ندارند) میشن CTO و مدیر روابط عمومی و مدیر داخلی و این عناوین خوشگل رو میگیرن. حالا مهم نیست که این اتفاق افتاده، بریم سراغ زیرساخت. ما میدونیم که عموم افرادی که توی کشورمون اسمارتفون های گرون گرون میخرن، یک دلیل بیشتر نداره، اونم اینه :

یعنی مردم برای پز دادن و پولدار تر به نظر رسیدن، حاضرن گوشی هوشمند بخرن ولی از امکاناتش استفاده ای نبرن و این خودش یعنی یک زیرساخت شدیدا خراب! اگرچه، با داشتن مدیران خوب و باسواد در بیزنس ها، میشه زیرساخت رو هم درست کرد. مثلا خیلی ها هستن که همین اسنپ رو به هم معرفی میکنن و تازه یک کاربردی برای اون محصولی که پول کمی هم براش ندادن، پیدا کردن. بخش دیگر این زیرساخت، اینترنت هست. مثلا دم در خونه ما درست آنتن نمیده و من همیشه مجبورم که به راننده اسنپ (یا تپسی) آدرس رو تلفنی یا از طریق پیام کوتاه منتقل کنم. و برام عذابه که وقتی یه پین روی نقشه انداختم، چرا باید دوباره بگم؟؟؟؟ و این زیرساخت چیزی فراتر از کابر و بیزنسه.

با اصلاح مواردی که در این متن گفته شد، میشه تا حد زیادی به مشکلات رسیدگی کرد. آموزش درست راننده و مسافر، داشتن یک نرم افزار User-friendly تر و با UX بهتر و … همش میتونه به بهتر شدن و افزایش میزان رضایت مشتری، کمک کنه!

در آخر هم ممنونم که این پست بلند و بالای من رو خوندید! در مورد Uber هم در تصویر اول متن بگم که همینطوری خواستم بذارم، چون مشابهش رو برای اسنپ پیدا نکردم 😀 

موفق باشید 🙂

Share