پادکست شماره ۸۴ رادیو بیدار
روشهای انتخاب تکنولوژی و زبانهای برنامهنویسی
Approaches to Choosing Technologies and Programming Languages
توسط سلمان تقیاکبری (https://www.linkedin.com/in/salmanta/)
مدیر فنی سابق سایت Ponisha
سلمان اکبری که حدود 17 ساله برنامه نویسی می کند
قبلا مدیر فنی سایت Ponisha بوده بعد آلمان رفته و از حدود سال 2020 ونکوور کاناداست
در این مدت tech leader ship و tech و تمام این 17 سال در زمینه backend کار کرده
در این پادکست درباره اهمیت انتخاب تکنولوژی و ابرازهای برنامهنویسی توضیح میدهد
فاکتور های انتخاب تکنولوژی:
Performance
Development Speed
Eco sysem and Library
Developer experience
Job Market
Scalability and Teamwork
Framework
Community welcomming
سلمان می گوید وقتی تکنولوژی جدید استفاده می کنید یک قمار میکنید ولی برای یادگیری تفریحی خوب است
گزیده دو دقیقهای از این اپیزود را میتوانید در شبکههای اجتماعی زیر بشنوید:
2024/09/10
T.me/BIDAR_ca
حدود 17 ساله برنامه نویسی می کنم
تا سال 2017 ایران بود
مدیر فنی سایت Ponisha بودم – هنوز هم سهامدار و عضو هیات مدیره هستم
بعد آلمان رفتم
معنی Scalability را فهمدیم
186 میلیون ویزیت داشتیم
بعد رفتم barrel
حدود 3 سال ونکوور هستم
tech leader ship بودم
ولی تمام این 17 سال در backend بودم
من قبل اش با ual basic شروع کردم asp , .net , python , node.js , golang
انتخاب تکنوبوژی اهمیت زیادی داشته
کدام تکنولوژی به جذاب بودن من کمک می کنه
کدومشون حال من رو خوب می کنه
در ده سال گذشته خیلی مهم بوده که تکنولوژی را انتخاب می کنم
همه سوال های منطقی به کنار – benchmark زبان های مختلف را مقایسه کردم برای انتخاب تکنولوژی
امروز که کاری را میخوام انجام بدم
اگر Developer هایی که از سطح Developer seniorld می شوند
بخش System design هست
اول اینکه requirement های زیادی را
اینکه امروز قراره چقدر کاربر داشته باشه
کدوم از این زبان ها من را نیروی کار بهتری می کنه در مارکت
——–
فاکتور های انتخاب تکنولوژی
یکی از مهمترین ها Performance هست
مثلا C , Golang را نمیشه مقایسه کرد با php , Python
در این حالت پرفورمانس مهم هست
ولی ندیدم شرکتی شکست بخوره که زبان پرفورمنسی
ولی شرکتی را دیدم که زبان یا تکنولوژی را انتخاب کردند که Product قبل از اینکه Product market fit آماده بشه
مثل Kubernetes
به شدت به تکنولوژی boaring علاقه مندم
اپلیکیشن هایی هست که backend
یک شرکتی را میشناسم که 8 سال هست که سرویس هوش مصنوعی را می فروشند ولی از هند افراد انسانی دارند کار می کنند به جای هوش مصنوعی
از دید شخصی با دید شرکتی متفاوت هست
——–
سرعت Development Speed
ابزاری که انتخاب می کنید و استفاده می کنید سرعت پیاده سازی چقدر هست
مثلا با php, python , node,js , ruby برای نیاز Prototyping خیلی عالی است خیلی بخشنده تر هستند و خیلی سخت نمی گیرند
———–
اکو سیستم و کتابخانه های موجود اون زبان
به طور مثال ruby on rail افراد جونیور خیلی کم هستند و سنیور ها بیشتر هستند
این python شده مهد ابزار های
اگر کد لایبراری را بر دارید و به chatGPT بدهید تبدیل می کنند
زبان به خودی خود چیز خاصی ندارند
————–
نکته Developer experience هست
من شخصا OOP را خیلی دوست دارم و اگر نتونم محصولم را محصولم را OOP تصور کنم دیوانه ام می کنه
——–
استخدام :
چقدر استخدام کردن درش راحته
زبان های برنامه نویسی payrang های مختلف خودشون را دارند
گران ترین زبان Golang و ارزان ترین PHP هست
intermediate Golang = Staff engineer PHP بود
اگر شرکتی بود که میتونه هزینه ای مراقب باشه
————
Scalibility و Team work
روی یک Code base کار کنند
کمک می کنه که تیم راحت تر کار کنند نسبت به Node.js
نتیجه ای که میشه گرفت node,js خیلی علاقه دارند که micro services
—-
راحع به Framework ها هم هست
از دید یک شخص هم اگر وقت دارم و تکنولوژی جدیدی را میخواهم یاد بگیرم
این بار مالی که به عنوان Engineer اصلا نمیرفتم php یاد بگیرم
قسمت سوم کامیونیتی هست
یکی میتونه بسیار welcomming باشه و یکی میتونه عقب بزنه و مسخره بکنه
مثلا یک لایبراری که بسیار کارآمد بود
رفتم تو Discord و Git hub
review , commit ها را می بینم
————-
تکنولوژی خشت خام آیا Engineering culture دارید یا نه
آیا از صفر قراره انجامش بدید یا نه
———
ترند ها:
خیلی خطرناکند
برنامه نویسی حرف زدن راجع به نادانسته هاست
مثلا یک پروژه را میگم 5 روز یا مثلا story point را نمیتونم دقیق تخمین بزنم
یک سری نادانسته هایی که اصلا نمیدونید
وقتی تکنولوژی جدید استفاده می کنید یک قمار می کنید
و این واسه یک بیزینس خطرناک ترین کار است
مثلا وقتی micro service مد شد من مخالف بودم و دلیل انتخاب نداشتم
و اگر یک تکنولوژی فقط براق بود و مشکلی را حل نمی کرد
خیلی برام مهم هست که مشتری را خوشحال بکند
یه جاهایی لازمه و دلیل و منطق داره
مثلا door dash میسازید در موقع ناهار و شام لود بالایی دارید serverless باید کار بکنید
خیلی آهسته به سمت تکنولوژی جدید پیش میرم
فکر می کنم یک تکنولوژی را مسلط باشید میتونید حرفه ای
———–
یکی از قدرت های یک زبانه
یکی سری افراد developrهای زبان های خاصی بودند
و فریم ورک ها را ساختند
Django , Flask turnado
PHP Laravel , symphony
الان python برای Data engineering استفاده میشه
اتفاقی که برای express.js افتاد
مثل nest.js , next.js و تعداد زیاد فریم ورک
———–
علی لواسانی:
ponisha – اتفاقی که برای پونیشا افتاده چی هست خیلی responsive نیست
سلمان:
نیما نور محمدی و من در پونیشا
از سال 2019 و 2020 حجم زیادی پول آمد توی کار و
توی خونه ای توی رشت و انزلی و لاهیجان
دفتر گرفتیم توی میر داماد
تیم عالی مهندسی استخدام کرد
از بهترین مهندسین استفاده کرد
اتفاقی که افتاد روی Digital ocean بود وAWS تحریم کرده بود droplet
elastic search کمی از اطلاعات دزدیده شد
زیر ساخت دگرگون شد
با سرمایه های زیر ساخت ایران ok هست
نمیصرفه که up
————-
استراتژی شما به عنوان team lead چیه
در آلمان یکی از بهترین CTO هایی بود که داشتم
من مهمترین کاری می کنم که کسانی را استخدام می کنند طرز فکرشون شکل خودم هست
مشتری براشون مهم هست – ارزش هاشون چی هست
موارد فنی را میشه یاد داد ولی اینکه چی به شما حال خوب میده از ارزش هاتون میاد
افراد مریض نیستند که Team lead را اذیت کنند
بدانند که اینکه شنیده بشوند مهم است
شما اکر زیبا ترین کد در یک repository داشته باشید که بیزینس خوابیده باشد
ولی اگر بیزینس پویا باشد
شادی های کاذب درست می کنیم مثلا در peper روی پروژه های جانبی کار می کردیم یک روزمون را hacheton داشتیم
اکثر مردم ماشین میخواهند بخرند ظاهر بیرونی را می بینند
ولی شما داخل ماشین را می بینید
——-
جوان ها دوست دارند زبان های جدید را یاد بگیرند
وقتی یک مدیر کاریزماتیک دارید نا خودآگاه یاد میگیرید
———
الان 8 ماه در این شرکت جدید هستم
==========
شروع داستان benchmark
پیاده سازی framework