تجربه شروع برنامه نویسی من

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

یکم قصه بگیم

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

شروع گرافیک و مدل سازی

فرداش موقع برگشت از کار برام سی دی های آموزش 3D Max خرید. (یکی از قوی ترین نرم افزار های مدل سازی سه بعدی)
منم تمام تلاشم رو کردم که واقعا یادش بگیرم، آموزش هارو دیدم، و تا میتونستم با تمام امکانات نرم افزار ور رفتم. (نمیدونم اوضاع اینترنت اون زمان تو ایران چطور بوده، ولی مال ما که dial up و شدیدا داغون بود، انگلیسیمم به حد کافی خوب نبود که انگلیسی سرچ کنم، هیچ منبعی جز اون آموزش ها و ور رفتن نداشتم.)
اما یادش گرفتم، با آزمون و خطا، هر جور که شده...
همونطور که گفتم، من قبل این داستانا تدوین های خیلی ساده انجام داده بودم، با یه نرم افزاری بود به اسم Ulead video studio، مثه اینکه بعد ها توسط Corel خریداری شد. (نمیدونم دقیقش رو)
در تمام این مدت هم، فتوشاپ در کامپیوترمون حضور داشت و هر از گاهی باهاش بازی میکردم، نقاشی میکشیدم، خطی خطی میکردم و...
راستی شغل بابام رو یادم رفت بگم، بابام برق کار ساختمان بود، نصب دوربین مداربسته و سانترال و... (یه زمانی هم که من زیاد یادم نمیاد شرکت خدمات ساختمانی داشت و یه زمانی هم مدیر انفورماتیک وزارت آموزش و پرورش بود)
خلاصه که این مهارت تری دی مکس و فتوشاپ من به مرور قوی شد، در حدی که بابام کارایی که میگرفت رو، طراحی سه بعدی نماهاشون رو هم برا من میگرفت، یه پولی هم در میووردم، به همین واسطه اتوکد هم یاد گرفتم.

شروع طراحی سایت (البته نه به کمک برنامه نویسی)

یه جای کار مشکل داشت، من میدونستم چطوری یه شکل یا انمیشن سه بعدی بسازم، اما این شکل چطور باید کنترل میشد؟ فیلم که قابل کنترل نیست ?
پیگیرش شدم، رسیدم به C++، بعدش دیگه پیگیرش نشدم ?
به جاش تو انجمن های آنلاین آواره شدم، لوگو رایگان و بنر رایگان و... میزدم، با هم صحبتی با بقیه یاد هم میگرفتم، یکی از غول های زندگیم اون زمان بنر swf بود که بعد از کلی تلاش شاخش رو شکوندم. ???
خب من که فعال بودم، بابامم که کلا عشق اینجور چیزا، ولی سرش شلوغ بود و نمیتونست، ازم سایت خواست، میخواست شعر هاش رو بزاره توش (بابام 5 کتاب شعر و روانشناسی داره).
تو پرسه زدن هام با بلاگفا و بلاگ اسکای بلاگ ساخته بودم، اما سایت باید فرق می داشت، چه فرقی؟
با یه سری از سایت ساز های ایرانی مثه کانی وب آشنا شدم، (کانی وب رو تو انجمنش هم زیاد فعالیت داشتم) یه مقدار باهاشون کار کردم دیدم اونی که باید نیستن، یعنی متناسب نیاز من نیستن، به قول خارجیا Customizable نیستن. (برا بابام با همونا ساختم ولی خودم مسیر رو ادامه دادم)
وردپرس، جوملا، وی بولتین و... یکی یکی همرو شکافتم و رفتم جلو، روی XZN ?، بیست گیگ فضای رایگان گرفتم و وردپرس خودم رو با قالب صحیفه تنظیم کردم، توش آموزش میدادم، تو پیج گوگل پلاسم هم آموزش هام رو میزاشتم.
مثلا سر تیتر آموزش ها (تفاوت های جوملا و وردپرس، آموزش ساخت بنر Gif در فتوشاپ، آموزش نصب وردپرس و...)
دیگه دانش و اطلاعاتم به یه حد خوبی رسیده بود، چطور بگم ?، در واقع جا پام قرص شده بود، مسیر رو میدیدم و یاد گرفته بودم که چطور یاد بگیرم. (علم هام به کمک هم میومدن که منو به جلو هل بدن)

کارای ساختمونی (ادامه قصه، نه تجربه برنامه نویسی)

