در قسمت قبل دیدید که ما یکسری مواردی که برای تبدیل شدن به بهترین برنامهنویس در جهان به آن نیاز دارید را از زبان Dennis Ritchie برای شما بازگو کردیم.
در آخرین قسمت از این مقاله همراه ما باشید.
2. درسهایی از Linus Torvalds، مردی که پشت Linux Kernel است.
طبق گفته مجله Times یکی از تأثیرگذارترین افراد در جهان است. Linus Torvalds نبوغِ پشت سیستم عامل لینوکس است.
- درسال 1998، او مسئول پذیرش سازمان مرزهای الکترونیکی (EFF) در PIONEER Award بود.
- در سال 1999 به او لقب یکی از 100 مخترع برتر زیر ۳۵سال دنیا را دادند.
- در سال 2000 مدال Lovelace را از انجمن بریتانیایی کامپیوتر دریافت کرد.
- در سال 2008 به عضویت موزه تاریخ کامپیوتر درآمد.
- در سال 2012 عضو تالار مفاخر اینترنت شد.
- در سال 2012 او همچنین یکی از کاندیداهای دریافت جایزه فناوری Millennium بود.
اکنون ارزشش را دارد تا بیشتر درباره این مرد بزرگ بدانیم. در زیر من خلاصهای از زندگینامه ایشان را آوردهام.
در سال 1969 در یک خانواده ژورنالیست در Helsinki به دنیا آمد. Linus میگوید که کودکی او هیچ نکته خاصی نداشته است. تاحد زیادی تحت تأثیر پدربزرگ مادری خود بوده است. او اولین برنامه خود را در 12 سالگی مینویسد. او به پدربزرگ خود کمک میکرد که برنامههایش را تایپ کند و تا سن 12 سالگی او آنها را اصلاح میکرد و برنامههای خودش را مینوشت.
یک برنامهنویس خودآموخته بودن به این معنی است که به خودتان یاد بدهید که برنامه بنویسید بدون در نظر گرفتن بعضی از اصول اولیه کلاسهای کامپیوتر؛ بنابراین Linus کاملاً یک برنامهنویس خودآموخته است. طبق گفته خودش، کلاسهای برنامهنویسی در آن زمان وجود داشتند اما کاملاً ساده و ابتدایی بودند.
نکته 5: تحصیلات رسمی علم کامپیوتر خیلی عالی است اما اجازه ندهید که آن شمارا متوقف کند
Eric Raymond میگوید: «تحصیلات رسمی درزمینهٔ کامپیوتر هرگز نمیتواند کسی را متخصص کند همانطور که مطالعه قلم و رنگ نمیتواند یک نفر را در نقاشی ماهر کند.»
همانطور که بزرگتر میشد، Linus Torvalds متوجه شد که نوشتن بازی چقدر جالب است و کدهای ماشینی نوشت. او به assembler دسترسی نداشت، بنابراین تمام assembly را روی کاغذ و به حالت باینری نوشت.
این کاملاً دیوانگی بود.
اما چیزی که جالبتر است این است که هرکسی در خانواده او (غیر از بستگان مادری او) ژورنالیست بودند و او این وسط حکم یک گوسفند سیاه بود.
در مصاحبه با موزه تاریخ کامپیوتر او میگوید که: «من همیشه گیک بودم، همیشه یا کد میخواندم یا برنامه مینوشتم و صادقانه بگویم هنوز هم میخوانم و پشت کامپیوتر مینشینم. این سرگرمی من است».
نکته 6: عاشق کاری باشید که انجام میدهید نه فقط پول و شهرتی که بدست میآورید
Linus Torvalds میگوید: «بیشتر برنامهنویسان خوب، برنامهنویسی را نهفقط برای دریافت پول یا ستایش مردم، بلکه برای لذتی که برایشان دارد، انجام میدهند.»
باید این را بگویم که عشق به برنامهنویسی بیشتر اوقات زمانی که شروع به کار میکنید، به وجود نمیآید. برای بیشتر مردم این مورد بعد از تسلط آنها بر کارشان اتفاق میافتد.
شما یاد میگیرید، اشتباه میکنید، چیزهایی میسازید، خودتان را در حال پیشرفت میبینید و درنهایت عاشق کاری میشوید که انجام دادهاید.
حتی برای آنهایی که از ابتدا کارشان را با عشق شروع میکنند، هرچه در کارشان پیشرفت میکنند، این عشق بیشتر رشد میکند.
اگر شما عاشق برنامهنویسی هستید اما پیشرفتی در آن نمیکنید، آن را رها نکنید. همه افراد کفشهای مشابهی را با سایز بزرگتری پوشیدند.
نکته 7: ابتدا با چیزهای کوچک شروع کنید اما به مرور زمان آن را گسترش دهید
«من فقط میخواهم که سیستم عامل خودم را بسازم.» آیا این را Linus Torvalds گفته است؟
این داستان اینگونه پیش نرفته است. پروژه Linux بهعنوان یک ماجراجویی برای ساخت یک سیستم عامل آغاز نشد.
جزئیات آن احتمالاً فراتر از حوصله شما خواهد بود. اما در اینجا به نکات مهم اشاره کردهایم:
Linus یک MINIX تنظیم کرد، یک سیستم عامل کامپیوتری شبیه UNIX . این سیستم عامل برای اولین بار در سال 1987 منتشر شد، به همراه منبع کد کامل آن، که در اختیار دانشگاهها برای مطالعه و تحقیق قرار گرفت.
فعالیتهای Linus حول محور machine بودند و او برنامهاش را برای بوت کردن فلاپی بدون OS نوشت.
Linus میخواست که خود CPU کارش را انجام دهد. بنابراین استفاده از OS میتوانست مانع رسیدن به این هدف شود.
او برنامهای را که نوشته بود زیاد مفید نمیدانست. پس از آن او برنامهاش را گسترش داد تا جایی که به یک سیستم عامل واقعی تبدیل شد. بیشتر افراد موفق از کارهای کوچک شروع میکنند اما همان را وسعت میبخشند. خطر شروع با کارهای بزرگ این است که ممکن است در یک دام همهجانبه بیفتید.
همچنین اینکه همهچیز را ندانید کاملاً طبیعی است. مبتدی بودن در شروع یادگیری هر فناوری جدیدی را بهراحتی بپذیرید اما بالهای خود را گسترش دهید و تا جایی که ممکن است سریعتر در آن حرفهای شوید.
نکته 8: شما باید کارتان را انجام دهید، هیچکس دیگری آن را برای شما انجام نمیدهد
Linus Torvalds میگوید: «من همواره کتابهای سیستم عامل را میخوانم. و کارهایم را خودم انجام میدهم.»
من هنوز منتظرم فرد موفقی را ببینم که هیچ کاری انجام نمیدهد.
اینکه فرض کنیم Linus فقط تصور میکرده که چگونه سیستم عامل خودش را بسازد، کار آسانی است اما درست نیست. او ملزومات کارش را انجام داد. در مصاحبهاش با موزه تاریخ، او میگوید که شروع کرد به تلاش برای شناخت برنامهای که ساخته بود، متوجه شد که این بیشتر شبیه یک سیستم عامل است و در کنار آن او کتابهای مربوط به سیستمهای عامل را میخواند.
هیچ چیزی جادویی نیست. شما باید ساعتها کار کنید تا در برنامهنویسی ماهر شوید.
کلیدهای موفقیت از زبان Linus Torvalds
- تحصیلات درزمینهٔ کامپیوتر بسیار عالی است اما اجازه ندهید که آن شمارا متوقف کند.
- عاشق کاری باشید که انجام میدهید. آن را بهخوبی انجام دهید ستایش مردم و پول را فراموش کنید آنها بعداً خواهند آمد.
- کاملاً قابلقبول است که در ابتدا با کارهای کوچک شروع کنید اما همواره با کارهای کوچک ادامه ندهید.
- خودتان را برای ساعتها کار سخت آماده کنید و بدانید که هیچ چیز جالبی آسان بهدست نمیآید.
نکات ارزشمند دیگری از سایر توسعهدهندگان باتجربه
من شخصاً دادههایی از بعضی مهندسان نرمافزار باتجربه کسب کردهام. آنها چه فکری درمورد اینکه شما میتوانید بهترین توسعهدهنده باشید، میکنند؟
نکته 9: هرکس دیگری هم میخواهد که بهترین باشد
Bill Sourour از دو دهه پیش تا امروز نرمافزار مینویسد. اگر شما کنجکاو شدید، مصاحبه او با Quincy Larson را در اینجا بخوانید.
من خلاصهای از گفتههای او را در اینجا آوردهام:
Bill Sourour میگوید: «پاسخ اساسی این است که خوب بودن در هرکاری که هر فرد دیگری هم میتواند آنرا انجام دهد مهم نیست، شما باید بهترین در کار خود باشید. این یعنی کد بنویسید، بخوانید، یاد بگیرید و هرروز و هر زمان کار کنید.»
در حرفهای Bill سؤال جالبتری هم هست و آن این است که چرا شما میخواهید در جهان بهترین باشید؟ چه چیزی شمارا به این هدف میرساند؟ آیا آن یک هدف واقعی است؟
چطور است برای این تلاش کنید که بهترین خودتان باشید و کاری به بقیه دنیا نداشته باشید؟
این همچنان به این معنی است که باید کارکنید اما با خودتان نیز رقابت کنید. اهداف خود را هر روز بسازید تا از آنچه دیروز بودهاید بهتر شوید و از آن فاصله بگیرید.
نکته 10: یادبگیرید که درمورد نرمافزار و چیزهای انتزاعی شفافتر فکر کنید.
Dave Ceddia بهعنوان مهندس نرمافزار در Boston کار میکند و تجربه زیاد او چیزی است که من همیشه به آن احترام میگذارم. این روزها او مشغول ساخت "frontend UIs" و نوشتن کتابی به نام Pure React است.
اگر کنجکاو شدید این آدرس وبلاگ اوست.
چند ماه پیش من با او قرار ملاقات داشتم و جزئیات پاسخهای او مرا سردرگم کرد.
افکار او را در زیر برای شما آوردهام:
1. در زمان درست، ماجراجوییهایی را کشف کنید که از بودن در معرض یادگیری چند زبان برنامهنویسی به وجود میآیند.
یادگیری چند زبان برنامهنویسی شمارا در معرض ایدههای جدید و روشهای جدید برخورد با مسائل قرار میدهد (مخصوصاً زبانهای کاربردی). بعدازآن زبانهای سطح پایینتر مثل C که به شما یاد میدهد درمورد مدیریت و عملکرد حافظه آگاه باشید را یاد بگیرید و چیزهایی زیادی بسازید.
2. پروژههای متفاوتی را انجام دهید
نوشتن کد UI (رابط کاربری) شبیه نوشتن کد دستیابی به دادههایی با عملکرد بالا نیست، یا شبیه نوشتن کد OpenGL نیست، شبیه برنامه socket نیست؛ بنابراین جالب است که از یک شاخه از توسعه مثل frontend/backend به شاخه دیگری از چیزها بروید فقط برای اینکه ببینید هرکدام از آنها به چه صورتی هستند.
3. تجربه زیادی کسب کنید
برای من بخشی از توسعهدهنده بودن، کسب تجربههای زیاد است. البته این فقط نظر من است. هرکسی جوابهای خودش را به این مسئله دارد. اما من فکر میکنم اینکه درمورد هر چیزی کمی بدانید، مفید است.
من خودم را یک ژنرال میدانم که عاشق یادگیری چیزهای جدید است و کارهای مختلف زیادی هم انجام دادهام. کد دستیابی به داده در ++C که به سختافزار کاربر مربوط است، GUIs در Qt، بازیهای کوچک در OpenGL، جاوا و SQL، برنامههای وب در Ruby on Rails، پروژههای کوچک Raspberry Pi مثل بازکننده در گاراژ و بسیاری چیزهای دیگر.
4. در خودکار سازی و تست نویسی ماهر شوید
در کنار این روش، سعی کنید در خودکار سازی چیزها ماهر شوید. من فکر میکنم که انگیزه خودکار سازی، عامل اجراکننده پشت بیشتر پروژههایی است که من انجام دادم و یک دلیل و انگیزه بزرگ برای یادگرفتن Linux و خطوط فرمان هم برایم بوده است.
به نظر میرسد که دانش خطوط فرمان مانند یک دستیار در درجه دوم اهمیت است، اما من فکر میکنم که واقعاً مهم است.
این روش برخورد شما با مسائل را تغییر میدهد
چیزهایی مثل این: «من باید اسامی متغیر این 30 فایل را تغییر دهم؟ اهمیتی ندارد...» آن را به چند خط از bash تبدیل کنید.
تنظیم چیزها آسانتر میشود چون از تمام دستورها استفاده میشود یا حداقل شما نقاط مشترکی بین آنها پیدا میکنید.
5. طراحی نرمافزار را درک کنید
سختترین چیز برای من درمورد ارتقادهی بهعنوان یک توسعهدهنده، معماری بیت است.
طراحی نرمافزار و چگونگی ساختار کد شما، استفاده مجدد از آن را امکانپذیر میکند و خواندن و اصلاح آن آسان میشود. در تولید مجدد و تست کردن مداوم کد ماهر شوید.
من باید قبول کنم که همیشه در تست کردن عالی نبودهام؛ اما TDD) Test driven development) واقعاً جالب است و شما باید آن را یاد بگیرید و تمرین کنید. من فکر میکنم که این ترتیبی از یک shortcut/system برای بهتر شدن درزمینهٔ طراحی توسعه نرمافزار است.
یکی از بهترین کتابهایی که من درمورد طراحی خواندهام Practical oo Design in Ruby نوشته Sandy Metz است. به شما توصیه میکنم آن را بخوانید.
نتیجهگیری
در این مقاله من سعی کردم تا بهترین موارد برای تبدیل شدن به بهترین برنامهنویس را برای شما بنویسم. بعد از این مقاله سعی کنید از این اصول استفاده کنید و برای اینکه توسعهدهنده بهتری شوید، تلاش کنید. باید برای انجام تمرینها هم تلاش کنید.
David Hansson سازنده Ruby on Rails میگوید: «اینکه یک درس مشابه را 10 بار بخوانید به شما کمک نمیکند. شما باید از منطقه امن خود خارج شوید.»
پس به عنوان نکته آخر به شما توصیه میکنم از منطقهی امن خود خارج شوید و برای بهترین شدن هر روز بیشتر و بیشتر تمرین و تلاش کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید