کاور پست مهارت‌های لازم یک توسعه‌دهنده

سه مهارتی که هر توسعه‌دهنده‌ی نرم‌افزار باید آن‌ها را فرا بگیرد

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

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

  • علم اقتصاد
  • نویسندگی
  • برنامه‌نویسی به زبان C

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

برنامه­‌نویسی با C، به برنامه‌­نویسان یک دید بهتر از نحوه‌ی کار کامپیوتر می­‌دهد. زبان C یک زبان سطح پایین است، به این معنی که دستورات آن، نسبت به زبان‌­های سطح بالا، شباهت بیش‌تری به آنچه که مستقیما توسط CPU اجرا می‌­شود دارد.

این روزها برنامه­‌نویسان زیادی، یادگیری یک زبان سطح بالا –مانند Ruby یا Java- را به پایان می­‌رسانند، بدون اینکه درکی از علت و نحوه­‌ی اجرای کد داشته باشند و به‌­همین دلیل، علت عجیب یا کند بودن کد خود را نمی­‌دانند.

هدف از این یادگیری(یادگیری زبان C)، این است که یک درک خوب از آنچه که در سطح انتزاعی اتفاق می­‌افتد به دست آورید؛ یعنی سطح زیرینِ سطحی که شما در حال کار هستید و بدانید که CPU درواقع چگونه کار می‌کند. این مورد را می­‌توانید با ضرورت یادگیری رفتار بیولوژیکی برای دانش­‌جویان روان­‌شناسی مقایسه کنید.

به‌­طور کلی برنامه‌­نویسان، دو مسیر کاری جداگانه را دنبال می­‌کنند. یکی از این دو مسیر بر یادگیری یک زبان خاص و مهارت‌­های مربوط به آن، و دیگری بر درکِ اصول علوم کامپیوتر و کسب توانایی جهت یادگیری سریع تکنولوژی جدید تمرکز می‌کند.

شرکت­‌های درجه‌­یک دنیا مثل گوگل، فیسبوک و…، به علت سرعت رشدی که دارند، به مهارت­‌های عمیق و به­‌صورت کلی(و نه جزئی) در یک زمینه بها می­‌دهند.

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

آیا داشتن مدرک دانشگاهی لازم است؟

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

درکل، داشتن یک مدرک مرتبط با علوم کامپیوتر، شما را به شغل یا مصاحبه شغلی­‌ای هدایت می­‌کند که اگر آن مدرک را نداشتید، ممکن بود در این امر ناکام باشید.

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

به گفته Spolsky، شرکت­‌ها برای استخدام، به­ کسانی که استعداد برنامه‌­نویسی دارند علاقه بیشتری نسبت به فارغ­‌التحصیلان دانشگاه نشان می‌­دهند.

[qut]داشتن تجربه بسیار مهم است. ترجیح می­‌دهم جوشکاری با ده‌­هزار ساعت تجربه را استخدام کنم؛ تا کسی که در یک آموزشگاه معروف جوشکاری تحصیل کرده است.[/qut]

دوره­‌های آموزشی آنلاین بسیار زیاد(Moocs)

در سال­‌های اخیر دوره‌­های آموزشی آنلاین بسیار زیادی در سطح وب فراگیر شده‌­اند.

کورس‌­های آموزشی­‌ای وجود دارند که اکثر زبان­‌های برنامه­‌نویسی را آموزش می‌­دهند. در کنار این‌ها، دوره­‌هایی نیز هستند که به شما مدارک یا Certification می­‌دهند.

کیفیت این دوره­‌ها از یکدیگر متفاوت است، چه رایگان و چه غیررایگان. اما آیا ارزش ثبت­‌نام را دارند؟

به‌گفته­‌ی اسپولسکی؛ بله. اما خطری نیز وجود دارد و آن خطر، به پایان نرساندن کورس موردنظر است. طبق آمار، کمتر از ۱۳ درصد افرادی که در یک کورس آنلاین ثبت­‌نام می‌کنند، آن را به پایان می­‌رسانند.

[qut]کورس­‌های آموزشی عالی هستند. اما چیزی که بسیار مهم است انگیزه فردی ا­ست. دلیل این اهمیت، این است که کسی که به خود قول یادگیری فرانسوی را می­‌دهد، هرگز موفق به انجام آن نمی‌­شود. اما در مقابل کسی که قصد نقل­‌مکان به فرانسه را دارد، فرانسوی را فرا می­‌گیرد.[/qut]

به گفته اسپولسکی، بهترین دوره­‌های آموزشی آنلاین و بوت­‌کمپ­‌های برنامه­‌نویسی، آن­‌هایی هستند که افراد را در موقعیت­‌های شغلی با پایین­‌ترین سطح قرار می­‌دهند؛ جایی که آن­‌ها بتوانند تجربه لازم را کسب نمایند.

[qut]داشتن تجربه کار عملی برنامه‌­نویسی به طرز وحشتناکی بسیار مهم است و امثال این بوت­‌کمپ­‌ها، زمان کافی برای به­‌دست آوردن این تجربه را به افراد نمی‌­دهد.[/qut]

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

یادگیری بی­‌دردسر

روش یادگیری برنامه‌­نویسی تکامل یافته و تغییر کرده است، به گفته­‌ی اسپولسکی، توسعه­‌دهندگان به­‌لطف کورس­‌های آموزشی آنلاینِ بسیار زیادی که وجود دارند، به راحتی برنامه­‌نویسی را فرا می­‌گیرند. به­‌خصوص سایت‌­های پرسش و پاسخ مانند Stack Overflow که او یکی از هم‌­بنیان‌گذاران آن است.

درگذشته کار دشواری پیش‌­روی برنامه‌­نویسان بود، تنها منابع آموزشی؛ منابع متنی بودند. “امروزه، شما شروع به کدنویسی می­‌کنید و زمانی که چیزی به درستی کار نکرد به سراغ گوگل خواهید رفت”.

او می­‌گوید:

[qut] شگفت‌­انگیز است؛ دیدن برنامه‌­نویسان جوانی که گوگل می­‌کنند و کد می‌­زنند، گوگل می‌­کنند و کد می‌­زنند.[/qut]

[qut]این کد بسیار خطرناک و ترسناک است. و امیدوارم کسی از این کد در سیستم کنترل Boing Dreamliner استفاده نکند.[/qut]

Stack Exchange، شبکه­‌ای که Stack Overflow بخشی از آن است، برنامه دارد محیطی اجتماع‌­محور برای افزایش دانش برنامه­‌نویسی پیشرفته در سایر زمینه­‌ها ایجاد کند. یکی از این پروژه­‌ها، سایتی است که بر فراهم کردن محیطی با  ویژگی­‌های:

  • جمع‌سپاری(استخدام “جمع” یا گروهی از افراد با هدفی مشترک مثل حل یک مساله یا نوآوری در زمینه­‌ای خاص)
  • مستندسازی wiki style
  • بهبود مستندسازی ضعیفی که در بیشتر تکنولوژی‌­ها وجود دارد

تمرکز می­‌کند.

پروژه‌­ای دیگر Team Pages نام دارد که به توسعه­‌دهندگان اجازه به‌­اشتراک­‌گذاری “جزییات پروژه­‌ای که درحال کار روی آن هستند”، “افرادی که با آن­‌ها همکاری می­‌کنند” و اینکه “آیا پروژه‌ی موردنظر Open Source است یا با همکاری یک شرکت” را می­‌دهد.

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

[qut]دنیا درحال خورده شدن توسط نرم­‌افزار است، نرم­‌افزاری که توسط توسعه­‌دهندگان نوشته می­‌شود. درحقیقت، برنامه­‌نویسان آینده را می­‌نویسند و این دلیل اهمیت آنان است.[/qut]

منبع
دیدگاه‌ها
سحر - ۲۸ مرداد ۱۳۹۷

مقاله جالبی بود.
یادگیری زبان c رو خیلی خیلی موافقم. کلا ژن فکرکردن ادم توی کدنویسی رو تغییر می‌ده. به حل مسئله کلا کمک می‌کنه.
سایت projecteuler.net هم توی شکل‌گیری این طرز فکر کمک می‌کنه. البته نه همش!
بعضی هاش فقط کل هفته ادمو درگیر می‌کنه و آخرش افسردگی!

    رضا - ۲۸ مرداد ۱۳۹۷

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

ارسال دیدگاه جدید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز با * علامت‌گذاری شده‌اند.