همواره ايميل هاى زيادى بدستم رسيده است كه مى پرسند: بهترين راه يادگيرى ASP.NET چيست؟ يا اينكه براى يادگيرى ASP.NET از كجا بايد شروع كنيم؟ و سوالاتى از اين قبيل. در اين مقاله سعى كرده ام كه تجربيات خودم را در اين زمينه با شما در ميان بگذارم و احتمالاً بتوانم جوابى كاربردى و عملى به اين سوال بدهم. سوالى كه احتمالاً شما هم به دنبال جواب آن هستيد.

به نظر من به تعداد انسانها، راه براى يادگيرى ASP.NET هست! شوخى نمى كنم، جدى مى گويم. به نظر من هر شخصى روش يادگيرى خودش را دارد. فرقى هم نمى كند كه بخواهيد ASP.NET ياد بگيريد يا آشپزى يا هر چيز ديگري. شما همانطور كه اگر بخواهيد آشپزى ياد بگيريد ممكن است از كتاب، كلاس، سعى و خطا، تجربه و حتى از وب استفاده كنيد، براى ASP.NET و اصولا هر چيز ديگرى هم ممكن است از همين ابزار و راهها استفاده كنيد.

چيزى كه من مى خواهم بگويم توضيح واضحات است. اما چون خيلى ها سوال مى كنند ناچارم اشاره اى به اين موضوع داشته باشم. به نظر من بيشتر، افراد مبتدى و تازه كار هستند كه نياز دارند كه پاسخ اين سوال را بدانند چون كسانى كه به نوعى ASP.NET را ياد گرفته اند يا با آن آشنا هستند خود مى دانند كه چه كار بايد بكنند و چگونه ياد بگيرند.


كتاب

خيلى از افراد سوال مى كنند كه مثلا كدام كتاب خوب است؟ به عقيده من براى يك فرد تازه كار كه مى خواهد با الفباى كار آشنا شود، هر كتابى در زمينه آموزش مقدماتى و كليات ASP.NET خوب و مفيد است. حتى بسيارى از كتابهاى تخصصى هم فصلهاى اوليه خود را به آموزش و مرور مقدمات ASP.NET تخصيص مى دهند. پس دنبال كتاب خاصى نباشيد. اولين كتابى را كه بدست آورديد بنشينيد و بخوانيد. بالاخره هر كتابى هر چند سطح پائين هم كه باشد آنقدر مطلب دارد كه يك تازه كار را براى مدتها به خود مشغول كند.

حرفه‎اى ترها هم كه خود مى دانند دنبال چه هستند و چه كتابى به كارشان مى خورد. دقت داشته باشيد كه متاسفانه سطح كتابها جهت استفاده حرفه‎اى ها بسيار پائين است به گونه‎اى كه آنها معمولاً كتاب مورد نظر خود را نمى توانند پيدا نمى كنند. لابد نويسندگان فكر مى كنند كه حرفه‎اى ها نيازى به كتاب ندارند و آنقدر توانا هستند كه يا خودشان فكر كنند يا مطلب شان را در وب پيدا كنند. چيزى كه بحث بخش بعدى اين مقاله است.

به هرحال آنقدر در كتابهاى آموزشى ASP.NET در مورد فرم هاى وب و نحوه استفاده از ADO.NET براى ارتباط با بانك اطلاعاتى و XML گفته اند كه هيچگاه در مورد چگونگى طراحى ساختار و لايه هاى خود برنامه يا سايت چيزى گفته نشده است. مقوله اى كه بدون آن معمارى را مى ماند كه آجر و سنگ و سيمان دارد اما نقشه ندارد.


سايتهاى آموزشى

ابزار بعدى، استفاده از سايتهاى آموزشى موجود در وب هست. باور كنيد كه برخى مطالب ذكر شده در سايتهاى آموزشى را هيچ وقت در هيچ كتابى نخواهيد يافت و اصولا آنها هيچوقت چاپ نمى شوند. بخصوص زمانى كه داريد وارد قلمرو حرفه اى مى شويد. با بكارگيرى گوگل، اين گونه سايتها هيچوقت براى شما مخفى يا ناشناخته نمى مانند. به شرطى كه در انتخاب كليد واژه‎ى جستجوى خود دقت كنيد.

سايتى مثل W3Schools و بخش آموزش سريع يا QuickStart مايكروسافت مى توانند منابع خوبى از جنس دوره هاى آموزشى باشند. اما انتظار نداشته باشيد كه در ديگر سايتهاى آموزشى/مقاله‎اى ASP.NET بتوانيد دوره هاى منظم و مرحله به مرحله‎ى كلاسيك و جزوه اى پيدا كنيد. بيشتر سايتها پر هستند از مقاله هاى رنگارنگ و متنوع كه لزوما وحدت موضوعى نداشته و صرفاً برحسب نياز خود برنامه نويسان تهيه شده اند. من اينگونه سايتها و مطالب را براى دوران پس از مقدماتى توصيه مى كنم.

بيشتر اين سايتها داراى خبرنامه الكترونيكى رايگان مى باشند. با عضويت در آنها و دريافت مرتب تيتر مطالب شان، آنها را زير نظر بگيريد و اگر مقاله‎اى داشتند كه به كار شما مى خورد، به سراغش رفته و استفاده كنيد. اين مساله سبب مى شود كه شما مجبور نباشيد كه همواره به آن سايتها سر بزنيد يا همه مطالب شان را بخوانيد و يا احتمالا مقاله‎ى مفيدى را از دست بدهيد. از اين رو ست كه همواره بر داشتن خبرنامه‎ى الكترونيكى براى سايتها و عضويت افراد در آنها تاكيد شده است. خوشبختانه سايت IranASP.NET هم از همان روزهاى آغازين اين مهم را سرلوحه كار خود قرار داده است. دقت داشته باشيد كه شما هر چه جلوتر برويد و حرفه‎اى تر شويد، وقت كمترى براى مطالعه و يادگيرى خواهيد داشت. بخصوص اگر به حدى برسيد كه درگير يك كار يا پروژه هم بشويد!


كلاس

كلاس هاى آموزشى هم مى توانند مفيد باشند. به گونه اى كه در مدت زمان كوتاهى سرنخ مطالب جديدى را به شما مى دهند و گاهاً ممكن است مطلبى را مطرح كنند كه شما هيچ وقت در حالت خودآموزى به آن برخورد نكنيد. به كلاسهاى آموزشى صرفا به عنوان نقطه شروع نگاه كنيد و نه چيز ديگر. هيچ كلاسى نمى تواند ادعا كند كه شما را يك ماهه يا بيشتر به يك برنامه نويس حرفه اى وب تبديل مى كند كه اگر ادعا كرد خود معيار خوبى است جهت ميزان صداقت گردانندگان آن كلاس و سطح آن.

معمولاً شما نمى توانيد قبل از تشكيل يك كلاس به ميزان مفيد بودن آن براى يادگيريتان پى ببريد. هر چقدر هم از گردانندگان آن سوال كنيد، آنها آنقدر كلمات فنى و قلمبه سلمبه بلد هستند كه شما فكر كنيد بيسواد مطلق هستيد. نمى گويم كه همه‎ى كلاس ها اينگونه هستند و يا اينكه شما بدون تحقيق و بررسى به هر كلاسى برويد. اما مى گويم كه اندكى هم ريسك پذير باشيد چون ممكن است از هزينه و وقت تان آنگونه كه انتظار داشته باشيد در پايان كلاس بهره نبرده باشيد. اين را كاريش نمى توان كرد و از ملزومات كار است كه البته اشكالى هم ندارد و همين مساله خود براى شما نكته‎ى آموزشى خواهد شد اگرچه در زمينه ASP.NET هم نباشد!

از ديگر فوايد كلاس مى توان به امكان پيدا كردن دوست و يا همكار و مهم تر از همه پروژه اشاره نمود. خيلى از همكارهاى كارى و پروژه اى مى تواند از درون همين كلاس ها رقم بخورد چه براى دانشجويان چه براى شخص مدرس!


زبان زبان زبان

بله، زبان البته از نوع انگليسى آنقدر مهم است كه سه بار در عنوان اين بخش تكرار شود. اين را من براى شما كه فارسى زبان هستيد مى گويم. شما نمى توانيد يك برنامه نويس وب باشيد اما زبان انگليسى بخصوص در زمينه خواندن يا همان Reading را بلد نباشيد. چون شما نمى توانيد همه مطالب خود كه هيچ بلكه حتى كسرى از آن را هم به زبانى غير از انگليسى پيدا كنيد.

شما براى خواندن و يادگيرى به زبان نياز داريد. همه‎ى كتابها انگليسى هستند و آنهايى هم كه مثلاً ترجمه فارسى شده اند را خيلى جدى نگيريد. آنها بيشتر بدرد ناشرشان مى خورد و كمى هم مترجم شان و نه شما. شما بايد اصطلاحات را به شكل انگليسى شان ياد بگيريد و نه ترجمه هاى من در آوردى و عجيب و غريب فارسي. كتابهاى فارسى در اين زمينه را اغلب كسانى ترجمه مى كنند كه به نوعى ماشين ترجمه هستند و حتى ممكن است ندانند كه آنچه را ترجمه كرده اند به چه دردى مى خورد.

خوشبختانه مطالب فنى كامپيوترى نمى توانند داراى متون پيچيده و سخت انگليسى باشند. عمده‎ى كلمات كه اسامى خاص و اصطلاحات فنى هستند و بقيه هم افعال و كلمات ساده و معمولى زبان مى باشند. پس شما قرار نيست كه نمايشنامه‎ى شكسپير را بخوانيد.

همچنين شما براى برنامه نويسى تان و انتخاب اسامى متغيرها، كلاس ها و متدهاى مورد نيازتان بايد بتوانيد اسامى با مسمايى را انتخاب كنيد. شما بايد بتوانيد شرح يا كامنتى هر چند كوچك در لابلاى خطوط برنامه تان بنويسيد تا كد برنامه شما به يك غول دست نيافتنى تبديل نشود. شما بايد بتوانيد خيلى از برنامه هاى از پيش نوشته شده را بخوانيد و بفهميد. معنا و مفهموم اسامى انتخاب شده براى كلاس ها و متدها از ديد زندگى روزمره به فهم بيشتر شما از آن برنامه كمك مى كند. همه‎ى اينها با دانستن زبان انگليسى ميسر است.

پس لطفاً قبل از ياد گرفتن ASP.NET و يا اينكه چگونه بايد از ADO.NET استفاده كرد از زبان خود مطمئن شويد. اگر ضعيف هستيد اول آن را تقويت كنيد و بعداً بيائيد.


پيش نياز

توجه داشته باشيد كه جهت يادگيرى ASP.NET كه يك تكنولوژى جهت ساخت برنامه هاى تحت وب است و نه يك زبان برنامه نويسى، شما به پيش نيازهاى زياد و متنوعى نياز داريد. باز تكرار مى كنم كه ASP.NET تكنولوژى است نه زبان برنامه نويسي. مفاهيم و مسائل زيادى جهت به كارگيرى اين تكنولوژى مورد نياز است. بدون تسلط و نه صرفاً اطلاع از آنها شما نمى توانيد ASP.NET را ياد بگيريد. مواردى كه به ذهنم مى رسد را در زير فهرست وار به اطلاع شما رسانده ام. اگرچه ممكن است ليست كاملى نباشد ولى حداقل مهم ترها را دارد.

- شما بايد يك برنامه نويس كامپيوتر باشيد.
- شما بايد بر مفاهيم شئ گرايى مسلط باشيد.
- شما بايد يكى از زبانهاى خانواده ++C يا Visual Basic را بدانيد.
- شما بايد بانك اطلاعاتى و زبان SQL را بدانيد.
- شما بايد مفاهيم وب و برنامه نويسى وب را بدانيد.
- شما بايد كار با محيط هاى Visual را بدانيد.
- شما بايد IIS را بشناسيد و فرق وب سايت و Virtual Directory و تنظيمات آن را بدانيد.
- شما بايد يك ويندوز-سرور كار خوب باشيد.
- كمى هم شناخت و ذوق هنرى در طراحى صفحات و گرافيك وب داشته باشيد.
- ...
- شما بايد عاشق مايكروسافت باشيد!


بهترين راه يادگيرى ASP.NET
حالا مى خواهم به اصل سوال پاسخ دهم. شما داريد از يك فوت كوزه گرى نه چندان مخفى مطلع مى شويد. راه هاى مختلف را گفتم اما حالا مى خواهم بهترين آن را بگويم. بهترين راه يادگيرى ASP.NET چيست؟

پاسخ: كار

شما از موارد فوق تنها مى توانيد مقدمات را ياد بگيريد يا اينكه گوش و چشم تان را با واژه هايى آشنا كنيد. براى ملكه شدن دانسته هايتان و حرفه‎اى بودن تان بايد كار كنيد. يعنى اينكه بايد برنامه بنويسيد. بايد درگير كار يا پروژه اى شويد. بايد زور بزنيد و درگير باشيد. بايد نيازمند باشيد. اگر از سر سيرى يا صرفاً براى پُز دادن دنبال چيزى هستيد مطمئن باشيد چيزى ياد نمى گيريد مگر به اندازه همان پُز دادن.

شما نياز داريد كه همه چيز را حتى مقدمات را هم عملاً و شخصاً تجربه كنيد. اين مى توانيد از طريق تعريف پروژه هاى من درآوردى شخصى باشد يا يك كار تجارى واقعي. شما بايد در حين كار شلاق بخوريد تا فولاد آبديده شويد! هيچ چيز بجز يك كار جدى و واقعى نمى تواند به شما چيز ياد بدهد. اين چيزى است كه خود من به شخصه تجربه كرده ام. در اين چند سال كتاب و سايتهاى فراوانى را خواندم و مقالات زيادى را نوشتم اما هيچ يك به اندازه‎ى يك پروژه جدى سنگين به من آموزش نداد. بعبارت ديگر همه آن خواندنها لازم هستند ولى كافى نيستند. دوباره دقت كنيد: لازم هستند. بيهوده نيستند. اما كافى هم نيستند.