fa
Feedback
Python Hints

Python Hints

رفتن به کانال در Telegram

Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار) Admin: @Abbasi_ai

نمایش بیشتر
9 607
مشترکین
+1224 ساعت
+707 روز
+21530 روز
آرشیو پست ها
#Quick اگر توی LinkedIn وضعیت خودتون رو به #OpenToWork تغییر می‌دید حتماً قبلش پروفایل و اطلاعات اصلی خودتون رو تکمیل کنید. مهمترین موارد : ۱- لوکیشن (محل سکونت٫اقامت) ۲- توضیح مختصر در مورد خودتون، تجربیاتی که دارید ۳- اطلاعات سابقه کاری ۴- وضعیت تحصیل (دانشجو هستید یا خیر) ۵- مدارک و .... توی این هفته، کلی پروفایل LinkedIn رو که Open2Work بودند بررسی کردم شاید بتونم بگم فقط ۳۰٪ بطور کامل تمام اطلاعات مهم رو درست و دقیق داشتند. یادتون باشه اگر توی LinkedIn جویای کار هستید، اولین برخورد و آشنایی قبل از همکاری کارفرما٫مدیر٫نیروی منابع انسانی و ... با صفحه شخصی شما در LinkedIn خواهد بود. باقی مواردی که مهم نیست ولی بودنش قطعا کمک می‌کنی : ۱- تصویر پروفایل ۲- تصویر بنر ۳- پست‌هایی که پین کردید ۴- پست‌هایی که لایک٫کامنت می‌کنید بازم همون قانونی که توی رزومه نویسی گفتم، نه خیلی رنگی و ... که انگار برای موقعیت شغلی دلقک شرکت کردید (عاشق دلقک هستم) و نه خیلی مشکی و بدون چیزی که حوصله سر بر باشه مثل یک ui/ux کار ببینید. باید جوری باشه که طرف حداقل ۱۰ دقیقه وقت بذاره (ولی توی ۲ دقیقه اطلاعات مهم روزمه شمارو بخونه، شما تو چشمش فرو کنید.) پروفایل من رو مرجع نکنید، من توی لینکدین دنبال کار نمی‌گردم، برای همین اصلا آپدیت نشده.

#Quick هارد‌هاتون رو تمیز کنید 1.6 TB فضای خالی بدست اومد. کاری که من کردم : ۱- کل فایل‌های روی ۳ تا هارد اصلیم رو بدست آوردم و توی یک csv شامل این ستون‌ها ریختم؛ اسم فایل، پسوند، مسیر، حجم فایل، تاریخ ایجاد بعد اول بر اساس اسم و بعد از اون بر اساس تاریخ مرتب کردم حدود ۸۰۰ گیگ با همین وضعیت پاک شد. دیتاهای duplicate نبودند ولی مثلاً بکاپ فایل‌ها بودند که خب با وجود اینکه توی تاریخ‌های بعدی نسخه آپدیتش رو گرفته بودم فراموش کرده بودم نسخه قبلی رو حذف کنم. کد قبلی رو با multi-threading, ThreadPool زدم و کمتر از ۱ ثانیه اجرا شد. ۲- بعد از اون یک سری فایل‌ها بودند که مشکوک بودم duplicate باشند؛ پس با md5 شروع کردم hash کردن، از multi-process استفاده کردم، و اینجا هم حدود ۱۰۰ گیگ duplicate پیدا شد که بعد بررسی دیدم دقیقاً یکسان هستند و پاک شد. ۳- من همیشه توی کدهام، اسم virtualenv هارو .venv میذارم پس دنبال این‌ها هم گشتم + مدل‌های هوش مصنوعی با پسوندهای مختلف باقی موارد هم همگی برای این‌ها بود دقیق بررسی نکردم ولی فکر کنم ۲۰۰ گیگ .venv داشتم (عادت دارم کل پوشه پروژه رو میفرستم روی هارد بکاپ) خلاصه که کار خوبیه و تکنیک‌هایی هم که گفتم برای من خیلی جواب بود، شما هم دوست داشتید استفاده کنید. ۹۰٪ کدهاشم دادم codestral برام نوشت و فقط مطمئن شدم پیاده‌سازی درست هست و اجرا کردم، اما دسترسی دیلیت بهش ندادم. همرو دستی دیلیت کردم که این بخش یک مقدار زمانبر شد.

#Quick #موقت هارد‌هاتون رو تمیز کنید 1.6 TB فضای خالی بدست اومد.

لطفاً اگر کسی ویدیو جلسه قبلی (فصل ۵ رو داره که صدای خوبی داشته باشه) ممنون میشم باهامون به اشتراک بذاره ویدیو‌های ما مشکل صدا داره متأسفانه.

3min

لطفا قبل از ورود میکروفون و دوربین رو خاموش کنید : https://meet.google.com/jjv-urqo-ztp

Teddy Swims - Lose Control.mp38.11 MB

https://youtu.be/UUQ5V79w0GA ویدئو فصل چهارم هم بالاخره قرار گرفت.

بیش از ۵۰ ساعت بیداری و گذراندن جلسات روزانه به زور قهوه حالا که باید خواب ندارم (زور کل‌ قهوه‌های صبح تا عصر هست) پس تفاوت b
بیش از ۵۰ ساعت بیداری و گذراندن جلسات روزانه به زور قهوه حالا که باید خواب ندارم (زور کل‌ قهوه‌های صبح تا عصر هست) پس تفاوت byte, unicode رو ببینم. توی این مثال تمام دیتاهای داخل فایلی که من برای تست استفاده کردم (دیتای شرکت هست برای کاربرها و نمی‌تونم به اشتراک بذارم) داخل محدوده کاراکترهای ASCII هست همین باعث میشه که utf-8 برای من اهمیتی نداشته باشه. بعلاوه من فقط یک سری regex و آنالیز کلی روی این دیتا نیاز دارم (مثلا شمارش میانگین استفاده کاربرها از سرویس A و ...) که این موارد هم نیازی به utf-8 نداره و میشه دیکشنری با کلید byte هم داشت و ... من اینجا مثال رو ساده نگه داشتم طبعا هرچی پردازش بیشتر این اختلاف بیشتر به چشم خواهد اومد. اما یک اشتباه رایج رو هم بگم که پرفورمنس شما رو به راحتی خراب می‌کنه : موقع استفاده از regex دقیقا ماژول regex رو منظورم هست و نه re ؛ باید حواستون باشه که پترنی که سرچ می‌کنید برای دیتای byte هست (نکاتی که توی لایو توضیح دادم) و البته مهمتر از هرچیزی اگر مثل من حجم فایل شما هم به بیش از چند گیگ میرسه؛ حتما حتما اون regex pattern رو کامپایل کنید. اضافه کنم: توی زمان جوونی‌های ما؛ پایتون 2 رو اگر یادتون باشه ممکنه خیلی سورس کد بصورت rb برای دیتای txt دیده باشید (توی پایتون ۳ خیلی خیلی کمتر امکانش هست ببینید.) مخصوصا اینکه زمان ظهور بیگ دیتا بود. دلیلش هم اینه که توی پایتون ۳ فرق بین r, rb معمولا بین ۱.۵ تا ۳ برابر هست از نظر زمانی (توی ورژن‌های ۳.۱۰ به بعد نهایتا تو بدترین حالت ۲ برابر سریعتر هست) اما توی پایتون 2 این تفاوت سرعت بسیار بسیار بیشتر بود بطوری که حتی توی فایل‌های متنی چندصد مگابایتی هم این تفاوت کاملا مشهود بود و نیازی به timeit نبود. در حال حاضر ما این تکنیک‌ها رو روی پردازش داده‌های هوش مصنوعی استفاده می‌کنید بخصوص وقتی حجم داده‌ها بیش از چند صد گیگابایت هست. بازم تاکید می‌کنم regex هاتون رو همیشه کامپایل کنید.

۴ دقیقه تا شروع جلسه

لطفا قبل از ورود میکروفون و ویدئو رو خاموش کنید https://meet.google.com/sow-qhws-xxm

#یادآوری توی این هفته از byte, unicode صحبت کردیم مشکل اینه وقتی خودم ارائه میدم، چون فکرم درگیر هست. خیلی از مثال‌های دنیای واقعی یادم میره حتماً یادم باشه اینجا یک توضیح راجب تجربه optimization و استفاده از byte بجای unicode بدم.

#خارج_از_بحث از اونجایی که هر بار به مشکلات پرداختم به لطف شما عزیزان سریعا به گوش تیم پشت قضیه رسیده (خیلی‌ها پیام دادند) اینبار هم می‌خوام همینکار رو بکنم+ پیشنهاد هم دارم. توضیح مشکل : نمی‌دونم چرا هر شرکتی که وارد میشی فقط و فقط با یک بانک کار می‌کنه. برای من که موقت با شرکت‌های ایرانی هم کار می‌کنم این موضوع خیلی بد شده تا جایی که توی قراردادهای جدید اگر گفته بشه حساب فلان بانک باید باشه قرارداد نمی‌بندم دیگه. اما مشکلات : از بانک سینا شروع کنم که مزخرف‌ ترین سرویس احراز هویت آنلاین و افتتاح حساب رو داره : ۱- بصورت غیر مجاز و غیر قانونی و البته بدون هیچ اطلاع یا اخطاری روی بعضی گزینه‌ها که کلیک می‌کنید از دوربین جلو عکس می‌گیره، دوربین گوشی من کشویی هست و کاملاً مشخص میشه اینکار. ۲- احراز هویت چهره‌اش، اگر تصویر کارت ملی بدون ریش و کچل باشید (اگر عکس پروفایل من رو ببینید من ۷-۸ سال موهام رو میزدم) نمی‌تونه شمارو تأیید کنه و تیم هوش مصنوعی انقدر ناشی و نابلد بوده که گزینه‌ای برای درخواست تأیید هویت انسانی نداره چیزی که بدون شک باید وجود داشته باشه پیشنهاد : این همه اپلیکیشن و شعبه بانک و ... چرا یکی از این‌ها نمیاد تبدیل به هاب بشه ؟ بگه همه شرکت‌ها بیاید با من قرارداد ببندید، مهم نیست حساب نیروی کار شما کجا باشه یا ... من می‌تونم لیستی که دریافت می‌کنم رو بهش پرداختی انجام بدم. حالا شما بیا هی رنگ کارت رو عوض کن، بانک‌های عزیز، تیم محصول و .... لطفاً دست از دلقک بازی بردارید، خدماتی ارائه بدید که واقعاً بدرد بخوره و مشکل حل کنه. شما همچین سرویسی رو ارائه بدید من قول میدم با شرکتی که با شما قرارداد نداره کار نکنم. اضافه کنم : پیگیری کردم این مشکل رو همه دارند.

#موقت وضعیت اینترنت اینطوری شده که، بدون vpn که وارد میشم no internet access دارم بطور کامل، حتی سایت‌های داخلی vpn رو که وصل
+1
#موقت وضعیت اینترنت اینطوری شده که، بدون vpn که وارد میشم no internet access دارم بطور کامل، حتی سایت‌های داخلی vpn رو که وصل می‌کنم (لیست سرور کش شده) دسترسی به همه جا باز میشه غیر از سایتهای داخلی 😂🤣😂🤣

یک نگاهی به کانال @pytens بندازید (چون جو هوش مصنوعی داغ هست) توی چندین سال اخیر من مشاور خیلی پروژه‌های داخلی و خارجی بودم توی مواردی که بیزینس یا همکاری با تیم‌های تحقیقاتی بهم یاد داده فهمیدم که تمرکز کسی که میخواد واقعا توی این زمینه کار خوب انجام بده و بدون دردسر مصاحبه‌های شغلی رو پاس کنه باید روی چه مباحثی باشه. کم نبودند تعداد آدمایی که شخصا و مستقیم بهشون کمک کردم تا برای مصاحبه کاری در زمینه هوش مصنوعی آماده بشوند؛ از تیم‌های استارتاپی و داخلی گرفته تا شرکت‌های بزرگ مثل آمازون؛ نتفلیکس؛ گوگل و متا. توی دنیای پایتون هم اوضاع همین هست. حالا چرا اینارو میگم؛ چون خیلی از بچه‌های تازه‌کار و حتی افراد باسابقه کار پیدا کردن و یا حرفه‌ای شدن توی یک زمینه کاری رو مدیون دیدن دوره آموزشی پولی یا شرکت توی همچین دوره‌ای میدونند. توی همون کانال که بالاتر صحبت کردم؛ من بهترین دوره‌های ویدئویی رو برای Vision, NLP, Transformers معرفی کردم که به جرات میگم هیچ دوره‌ای (دقت کنید) هیچ دوره‌ای بهتر از این ۳ مورد برای Deep learning در این زمینه‌ها پیدا نخواهید کرد. اما همچنان افرادی هستند که فکر می‌کنند دوره پولی اون یارو هندیه که توش با یک ابزار تعداد گوسفندای توی تصویر رو میشماره بهتر از دوره Yann Lecun خالق و باعث این مباحث هست. که خب بحثی نیست. نکته دوم و چیزی که در ادامه بحث اول باید بگم؛ تعداد به اشتراک گذاری و ذخیره پست‌هاست. همه‌ شما یک کانال برای منابع مهم دارید؛ نه saved message تلگرام بلکه یک کانال خصوصی/عمومی برای فروارد کردن مطالب مهم. من بهش میگم کانال بدبختی؛ من خودم هم ازین کانال‌ها دارم ولی وقتی به کانال من میرسید اسمش کانال رفرنس میشه نه بدبختی.
تفاوت ذخیره کردن من و شما اینه که؛ من هیچ وقت یک ویدئو و مطلب رو به اون کانال نمیفرستم مگر اینکه اون ویدئو رو دیده باشم و بنظرم واقعا خوب باشه و بخوام یک رفرنس ازش نگه دارم و بلاگ پست یا مطالب رو هم همینطور.
بر خلاف شما؛ طبق آمار کانال و تصویر پست بالا؛ می‌دونم خیلی از دوستان همه چیز رو فروارد می‌کنند توی اون کانال خصوصی برای خودشون تا سرفرصت ببینند ولی این فرصت هیچوقت پیش نمیاد و بدون تعارف شما هیچوقت پیشرفت خوبی نخواهید داشت اگر جزو این آدم‌ها هستید. شاید بگید خب ممکنه توی مسیر باشم و فلان کانال یک پست خوب گذاشته باشه؛ حق میدم برای من همون لحظه گوشی رو توی همون وضعیت قفل می‌کنم و میذارم جیبم و از گوشی استفاده نمی‌کنم تا توی اولین فرصت اون مطلب رو بخونم یا ویدئو رو ببینم. کسی که نمی‌دونه خودتون یک بررسی بکنید و ببینید چقدر از پست‌هایی که برای خودتون فروارد کردید تا درآینده بخونید رو واقعا خوندید ؟ آمار viewهای یوتیوب و تعداد shareهای کمتر از ۱۰ دقیقه منابع یا پست‌های طولانی کانال های من نشون میده خیلی‌ها درگیر این موضوع هستید که خودتون رو با منابعی که هیچوقت نمی‌خونید دارید بمباران می‌کنیم و همین یعنی به عقب رفتن (به معنای واقعی کلمه این موضوع نه تنها کمکی به پیشرفت شما نمی‌کنه بلکه باعث پسرفت هم میشه) چون مغزتون رو راحت می‌کنید ازون موضوع و دیگه درگیر اون موضوع نیست که اگر بود شمارو مجبور میکرد اون مبحث رو یادبگیرید. اگر واقعا می‌خواهید پیشرفت کنید؛ خواهش می‌کنم به این دو موردی که گفتم توجه کنید : ۱- پولی بودن یک دوره دلیل بر خوب بودن یا تضمین سرکار رفتن شما نیست. ۲- اگر عادت کردید پست‌ها؛ دوره‌ها؛ لینک ویدئو؛ کتاب و ... رو سریع توی یک کانال خصوصی فروارد کنید (کانال بدبخت کردن شما) همین الان دست ازین کار بردارید. بیاید باهم تستش کنیم؛
مثل من عمل کنید؛ یک کانال جدید درست کنید توی این کانال حق ارسال ویدئو - پست - منبع یا ... رو ندارید مگر اینکه اون رو یکبار حتی با سرعت بالا خونده - دیده یا بررسی کرده باشید. شاید روزها و ماه اول سخت باشه اما بعد از ۶ ماه کانال رفرنس خودتون رو با کانال بدبختی مقایسه کنید.
اضافه کنم: اولین ویدئو یوتیوب 1300 بازدید داشته که خب حدود 1200 مورد توی ۵ روز اول بوده و ويدئو آخر توی ۲ هفته 183 بازدید داشت. تعداد private share پست ویدئو اول روی 50 مورد هست و پست ویدئو دیگر روی 300 همین آمار نشون میده چقدر اتفاق بدی داره میوفته. دلیل مخالفتم با ویدئو گذاشتن همین بود؛ توی لایو شما رو مجبور میکنم حداقل یکبار اون موضوع رو گوش بدید که همین هم تاثیر بزرگی توی پیشرفت هست.