این قسمت رو میگم، که فقط اونایی که نا امیدن بدونن که پیشرفت کردن زیادم سخت نیست، یکم اراده و انگیزه درونی میخواد، انگیزه درونی انگیزه ایه که خودت به وجودش بیاری نه منتظر وایسی تا برات بوجودش بیارن.
ما یه زمانی اوضاع مالیمون یکم بالاتر از جامعه بود، اما زمانی رو که من یادمه، اوضامون اصلا خوب نبود ?
شرکت بابام ورشکست شده بود، و سر یکی از اختراعاتش هم مشکلاتی براش پیش اومده بود.
در نهایت بابام با تمام نبوغش (که هنوزم اساتید دانشگاهمون هیچ حرفی در برابرش ندارن بزنن)، یه برق کار ساده و زحمت کش ساختمون بود.
به تعداد زیادی از دلایل، روزایی که تو خونه بودم، از جمله تابستونا و جمعه ها، میرفتم کمکش برق کشی.
بابام کار هاش رو پروژه ای میگرفت، و بعضی وقتا از 4 صبح تا 12 شب یه کله کار میکرد، من که چندین بار کم میوردم، ولی اون اصلا.
روز های خالی بین امتحانتم هم میرفتم سر کار، بابام به درس اهمیت میداد، اما میگفت تو که بلدی، بیا بریم کمک من، راست هم میگفت، با همون وضعیت همیشه شاگرد اول دوم بودم.

شروع کد نویسی (HTML & CSS)

یه زمانی، یه گوشی از کارفرمای بابام هدیه گرفتم (به خاطر عوض کردن کلید پریز های یه واحد ساختمان)
اون زمان تازه تو ایران سر و صدای اندروید داشت شروع میشد، اما سیستم عامل گوشی من سیمبین بود (شاید خیلیاتون حتی اسمش رو نشنیدید، ولی برید راجع بهش بخونید، داستان این سیستم عامل خودش یه تجربه خوبه)
با زحمت باهاش pdf پیدا میکردم باز میکردم و میخوندم، سر کار که نمیشد، تو مدرسه هم که نمیشد، بین راه، تو اتوبوس موقع رفتن به تهران (اطراف تهران زندگی میکردیم)، میخوندم، موقعی که به کامپیوترم میرسیدم تمرین میکردم، سخت بود، اما جلو میرفتم، html css رو با Dream weaver کد میزدم، فرانت های خوبی هم میزدم، به نسبت الان هیچی اند، اما به نسبت اون موقع، وقتی با بقیه سایت ها مقایسشون میکنم، عالی بودن.

شروع برنامه نویسی (JavaScript & PHP)

سایت هام نیاز به انیمیشن داشت، اما چطور میشه؟ JQuery ? (البته خود CSS هم امکانات خوبی داره)
یادش گرفتم، واقعا راحت بود، و قوی، هنوز هم میگم به نظرم JQuery به نسبت اون زمان یه شاهکاره.
جلو رفتم و فرانت رو تا حد خوبی یاد گرفتم...
فتوشاپ، فرانت، وردپرس، این ترکیب چیو کم داشت؟ PHP
مقدماتش راحت بود، چندتا پروژه قالب وردپرس و vBulletin هم انجام دادم، اما بعدش که فهمیدم CMS چیه خواستم خودم یکی بسازم، فهمیدن یه قسمتایی از PHP برام مثه غول مرحله آخر بود، جزئیاتش یادم نمیاد، اما سخت بود. (authentication و دیتابیس و PDO و...)(اون موقع حدود 15 سالم بود)
CMS رو هیچوقت نساختم اما اون قسمتارو یاد گرفتم.

