قدم اول من برای حل مشکل دانش و نیروی متخصص در زمینه برنامه‌نویسی

من حدود یک ماه پیش (۱۶ شهریور ۹۳) برای خودم چالشی تعریف کردم که بر اساس اون قرار هست در عرض شش ماه سرویسی رو طراحی کنم که بتونه ۵ میلیون تومان درآمد ماهانه داشته باشه و قرار گذاشتم که به صورت مرتب و شفاف در مورد روند انجام کارها در بلاگ خودم بنویسم. اگر می‌خواید در این مورد بیشتر بدونید به این نوشته مراجعه کنید.

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

همه ما برنامه نویس‌ها در این شرایط بودیم: در حال یادگیری زبان برنامه‌نویسی جدیدی هستیم، ساعت‌ها مطالب مختلف رو می‌خونیم ولی گاهی حتا نمی‌دونیم روشی که با اون مساله رو داریم حل می‌کنیم درست هست یا نه! حتا گاهی به خاطر این کلافگی برای مدت‌ها از یادگیری اون مبحث فرار می‌کنیم. یا خیلی از افراد سعی می‌کنن با شرکت در کلاس‌ها و حتا دوره‌های آنلاین فرایند یادگیری خودشون رو سریع‌تر بکنند. با اینکه تا حدی این موارد باعث ایجاد مهارت در کدنویسی می‌شه ولی فرد رو آماده دنیای واقعی نمی‌کنه. چون بنظرم دنیای واقعی برنامه‌نویسی، مهارت‌هایی بیش از کدنویسی رو نیاز داره.

یک کسب‌وکار دنیایی است آرمانی که چون شما سازنده‌ی آن هستید، پس می‌توانید قوانین آن را شما تعیین کنید

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

من در طی ۳۰ روز آینده سعی خواهم کرد برای این سوال‌ها پاسخی پیدا کنم:

  • اگه بشه چی می‌شه که در حین پروسه آموزش هر کسی بر روی پروژه‌ای واقعی کار کنه که مال خودش بدونه و بعد از اتمام اون بهش افتخار کنه؟
  • اگه بشه چی می‌شه چندین نفر مثل خود آدم باشند که عاشق یادگیری برنامه‌نویسی هستند. بعد این افراد جمع بشند و تو یه دوره زمانی مشخص کنار هم کدنویسی کنند و یاد بگیرند و با هم قرار بذارن که با اینکه هرکدوم بر روی پروژه خودشون کار می‌کنند ولی هر موقع نیاز بود به هم کمک برسونند.
  • اگه بشه چی می‌شه که وقتی مبحث جدیدی رو در برنامه‌نویسی یاد می‌گیریم همیشه کسی باشه که هر جا کلافه شدم بهمون اشاره‌ای بده تا مسیرمون رو دوباره پیدا کنیم.
  • اگه بشه چی می‌شه در جمع کسایی باشیم که از پرسیدن هیچ سوالی نترسیم و نگاه‌ها طوری نباشه که انگار گناه کردیم که چیزی رو نمی‌دونیم.
  • اگه بشه چی می‌شه بعد این که دوره آموزش من تموم شد جمعی دوستانه و مهربون باشه تا بتونیم در مورد ورود به بازار کار یا حتا شروع کردن یه استارتاپ ازشون راهنمایی بگیریم.
  • اگه بشه چی می‌شه که تو جمع حرفه‌ای برنامه‌نویس‌هایی باشیم که همکارهای زن خودشون رو نه «برنامه‌نویس زن» بلکه فقط «برنامه‌نویس» می‌دونند.
  • اگه بشه چی می‌شه که راهی پیدا کنیم که زمان آموزش برنامه‌نویسی و مهارت‌های مرتبطش خیلی کوتاه‌تر بشه.

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

خوب برگردیم به موضوع اصلی. اگه دقت کرده باشین جملاتی که با «اگه بشه چی می‌شه…» شروع می‌شدند همه به نوعی یک «فرضیه» محسوب می‌شن. دانشمندها برای اینکه بتونن فرضیه‌هاشون رو بررسی کنن آزمایش‌هایی برای تست اون‌ها طراحی می‌کنند. من هم قرار هست همین کار رو انجام بدم (به جز قسمت دانشمندش که من دانشمند نیستم نینجام!). برای اینکه فرضیه‌های بالا رو آزمایش کنم قرار هست من و ۶ نفر دیگه که می‌خوان در زمینه برنامه‌نویسی ماهر بشن به مدت یک ماه آینده در مکانی جمع شیم و یک مدل جدیدی از یادگیری رو امتحان کنیم.

