توی این نوشته میخوام به صورت خلاصه روندی که از ابتدای راهم و کارآموزی برنامه نویسی طی کردم تا الان که مسئولیت چند تا کارآموز رو به عهده دارم بنویسم. توی این مدت چه اتفاقاتی افتاد، چه چیزهایی یادگرفتم و در کل چه چالشهایی رو تجربه کردم. در بین حرفام من خیلی از صحبتها رو اشاره نکردم و لینک دادم به مطالبی که قبلن در موردشون تو همین بلاگ نوشتم. پس پیشنهاد میکنم حتمن مطالبی رو که لینک کردم هم بخونین.
من از سال ۹۴ با برنامهنویسی به طور ویژه آشنا شدم و از همون اول به خاطر علاقهای که داشتم خیلی زیاد روش وقت میزاشتم. اون تایم به واسطه دانشگاه بیشتر درگیر زبان سیپلاسپلاس بودم (اینجا بیشتر درباره اش نوشتم). ولی به خاطر نبودن جایی که بتونم مسیر درست رو انتخاب کنم و تنوع و پیچیدگی زیادی که حوزههای مختلف برنامهنویسی داشتن نمیدونستم دارم چیکار میکنم. بعد از مدتی کار با این زبان و یادگیری مباحث شیگرایی و انجام پروژههای مختلف دانشجویی، با سرچ و جستجو زیاد به فریمورک Qt رسیدم که باهاش میشد اپلیکیشن دسکتاپ نوشت و به برنامههای سیپلاسپلاسی یک GUI داد.(البته امکانات زیاد دیگهایم داره)
بعد از اون با پرس و جو از دوستانی که یکم بیشتر توی این کار تخصص داشتن با زبان جاوا آشنا شدم و رفتم سمت برنامهنویسی اندروید. این فیلد رو یکم بیشتر عمیق شدم و مدتی پروژههای فریلنسی میگرفتم و دو سه تا پروژه خوب باهاش زدم که درآمدی هم به نسبت ازش داشتم. حتا به واسطه آشنایی یکی از نزدیکام، تونستم یک پروژه اپلیکیشن اندرویدی برای آموزش و پرورش(واحد تربیت مدرسین) بزنم و برای اون زمان واسم موفقیت بزرگی محسوب میشد. یک مدت کوتاهی هم داخل یک شرکتی برای کاراموزی رفتم ولی به خاطر مناسب نبودن شرایط اون شرکت خیلی سریع بیرون اومدم.
در نهایت بعد از حدود یکسالی فهمیدم این حوزه هم اون چیزی نیست که من دنبالشم و اینجا در موردش بیشتر نوشتم. البته این ما بین هم بعضی از دروس تخصصی دانشگاه که خیلی دوستشون داشتم رو واسشون وقت میزاشتم تا عمیق یادبگیرمشون. دروسی مثل ساختمان دادهها، طراحی الگوریتم، سیستم عامل، نظریه ماشینها، هوش محاسباتی، هوش مصنوعی و سعی میکردم پروژههای عملی این دروس رو به کاملترین شکل ممکن بزنم. همین باعث شد تا با زبان پایتون آشنا بشم و کلی از پروژههای دانشگاهیم رو با این زبان بزنم. اینجا بیشتر درباره اینکه چی شد پایتون رو یادگرفتم نوشتم. اون تایم پروژههای درسی اساتید دیگه رو هم برای کسایی که میخواستن میزدم و برام بهانهای برای بیشتر تمرین کردن بود و البته نیمچه درآمدی هم داشتم. یک لیست مختصری از پروژههایی که اون تایم زدم رو اینجا گذاشتم.
همینطور که باز میچرخیدم دنبال اینکه چی یادبگیرم، از طرف سازمان فنی و حرفهای یک همایشی میخواست برگزار بشه با عنوان آینده وب، که تصمیم گرفتم شرکت کنم. اون همایش باعث شد من با دنیای وب و آیندش و تکنولوژیهاش آشنا بشم و یک دید کلی نسبت به این حوزه پیدا کنم و انگیزهای شدش که استارت یادگیری این حوزه رو بزنم. من و یکی دیگه از دوستام تصمیم گرفتیم باهم شروع کنیم به خوندن رفرنسهای مختلف و یادگیری html, css و جاوااسکریپت. هر چی سایت انگلیسی و فارسی که دستمون میرسید میخوندیم و کلی کورس ویدیویی هم دانلود کردیم و نشستیم خوندن، دیدن و انجام پروژهها و تمرینهایی که توی اون کورسها گفته میشد.
توی حدود سه ماه، تونستیم تا حد خوبی به این مباحث پایهای مسلط بشیم. روزی حدود دو سه ساعت وقت میزاشتیم و دیگه دروس دانشگاه رو فقط واسه پاسی میخوندم و هدفم چیز دیگهای شده بودش. همین دونفری خوندن رقابتی و مرور مطالب خونده شده باهمدیگه، کمک بزرگی بودش تا سریعتر بتونیم جلو بریم. jQuery و بوتاسترپ رو یاد گرفته بودیم و بعدش با مفهوم SPAها آشنا شدیم و دیدیم که باید روی این حوزه سوییچ کنیم. پس بعد از سرچ در مورد تکنولوژیهای مختلف این حوزه رفتیم سراغ Angular و متمرکز اون رو استارت زدیم و چندتا پروژه تمرینی صفر تا صد هم برای خودمون زدیم.
حالا وقتش رسیده بود یک زبان سمت سرور برای وب رو یادبگیرم. با پرس و جوی زیاد و علاقه خودم، تصمیم گرفتم سیشارپ والبته فریمورک ASP.NET رو یاد بگیرم. باز با همون روش سرچ توی منابع اینترنتی و البته دورههای پروژه محور رایگان اینترنتی به زبان انگلیسی تونستم سطح خوبی از مطالب رو یادبگیرم و پروژههای نمونه زیادی واسه خودم زدم.
همین موقعها بود که یکی از دوستان رو دیدم رو لپ تابش یک سیستمعامل دیگهای داره و اون لینوکس بود. اونجا منم خیلی کنجکاو شدم که لینوکس چیه و منم ازش استفاده کنم و از حال و هوای سیستمعاملش، فوق العاده سبک بودن و قابلیت کاستوم کردن خیلی زیادش خوشم اومد! به صورت دوالبوت کنار ویندوز اونم نصب کردم و سعی کردم کار کردن باهاش رو یاد بگیرم و با زبان Bash هم کمی کار کنم و روش مسلط بشم. دیگه برای برنامهنویسی همش میرفتم روی لینوکس و دیگه کار به جایی رسید که کلن ویندوزم رو پاک کردم و کلن فقط لینوکس داشتم.
اون موقع من ASP.NET MVC یاد گرفته بودم و دیدم مایکروسافت نسخه جدیدی از این فریمورک رو به اسم ASP.NET Core منتشر کرده که خب تحول بزرگی هم برای مایکروسافت و هم برای این فریمورک بود که قابلیتهای خیلی زیادی رو اضافه کرده بود که من توی یک ارائهای در رابطه با این فریمورک جدید مایکروسافت صحبت کردم که اسلایدهاش رو اینجا میتونین ببینین تا با امکاناتش بیشتر آشنا بشین.
در نهایت سریع سوییچ کردم رو این فریمورک، چون چیزی بود که تازه چند ماهی از انتشار جهانیش میگذشت و افراد زیادی نبودن که به این فریمورک مسلط باشن و میدونستم اگر من از الان روش وقت بزارم میتونم بعدها از بقیه خیلی جلوتر باشم. تعدادی پروژه تمرینی برای خودم با این فریمورک زدم و اون موقع بود که تصمیم گرفتم حالا کم کم باید وارد یک شرکت بشم و کارآموزی کنم.
من خیلی دوست داشتم با ASP.NET Core کار کنم اما تقریبن تمام شرکتها از نسخههای قدیمی این فریمورک استفاده میکردن و درخواستها برای MVC یا حتا Web Form بودش. اما بازم رزومه میدادم چون چاره دیگهای نبود. شرکتهای زیادی برای مصاحبه رفتم اما هر کدوم به دلایلی نشد که برم! یکی تست شخصیت ازم گرفت و گفتش تو به درد برنامهنویسی نمیخوری :)) یکی دیگه ازم سفته میخواست، یکی اینقدر تکنولوژیهای مورد استفادش عتیقه بود که فایده نداشت و خیلیاشونم معلوم بود که این شرکت آیندهای نداره و محیط رشد مناسبی برای من نداره. خلاصه بعد از کلی چرخیدن توی استارتاپها و شرکتهای مختلف و تجربه کار پارهوقت توی اونها، از شدت داغون بودن محیطکاری و سطح کار و همینطور تکنولوژیهای مورد استفادشون، تصمیم گرفتم که کلن تا تموم نشدن دانشگاه وارد هیچکدومشون نشم و بعد از گرفتن لیسانسم ترجیحن برم تهران.
اواخر آذرماه ۹۶ بود که خیلی اتفاقی دیدم یک شرکتی که قبلن هم از محصول رقیبش استفاده کرده بودم درخواست نیرو توی سایت جابینجا داده اونم با تکنولوژی ASP.NET Core! خیلی ذوق زده شدم چون همون چیزی بود که دوست داشتم و همیشه هم وقتی از محصول مشابهشون استفاده میکردم با خودم میگفتم چقدر پیادهسازی همچین چیزی خفنه و کی میشه منم بتونم همچین چیزی رو بزنم.
اون شرکت PayPing - پی پینگ بود.
در رابطه با حواشی چجوری وارد شدنم به پیپینگ اینجا یک مطلب نوشتم که شاید براتون جالب باشه :))
مطلب بالا رو اگر بخونین تا حدی از فضای شرکت گفتم، با اینکه من یک فرد کاملن بیتجربه توی این حوزه جدید بودم و اصلن با حال و هوای یک محصول توی این ابعاد آشنایی نداشتم اما با تمام وجودم سعی کردم خودم رو برسونم و هر چیزی که لازم بود و نبود رو یاد بگیرم :))
اون تایم پیپینگ به تازگی جذب سرمایه راند جدیدش رو انجام داده بود و به دنبال scale کردن بود و من جز اولین نفراتی بودم که قصد داشتن به تیم اصلیشون (۶ - ۷ نفره) اضافه کنن. هنوز دفتر جدیدشون رو نگرفته بودن و من مجبور بودم برای هماهنگی و تحویل پروژهها و اینکه کلن با کلیت محصول آشنا بشم، روزانه ۳ -۴ ساعت خونه سعید مشهدی که اون زمان هم مدیرعامل پیپینگ بود و هم مدیرفنی برم تا واسم از پروژهها بگه و بهم تحویلشون بده.
خیلی سریع دفتر جدیدشون رو داخل کوثر گرفتن و ما اونجا منتقل شدیم. بچههای فنی ریموت دیگه از مازندران، شیراز، گناباد و تهران هم اومده بودن دفتر مشهد و همه باهم اونجا کار میکردیم. رسیده بودیم به ایام تعطیلات عید و من و کل تیم روزی بالای ۱۲ساعت کار میکردیم تا نسخه جدید پیپینگ که به صورت کامل بازنویسی شده بود رو بالا بیاریم و من به دلیل حجم و فشار کاری بالا، اون تایم روزانه به اندازه ۶ماه کورس و آموزشگاه مطلب جدید یادمیگرفتم و داشتم با دنیای جدیدی آشنا میشدم.
به دلیل فضای خوبی که تیم و همینطور برخورد خوبی که سعید مشهدی داشت، هیچوقت کم تجربه بودن خودم رو طی کار حس نمیکردم و مدام با من در سطح خودم مینشستیم و مفاهیم رو دونه دونه واسم باز میکرد و باقیش رو میسپرد به خودم که برم دنبالش. مسئولیتهای مختلفی رو به عهده من میزاشت و با اینکه من هنوز در سطح اون مسئولیت نبودم اما بهم اعتماد میکرد و تسکهارو واگذار میکرد. همین داستان باعث میشد تا من چندین برابر برای یادگیری وقت بزارم و مدام هر روز سعی کنم خودم رو بیشتر آماده کنم.
خیلی زود افراد جدیدی اعم از افراد باتجربهتر و افراد جونیور به تیم اضافه شدن و تیم بزرگتر شد. اون زمان من هم دیگه تا حدی خودم رو رسونده بودم و کم نمیاوردم. تا حدی که توی یک سری موارد با افراد با تجربهتر بحث و گفتگو میکردم و چالشهای جالبی داشتیم که باز باعث همافزایی و یادگیری بیشتر برای من بود.
اون زمان من هر تسکی توی شرکت بود رو سریع قبول میکردم و بهم اعتماد میشد و زورم رو میزدم تا انجام بدم. مهم نبود مال چه حوزهای بود، مهم این بود که الان تسک هست و دنیایی مطلب جدید برای من که یاد بگیرمشون و تجربه کنم. از برنامهنویسی اندروید با Java تا اسکریپتنویسی bash، کانفیگ کردن docker compose، نوشتن برنامههای دم دستی کوچیک با python، نوشتن فرانت پروژهها با React و خلاصه هر استک و چیزی که بود رو تجربه میکردم. البته همیشه ۸۰درصد از روزم روی تخصص اصلیم یعنی بکند با NET Core. میگذشت.
اون ایام تمرکز کل تیم روی این بود که پروژه legacy و قدیمی پیپینگ که به صورت monolithic نوشته شده بود رو بیاریم روی معماری micro-service و به طور کامل بازنویسی و ریفکتور بکنیم و البته فرانت جدید رو هم با React بزنیم و همینطور از زیرساخت ابری استفاده کنیم و کل پروژهها dockerize بشن.
این اتفاق نیازمندیهای خیلی زیادی اعم از فنی و غیرفنی داشت. از پیدا کردن یک سرویسدهنده درست حسابی PaaS در ایران تا انتخاب دیتابیس مناسب، پروتکلهای ارتباطی بین سرویسها، استک مناسب برای فرانت، آماده سازی محیط test و staging، ابزار مناسب برای object storage، تقسیم بندی تسکها روی هر پروژه، فریمورک مناسب برای مدیریت هر سرویس و پروژه، چگونگی ارتباط بین تیمی و بدون اغراق هزاران مشکل که برای هر کدوم زمان گذاشتیم و با تجربه کردن راهحل های مختلف موجود در ایران و دنیا به بهترین سلوشن که بیشترین انطباق رو با پیپینگ داشت به یک راهحل جامع رسیدیم و البته این سیکل همین الان هم مدام در حال بهبود مستمر هستش.
ایام به شدت جذاب، پرفشار و البته پر استرسی بود که لحظه لحظهش درسهای بزرگی چه از نظر فنی و چه غیرفنی و اصطلاحن soft skill برای من داشت و کل تیم مدام در حال یادگیری و رشد بود و خودش رو مدام بهبود میداد و هیچ ترسی از تغییر و اصلاح نداشت و اگر معلوم میشد یک روند یا فرآیندی اشتباه هست خیلی سریع شناسایی میشد و دنبال راهحل برای رفعش میگشتیم.
در نهایت بعد از چندین ماه کار فشرده، یک روز ساعت ۴ صبح اومدیم شرکت و سرویس هارو بردیم روی پروداکشن و با تمام سختیها و تجربیات جذاب و حتا تلخ نسخه جدید پیپینگ روی پروداکشن رفت و به دست کاربرها رسید.
بعد از اون اتفاقات زیادی مثل نمایشگاه الکامپ و ارائه سرویسهای جدیدمون رو داشتیم که خب گفتنشون ممکن این متن رو خیلی طولانی و خسته کننده بکنه.
پیپینگ دوتا دفتر داره، یکی تهران که شامل تیم مارکتینگ، فروش، پشتیبانی و دیزاین میشه و یکی هم مشهد که شامل تیم فنی (فرانت اند، بکند، زیرساخت) هستش و البته تعدادی از بچههای فنیمون هم به صورت ریموت باهامون همکاری میکنن. برای همین از ابتدا ما با کار ریموت آشنا شدیم و با فرآیندهای مدیریت کردنش خیلی درگیر بودیم و مدام جلسات اسکایپی یکی از پایه ثابتهای ما بود. در حال حاضر که این نوشته رو دارم مینویسم ما در مجموع داخل پیپینگ بالای ۳۰ نفر هستیم که به صورت فولتایم از نقاط مختلف ایران داریم باهم کار میکنیم.
اون ایام من دانشگاه هم میرفتم و هر روز که کلاس نداشتم، شرکت بودم و زمان امتحانات هر ترم به شدت برنامههام شلوغ میشد و واقعن مدیریتشون سخت میشد. تصمیم گرفتم واحدهای کمتری بردارم و هر درس رو هم با استادش صحبت میکردم که اگر امکانش هست توی کلاسا حضور نداشته باشم و فقط برای امتحانات بیام. بعضیاشون قبول میکردن و بعضیا هم نه! تا جایی که نقش دانشگاه واسم به شدت کمرنگ شد و منجر به نوشتن مطلبی در رابطه با تجربیات دانشگاهم و نقشش توی روند حرفهای کارم شد که اینجا میتونین بخونیدش.
تا امروز که این نوشته رو مینویسم بیشتر از ۳سال هستش که توی پیپینگ مشغول به کارم و روزانه برام چالشهای متنوعی توی زمینههای مختلف کاری ایجاد شده که سعی کردم ازشون بهترین استفاده رو توی رشد شخصی خودم چه از لحاظ کاری و چه از لحاظ مسائل غیرکاری داشته باشم.
یکی از ویژگیهای مهم پیپینگ، تیم به شدت همراه، منسجم و دلسوزش هست که فارغ از هرگونه مسائل جانبی تنها دغدغه روزانشون رشد خودشون و به دنبالش رشد پیپینگ هست. پیپینگ در این ایام که حداقل من خودم شاهدش بودم به دلیل نبودن قانونگذاری درست توی حوزه فینتک و کلن استارتاپهای پلتفرمی بارها فیلتر شد و تمام نمودارهای رشدمون به صفر رسید. ولی باز مجدد از صفر استارت زد و همه چی رو دوباره شروع کردیم.
الان شرکت یک تغییری در ساختار مدیریتیش داده و توی مرحله بعدی scale هست و علاوه بر اضافه شدن کلی آدم خفن و متخصص جدید، تعدادی کارآموز توی واحدهای مختلف گرفتیم که مسئولیت تعدادی از اونها با من هست. وقتی به گذشته نه چندان دور خودم نگاه میکنم واقعن مسیر پرچالشی رو طی کردم و جرقه نوشتن این پست رو توی ذهنم ایجاد کرد که حداقل یک رودمپی باشه برای کسانی که میخوان به تازگی این مسیر رو شروع کنن و ممکن هست با این اتفاقات رو به رو بشن.
اتفاقات این سالها خیلی بیشتر از این متنی بود که من نوشتم و فقط قصدم اشارهای بود به مسیری که خودم طی این سالها تجربه کردم و امیدوارم برای شما هم جالب و کمککننده بوده باشه. در همین راستا دارم ویدیوهایی رو هم برای کسانی که میخوان تازه برنامهنویسی رو شروع کنن اما با چالشهای مختلفش آشنا نیستن و سردرگم هستن تولید میکنم که از اینجا میتونین کانال یوتوبم رو ببینین.
در نهایت این مسیر برای من هم هنوز توی اول راه خودش هست و شاید بشه گفت قدم اول رو تازه برداشتم و در حال تلاش برای رسیدن به قدمهای بعدی توی مسیر کاری و زندگی شخصی خودم هستم.