
سه مهارتی که هر توسعهدهندهی نرمافزار باید آنها را فرا بگیرد
انتخاب زبان برنامهنویسی برای کسانی که قصد یادگیری برنامهنویسی را دارند، میتواند یک مشکل غافلگیرکننده باشد. اغلب توسعهدهندگان با هدف پذیرفته شدن در یک مصاحبهی شغلی، باید خود را آشنا با یک لیست طولانی از زبانهای برنامهنویسی مختلف و دیگر مهارتهای مرتبط مورد تقاضای کارفرمایان نشان دهند.
به گفتهی بنیانگذار 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 گفتن. یکبار برای همیشه باید اصولی یاد گرفت.
ممنون بابت این سایتی که معرفی کردی، حل مساله و یاد گرفتن طرز تفکری که باعث حل مساله بشه از نون شب واجب تره.
افسردگیش خوشخیمه اما:دی
مرسی که وقت گذاشتی.