چهارچوب این دوره آموزشی

ما در هفته حداقل چهار روز و هر روز به مدت ۴ ساعت در کنار هم خواهیم بود. در این ۴ ساعت این شش نفری که می‌خوان هکر یا برنامه‌نویس ماهری بشن چه خواهند کرد؟ این سوالی هست که خود افراد شرکت‌کننده در اول این دوره یک ماهه جواب خواهند داد. برای نمونه من چند مورد رو حدس می‌زنم:

  • مثلن ممکنه یکی از اون‌ها بخواد که با نوشتن یک فروشگاه اینترنتی متن‌باز با ریز و درشت یک زبان سمت سرور مثل Ruby یا JavaScript آشنا بشه.
  • ممکن هست کسی دیگه بخواد برای درک بهتر از html/css تا پایان دوره سه theme متن باز رو منتشر کنه.
  • ممکن هست یکی دیگه بخواد یک فریمورک جدید برای یک زبان برنامه‌نویسی بنویسه.
  • یا حتا برای درک کامل نحوه کار وب‌سرورها و پروتکل HTTP یک وب‌سرور در زبان برنامه‌نویسی C بنویسه.

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

همینطور که از مثال‌های بالا احتمالن متوجه شدید افراد با سطوح برنامه‌نویسی مختلف در این دوره حضور خواهند داشت و داشتن تجربه کد نویسی قبلی الزامی نیست.

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

چه کسی قرار هست به این افراد آموزش بده؟

هیچ کس! این دوره یک دوره استاد شاگردی نیست. در این دوره ما با هر شرکت‌کننده مثل افراد بالغ که مسئول یادگیری خودشون هستند برخورد می‌کنیم. اگر بخوام ساده توضیح بدم در این دوره قرار نیست ماهی گرفته بشه بلکه افراد خودشون دست به کار می‌شن و با کمک من و هم‌گروهی‌هاشون ماهی گرفتن رو یاد می‌گیرن.
درضمن شاید در حین دوره از افراد متخصص خواستیم که برای چند ساعت به گروه بپیوندند تا با ارایه‌های کوتاه در مواردی خاص ذهن افراد رو روشن کنند. مثلن یک ارایه عملی در مورد TDD در دنیای واقعی خیلی موثرتر از خوندن هر مقاله و کتابی در این مورد هست. یکی از وظایف من در این دوره پیدا کردن افراد متخصص خواهد بود.

برنامه روزانه افراد بعد از مشخص کردن نقشه راه

در ابتدای هر روز شرکت کننده‌ها قرار هست که جلسات کوتاه سرپایی برگزار کنند. در این جلسه سه سوال ساده توسط هر فرد جواب داده خواهد شد. (۱) دیروز چه کاری انجام دادم؟ (۲) قرار هست امروز چه کاری انجام بدم؟ (۳) در چه مشکلی نیاز به کمک بقیه دارم؟

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

در ضمن هر آخر هفته قرار هست هر فرد پیشرفت پروژه خودش رو به دیگران نشون بده و همه با هم بابت پیشرفت‌شون یه جشن کوچیک بگیرن.

اما کار ما در اینجا به پایان نمی‌رسه. در روزهای آخر دوره در مورد آینده شغلی افراد با هم گپ خواهیم زد. برای مثال فرض کنیم که شرکت‌کننده‌ای علاقه‌مند هست تا به صورت freelance در بازارهای داخلی و حتا خارجی کار بکنه. من و گروه سعی خواهیم کرد تا با توجه به تجربه خودمون راه درست رو در این مورد نشون بدیم و حتا اگر نیاز بود از تجربه سایر افراد که می‌تونیم بهشون دسترسی داشته باشیم در این راه استفاده کنیم.

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

