خودآموز برنامه نویسی در 10 سال - قسمت دوم
دوشنبه 6 آذر 1391 10:56 AM
به برنامه نویسی علاقه داشته باشید. اطمینان حاصل کنید که انقدر از برنامه نویسی لذت میبرید که حاضر باشید 10 سال از عمرتان را صرفش کنید!
* به برنامه نویسی علاقه داشته باشید. اطمینان حاصل کنید که آنقدر از برنامه نویسی لذت میبرید که حاضر باشید 10 سال از عمرتان را صرفش کنید.
* با برنامه نویسان دیگر ارتباط داشته باشید. کد برنامههای دیگر را مطالعه کنید. این خیلی مهمتر از هر کتاب یا دوره آموزشی است.
* برنامه بنویسید. بهترین نوع آموزش، انجام دادن است. در واقع حداکثر سطح کارآیی برای افراد در هر رشتهای، به طور خودکار با تجربه بیشتر حاصل نمیشود بلکه نیاز به تلاش تعمدی برای بهبود دارد.
* میتوانید تحصیلاتتان را در دانشگاه هم ادامه بدهید. این کار باعث میشود از رشتهتان درک عمیقتری به دست آورده و همچنین به کارهایی مشغول شوید که نیاز به مدرک دانشگاهی دارند. البته اگر از مدرسه و درس لذت نمیبرید، میتوانید تجربه مشابهی را در کار کسب کنید (البته با تلاش بیشتر)Eric Raymond در دیکشنری هکرها میگوید: "مطالعه و تحصیلات آکادمیک در رشته کامپیوتر یک شخص را تبدیل به یک برنامه نویس حرفهای نمیکند، همانطور که یک فرد فقط با مطالعه رنگ و قلممو نمیتواند نقاش شود". یکی از بهترین افرادی که در عمرم استخدام کردم (Jamie Zawinski) ، فقط تا دبیرستان درس را ادامه داده بود؛ با این وجود این شخص نرم افزارهای خیلی خوبی تولید کرده (موزیلا و xemacs ) و گروه خودش را در googlegroups دارد.
* روی پروژههای تیمی کار کنید. در بعضی از پروژهها بهترین و در بعضی دیگر بدترین برنامهنویس باشید. وقتی بهترین هستید تواناییهای خودتان به عنوان یک رهبر گروه را تست کرده و به دیگر افراد الهام میدهید. وقتی هم که بدترین باشید یاد میگیرید که حرفهایها چه کار میکنند و همچنین چه کارهایی را دوست ندارند انجام دهند (چون این کارها را میسپارند به شما!)
* روی پروژههای دیگران کار کنید. برنامههایی که دیگران نوشتند را مطالعه کنید. سعی کنید باگهای برنامههای دیگران را رفع کنید. به این فکر کنید که چطور برنامههایتان را طراحی کنید که کار کسانی که میخواهند آن را نگهداری کنند آسانتر شود.
* کلی زبان برنامه نویسی یاد بگیرید. یک زبان که از شی گرایی و کلاسها پشتیبانی کند (مثل جاوا یا سی پلاس پلاس)، یک زبان تابعی (مثل لیسپ یا ML ) (م: یا Haskell ) ، یک زبان اعلانی (مثل پرولوگ یا قالب ها در سی پلاس پلاس)، یک زبان که از coroutine ها پشتیبانی کند1 (مثل Scheme یا Icon ) (م: امروزه زبان های دیگری از جمله سی شارپ هم coroutine را دارند) و یک زبان که از برنامه نویسی موازی پشتیبانی کند (مثل Sisal ) (م: و Erlang
* یادتان باشد که ما با کامپیوتر سر و کار داریم. بدانید که چقدر طول می کشد تا کامپیوترتان یک دستورالعمل را اجرا کند، یک کلمه را از حافظه واکشی کند (در هر دو حالت وجود و نبودش در کش)، کلماتی متوالی را از دیسک بخواند، یا به یک مکان از دیسک برود (seek)(م: منظور نویسنده آشنایی با معماری کامپیوتر است. آقای Stroustrup خالق سی پلاس پلاس هم روی این نکته تاکید دارند)
* درگیر استاندارد سازی یک زبان شوید. حالا میتواند ++ANSI C باشد یا استاندارد شخصیتان برای کدنویسی (مثلا این که برای تورفتگی از 2 فاصله استفاده کنید یا 4 تا) در هر حال یاد میگیرید که بقیه چه چیزهایی را در یک زبان دوست دارند و همینطور علت این دوست داشتن را.
با در نظر گرفتن این موارد ، این سوال پیش می آید که صرفا با مطالعه کتاب چقدر میتوانید یاد بگیرید. قبل از تولد اولین بچهام ، تمام کتابهای "چگونه..." (How To…) را خواندم بودم و باز هم حس میکردم مبتدیام. 30 ماه بعد (پس از تولد دومین فرزندم) دیگر سراغ کتابهایم نمیرفتم؛ به جایش به تجربه شخصیام تکیه کردم که معلوم شد خیلی مفیدتر و مطمئنتر از هزاران صفحه کتابهایی است که توسط متخصصین نوشته شدهاند. آقای Fred Brooks در مقاله "No Silver Bullets" (2) طرحی سه بخشی برای پیدا کردن بهترین طراحان نرم افزار مشخص کرد:
1- به طور سیستماتیک و هر چه زودتر طراحان برتر را مشخص کنید
2- یک مربی حرفهای به آن ها اختصاص دهید تا مسئول و مراقب کار باشد
3- فرصت هایی را فراهم بیاورید که این افراد از طریق ارتباط و برانگیختن همدیگر ، رشد کنند
باشه ، بروید و ان کتاب جاوا را بخرید؛ احتمالا به دردتان بخورد ولی زندگی تان یا تخصصتان در کل در طول 24 ساعت ، روز یا حتی ماه تغییر چندانی نخواهد کرد.
1- نظر مترجم: با توجه امکانات زبانهای امروزی، شاید برای این بخش بهتر باشد به نصیحت Don Syme خالق F# گوش کنیم که میگوید حتما Haskell,Prolog,F# , Python و سی شارپ را یاد بگیرید.
مدیر تالار های: