eshpilen
پنج شنبه 02 تیر 1390, 21:11 عصر
این منبع، دانش و مهارت های عمومی ای رو که یک برنامه نویس برای کامل بودن باید داشته باشه لیست کرده. موارد رو بصورت سطح بندی شده از مبتدی/ناشی تا کاملا حرفه ای لیست کرده:
http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
بنده الان همش رو خوندم. بنظرم جمع آوری و طبقه بندی نسبتا کامل و دقیقی هست.
قبلا هم نظیر چنین جداولی رو دیده بودم اما فکر میکنم این یکی تعادل بهتری داره و نه خیلی سخت و تخصصی هست و نه خیلی ساده.
مسلما کسی تمام دانش و بینش و مهارت های ذکر شده در این جدول رو داره که سالهای زیادی بصورت حرفه ای روی برنامه نویسی مطالعه و کار کرده باشه. یعنی یه آدم که در شغل/تخصص خودش به حد بالایی از کمال رسیده. پس واقعا نمیشه انتظار داشت جز معدودی از افراد تمام این دانش ها و مهارتها رو داشته باشن.
البته معمولا در هر سطر این جدول یک ستون آخر یا دو ستون آخر جزو مهارت های بالا هستن و کمتر از اون رو بنظرم دیگه هرکسی باید داشته باشه تا بتونه خودش رو یه برنامه نویس بدونه، چون برای توانایی طراحی و نوشتن خیلی از برنامه ها دانش و مهارتهایی پایه و ضروری هستن.
تنها نقصی که بنده فکر میکنم این جدول داشته باشه یه مقدار درمورد الگوریتم ها هست. ابداع و تحلیل الگوریتم و اینکه طرف در چه سطحی از قدرت ابداع و تحلیل الگوریتم هست و مثلا آیا به الگوریتم های علمی یا درگیر با ریاضیات پیشرفته احاطه داره و میتونه روی چنین پروژه هایی کار کنه یا نه.
خلاصه زیاد از جزییات الگوریتم صحبت نکرده، درصورتیکه الگوریتم یک شالودهء علم رایانه و برنامه نویسی هست.
البته من مطمئن نیستم، ظاهرا بین برنامه نویسان و افرادی که تخصص چشمگیر در طراحی و تحلیل الگوریتم های پیشرفته دارن (نه الگوریتم های استاندارد) اغلب تفاوت قائل میشن و شاید این چیزا رو یه جورایی جزو تعریف تخصص استاندارد یک برنامه نویس عادی نمیدونن. شاید تفاوت در اینجا مثل تفاوت میان یک دانشمند و یک مهندس هست. یک دانشمند باید مبنای تئوریک کامل و عمیق و گسترده ای داشته باشه، ولی تخصص و وظیفهء یک مهندس فقط درحد بکارگیری حرفه ای راهکارهای موجود و دانش و مهارت داشتن درحد درک کلی و دانستن خصوصیات و موارد کاربرد و ترکیب و استفادهء بجای اونهاست و اینکه بتونه الگوریتم های مشابه در سطح عادی و استاندارد رو تحلیل یا ابداع بکنه.
راستی یه چیز دیگه هم که بنظرم باید جزو موارد مورد بررسی قرار میداشت، بحث امنیت بود. مثلا دانستن انواع حمله ها و روشهای جلوگیری از اونها. بخصوص در زمینهء برنامه نویسی وب (بنظرم در زمینهء دسکتاپ و بطور کلی برنامه های ایزوله و تک کاربر که دارای ارتباطات شبکه ای یا اینترنتی نیستن بحث امنیت و دفاع دربرابر حمله ها خیلی کمتر گسترده/مهم هست).
بطور مثال به مبحث رمزنگاری اصلا اشاره نکرده که میتونست از جنبه های مختلفش در هر دو مبحث الگوریتم و امنیت مطرح بشه.
http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
بنده الان همش رو خوندم. بنظرم جمع آوری و طبقه بندی نسبتا کامل و دقیقی هست.
قبلا هم نظیر چنین جداولی رو دیده بودم اما فکر میکنم این یکی تعادل بهتری داره و نه خیلی سخت و تخصصی هست و نه خیلی ساده.
مسلما کسی تمام دانش و بینش و مهارت های ذکر شده در این جدول رو داره که سالهای زیادی بصورت حرفه ای روی برنامه نویسی مطالعه و کار کرده باشه. یعنی یه آدم که در شغل/تخصص خودش به حد بالایی از کمال رسیده. پس واقعا نمیشه انتظار داشت جز معدودی از افراد تمام این دانش ها و مهارتها رو داشته باشن.
البته معمولا در هر سطر این جدول یک ستون آخر یا دو ستون آخر جزو مهارت های بالا هستن و کمتر از اون رو بنظرم دیگه هرکسی باید داشته باشه تا بتونه خودش رو یه برنامه نویس بدونه، چون برای توانایی طراحی و نوشتن خیلی از برنامه ها دانش و مهارتهایی پایه و ضروری هستن.
تنها نقصی که بنده فکر میکنم این جدول داشته باشه یه مقدار درمورد الگوریتم ها هست. ابداع و تحلیل الگوریتم و اینکه طرف در چه سطحی از قدرت ابداع و تحلیل الگوریتم هست و مثلا آیا به الگوریتم های علمی یا درگیر با ریاضیات پیشرفته احاطه داره و میتونه روی چنین پروژه هایی کار کنه یا نه.
خلاصه زیاد از جزییات الگوریتم صحبت نکرده، درصورتیکه الگوریتم یک شالودهء علم رایانه و برنامه نویسی هست.
البته من مطمئن نیستم، ظاهرا بین برنامه نویسان و افرادی که تخصص چشمگیر در طراحی و تحلیل الگوریتم های پیشرفته دارن (نه الگوریتم های استاندارد) اغلب تفاوت قائل میشن و شاید این چیزا رو یه جورایی جزو تعریف تخصص استاندارد یک برنامه نویس عادی نمیدونن. شاید تفاوت در اینجا مثل تفاوت میان یک دانشمند و یک مهندس هست. یک دانشمند باید مبنای تئوریک کامل و عمیق و گسترده ای داشته باشه، ولی تخصص و وظیفهء یک مهندس فقط درحد بکارگیری حرفه ای راهکارهای موجود و دانش و مهارت داشتن درحد درک کلی و دانستن خصوصیات و موارد کاربرد و ترکیب و استفادهء بجای اونهاست و اینکه بتونه الگوریتم های مشابه در سطح عادی و استاندارد رو تحلیل یا ابداع بکنه.
راستی یه چیز دیگه هم که بنظرم باید جزو موارد مورد بررسی قرار میداشت، بحث امنیت بود. مثلا دانستن انواع حمله ها و روشهای جلوگیری از اونها. بخصوص در زمینهء برنامه نویسی وب (بنظرم در زمینهء دسکتاپ و بطور کلی برنامه های ایزوله و تک کاربر که دارای ارتباطات شبکه ای یا اینترنتی نیستن بحث امنیت و دفاع دربرابر حمله ها خیلی کمتر گسترده/مهم هست).
بطور مثال به مبحث رمزنگاری اصلا اشاره نکرده که میتونست از جنبه های مختلفش در هر دو مبحث الگوریتم و امنیت مطرح بشه.