به بهانه آپلود ویدئو جلسه چهارم (فصل ۳ کتاب) youtube link می‌خوام راجب بدترین سوالی که توی ۴-۵ سال اخیر ازم میشه بهتون بگم و
به بهانه آپلود ویدئو جلسه چهارم (فصل ۳ کتاب) youtube link می‌خوام راجب بدترین سوالی که توی ۴-۵ سال اخیر ازم میشه بهتون بگم و اینکه جلوی یکی از عادت‌های بد شما رو بگیرم. خیلی وقتا حتی دوستان نزدیک از من می‌پرسند که چطوری وقت می‌کنی هم چندجا کار کنی هم این همه کتاب بخونی ؟ اگر بگذرم از اینکه خب باید یک چیزایی رو فدا کنید تا وقت آزاد بیشتری داشته باشید. یک جواب ساده هم داره؛ من چیزی رو به بعد موکول نمی‌کنم. یاد دنبال یک ویدئو؛ کتاب یا ... نمیرم یا اگ

4 min to start

لطفا قبل از ورود به جلسه میکروفون و ویدئو رو خاموش کنید https://meet.google.com/rfs-sceq-xgu

#تجربه امروز یک اتفاق جالبی برام افتاد گفتم بگم : حدودا ۲ سال قبل یک پروژه‌ای رو وارد شدم که برای ۲ تا شریک بود (هر ۲ نیروی فنی) اما دیدها و فیچرهای متفاوت رو نیاز داشتند. وقتی من وارد شدم از درگیری‌هاشون گذشته بود؛ توی مصاحبه من هر ۲ نفر بودند ولی وقتی همکاری شروع شد فقط ۱ نفر بود و خیلی چیزا هم عوض شده بود. پیگیر شدم فهمیدم از هم جداشدند بصورت دوستانه و قراره هرکسی با تکنیک خودش و فیچرهای مدنظر خودش کار رو پیش ببره؛ درآمد و ... همه چیز هم قبل جداشدن با رضایت ۲ نفر تقسیم شده بود. از روی رفاقیت زیاد شاید؛ هرکدوم تو اولین اقدام یک سهم مثلاْ ۵٪ به شریکی که دیگه توی شرکتش نیست هم داده بود. کسی که من باهاش شروع به کار کردم؛ آدم خیلی حرفه‌ای نبود از نظر کد اما توی بیزینس کد زدن و کار رو یادگرفته بود؛ شریکش اما آدم آکادمیک و بسیار بسیار با سواد بالا در زمینه فنی بود. ما کار رو شروع کردیم؛ نیروهایی که گرفتیم نهایتا میدیور بودند؛ دستمزدها پایین اما اجازه میداد بهشون انگیزه (پاداش) بدیم؛ و هزینه اینکار هم نیاز به آموزش دادن و البته شلوغ شدن خودمون موقع code review بود. با همین فرمون و همونطور که حدس زدید چیزی به اسم clean code, code optimization, ... هم نداشتیم. تقریبا هر ۲ هفته فیچر تحویل می‌شد؛ یک گروهی با فیچر کار میکرد نهایتا ۱ هفته هم مشکلات برطرف می‌شد و دپلوی انجام می‌شد؛ اما تو کل این مسیر تست نویسی موارد اصلی رو داشتیم. مثلا ما هیچوقت تست نویسی دیتابیس؛ ستون‌ها و ... رو انجام ندادیم اما تست نویسی model, schema, request, response رو توی بکند داشتیم. توی ۶ ماه پروژه لانچ شد و توی ماه ۹ام قراردادهای اصلیش شروع شد؛ من هم ۳ ماه بعدش وقتی todo plan, ... رو نوشته بودیم و می‌دونستیم تا ۶ ماه آینده تسک‌های اصلی چی هست برای یک موقعیت شغلی بهتر از تیم خداحافظی کردم و مدیر فنی دیگری وارد شد. . امروز متوجه شدم شرکتی که باهاش کار میکردم؛ شرکت رقیب (یعنی دوستش) رو خریده و صاحب همه امتیاز و کدها و فیچر و ... شده. .
تفاوت تیم من و شرکت رقیب این بود که من و مدیرم جفتمون بیزینس رو دیدیم و می‌دونیم یک چیزایی مثل clean code, optimization , .... رو می‌شه حذف کرد ولی توی کارمون اولین باشیم؛ می‌دونیم با سرمایه‌گذاری روی نیروی تازه‌کار می‌شه به شرکت اجازه خطا کردن داد چون پول بیشتری نگه‌داشتیم و البته وقتی دستمزد کمتری پرداخت می‌کنید (چون ما بیشتر نیروهامون تازه کار و میدیور بودند چندتا متخصص هم داشتیم ولی خب خیلی کمتر نسبت به رقیب که برای هر حوزه حداقل ۱ نیروی متخصص آورده بود) پاداش و هدایای انگیزشی می‌شه به نیروها داد.
. شرکت رقیب حدودا ۷ ماه بعد از ما نسخه اولیه رو لانچ کرد ۷ ماهی که به ما بازار هدف رو یاد داد؛ نشون داد چقدر فرضیات ما اشتباه بوده و ... توی این ۷ ماه مشتری‌های ما پر توقع شدند؛ وقتی شرکت رقیب با نسخه اولیه اومد و چون این دانش بازار رو نداشت بازاریابیش همیشه به نفع ما تموم می‌شد؛ مشتری رو متقاعد میکرد که همچین سیستمی‌ رو نیاز داره. اما مشتری قبل خرید تحقیق میکرد و سیستم مارو می‌دید؛ فیچرهای بیشتر + قیمت ارزون‌تر مجاب می‌شد از ما خرید کنه چون ما نیروهامون ارزونتر بود و هزینه کمتری برای راه‌اندازی داده بودیم. همه این‌هارو گفتم چون از بچه‌هایی که کتاب fluent python رو می‌خونند سوال ازم میشه شما همیشه اینجوری کد میزنید ؟ جوابش هم قطعا خیر هست. همینجا هشدار باید بدم اگر رفتید سراغ تکنیک بالا حتما باید تجربه و سابقه اش رو داشته باشید. مدیریت همچین تیم و همچین وضعیت کدی با کوچکترین اشتباه تبدیل به بحران میشه. این تکنیک مثل یک تیغ تیز هست که شما روی لبه‌اش دارید راه میرید؛ اگر این کار رو درست انجام بدید برنده خواهید بود. اضافه کردن تست نویسی و هزینه و زمان صرف کردن روی این مورد اما برای من این لبه تیز تیغ رو تبدیل به طناب یا پل باریک کرد.

