در پاسخ به این سوال که بوتکمپ چیست؟ بایستی گفت که بوتکمپها مهارتهای کدنویسی و توسعهٔ نرمافزار را به صورت عملی به علاقمندان طی دورههای کوتاه -مثلا ۳ الی ۶ ماهه- آموزش میدهند، البته باید این نکته را هم مد نظر داشته باشیم که در برخی مواقع، دانشآموختگان بوتکمپ درک عمیقی از نحوهٔ عملکرد سیستمها و الگوریتمها ندارند! به نظر میرسد بوتکمپهای برنامهنویسی ادعای غیرقابل باوری دارند مبنی بر این که میتوانند فارغالتحصیلانی همچون دانشگاههای تراز اول داشته باشند. مدیران بوتکمپها در سیلیکونولی ادعا میکنند که به جای 4 سال درس خواندن در دانشگاه در رشتهٔ نرمافزار، میتوانید یک مهندس نرمافزار شوید البته با یک برنامهٔ 3 ماههٔ فشرده! در مواجهه با این گفته، به نظر میرسد شما با یک تبلیغ کاملا تجاری مواجه هستید نه یک مدل آموزشی باورپذیز. در این مقاله قصد داریم تفاوتهای ساختاری مدل آموزشی در دانشگاهها را با بوتکمپهای برنامهنویسی مقایسه کنیم.
داخل پرانتز
باتوجه به اینکه در این مقاله بارها و بارها به اصطلاح Bootcamp اشاره میشود، لازم دانستیم توضیحی در این رابطه بدهیم که آیا در ایران بوتکمپ برنامهنویسی داریم یا خیر؟ در پاسخ به این سوال بایستی گفت که متاسفانه خیر! در ایران هیچ بوتکمپی با آن مفهومی که در کشوری همچون ایالات متحده وجود دارد نداریم اما با توجه به اینکه در این مقاله قصد مقایسه مابین فارغالتحصیلان دانشگاه با فارغالتحصیلان بوتکمپها را داریم، میتوانیم آموزشگاههای برنامهنویسی که دورههای آموزشی تابستانی فشرده و ... برگزار میکنند را به نوعی بوتکمپ در نظر بگیریم.
شرکتهای نرمافزاری به دنبال مهارتهای بسیار متنوعی هستند، و با بررسی این تفاوتها، به راحتی میتوان به متقاضیان جویای کار کمک کرد تا مصاحبههای بیشتری را طی کرده و شغلی را پیدا کنند که اگر خودشان میخواستند نمیتوانستند. آمار و ارقام حاکی از آنند که در سال گذشته در ایالات متحده، چیزی در حدود 100 نفر از فارغالتحصیلان بوتکمپها توانستند شغلهایی را در شرکتهای بزرگ بدست آورند.
به طور کلی، دانشآموختگان بوتکمپها، برنامهنویسان تازهکاری هستند که باید چیزهای بسیاری را بیاموزند و خودشان را به مدیر فنی شرکتی که آنها را استخدام کرده به خوبی نشان دهند؛ برنامهنویسانی که در بوتکمپ برنامهنویسی آموختهاند به مراتب بهتر از فارغالتحصیلان دانشگاهی برنامهنویسی وبسایت انجام میدهند و میتوانند کدهایی ماژولار مینویسند ولی درک خوبی از نحوهٔ عملکرد کامپیوترها و الگوریتمها ندارند. در این مقاله قصد داریم نشان دهیم که چگونه چنین چیزی امکانپذیر است و سعی میکنیم که به صورت عمیقتر تفاوتهای بین این دو گروه -فارغالتحصیلان دانشگاهی و دانشآموختگان بوتکمپ- را برایتان شرح دهیم و نشان دهیم که چرا بعضی افراد در کمتر از یکسال به برنامهنویس قابلی تبدیل میشوند.
معرفی استارتاپ Triplebyte
Triplebyte استارتاپی است که به فارغالتحصیلان دانشگاههای آیتی و دانشآموختگان بوتکمپهای برنامهنویسی کمک میکند تا به سادگی بتوانند در مصاحبههای شغلی خود را پرزنت نموده و به شغل دلخواه خود دست بایند؛ این استارتاپ یک تیم تحقیق و توسعه (R&D) دارد که دائما مشغول به بررسی روندهای استخدامی، تفاوتهای برنامهنویسان و مهندسین نرمافزار و ... است و آنچه در ادامه میخوانیم، نتایج تحقیقات کارشناسان Triplebyte در زمینهٔ تفاوتهای خروجی دانشگاهها با بوتکمپها است.
تجزیه و تحلیل
مصاحبههای تخصصی که در Triplebyte انجام میگیرد، تقریبا 2 ساعت و نیم طول میکشد و به چهار قسمت اصلی تقسیم شده است که عبارتند از: - تمرکز بر روی برنامهنویسی عملی،
- معماری وب،
- درک سطح پایین از عملکرد سیستم
- و فهم الگوریتم.
تجربه نشان داده است که معمولا هر مهندسی تمام مسائل را به طور کامل پاسخ نمی دهد (Triplebyte به برنامهنویسان اجازه میدهد بر روی نقاط قوتشان تمرکز کنند)، اما روی هم رفته، این مصاحبه معیار خوبی برای اندازهگیری تسلط نسبی هر شخص بر روی هر یک از موارد به کارشناسان میدهد.
اولین نکتهای که دربارهٔ نمودار فوق وجود دارد این است که نتیجهٔ مصاحبه دانشآموختگان بوتکمپ همانند نتیجهای است که فارغالتحصیلان دانشگاهی در فیلدهایی همچون برنامهنویسی و طراحی وبسایت بدست آوردهاند، حتی در بعضی موارد دانشآموختگان بوتکمپ نتایج بهتری در این دو حوزه بدست آوردهاند. اما دانشآموختگان بوتکمپ در فیلد الگوریتم و درک سطح پایین از نحوهٔ عملکرد سیستم ضعیف عمل نمودند.
سوالات مطرح شده در آزمون عملی، سوالاتی مشکل بودند که برای حل نیاز به تفکر و تحلیل مسئله داشتند؛ مسائل برنامهنویسی طوری طراحی شده بودند که بیشتر نیاز به متمرکز شدن بر روی نکات داشت تا مسائل الگوریتمی. برای حل مسائل حتی نیاز به دانشی خاص در حوزه علوم کاپیوتر یا دانش ریاضی یا هر گونه دانش تخصصی نبود.
موضوع مسئله همین است، یعنی در آزمونهای عملی امتیاز دانشآموختگانی که از بوتکمپ فارغالتحصیل شدهاند نتیجهای تقریبا یکسان و حتی در بعضی موارد نتیجهٔ بهتری نسبت به افرادی که از دانشگاه فارغالتحصیل شدهاند در بر داشت اما همین دانشآموختگان نتیجهٔ ضعیفتری در علوم پایه کسب کردند!
الگویی مشابه در مسائل طراحی وجود داشت، یعنی بوتکمپیها نتیجهٔ بهتری در زمینه مسائل وب بدست آوردند که شامل مواردی همچون وبسرور، دیتابیس، لود بالانسرها و غیره میشود. فارغالتحصیلان دانشگاهی عملکرد بهتری در مواردی همچون مفاهیم بیت/بایت، تردینگ (چندنخی)، تخصیص حافظه و فهم این که در عمل کامپیوتر چگونه کار میکند داشتند.
در این تحقیق، Triplebyte عمل غربالگری را از طریق یک آزمون برنامهنویسی آنلاین انجام داد و فقط با مهندسانی مصاحبه صورت گرفت که در آزمون آنلاین قبول شده بودند. بنابراین برایشان راهی وجود نداشت تا بتوانند بفهمند چند درصد از فارغالتحصیلان و دانشآموختگان سریعتر در روند ما با شکست مواجه شدند و نمودار فوق فقط شامل نتایج افرادی است که آزمون آنلاین را گذرانده اند.
با این حال، تعداد قابل توجهی از فارغالتحصیلان بوتکمپ توانستند آزمون ما را پاس کرده و همانند فارغالتخصیلان دانشگاهی به فرایند مصاحبه ادامه دهند. در اینجا میخواهیم به طور خاص توجه شما را به عملکرد فارغالتحصیلان دانشگاهی در مسائل الگوریتمی جلب کنیم؛ آنها نه تنها بهتر از دانشآموختگان بوتکمپ، بلکه خیلی بهتر از آنها عمل کردند. فارغالتحصیلان دانشگاهی به طرز چشمگیری از برنامهنویسان متوسطی (اکثر آنها تجربه برنامهنویسی 2 سال یا بیشتر را داشتند) که در مصاحبهٔ ما شرکت کردند بهتر عمل کردند. جالب نیست؟ این نکته حاکی از آن است که برنامهنویسان در کدنویسی پروژههای عملی از الگوریتمهای پیچیده استفاده نمیکنند.
چهطور چنین چیزی ممکن است؟
دادههای Triplebyte به یک طرف، با این وجود به سختی میتوان باور کرد که 3 یا 4 ماه آموزش برنامهنویسی در بوتکمپ با 4 سال تحصیل در دانشگاه رقابت میکند؛ به نظر میرسد مقیاس زمان در این مسئله قابل استناد نیست و اولین نکتهای که باید به آن توجه داشته باشید این است که تفاوت در طول مدت زمان آموزش به آن اندازه که بزرگ به نظر میرسد نیست. بوتکمپها به صورت فشرده عمل میکنند. کسانی که در بوتکمپها ثبتنام میکنند 8 ساعت کار به طور روزانه در بوتکمپ انجام میدهند و بسیاری از آنها آخر هفتهها را برای تکمیل کردن کارشان صرف میکنند. همچنین منتورها در طول این مدت به طور تماموقت با کدآموزان هستند (دلیل این فشردگی شاید به علت کوتاه بودن مدت زمانی است که در اختیار بوتکمپها قرار دارد.)
نکتهٔ دوم این است که در بوتکمپ فقط موارد کاربردی و مهارتهای عملی تدریس میشوند. برنامهنویسان سنتی زمان زیادی را صرف مفاهیمی کاملا غیرکاربردی و تاریخگذشته میکنند. ما در اینجا به هیج عنوان قصد تخریب و تحقیر سبک آموزش آکادمیک را نداریم ولی واقعیت امر آن است که این موارد به طور مستقیم به کار نمیآیند. بوتکمپها این عدم کارایی را با تلاش خستگیناپذیر و کار بر روی مهارتهای عملی جبران میکنند.
اساتید در بوتکمپ به طور مداوم استایل کدنویسی هر کدآموز را مورد نقد و بررسی و گاهی هم انتقاد قرار میدهند؛ منتورهای بوتکمپها تست کردن را آموزش میدهند؛ آنها به کدآموزانشان یاد میدهند چگونه از ادیتور به طور بهینه استفاده کنند (نحوهٔ استفاده از ادیتور چیزی است که دورههای سنتی علوم کامپیوتر هرگز به تدریس آن فکر هم نمیکنند!) و چیزهای عملی دیگری از این دست.
البته این به این معنا نیست که فارغالتحصیلان بوتکمپ همچون فارغالتحصیلان دانشگاه میتوانند با مسائل عمقی روبهرو شوند؛ اگر شما میخواهید با الگوریتمهای پیچیده کار کنید یا میخواهید برنامهنویسی سطح پایین انجام دهید، اگر به سراغ فارغالتحصیلان رشتهٔ علوم کامپیوتر که در آن به روش سنتی تدریس میشود بروید، موفقتر خواهید بود.
حال مسئله این است: بوتکمپ یا دانشگاه؟
اکنون شما میتوانید به دو صورت موارد طرح شده را تعبیر کنید؛ اول اینکه بوتکمپها به کدآموزان بیتجربه یاد میدهند که به چه چیزهایی نیاز دارند تا شبیه یک برنامهنویس خوب به نظر برسند و به مهارتهایی مجهز شوند که در حال حاضر بازار کار ایران به آن نیاز دارد. دیدگاه دوم اینکه میتوانید بوتکمپها را به عنوان جایی که بر روی مواردی کار میکند که در سیلابس رشتهٔ علوم کامپیوتر در نظر گرفته نشده قلمداد کنید. بوتکمپ بر روی مهارتهای عملی تمرکز میکند که برای بازار کار به آنها نیاز است. اینها مهارتهایی هستند که انتظار میرود دانشجویان علوم کامپیوتر در خلال درس دانشگاهیشان به آنها بپردازند که در خیلی مواقع این اتفاق نمیافتد.
روی هم رفته، فارغالتحصیلان بوتکمپها معمولا مورد توجه شرکتها قرار نمیگیرند. همانند تازه فارغالتحصیلان دانشگاهی، این دانشجویان باید چیزهای زیادی یاد بگیرند. همچنین دانشآموختگان بوتکمپها در مباحث الگوریتم و ساختاری و نحوهٔ عملکرد آنها ضعیفتر از فارغ التحصیلان دانشگاهی هستند (البته این در حالی است که اکثر شرکتها نیاز به برنامهنویسانی که بخواهند روی الگوریتمهای خیلی پیچیده کار کنند ندارند.)
نظرات شما عزیزان: