مقاله: خودآموز برنامه نویسی در ۱۰ سال

مهر ۱۸, ۱۳۹۱ توسط : سعید

توی سایت برنامه نویس مقاله ای دیدم که بسیار جالب بود. دوستانی که میخوان برنامه نویسی رو تازه شروع کنن حتما این مقاله رو بخونن. ازآقای عسگری هم به خاطر ترجمه روان این مقاله مفید تشکر میکنم.

——————————————————————

عنوان: خودآموز برنامه نویسی در ۱۰ سال

عنوان اصلی : Teach Yourself Programming in Ten Years

ترجمه: مهدی عسگری
نویسنده: Peter Norvig

خلاصه: در این مقاله Peter Norvig (نویسنده ی کتاب معروف هوش مصنوعی مورد استفاده در اکثر دانشگاه های جهان) در مورد پدیده و تب یادگیری سریع برنامه نویسی صحبت کرده و نشان می دهد که برای تخصص در برنامه نویسی بر خلاف کتاب های عامه پسند (آموزش در ۲۱ روز ، ۲۴ ساعت ، …) حداقل ۱۰ سال زمان و کار لازم است تا یک نفر به تخصص برسد (در هر رشته ای ، نه فقط یرنامه نویسی)

چرا همه این قدر عجله دارند ؟
تو هر کتاب فروشی که بروید ، کلی کتاب می بینید که می خواهند در چند ساعت یا چند روز به شما کامپیوتر یا برنامه نویسی یاد بدهند (از ویندوز و اینترنت گرفته تا ویژوال بیسیک و جاوا و …) من جستجوی زیر را در آمازون انجام دادم:

pubdate: after 1992 and title: days and
(title: learn or title: teach yourself)

یعنی کتاب هایی که از سال ۱۹۹۲ تا الان چاپ شده و در عنوانشان کلمات days و “یادگیری یا خودآموز” وجود دارد. نتیجه شامل ۲۴۸ مورد بود. (مترجم: اعداد و آمار منتشر شده در این مقاله مربوط به سال ۲۰۰۱ هستند. ) ۷۸ کتاب اول کتاب های مربوط به کامپیوتر بودند. عبارت days را با hours جایگزین کردم ؛ نتایج مشابه قبلی بود: ۲۵۳ مورد که ۷۷ تای اول در مورد کامپیوتر بودند. از ۲۰۰ کتاب صدر نتایج جستجو (در کل) ۹۶ درصد مربوط به کامپیوتر بود.
خلاصه این که یا مردم خیلی عجله دارند که در مورد کامپیوتر ها چیز یاد بگیرند یا هم که یادگیری کامپیوتر خیلی آسان تر از یادگیری چیزهای دیگر است. وگرنه هیچ کتابی در مورد بتهوون ، یا فیزیک کوانتوم یا حتی تربیت سگ ، در چند روز وجود ندارد.
خب ببینیم عنوانی مثل “آموزش پاسکال در ۳ روز” چه معنی ای دارد:

آموزش برنامه نویسی در ۱۰ سال
محققان (۱) نشان دادند که برای متخصص شدن در بسیاری از زمینه ها (از شطرنج گرفته تا آهنگ سازی ، اپراتوری تلگراف ، نقاشی ، نواختن پیانو ، شنا ، تنیس ، عصب شناسی ، …) حدود ۱۰ سال زمان لازم است. نکته ی مهم انجام کار پیوسته و با توجه است ، نه صرفا کاری را مدام تکرار کردن ، بلکه به چالش کشیدن خودتان با کارهایی که فراتر از توانایی فعلی تان است و تحلیل کارایی تان قبل و بعد از انجام ان کار و اصلاح اشتباهاتتان. و بعد تکرار کنید. و دوباره تکرار کنید. هیچ میانبری وجود ندارد: حتی موزارت که در ۴ سالگی اعجوبه ای در موسیقی بود ، ۱۳ سال طول کشید تا بتواند اولین کار حرفه ای و جهانیش را بسازد. گروه موسیقی بیتلز در سال ۱۹۶۴ با وارد شدن به صحنه ی موسیقی اکثر کارهایشان جزو کارهای محبوب (و به قولی “نامبر وان”) بودند ولی فراموش نکنید که اعضای گروه از سال ۱۹۵۷ در کلوب های کوچک لیورپول و هامبورگ فعالیت می کردند و اولین موفقیت بزرگشان (Sgt. Peppers) در سال ۱۹۶۷ عرضه شد. در یک مطالعه بر روی دانش آموزان در آکادمی برلین ، محققان اعضای برتر ، متوسط و پایین کلاس را مقایسه کرده و از آن ها پرسیدند که چقدر تمرین کرده اند:
همه (از هر سه گروه) نواختن را از حدود ۵ سالگی شروع کرده و در سال های اول هر کس به یک میزان فعالیت می کرد (حدود ۲ یا ۳ ساعت در هفته) اما در حدود ۸ سالگی تفاوت های واقعی نمایان شد. کسانی که در کلاس هایشان بهترین بودند ، بیش از بقیه تمرین می کردند: ۶ ساعت در هفته در سن ۹ سالگی ، ۸ ساعت در ۱۲ سالگی ، ۱۶ ساعت در ۱۴ سالگی و الی آخر تا سن ۲۰ که هفته ای بیش از ۳۰ ساعت کار می کردند. در سن ۲۰ سالگی افراد برتر نزدیک به ۱۰۰۰۰ ساعت از عمرشان را به تمرین گذرانده بودند. دانش اموزان رده بعدی حدود ۸۰۰۰ ساعت و دانش اموزان معمولی (معلمین موسیقی در آینده!) حدود ۴۰۰۰ ساعت.
شاید هم ۱۰۰۰۰ ساعت ان عدد جادویی باشد نه ۱۰ سال. به نظر ساموئل جانسون (۱۷۰۹-۱۷۸۴) زمان بیشتری لازم است: “برتری در هر رشته ای فقط با یک عمر کار به دست می آید و با قیمت کمتری قابل خرید نیست” و اما دستورالعمل من برای موفقیت در برنامه نویسی:

با در نظر گرفتن این موارد ، این سوال پیش می آید که صرفا با مطالعه ی کتاب چقدر می توانید یاد بگیرید. قبل از تولد اولین بچه ام ، تمام کتاب های “چگونه…” (How To…) را خواندم بودم و باز هم حس می کردم مبتدی ام. ۳۰ ماه بعد (پس از تولد دومین فرزندم) دیگر سراغ کتاب هایم نمی رفتم؛ به جایش به تجربه ی شخصی ام تکیه کردم که معلوم شد خیلی مفیدتر و مطمئن تر از هزاران صفحه کتاب هایی است که توسط متخصصین نوشته شده اند. آقای Fred Brooks در مقاله ی “No Silver Bullets” (2) طرحی سه بخشی برای پیدا کردن بهترین طراحان نرم افزار مشخص کرد:
۱- به طور سیستماتیک و هر چه زودتر طراحان برتر را مشخص کنید
۲- یک مربی حرفه ای به آن ها اختصاص دهید تا مسئول و مراقب کار باشد
۳- فرصت هایی را فراهم بیاورید که این افراد از طریق ارتباط و برانگیختن همدیگر ، رشد کنند
آلن پرلیس می گوید: “هر کسی می تواند حجاری یاد بگیرد: میکل آنژ باید یاد می گرفت چطور این کار را نکند. در مورد برنامه نویسان بزرگ هم همینطور است”
باشه ، بروید و ان کتاب جاوا را بخرید؛ احتمالا به دردتان بخورد ولی زندگی تان یا تخصصتان در کل در طول ۲۴ ساعت ، روز یا حتی ماه تغییر چندانی نخواهد کرد.

(۱) :
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.
(۲) http://citeseer.nj.nec.com/context/7718/0

ضمیمه: انتخاب زبان
چندین نفر از من پرسیدند که کدام زبان برنامه نویسی را باید اول یاد بگیرند. هیچ جواب قطعی ای وجود ندارد ، اما به نکات زیر توجه کنید:

با توجه به این سه مورد ، توصیه ی من برای اولین زبان برنامه نویسی ، پایتون یا Scheme است. البته اگر سنتان تک رقمی است توصیه می کنم از Alice یا Squeak شروع کنید. مهم ترین چیز این است که انتخاب کرده و شروع کنید.

نظر مترجم: (translator notes)
مقاله ی آقای Norvig الان با وجود گذشت فقط ۸ سال از نگارش ، جزو مقالات کلاسیک محسوب می شود. بعضی از قسمت ها با توجه به گذر زمان مطمئنا قدیمی هستند (مثل زبانی با قابلیت coroutine) و زبانی امروزی مثل F#‎ اکثر قسمت هایی را که ایشان روی آن ها تاکید دارند پشتیبانی می کند (شاید برای این بخش بهتر باشد به نصیحت Don Syme خالق F#‎ گوش کنیم که می گوید حتما Haskell,Prolog, F#‎ , Python و سی شارپ را یاد بگیرید) ولی نکته ای که هست و هیچ وقت غبار زمان به خودش نمی گیرد این است که به صرف خواندن چند کتاب و پاس کردن چند ترم درس و چند هزار خط کد نوشتن ، کسی حرفه ای نمی شود و اگر می خواهیم در دنیای به شدت پویای نرم افزار زنده بمانیم ، باید حاضر باشیم عمرمان را (درست) صرف شغلمان کنیم.
متن اصلی : http://www.norvig.com/21-days.html
ایمیل مترجم: mehdi.asgari@yahoo.com

لینک مقاله در سایت برنامه نویس

بازدید : ۱۲۴۷۸

محسن
مهر ۱۹, ۱۳۹۱ @ ۱۱:۴۰ ق.ظ

با سلام و درود
از مطالب مفیدتون خیلی سپاسگزارم
لطفا آموزش ساده از ایجاد pagination رو بزارید هرچی میگردم یه چیزی که قابل فهم برای من مبتدی باشه پیدا نمیکنم
پیشاپیش تشکر و قدردانی فراوان

پاسخ دادن
    دی ۳, ۱۳۹۲ @ ۱۰:۱۵ ق.ظ

    سلام دوست عزیز
    این موضوع کار ساده ایه
    شما فقط باید بتونی با اعداد و ارقام صفحاتت که از تقسیم تعداد کل رکوردات بر تعدادی که میخوای از اون رکوردات در هر صفحه نمایش داده بشه مقدار limit رو در کوئری مشخص کنی
    LIMIT n , n+qty
    n: شماره صفحه منهای یک ضربدر تعداد رکوردت در صفحه
    qty: همون تعدادی که میخوای در صفحه نشون بدی

    پاسخ دادن
ali786
مهر ۱۹, ۱۳۹۱ @ ۱۲:۳۱ ب.ظ

سلام
این جمله خیلی چسبید : “یادگیری سطحی ، چیز خطرناکی است”
عالی بود ، ممنون

پاسخ دادن
    طاهر
    مهر ۲۳, ۱۳۹۱ @ ۲:۵۶ ب.ظ

    دقیقا موافقم

    پاسخ دادن
مهر ۱۹, ۱۳۹۱ @ ۹:۵۲ ب.ظ

عالی بود

پاسخ دادن
طاهر
مهر ۲۳, ۱۳۹۱ @ ۲:۵۶ ب.ظ

بینظیر بود . واقعا ممنون

پاسخ دادن
آبان ۲۳, ۱۳۹۱ @ ۴:۲۵ ب.ظ

سلام
مقاله مفیدی بود
سپاس

پاسخ دادن
آبان ۲۸, ۱۳۹۱ @ ۳:۳۱ ب.ظ

عالی بود.

پاسخ دادن
حسن
آذر ۱۲, ۱۳۹۱ @ ۱۲:۰۸ ب.ظ

مطلب جالبی بود. ارزش خوندن داشت.متشکرم

پاسخ دادن
حمید
دی ۱۱, ۱۳۹۱ @ ۱۱:۲۹ ب.ظ

یادگیری سطحی ، چیز خطرناکی است…
کاش این جمله رو ۱۰ سال پیش درک می کردم.

