من در ۱۶ شهریورماه ۱۳۹۳ چالشی رو برای خودم تعریف کردم که بر اساس اون قرار هست در عرض شش ماه سرویسی رو طراحی کنم که بتونه ۵ میلیون تومان درآمد ماهانه داشته باشه و قرار گذاشتم که به صورت مرتب و شفاف در مورد روند انجام کارها در بلاگ خودم بنویسم. اگه میخواید در این مورد بیشتر بدونید به این نوشته مراجعه کنید.
در گزارش دوم خودم در مورد چالش طراحی سرویس در شش ماه، نوشتم که میخوام طی دورههای آموزشی آفلاینی این مورد رو آزمایش کنم که چقدر خودآموزی بر پایه یک پروژه شخصی میتونه در یادگیری برنامهنویسی تاثیر گذار باشه. البته قرار بود این یادگیری نه در خلوت افراد بلکه در طی یک کار تیمی و در کنار یک مربی (یعنی من، که بیشتر نقش تسهیلگر رو داره) اتفاق بیافته. در این متن سعی میکنم از نحوه برگزاری و چالشهای این دورههای آموزشی بنویسم.
و اما برگذاری این دورهها چگونه شروع شد
الان که دارم این متن رو مینویسم تنها چهار روز به پایان دوره آموزشی برنامهنویسیای که طراحی کرده بودم مونده. اما برگردیم به سه یا چهار هفته قبل. در اون روزهای اول چند نفر از خوانندههای بلاگ من بعد از خوندن در مورد این دورهها به من ایمیل زدند و خواستند که در دوره اول شرکت کنند. ظرفیت دوره محدود به ۵ الی ۷ نفر بود و من بعد از تماس تلفنی با تکتک افراد سعی کردم مطمئن شم که افراد از هدف دوره کاملن آگاهی دارن. در ضمن در این تماس تلفنی تونستم تقریبن با پیشزمینه افراد در مورد برنامهنویسی آشنا بشم. در بین افراد شرکتکننده برنامهنویسهای مختلفی از نظر سطح دانش برنامهنویسی بودند: هم فرد مبتدی داشتیم و هم فرد متوسط و هم برنامهنویس با تجربه.
در ضمن این دوره از لحاظ ترکیب جنسیتی شامل ۴ زن و ۳ مرد بود که به نظرم این بالانس جنسیتی برای موفقیت این دورهها الزامی بود. (گو اینکه در میانه راه به علت مشکلات شخصی دیگه نتونستیم یکی از شرکت کنندههای خوب دورهها رو در ترکیب گروه داشته باشیم. من امیدوارم که بتونیم میزبان ایشون در دوره بعدی باشیم)
با توجه به ظرفیت دوره متاسفانه من مجبور شدم از چندین نفر که درخواست شرکت در دوره رو داده بودند بخوام منتظر دوره بعدی بمونند. الان که سه هفته از شروع دوره اول میگذره میتونم بگم که هفت نفر تعداد بالایی بود و فکر میکنم ۵ نفر برنامهنویس به ازاری هر مربی میتونه عدد بهتری از نظر کیفیت دوره باشه.

