عنوان اصلی : Teach Yourself Programming in Ten Years
ترجمه: مهدی عسگری
نویسنده: Peter Norvig
خلاصه: در این مقاله Peter Norvig (نویسنده ی کتاب معروف هوش مصنوعی مورد استفاده در اکثر دانشگاه های جهان) در مورد پدیده و تب یادگیری سریع برنامه نویسی صحبت کرده و نشان می دهد که برای تخصص در برنامه نویسی بر خلاف کتاب های عامه پسند (آموزش در 21 روز ، 24 ساعت ، ...) حداقل 10 سال زمان و کار لازم است تا یک نفر به تخصص برسد (در هر رشته ای ، نه فقط یرنامه نویسی)
چرا همه این قدر عجله دارند ؟
تو هر کتاب فروشی که بروید ، کلی کتاب می بینید که می خواهند در چند ساعت یا چند روز به شما کامپیوتر یا برنامه نویسی یاد بدهند (از ویندوز و اینترنت گرفته تا ویژوال بیسیک و جاوا و ...) من جستجوی زیر را در آمازون انجام دادم:
pubdate: after 1992 and title: days and
(title: learn or title: teach yourself)
یعنی کتاب هایی که از سال 1992 تا الان چاپ شده و در عنوانشان کلمات days و "یادگیری یا خودآموز" وجود دارد. نتیجه شامل 248 مورد بود. (مترجم: اعداد و آمار منتشر شده در این مقاله مربوط به سال 2001 هستند. ) 78 کتاب اول کتاب های مربوط به کامپیوتر بودند. عبارت days را با hours جایگزین کردم ؛ نتایج مشابه قبلی بود: 253 مورد که 77 تای اول در مورد کامپیوتر بودند. از 200 کتاب صدر نتایج جستجو (در کل) 96 درصد مربوط به کامپیوتر بود.
خلاصه این که یا مردم خیلی عجله دارند که در مورد کامپیوتر ها چیز یاد بگیرند یا هم که یادگیری کامپیوتر خیلی آسان تر از یادگیری چیزهای دیگر است. وگرنه هیچ کتابی در مورد بتهوون ، یا فیزیک کوانتوم یا حتی تربیت سگ ، در چند روز وجود ندارد.
خب ببینیم عنوانی مثل "آموزش پاسکال در 3 روز" چه معنی ای دارد:
محققان (1) نشان دادند که برای متخصص شدن در بسیاری از زمینه ها (از شطرنج گرفته تا آهنگ سازی ، اپراتوری تلگراف ، نقاشی ، نواختن پیانو ، شنا ، تنیس ، عصب شناسی ، ...) حدود 10 سال زمان لازم است. نکته ی مهم انجام کار پیوسته و با توجه است ، نه صرفا کاری را مدام تکرار کردن ، بلکه به چالش کشیدن خودتان با کارهایی که فراتر از توانایی فعلی تان است و تحلیل کارایی تان قبل و بعد از انجام ان کار و اصلاح اشتباهاتتان. و بعد تکرار کنید. و دوباره تکرار کنید. هیچ میانبری وجود ندارد: حتی موزارت که در 4 سالگی اعجوبه ای در موسیقی بود ، 13 سال طول کشید تا بتواند اولین کار حرفه ای و جهانیش را بسازد. گروه موسیقی بیتلز در سال 1964 با وارد شدن به صحنه ی موسیقی اکثر کارهایشان جزو کارهای محبوب (و به قولی "نامبر وان") بودند ولی فراموش نکنید که اعضای گروه از سال 1957 در کلوب های کوچک لیورپول و هامبورگ فعالیت می کردند و اولین موفقیت بزرگشان (Sgt. Peppers) در سال 1967 عرضه شد. در یک مطالعه بر روی دانش آموزان در آکادمی برلین ، محققان اعضای برتر ، متوسط و پایین کلاس را مقایسه کرده و از آن ها پرسیدند که چقدر تمرین کرده اند:
همه (از هر سه گروه) نواختن را از حدود 5 سالگی شروع کرده و در سال های اول هر کس به یک میزان فعالیت می کرد (حدود 2 یا 3 ساعت در هفته) اما در حدود 8 سالگی تفاوت های واقعی نمایان شد. کسانی که در کلاس هایشان بهترین بودند ، بیش از بقیه تمرین می کردند: 6 ساعت در هفته در سن 9 سالگی ، 8 ساعت در 12 سالگی ، 16 ساعت در 14 سالگی و الی آخر تا سن 20 که هفته ای بیش از 30 ساعت کار می کردند. در سن 20 سالگی افراد برتر نزدیک به 10000 ساعت از عمرشان را به تمرین گذرانده بودند. دانش اموزان رده بعدی حدود 8000 ساعت و دانش اموزان معمولی (معلمین موسیقی در آینده!) حدود 4000 ساعت.
شاید هم 10000 ساعت ان عدد جادویی باشد نه 10 سال. به نظر ساموئل جانسون (1709-1784) زمان بیشتری لازم است: "برتری در هر رشته ای فقط با یک عمر کار به دست می آید و با قیمت کمتری قابل خرید نیست" و اما دستورالعمل من برای موفقیت در برنامه نویسی:
با در نظر گرفتن این موارد ، این سوال پیش می آید که صرفا با مطالعه ی کتاب چقدر می توانید یاد بگیرید. قبل از تولد اولین بچه ام ، تمام کتاب های "چگونه..." (How To…) را خواندم بودم و باز هم حس می کردم مبتدی ام. 30 ماه بعد (پس از تولد دومین فرزندم) دیگر سراغ کتاب هایم نمی رفتم؛ به جایش به تجربه ی شخصی ام تکیه کردم که معلوم شد خیلی مفیدتر و مطمئن تر از هزاران صفحه کتاب هایی است که توسط متخصصین نوشته شده اند. آقای Fred Brooks در مقاله ی "No Silver Bullets" (2) طرحی سه بخشی برای پیدا کردن بهترین طراحان نرم افزار مشخص کرد:
1- به طور سیستماتیک و هر چه زودتر طراحان برتر را مشخص کنید
2- یک مربی حرفه ای به آن ها اختصاص دهید تا مسئول و مراقب کار باشد
3- فرصت هایی را فراهم بیاورید که این افراد از طریق ارتباط و برانگیختن همدیگر ، رشد کنند
آلن پرلیس می گوید: "هر کسی می تواند حجاری یاد بگیرد: میکل آنژ باید یاد می گرفت چطور این کار را نکند. در مورد برنامه نویسان بزرگ هم همینطور است"
باشه ، بروید و ان کتاب جاوا را بخرید؛ احتمالا به دردتان بخورد ولی زندگی تان یا تخصصتان در کل در طول 24 ساعت ، روز یا حتی ماه تغییر چندانی نخواهد کرد.
(1) :
Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.
Bryan, W.L. & Harter, N. "Studies on the telegraphic language: The acquisition of a hierarchy of habits. Psychology Review, 1899, 8, 345-375
Chase, William G. & Simon, Herbert A. "Perception in Chess" Cognitive Psychology, 1973, 4, 55-81.
(2) http://citeseer.nj.nec.com/context/7718/0
ضمیمه: انتخاب زبان
چندین نفر از من پرسیدند که کدام زبان برنامه نویسی را باید اول یاد بگیرند. هیچ جواب قطعی ای وجود ندارد ، اما به نکات زیر توجه کنید:
با توجه به این سه مورد ، توصیه ی من برای اولین زبان برنامه نویسی ، پایتون یا Scheme است. البته اگر سنتان تک رقمی است توصیه می کنم از Alice یا Squeak شروع کنید. مهم ترین چیز این است که انتخاب کرده و شروع کنید.
نظر مترجم: (translator notes)
مقاله ی آقای Norvig الان با وجود گذشت فقط 8 سال از نگارش ، جزو مقالات کلاسیک محسوب می شود. بعضی از قسمت ها با توجه به گذر زمان مطمئنا قدیمی هستند (مثل زبانی با قابلیت coroutine) و زبانی امروزی مثل F# اکثر قسمت هایی را که ایشان روی آن ها تاکید دارند پشتیبانی می کند (شاید برای این بخش بهتر باشد به نصیحت Don Syme خالق F# گوش کنیم که می گوید حتما Haskell,Prolog, F# , Python و سی شارپ را یاد بگیرید) ولی نکته ای که هست و هیچ وقت غبار زمان به خودش نمی گیرد این است که به صرف خواندن چند کتاب و پاس کردن چند ترم درس و چند هزار خط کد نوشتن ، کسی حرفه ای نمی شود و اگر می خواهیم در دنیای به شدت پویای نرم افزار زنده بمانیم ، باید حاضر باشیم عمرمان را (درست) صرف شغلمان کنیم.