#تجربه امروز یک اتفاق جالبی برام افتاد گفتم بگم : حدودا ۲ سال قبل یک پروژه‌ای رو وارد شدم که برای ۲ تا شریک بود (هر ۲ نیروی فنی) اما دیدها و فیچرهای متفاوت رو نیاز داشتند. وقتی من وارد شدم از درگیری‌هاشون گذشته بود؛ توی مصاحبه من هر ۲ نفر بودند ولی وقتی همکاری شروع شد فقط ۱ نفر بود و خیلی چیزا هم عوض شده بود. پیگیر شدم فهمیدم از هم جداشدند بصورت دوستانه و قراره هرکسی با تکنیک خودش و فیچرهای مدنظر خودش کار رو پیش ببره؛ درآمد و ... همه چیز هم قبل جداشدن با رضایت ۲ نفر تقسیم شده بود. از روی رفاقیت زیاد شاید؛ هرکدوم تو اولین اقدام یک سهم مثلاْ ۵٪ به شریکی که دیگه توی شرکتش نیست هم داده بود. کسی که من باهاش شروع به کار کردم؛ آدم خیلی حرفه‌ای نبود از نظر کد اما توی بیزینس کد زدن و کار رو یادگرفته بود؛ شریکش اما آدم آکادمیک و بسیار بسیار با سواد بالا در زمینه فنی بود. ما کار رو شروع کردیم؛ نیروهایی که گرفتیم نهایتا میدیور بودند؛ دستمزدها پایین اما اجازه میداد بهشون انگیزه (پاداش) بدیم؛ و هزینه اینکار هم نیاز به آموزش دادن و البته شلوغ شدن خودمون موقع code review بود. با همین فرمون و همونطور که حدس زدید چیزی به اسم clean code, code optimization, ... هم نداشتیم. تقریبا هر ۲ هفته فیچر تحویل می‌شد؛ یک گروهی با فیچر کار میکرد نهایتا ۱ هفته هم مشکلات برطرف می‌شد و دپلوی انجام می‌شد؛ اما تو کل این مسیر تست نویسی موارد اصلی رو داشتیم. مثلا ما هیچوقت تست نویسی دیتابیس؛ ستون‌ها و ... رو انجام ندادیم اما تست نویسی model, schema, request, response رو توی بکند داشتیم. توی ۶ ماه پروژه لانچ شد و توی ماه ۹ام قراردادهای اصلیش شروع شد؛ من هم ۳ ماه بعدش وقتی todo plan, ... رو نوشته بودیم و می‌دونستیم تا ۶ ماه آینده تسک‌های اصلی چی هست برای یک موقعیت شغلی بهتر از تیم خداحافظی کردم و مدیر فنی دیگری وارد شد. . امروز متوجه شدم شرکتی که باهاش کار میکردم؛ شرکت رقیب (یعنی دوستش) رو خریده و صاحب همه امتیاز و کدها و فیچر و ... شده. . تفاوت تیم من و شرکت رقیب این بود که ماها جفتمون بیزینس رو دیدیم و می‌دونیم یک چیزایی مثل clean code, optimization , .... رو می‌شه حذف کرد ولی توی کارمون اولین باشیم؛ می‌دونیم با سرمایه‌گذاری روی نیروی تازه‌کار می‌شه به شرکت اجازه خطا کردن داد چون پول بیشتری نگه‌داشتیم و البته وقتی دستمزد کمتری پرداخت می‌کنید (چون ما بیشتر نیروهامون تازه کار و میدیور بودند نسبت به رقیب که برای هر حوزه حداقل ۱ نیروی متخصص آورده بود) پاداش و هدایای انگیزشی می‌شه به نیروها داد.