پاسخ دادن
سامان
بهمن ۱۳, ۱۳۹۱ @ ۴:۳۲ ب.ظ

این مقاله، قبل از اینکه برای سایت برنامه نویس معروف باشه، یک مقاله معروف از یک فرد معروفه.

پاسخ دادن
اسفند ۲۵, ۱۳۹۱ @ ۱۲:۳۲ ب.ظ

خوب بود

پاسخ دادن
فروردین ۱۸, ۱۳۹۳ @ ۶:۳۹ ب.ظ

من هم یک جا یک مطلب خوندم که درباره ی عمر برنامه نویسان صحبت می کرد و می گفت که مگر یک برنامه نویس چندسال می تواند کار کند؟
من خودم به شخصا از الان که ۱۶ساله ام (از چند سال پیش) شروع کردم ولی بیشتر افراد و برنامه نویس های دور و برم حدود ۲۵ ساله هستند. اگر قرار باشه ۱۰ سال وقت بذاریم که دیگه عمری نمیمونه.
البته به نظر من این مطلب کاملا منطقیه و کاریش نمیشه کرد 😀

پاسخ دادن
    سعید
    فروردین ۲۰, ۱۳۹۳ @ ۸:۱۴ ق.ظ

    سلام
    شما اگه ۱۰ سال کار کنید تازه میشید ۲۵ یا ۲۶ ساله. پس در اوج جوانی یه برنامه نویس حرفه ای میشین.
    البته این نکته رو هم باید اضافه کنم که فقط ۱۰ سالی که گفتن کافی نیست به قول یکی دیگه از بزرگان برنامه نویسی باید بیشتر از ۱۰ هزار ساعت با یک زبان برنامه نویسی کار کرده باشید تا به شما حرفه ای گفته بشه.
    موفق باشید

    پاسخ دادن
آذر ۷, ۱۳۹۳ @ ۱:۴۹ ب.ظ

خوب بخ نظر من در مورد برنامه نویسی ، اون دسته از کتابها که میگن در ۲۴ ساعت امکانش هست ولی…

برای اون افراد که یه دوره ۱۰ ساله تو یکی از زبانهای اصلی رو سپری کنن

به عنوان مثال اگر فرد تو سی پ پ متخصص باشه میتونه تو ۲۴ ساعت مطالعه پی در پی جاوا رو هم یاد بگیره

(نظر شخصیم بود البطه)

با تشکر از مقاله خوبتون

پاسخ دادن
مرتضی.س
شهریور ۱۹, ۱۳۹۴ @ ۴:۵۲ ب.ظ

اصلا مقاله خوبی نبود یعنی باید یک عمر جون بکنم تا تازه یه زبون یاد بگیرم؟ من خودم c++ رو تو سه روز یاد گرفتم الآن ۳ ماه هست سرگرم هستم و برنامه نویسی میکنم.پس اگر بخوام یه برنامه نویس خوب بشم باید موهام رنگ دندونام بشه واقعا مقاله بسیار خنده داری بود.

پاسخ دادن
محمد
شهریور ۱۹, ۱۳۹۴ @ ۱۰:۴۶ ب.ظ

سلام
مطلب شما بیشتر جنبه ناامید کردن افراد رو داره تا …
یادگیری قواعد و سینتکس یک زبان مثل php شاید پیش از دو هفته وقت نبره
ولی تسلط و حرفه ای شدنو تونایی حل مسایل زمان میبره و باید زیاد با زبان کار کنید تا تجربه کسب کنید
البته پس ازدوماه کار با یک پی اچ پی راحت میشه یک سیستم پیشرفته نوشت
ولی اون ده سال منظورش تسلطه
یعنی زود و بدون فکر برنامه بنویسی

پاسخ دادن
محمد شریفی
دی ۴, ۱۳۹۴ @ ۳:۱۱ ب.ظ

مطلب بسیار جالبی بود.ممنون از سایت خوبتون
بنده موافق تمرین بسیار هستم چون تا ذهن انسان به چالش نیفته چیزی یاد نمی گیره/

پاسخ دادن

پاسخ دهید

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


*