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

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


لوگوی دات نتاین روزها آیکون ویژوال استادیو را در دسکتاپ خیلی ها می توان دید. اولین فکری که بعد از دیدن این آیکون در دسکتاپ طرف به فکر شما می رسد این است که او به احتمال زیاد برنامه نویس دات نت است. اما باید بدانید که برنامه نویس دات نت بودن فقط داشتن آیکون ویژوال استادیو بر روی دسکتاپ نیست. من یک نفر را می شناسم که ویژوال استادیو را فقط به اسم «سی شارپ» می شناسد و اصلاً نمی داند دات نت فریم ورک چیست و در حال حاضر هم برنامه های بانک اطلاعاتی می نویسد! برای اینکه یک نفر خود را برنامه نویس دات نت بداند، باید حداقل اطلاعاتی در مورد دات نت فریم ورک، کلاس های پایه آن، ابزارهای توسعه آن و زبان های برنامه نویسی آن بداند. هر کسی که در زمینه دات نت برنامه نویسی می کند و خود را توسعه دهنده دات نت می داند، باید حداقل مهارت های زیر را داشته باشد :

1 : دید شیء گرا داشته باشد و با قوانین Objected Oriented Programming به خوبی آشنا باشد. دات نت به صورت پیش فرض برنامه نویس را درگیر مباحث شیء گرایی می کند. به همین دلیل اگر کسی با شیء گرایی آشنایی نداشته باشد نمی تواند برنامه های خوبی بنویسد یا در دات نت پیشرفت کند. یک برنامه نویس دات نت باید بتواند برنامه خود را توسط کلاس ها و با استفاده از مفاهیم کپسوله سازی، ارث بری، چندریختی و اینترفیس ها بنویسد تا توسعه و تغییر آن در دراز مدت ساده و کم هزینه باشد. بر همین اساس او باید :

  • با namespace و scope کلاس ها آشنایی داشته باشد
  • تفاوت یک کلاس Partial و یک کلاس معمولی را بداند
  • مفهوم کلاس های abstract را درک کند و توانایی نوشتن interface را داشته باشد
  • بتواند با استفاده از کلمات کلیدی private، public، protected، internal و internal protected دسترسی به کلاس ها را کنترل کند
  • فرق کلاس و متد استاتیک و غیر استاتیک را بداند
  • با مفاهیم overload و override در تعریف متدها آشنایی داشته باشد

2 : با ویژگی های یکی از زبان های برنامه نویسی دات نت به خوبی آشنا باشد. دانستن ویژگی های یک زبان برنامه نویسی هم در تسریع کدنویسی و هم در استاندارد کد نوشتن به یک برنامه نویس کمک زیادی می کند. بر همین اساس او باید :

  • با تمام data typeهای یک زبان آشنا باشد و به موقع از آن ها استفاده کند
  • بتواند مفاهیم شیء گرایی را با استفاده از ویژگی های زبان پیاده سازی کند
  • با مفاهیم Boxing و Unboxing و Type Casting آشنا باشد
  • با روش های مستند سازی کد در آن زبان آشنا باشد

3معماری دات نت فریم ورک : با معماری دات نت فریم ورک آشنایی داشته باشد. یک برنامه نویس دات نت هر چقدر هم که خوب کد بنویسد، اگر نداند برنامه اش چطور و توسط چه عامل هایی اجرا و کنترل می شود یک جای کارش می لنگد! باید بداند دات نت فریم ورک شامل یک کتابخانه کلاس های پایه است که خود آن شامل رابط کاربری، کلاس های دسترسی به داده و اتصال به دیتابیس، الگوریتم های کدگذاری، ارتباطات شبکه و وب اپلیکیشن است که استفاده به جا از این کلاس ها، سرعت توسعه یک پروژه را افزایش می دهند. باید بداند برنامه های نوشته شده با دات نت در یک محیط زمان اجرا به نام CLR یا Common Language Runtime اجرا و مدیرت می شوند. باید بداند CLR وظیفه مدیریت حافظه و هندل کردن استثنا ها را نیز بر عهده دارد. بر همین اساس او باید :

  • مفهوم اسمبلی (Assembly) در دات نت را بداند
  • با ساختار فایل های اجرایی دات نت آشنا باشد
  • با کلاس های پایه دات نت آشنایی لازم را داشته باشد
  • با Garbage Collector و نحوه مدیریت حافظه در دات نت آشنا باشد
  • با قابلیت Reflection در دات نت آشنایی داشته باشد
  • بداند GAC چیست و چه کاری انجام می دهد

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

  • با پنجره های مختلف ویژوال استادیو و مفاهیم آن ها آشنایی کامل داشته باشد
  • بتواند یک پروژه موجود را کامپایل و اجرا کند
  • بتواند فایل های جدیدی را به پروژه اضافه کند
  • بتواند از Toolbox ویژوال استادیو کنترل های مورد نیاز خود را پیدا کند و کنترل های جدیدی را به آن اضافه کند
  • بتواند با ادیتور کد ویژوال استادیو کار کند و کدهای مورد نظر خود را پیدا کند
  • بتواند یک برنامه را با استفاده از ابزارهای ویژوال استادیو Debug کند (منوی Debug)
  • تفاوت میان اجرا در حالت Debug و اجرا در حالت Release را بداند
  • تفاوت ساختار پروژه های Windows Application، Console Application، Class Library، ASP.NET Web Application و ASP.NET Web Service Application را بداند
  • تفاوت Solution و Project را بداند و بتواند چند پروژه را در یک Solution مدیرت کند