تصمیم من در مورد قیمت دورهها
در پست قبلی خودم گفتم که از شرکتکنندههای این دورهی آموزشی قرار هست مبلغی رو دریافت کنم ولی اون موقع نمیدونستم که اون مبلغ مناسب چقدر هست.
اولش تصمیم گرفتم تا از خود شرکت کنندهها بخوام در ابتدا مبلغی رو که فکر میکنن ارزش واقعی کورس هست پرداخت کنند. بعد در انتهای دوره ازشون بخوام در مورد اون مبلغ بازنگری کنن و بگن که چه مقدار اضافیتر حاضر هستند پرداخت کنند و یا اینکه باید چه مقدار از مبلغ پرداختی اولیه رو بهشون برگردونم. بعد از این کار پشیمون شدم چون بعد از صحبت کردن با چند نفر از شرکتکنندهها به نظر میرسید افراد هیچ دیدی از دوره نداشتند و عددهایی که میگفتند کاملن بر اساس حدس و گمان بود.
در نتیجه تصمیم گرفتم که برای دوره اول که ۴۸ ساعت قرار بود طول بکشه مبلغ ۲۰۰ هزار تومان رو در نظر بگیرم. در ضمن به شرکتکنندهها این اطمینان رو دادم که اگر در آخر دوره از کیفیت دوره ناراضی بودند، بدون هیچگونه سوالی قیمت دوره رو بهشون برخواهم گردوند. البته باور دارم ارزش این دورهها بیشتر از این مبلغ هست و هنوز نیاز هست که روی قیمت بیشتر کار کنم.
محل برگذاری دورهها
مورد بعدی که باید بهش میپرداختم مکان برگزاری این دوره بود. در نظر داشتم با چندین نفر صحبت کنم تا در صورت توافق این دورهها در محل شرکت اونها برگزار بشه. زمان برگزاری دورهها هم ساعت ۵ الی ۸ بود. این ساعت رو به دو دلیل انتخاب کردم. اولین دلیل این بود که تعدادی از شرکت کنندهها شاغل یا دانشجو بودند و تنها زمان مناسب برای اونها عصر بود و دومین دلیل این بود که این ساعت معمولن خارج از ساعتهای اداری میزبان دوره بود. خوب ملاقات من با اولین اسپانسر احتمالی دوره آموزشی اونقدر خوب پیش رفت که نیاز نشد تا من به گزینههای دیگهای در مورد مکان برگزاری فکر کنم. این شد که شرکت چیستا اولین اسپانسر این دورهها شد. شرکت چیستا برروی ارایه راهکارهای مدیریت ارتباط با مشتری یا CRM تمرکز داره. از همینجا از عسل راد و حمید تدینی عزیز بابت میزبانی عالیشون و همینطور از تکتک خندههایی که هر بار با هم برخورد داشتیم تشکر میکنم و امیدوارم بتونیم این همکاری رو ادامه بدیم.
آنچه در این سه هفته از شروع دورهها گذشته
روز اول دوره روز هیجانانگیزی بود. در ابتدای دوره پس از اینکه افراد خودشون و پیشزمینه برنامهنویسی خودشون رو به سایرین معرفی کردند، من در مورد قوانین سادهای که برای محیطی خوب برای کار گروهی و برنامهنویسی نیاز بود صحبت کردم که برخی از اونها شامل این موارد میشه که در زیر نوشتم:
- از بچهها خواستم که به هیچوجه شوخیهای جنسیتی یا قومیتی و … انجام ندند.
- اگر قصد کمک به فرد دیگری رو دارند یا اینکار رو انجام ندند و یا اینکه تا آخر ماجرا کنار اون فرد باشند.
- از گرفتن ایرادهای بیمورد و خارج از بحث از حرفهای همدیگه خودداری کنند.
- البته باید این مورد رو هم اضافه میکردم که از جنگ بین زبانهای برنامهنویسی خودداری کنند.
سپس من یادآوری کردم که بعد از این دوره انتظارم این هست که سرعت یادگیری افراد بالاتر رفته باشه و همینطور به راحتی بتونند پروژههای خودشون رو از صفر تا صد مدیریت کنند و جلو ببرند. بعد تکتک افراد از پروژهی خودشون که برای این چهار هفته در نظر گرفته بودند گفتند. در بین پروژهها Timetabling تحت وب، بانک گیاهان دارویی، وباپی برای غر زدن آنلاین، سرویس فرمساز آنلاین، سرویس مشاوره حقوقی برای کسبوکارها، وباپ اجرای کدهای زبانهای برنامهنویسی مختلف به صورت آنلاین و همینطور سایت شخصی بود. در طی دوره چند مورد از این ایدهها تغییر کردند ولی مهم ایدهها نبودند مهم برنامهنویسی و پیادهسازی اونها یادگیری حین عمل بود.

سپس از بچهها خواستم که بعد از نوشتن نیازمندیهایی کاربرانشون، موکاپی از آنچه در ذهن دارند رو بکشند که خود این موضوع برای خیلی از بچهها کار راحتی نبود و ولی نتیجه نهایی به نظرم خوب بود و ذهن افراد مرتبتر از قبل شد. برای موکاپهای آنلاین از سرویس moqups استفاده کردیم.
بعد از این مرحله نوبت به این رسید که User Story های هر پروژه رو هر فرد تولید کنه. برای نگهداری این داستانهای کاربر از سرویس Trello استفاده کردیم. و بعد بچهها ریز کارهای مورد نیاز برای انجام هر User Story رو به عنوان TODO در داخل هر داستان کاربر نوشتند.
و بعد نوبت به این رسید تا هر فرد زبان برنامهنویسی خودش رو برای پروژه خودش انتخاب کنه. زبانهایی که برخی از بچهها قبل از ورود به دوره در نظر داشتند زبانهای PHP و سیشارپ بود که طی تحقیقاتی که خودشون انجام دادند تصمیم گرفتند تا از زبانهای Ruby و فریمورک Ruby on Rails و همینطور Python و JavaScript برای پیادهسازی پروژههاشون استفاده کنند.
آشنا نبودن برخی از بچهها با لینوکس و روبی یکی از چالشهایی بود که پشت سر گذاشتیم ولی تجربهای که بدست آوردم این بود که برای اینکه وقت افراد برای کارهایی به غیر از تهیه زیرساخت مورد نیاز برای برنامهنویسی بگذره، بهتر هست از قبل این زیرساختها رو آماده بکنیم. معمولن برای یک آغازگر کدنوشتن لذت بخشتر از درگیری با نصب پکیجها هست.