دسکتاپ و بازی (C# & Game Maker)

سال دوم دبیرستان بودم، یه مشاور خیلی خوبی داشتیم که مطب روانشناسی هم داشت، برا مطبش نرم افزار مدیریتی میخواست، منم یاد گرفتم و براش ساختم، واقعا هم اپ خوبی ساختم.
یه مدت کمی هم مابین تمام این داستانا با Game maker بازی میساختم ، البته الان خیلی پیشرفت کرده.

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

برنامه نویسی موبایل (Java)

این یکیو هیچوقت نتونستم شروع کنم ?
منابع آموزشی محدود، تحریم هایی که به سختی میشد دورشون زد، منی که بچه بودم و خب در واقع وقتی بیست و خورده ای سالته خیلی بهتر میتونی راهکار پیدا کنی.
و در آخر، وقتی که 16 سالم بود، مادِربُرد کامپیوترم سوخت، از تهران مهاجرت کردیم روستا و بعدش رفتم دبیرستان شبانه روزی و خوابگاهی شدم (گوشی و کامپیوتر ممنوع)، کامپیوتر خودمونم پول نداشتیم تعمیر کنیم. (در واقع پولشم جور میشد، اما چون خوابگاهی بودم، جز اولویت هامون حساب نمیشد)
یه دلیل دیگه ای هم که کامپیوتر رو تعمیر نکردم کنکور بود، اون دو سال رو باید خوب میخوندم.

دانشگاه

ادامه داستان میشه خاطرات دانشگاه، و بعدش دوباره میشه برنامه نویسی، من در واقع 4 سال برنامه نویسی رو کنار گذاشتم، از 16 تا 20، که در واقع رشته ام هم نا مرتبط بود (مهندسی مکانیک)، ولی از 20 دوباره شروع کردم و الان که این متن رو مینویسم، 23 سالمه.
آخرای دانشگاه یکم با MATLAB کار کردم، و چندتا پروژه خیلی خوب زدم، اونارو توی لینکی که بعدا میزارم میگم، فقط در همین حد بگم که نرم افزار هایی نوشتم که کارای چند هفته آزمون و خطا رو تو کمتر از چند دقیقه انجام میدادن، قبل من فقط شرکت Autodesk (Inventor) برای طراحی شفت و شرخ دنده و... این کار رو انجام داده بود.

ورود جدی به بازارکار

ترم ۵ دانشگاه که تموم شد، تصمیم گرفتم دوباره به طور جدی برگردم به کامپیوتر و برنامه نویسی، اینبار با پایتون شروع کردم، یه کافی نت تو روستامون داشتم و به کمک پایتون ابزار های اتوماسیون مینوشتم، مثلا برای ثبت نام کتاب درسی، ربات نوشته بودم که چندصد تا مشتری رو تو یه روز باهاش انجام میدادم، همینکار رو برای ثبت نام ماشین، سوخت تراکتور، مالیات و... هم انجام میدادم.

یه بار یکی از اسکریپت هام رو تو لینکداین پست کردم، و خیلیا خوششون اومد، و یکیشون شد شروع یه همکاری جدید.

بلاکچین

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

منو به عنوان بلاکچین دولوپر میخواستن در حالی که تجربه بلاکچین نداشتم، خیلی عجیب بود همه چیز ?تیمشون تشکیل نشده بود و همین فرصت من بود که یاد بگیرم، الان اینو میدونم که داشتن روند اشتباهی رو طی میکردن ولی اون موقع نمیدونستم چی به چیه که بتونم کمکشون کنم.

خلاصه تو اون مدت بلاکچین و اپلیکیشن های غیر متمرکز رو یاد گرفتم.

بعدا یه مدیر فنی خیلی خوب آوردن که برای من منتور خیلی خوبی بود، بهشون گفت چرا اینارو گرفتید وقتی هنوز تصمیم نگرفتید چیکار کنید ?

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

یه سری پروژه ها زدم براشون و بنا به دلایلی که مربوط به خود رئیس های شرکت بود، شرکت تعطیل شد.

مدیر فنیمون هم شرکت خودشو داشت، بعدش رفتیم شرکت مدیر فنیمون و چند ماه بصورت سهام از پروژه براش کار کردم، که البته پروژه اش شکست خورد و به درآمد نرسید.

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

یک سال هم تو یه شرکتی کار میکردم که یه جورایی آچار فرانسه بودم، از خیلی از چیزایی که تو گذشته استفاده کرده بودم استفاده کردم، از پایتون و نود و گو، دیتابیس های پوستگرس و مونگو، بک، فرانت و...

ولی بیشتر از همه اسکرپینگ بود، ۱۲ تا اسکرپر حرفه ای با پنل و API کنترل کامل براشون نوشتم.

استعفا از آخرین شرکت ایرانی ام

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

استعفا دادم و یه چند مدت رو پروژه های شخصی و اپن سورسم کار کردم، مطالعه کردم و سعی کردم کانسپت های اساسی مهندسی کامپیوتر رو یاد بگیرم، و چند تا از دوستام رو از صفر کمک کردم و رسوندم به لول جونیور و براشون کار پیدا کردم.

هدفم بعد از استعفا این بود شرکت بعدی ام رو به عنوان سینیور برم توی یه شرکت خوب توی اروپا (آلمان، هلند، سوئد، و...)

و این داستان ادامه دارد...