من در ادامه سعی می‌کنم سوالات متداولی که احتمالن قرار هست ازم بپرسید رو حدس بزنم و جواب بدم:

آیا من هم می‌تونم در این دوره شرکت کنم؟

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

تاریخ دقیق شروع اولین دوره کی هست؟

دوره اول از سه‌شنبه ۱۵ مهر ماه ۹۳ شروع می‌شه و تا ۱۵ آبان ماه ادامه داره. شما تا روز دوشنبه فرصت دارین که تا تمایل خودتون برا شرکت در این دوره رو از طریق ایمیل بهم بگین.

آرش آیا قرار هست مدرکی پس از این دوره‌ به افراد داده بشه؟

نه! چون اصولن زمانی به فردی مدرکی داده می‌شه که دوره آموزشی اون تموم بشه. کسانی که در این دوره‌ها شرکت می‌کنند کسانی هستند که می‌دونند چیزی به اسم فارغ‌التحصیلی یا اتمام دوره آموزشی وجود نداره. هر روز فرصت جدیدی است برای یاد گرفتن!

قیمت این دوره‌ها چقدر خواهد بود؟

در مورد قیمت هنوز به نتیجه نرسیدم. از کسانی که در این دوره شرکت می‌کنند مبلغی دریافت خواهم کرد. ولی بعد از اولین دوره هست که می‌خوام در مورد قیمت اون بحث کنم. فیدبک افراد شرکت کننده در دوره اول در این مورد خیلی مهم خواهد بود. شما در این زمینه چه نظری دارید؟

آرش برنامه‌ات برای رشد سرویس چی هست؟

هنوز فکر می‌کنم برای پرسیدن این سوال زود باشه. من ابتدا نیاز دارم که مشکلی با عمقی زیاد رو حل کنم و بعد به دنبال گسترش اون باشم. خروجی‌ای که من از این دوره انتظار دارم برنامه‌نویس‌های خوب یا هـکرهایی است که خود من حاضر باشم پروژه‌ای مهم خودم رو به دست اون‌ها بسپارم و اطمینان داشته باشم که در انجام اون موفق خواهند بود. پس با اطمینان بتونم اون‌ها رو سایر افراد معرفی کنم.

آرش به نظرت یک ماه زمان کمی برای این کیفیت نیست؟

قبول دارم که همینطور هست. به احتمال خیلی زیاد مدت دوره‌های بعدی بیشتر خواهد بود. در این دوره با توجه به کم بودن زمان نیاز خواهیم داشت که از برخی مسایل بگذریم. شاید مثلن از کسی نخوام که به صورت عمیق وارد مسایل همچون UX یا TDD بشه.

چرا باید افراد شرکت کننده در این دوره از فرصتی که دارند به جای کار روی پروژه خودشون برای کمک به سایرین استفاده کنند؟

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

آیا این سرویس همانند کاری نیست که Hacker School انجام می‌ده؟

بله تا حدود زیادی همینطور هست. من در روزهای اخیر ده‌ها برنامه آموزشی یا سرویس تحت وب برای آموزش برنامه‌نویسی رو بررسی کرد. به نظرم راهی که دوستانمون در Hacker School پیش گرفتند و فرهنگ حاکم بر اون با اهداف من خیلی هم‌خوانی داره. البته تفاوت‌هایی مشخصی در مدل کسب‌وکار اون‌ها و من وجود داره.

آرش من فکر می‌کردم قرار هست روی سرویسی تحت وب کار کنی، نه؟!

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

ممنون که این مطلب رو خوندید. اگه در این مورد سوالی یا ابهامی بود ممنون می‌شم برام ایمیل بزنید یا اینکه در بخش نظرات مطرح کنید. راستی می‌تونم به محض انتشار مطلبی جدید در وبلاگم که به احتمال زیاد، مرتبط با این چالش خواهد بود، از طریق ایمیل شما رو خبردار کنم. کافی است ایمیلی با عنوان «نینجا من رو از نوشته‌هات خبر دار کن» یا شبیه اون برام بفرستین… اصلن بی‌خیال، عنوانش زیاد مهم نیست، به هر حال خودم قرار هست جوابش رو بدم نه یه برنامه کامپیوتری یا روبوت :)

پی‌نوشت

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