توسعه دهندگان برنامه های مبتنی بر دیتابیس باید :

  • بر روی مفاهیم و نحوه پیاده سازی دیتابیس و رابطه های میان جدول های اطلاعاتی و زبان SQL تسلط داشته باشد
  • با معماری ADO.NET و کلاس های پایه آن آشنا باشد
  • بداند ORM چیست و چه مشکلاتی را حل می کند
  • حداقل با یکی از ORMهای دات نت مثل LINQ to SQL، NHibernate یا Entity Framework آشنا باشد
  • با DataSet و نحوه استفاده ازکنترل های مربوط به دیتابیس مثل DataGrid آشنا باشد
  • با ساختار فایل های XML آشنایی داشته باشد و بتواند یک فایل XML را پردازش کند

توسعه دهندگان برنامه های مبتنی بر وب (ASP.NET) باید :

  • تفاوت های عمومی یک برنامه دسکتاپ و یک برنامه تحت وب را بداند
  • بداند PostBack چیست و چه کاربردهایی دارد
  • بداند متدهای استاندارد POST و GET در ASP.NET چگونه پیاده سازی شده اند
  • با ViewState آشنایی داشته باشد، وظیفه آن را بداند و بداند چه مواقعی کاربرد دارند
  • با ساختار فایل web.config آشنایی لازم را داشته باشد
  • تفاوت میان کنترل های تحت سرور و کنترل های HTML و تحت کلاینت را بداند
  • با زبان جاوا اسکریپت آشنایی لازم را داشته باشد
  • Lifetime یک برنامه ASP.NET را درک کند
  • با کوکی ها آشنا باشد و بتواند از آن ها استفاده کند
  • بتواند با استفاده از Session یک سیستم لاگین طراحی کند
  • بتواند تفاوت یک وب سرویس و یک وب اپلیکیشن را توضیح دهد

farasun.wordpress.com

این مطلب فقط نظر من در مورد حداقل دانسته های یک برنامه نویس دات نت است. شما ممکن است نظر دیگری داشته باشید و یا بخواهید آیتم هایی را به این لیست اضافه کنید. خوشحال می شوم نظر شما را هم بدانم. من تمام سعی خودم رو کردم تا مطلبم با مطلب Scott Hanselman فرق کند، این مطلب را من از نظر خودم نوشتم و هدفم با هدف آقای Hanselman کاملاً متفاوت است.

11 نظر برای “حداقل مهارت های یک برنامه نویس دات نت!

  1. ایمان خیلی مطلب کامل و عالی‌ای نوشتی!
    این قسمت حرف دل خیلی‌هاست این روزا: « من یک نفر را می شناسم که ویژوال استادیو را فقط به اسم “سی شارپ” می شناسد و اصلاً نمی داند دات نت فریم ورک چیست و در حال حاضر هم برنامه های بانک اطلاعاتی می نویسد!»

  2. http://funnylogo.info/engines/Google/Red/P30Tim.aspx
    سلام وبلاگ خوبی داری من که با مطالبت خیلی حال کردم دوست دارم ازشون تو وبلاگم استفاده کنم با ذکر منبع ممنون میشم اجازه بدی خبرشو برام میل بزن

    TNX

    http://www.p30tim.com

    قسمت ارسال نظرتم با مشکل مواجه شده انگار یه چک بکن

  3. خیلی مطلب مفیدی بود،ولی بهتر بود می گفتی چطور میشه این مهارت ها را کسب کرد یا حد اقل چند تاش رو توضیح میدادی تا مطلبت مفید تر بشه.یا اصلا همینجا شروع کن به توضیح دادن تا دل ملتی را شاد کنی.چون این مشکلات که گفتی مال خیلی هاست.

    1. سلام آقای افشار، درسته اما خیلی ها همین ها را هم نمی دانند و خودشون رو برنامه نویس دات نت می دونند. به نظرم اگر کسی به مباحث بالا مسلط باشه می تونه به خودش بگه برنامه نویس دات نت!

  4. با سلام خدمت تمامی دوستان عزیز
    آقا ایمان ممنون از نوشته های بسیار زیباتون، راستش من 5 ساله برنامه نویسی C#.net می کنم ولی چیزی که هست تازه 8 ماه به فکر این افتادم که با framework و خیلی چیز های دیگه آشنایی پیدا کنم .
    بعد یه سوال داشتم اگه از using ها استفاده نکنم و بطور مستقیم کدها رو درون برنامه کامل تایپ کنم آیا در سرعت تاثیر داره حتا در حد می ثانیه چون برام مهم هست ، این هم برای این میگم چون وقتی داشتم framework می خوندم متوجه شدم که درون قسمت metadata فایل های کتاب خانهای حذف شده و اطلاعات کلاس ها و توابع درون فایل metadata قرار گرفته و بطور مستقیم از آنها استفاده شده . قبل از هر چیزی باز از شما تشکر میکنم به خاطر مطالب جالب و زیباتون انشاالله که همیشه شما و تمامی جوانان ایرانی در زمینه های خود موفق و پیروز باشند .

  5. سلام من می خوام سی شارپ کار کنم تازه شروع کردم تو باشگاه مهندسین ایران لینک این سایتم یکی از بچه های باشگاه گذاشته بود که به اینجا سر زدم
    راستش یه مطلبی هست می خوام واقعا یکی کمکم کنه راهنماییم کنه
    من الان که تصمیم گرفتم یاد بگیرم بااین همه مطلب جلو روم واقعا سردرگم می شم نمی دونم از کجا شروع کنم چجوری شروع کنم خب باید یه نقطه شروعی باشه
    کی می تونه راهنماییم کنه

بیان دیدگاه