برای یادگیری زبانهای جدید بچهها فعالانه به هم کمک میکردند و مطالب و ویدیوهایی که روز پیش در موردی رو دیده بودند با هم به اشتراک میذاشتند. به نظرم در حال حاضر اغلب شرکتکنندهها دید کافی و اولیه از مسایل بکاند دارند و دارند با توجه به User Storyها روی پروژههای خودشون کار میکنند. اما به نظر میرسه با توجه تلف شدن وقت افراد سر آمادهسازی سیستم توسعه خودشون، نیاز هست تا چند روز به مدت این دوره اضافه بشه تا نتیجه مطلوبیتری رو بگیریم.
یکی از مسایلی که من در حین این دوره به اون برخورد کردم (که البته تازگی نداشت) این بود که برنامهنویسهای تازهکار مهارت درست سوال پرسیدن رو باید حتمن کسب کنند. در ضمن باید یاد بگیرند که چگونه و با چه پروسهای کد خودشون رو Debug کنند. این دو مورد هر کدوم با اینکه برای ما که چندنین سال برنامهنویسی کردیم بدیهی به نظر میرسه ولی موضوع مهمی هست برای نوشتن و پرداختن بهشون.
قدم بعدی من
خوب قدم بعدی من این خواهد بود که دورههای آفلاین بعدی رو هم برگزار کنم بیشتر درگیر یادگیری افراد در زمینه برنامهنویسی بشم. هدف من این هست که بتونم این پروسه یا بخشی از اون رو با سرویسی تحت وب تسهیل کنم. اگر میخواهید که در دوره بعدی شرکت کنید لطفن از طریق ایمیل me[at]arashmilani.com به من خبر بدید.
آرش شرکت در دورهها چه شرایطی داره و تاریخ شروع دومین دوره کی هست؟
راستش شرایط خاصی نداره! هر کسی که به برنامهنویسی علاقه داره صرف نظر از میزان اطلاعاتش در این زمینه میتونه در این دوره شرکت کنه. البته این دوره فعلن حضوری هست و در تبریز برگزار خواهد شد. اگر تبریز هستید و دوست دارید در این دوره شرکت کنید میتونید از طریق ایمیل بهم خبر بدین. در اون ایمیل در مورد خودتون چند خط بنویسید تا من باهاتون آشنایی مختصری داشته باشم. باز هم تکرار میکنم مهم نیست سطح برنامهنویسی شما در چه حد هست. مهم نیست که مبتدی هستید و هنوز اول راه هستید. مهم این هست که کدنویسی و ساختن رو دوست داشته باشید.
دوره دوم از شنبه ۱۷ آبان ماه ۹۳ شروع میشه و چهار هفته طول خواهد کشید. شما تا آخر روز سهشنبه ۱۳ آبان فرصت دارین که تا تمایل خودتون برا شرکت در این دوره رو از طریق ایمیل بهم بگین.
ممنون که این مطلب رو خوندید. اگه در این مورد سوالی یا ابهامی بود ممنون میشم برام ایمیل بزنید یا اینکه در بخش نظرات مطرح کنید. راستی میتونم به محض انتشار مطلبی جدید در وبلاگم که به احتمال زیاد، مرتبط با این چالش خواهد بود، از طریق ایمیل شما رو خبردار کنم. کافی است ایمیلی با عنوان «نینجا من رو از نوشتههات خبر دار کن» یا شبیه اون برام بفرستین… اصلن بیخیال، عنوانش زیاد مهم نیست، به هر حال خودم قرار هست جوابش رو بدم نه یه برنامه کامپیوتری یا روبوت :)