ورود

View Full Version : چرا برنامه نویس؟؟



mehdi zanjani
شنبه 12 فروردین 1391, 22:26 عصر
کم و بیش تعدادی از بچه های سایت یکی از دغدغه هایی که دارن اینه که چرا حرفه ای نمیشن تو اکثر تاپیک هایی که در این مورد بحث میشه شرکت میکنن و خیلی علاقه مند هستن که بدونن چجوری میشه برنامه نویس شد و باید از کجا شروع کرد!!!!
تو اکثرا تاپیک ها در مورد چگونگی برنامه نویس شدن صحبت میشه ولی وقتی یکم ریزتر بشیم میبینیم طرح این سوال که چرا برنامه نویس نمیشیم درست تره چرا پیشرفت ما کندتره و چرا هیچ وقت نمیتونیم مسائلی که قبلا حل نشده رو حل کنیم (به استثنای اساتید محترم)!!!

چرا بعضی ها با اینکه چند ساله سی شارپ کار میکنن ولی این احساس رو دارن که هنوز برنامه نویس نشدن یا همون حرفه ای نشدن!!

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

mehdi zanjani
شنبه 12 فروردین 1391, 22:32 عصر
اولین مشکلی که 1 برنامه نویس میتونه داشته باشه اینه که حس کنجکاوی نداشته باشه و این فاجعه است!! برنامه نویس از چالش فرار میکنه از Error های پپی در پی فرار میکنه برنامه نویس از حل 1 مسئله ی جدید فرار میکنه!
ولی چرا واقعا اینطوریه؟؟

کاظم فلاحی خواه
شنبه 12 فروردین 1391, 23:26 عصر
برنامه نوشتن به عشق و علاقه نیاز داره باید عاشق باشی تا بتونی از فرار کردن از خطاها و .. جلوگیری کنی . برای اینکار باید یک پروژه ی شخصی بلند مدت با زبان مورد نظر را ایجادکنید طوری که هر روز دوست داشته باشید اون رو ویرایش خطا یابی و .. کنید هر هفته نسخه ای جدید ازش تهیه کنید .

کاظم فلاحی خواه
شنبه 12 فروردین 1391, 23:40 عصر
من خودم در شهرستانی در جنوب استان کرمان زندگی می کنم نه رشته ی کامپیوتر هستم نه معلم داشتم فقط یک کتاب ساده ای که اون هم 40 صفحه از ویژوال بیسیک 6 توضیح داده بود فقط ویژوال بیسیک بلد بودم اون هم فقط کار با متغیر ها و دستور شرطی if را بلد بودم با همین اطلاعات کم دو سال پیش برنامه ی نوشتم عین ماشین حساب ویندوز XP ، اصلا اون موقع اینترنت نداشتم و بلد نبودم با آن کار کنم ، و کافی نت هم فقط دو بار مراجعه کردم بار اول اینترنت را یاد گرفتم بار دوم دانلود کتاب PDF . تو این دو سال کمتر از 6 برنامه بیشتر ننوشتم و با خودم می گفتم چرا نمی تونم 16 زبان برنامه نویسی را یاد بگیرم !!!!!!؟؟؟؟؟؟(داشتن هدف)
بعد از مدتی از برنامه نویسی دور شدم هر کار می کردم نمی تونستم برنامه بنویسم اصلا حوصله ی برنامه نوشتنو نداشتم امّا با یک نظریه ی مفید پایه ی برنامه نویسی رو برای خودم ایجاد کردم به نظر من هر کس از برنامه نویسان باید توجه داشته باشه که برنامه ی شخصی بزرگ و بدرد بخور برای مشکلات جامعه ، برنامه ای که در آینده بتونه دوستای برنامه نویستو دور خود و برنامه ات جمع بشن و اون رو گسترش بدن . این بهترین چیز هست .

C#.net
یک شنبه 13 فروردین 1391, 00:26 صبح
در حقیقت ویژگی های مختلفی رو باید داشت تا یک برنامه نویس موفق بود، چیزی که معمولا در نظر گرفته نمیشه توانایی حل مساله هست، اینکه شما چه قدر تسلط روی یه تکنولوژی مثل دات نت و یه زبان مثل سی شارپ داشته باشید، دلیل نمی شه توانایی حل مسائل رو هم داشته باشید، در حقیقت توانایی حل مساله کاملا مستقل از تسلط تکنولوژیک شما هست.

حالا بیاید این توانایی حل مساله رو که تاکید زیادی روش دارم رو یه مقدار باز کنیم؛ می تونیم اون رو به دو بخش مستقل تفکیک کنیم:

1- توانایی و بهره هوشی ذاتی در حل مسائل پیچیده
2- توانایی حل مسائل مربوط به domain یا زمینه پروژه(مثلا سیستم انبارداری، حسابداری، مدیریت منابع، کنترل محتوا و ...)

در بخش 2 با کسب تجربه کاری در پروژه های مختلف این توانایی تقویت می شه، مثلا اگه شما 6 ماه در یه پروژه مدیریت محتوا (CMS) مشغول به کار بشید و قدری! استعداد برنامه نویسی داشته باشید، خیلی از مسائل رو دستتون میاد چجوری هندل کنید و تو پروژه های آتی می تونید به سرعت این دست مسائل رو حل کنید(مثلا نحوه مدیریت موضوعات داغ)

اما در مورد بخش 1، شما هر چقدر هم در یک دومین تسلط داشته باشید و اونو بشناسید، گاهی اوقات به بن بست هایی می رسید که معمولا نمی تونید با اتکا به تجربه اون ها رو حل کنید(مگر اینکه قبلا عینا به همچین مورد برخورده باشید)، مثلا به علت ضعف طراحی، یه سری اطلاعات در سیستم ذخیره نشده! (یه مورد که واسه خودم پیش اومده این بود که تو سیستم اطلاعات اینکه یک فیش برای پرداخت چه اقلامی خرج شده ثبت نشده بود و گزارشش رو کارفرما می خواست! (ضعف در تحلیل نیازمندی ها و ندیدن روز بعد از فردا!)) و شما باید ازش استفاده کنید! تو اینجور موارد باید از خلاقیت و توانایی های ذاتی و استعداد های تحلیل مسائل پیچیده استفاده کنید که اکتسابی نیست! ولی قابل تقویت هست.

حالا سوال اینه، اگه کسی توانایی 1 رو نداشت باید چی کار کنه؟ باید به فکر کار دیگه ای باشه؟
جواب منفیه، تو یه تیم نرم افزاری لازم نیست همه خلاق باشن، کارهای مهمی دیگه ای هم هستند که نیاز به این خلاقیت نداره و اساسا با توانایی حل مسائل حوزه دومین می تونید برنامه نویس خوبی باشید، چیزی که لازمه، توجه و درک عمیق از سیستم برای کسب تجارب ارزشمندتر هست. داشتن توانایی 1 شرط لازم (اصولا و نه الزاما!) برای پذیرفتن نقش هایی مثل تحلیل گر سیستم، معمار و طراح نرم افزار هست، اما با داشتن توانایی 2 شما می تونید یک برنامه نویس ارشد حرفه ای و مدیر پروژه(به معنای واقعی و نه مرسوم(معنای مرسوم یعنی طراح و معمار و برنامه نویس و آچار فرانسه!)) خوبی باشید.

یه مورد دیگه هم که خیلی مهم هست اینه: توجه به عمق مفاهیم، این که شما برنامتون رو با سی شارپ می نویسین دلیل نمی شه برنامه نویسی آبجکت اورینتد رو هم بلد باشید! (صرف این که متدها اتومات تو یه کلاس تعریف می شن دلیل بر OOP بودن نیست!) باید OOP رو یاد گرفت، مستقل از زبان برنامه نویسی باید روش حل مسائل رو به صورت OOP بلد بود.
یا اینکه صرفا وقتی با VS.Net 2010 برنامه می نویسید و برنامتون رو با فریم ورک 4 می نویسید، دلیل نمی شه شما به دات نت 4 رو بلدید! باید ببینید از فریم ورک 1.1 تا 4.5 چه تغییراتی صورت گرفته که این همه نسخه منتشر شده.
الان تو بخش پرسش ها می بینید خیلی ها که مطمئنم از ویژوال استودیو 2008 به بالا استفاده می کنند و فریمورکشون از 3.5 به بالا هست، هنوز از sqlcommand استفاده می کنند! بدون توجه به اینکه استفاده از یک ORM مثلل LinqtoSql , EF یا Nhibernate چقدر می تونه کارشون رو ساده تر کنه! (به ویژه LinqtoSql که از فریمورک 3 به اینور در دسترس هست و خیلی هم ساده هست)
توصیه آخر هم اینکه هر نکته و ویژگی جدید رو مثلا تو سی شارپ یاد می گیرید، فکر کنید ببینید چطور می شه ازش استفاده کرد و کاربردش چی می تونه باشه و ....
عمیق باشید، زبان انگلیسیتون رو تقویت کنید و از گوگل برای درک عمق مفاهیم کمک بگیرید، از همین حالا شروع کنید:

چرا برنامه نویسی سه لایه؟ (https://www.google.com/search?q=what+is+the+benefit+of+3+tire+design&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#hl=en&client=firefox-a&hs=I45&rls=org.mozilla:en-US%3Aofficial&sclient=psy-ab&q=what+are+the+benefits+of+3+tier+architecture&oq=what+are+the+benefits+of+3+tier+architecture&aq=f&aqi=&aql=&gs_l=serp.3...35607l40792l2l40959l12l12l0l0l0l4l38 6l3135l2-8j3l11l0.frgbld.&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=f934d54fe7db24fb&biw=1266&bih=764)

چرا از ORM استفاده کنیم؟ (https://www.google.com/search?q=Why+Should+You+Use+an+ORM%3F&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)

آموزش برنامه نویسی آبجکت اورینتد (https://www.google.com/search?q=oop+toturial&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#hl=en&client=firefox-a&hs=BSl&rls=org.mozilla:en-US:official&sa=X&ei=_2l3T9_IA4qU0QX_lvWvDQ&ved=0CB0QvwUoAQ&q=oop+tutorial&spell=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=f934d54fe7db24fb&biw=1266&bih=764)

mehdi zanjani
یک شنبه 13 فروردین 1391, 01:37 صبح
برای اینکه برنامه نویس شد باید اشتباه کرد باید آزمون و خطاهای زیادی انجام داد و این کار جز پشتکار و سماجت چیزه دیگه ای نمیخواد ما ایرانی ها مشکلمون دقیقا همینه شروع میکنیم ولی اگه زود به نتیجه نرسیدیم زود رها میکنیم چون نتیجه برای ما از همه چیز مهم تره زود به خروجی مورد نظر برسیم!! راه حل این مشکل چیه؟؟

طرز فکر برنامه نویس و اینکه چجور به مسئله نگاه میکنه میتونه خیلی به حل مسئله کمک کنه و راه حل این قضیه الگوریتم!! اکثر برنامه نویس های ما قبل از شروع کد نویسی و نوشتن 1 کد مسئله رو روی کاغد نمیارن و طرح و برنامه ای واسه اون ندارن و این باعث تولید خطاهای زیادی میشه که همین باعث میشه برنامه نویس زود خسته شه و رها کنه مسئله رو!

mehdi zanjani
یک شنبه 13 فروردین 1391, 01:45 صبح
برنامه نوشتن به عشق و علاقه نیاز داره باید عاشق باشی تا بتونی از فرار کردن از خطاها و .. جلوگیری کنی . برای اینکار باید یک پروژه ی شخصی بلند مدت با زبان مورد نظر را ایجادکنید طوری که هر روز دوست داشته باشید اون رو ویرایش خطا یابی و .. کنید هر هفته نسخه ای جدید ازش تهیه کنید .

خب این خیلی خوبه ولی 1 ایراد خیلی کوچولو داره!!!!

اونم اینه که ذهن برنامه نویس محدود به 1 پروژه میشه که اکثرا هم کار با دیتابیس اصلا تمام دغدغه برنامه نویس های ما فقط همین دیتابیس و کار با اونه چون مشتری در 90 درصد پروژه ها همین رو از برنامه نویس میخواد و برنام نویس هم فقط درگیر همین مسئله است و سعی نمیکنه از این حوضه خارج بشه!!

majidrezaei2007
یک شنبه 13 فروردین 1391, 01:50 صبح
کاملا با نظر C#.Net عزیز موافقم . توانایی حل مسئله مهمترین ویژگی برای تبدیل شدن به یک برنامه نویس خوب هست . کسی که اونو نداشته باشه قطعا برنامه نویس نخواهد شد . برنامه نویس شدن یک استعداده که طرف باید اونو داشته باشه تا در کنار علاقه ، کنجکاوی و تمرین بتونه اونو شکوفا کنه . کسی که استعدادش رو نداره همون بهتر که سراغش نره

mehdi zanjani
یک شنبه 13 فروردین 1391, 01:50 صبح
مشکل دیگه ای که برنامه نویس های ما دارن اینه که از ابزاری که دارن خوب استفاده نمیکنن 1 مثال خیلی ساده میزنم!!! Intellisence ویژگی فوق العاده ای که خیلی از ما راحت فراموشش میکنیم.

1 2 روز پیش 1 پستی زدم در مورد کتابخانه ی Moq که حتی بازدید کننده هم نداشت چون ما از Unit Test ویژوال استودیو استفاده نمیکنیم حتی شایدم نمیدونیم همچین ابزاری تو ادیتوری که ازش استفاده میکنیم هست یا نه!!!

mehdi zanjani
یک شنبه 13 فروردین 1391, 01:54 صبح
کاملا با نظر C#.Net عزیز موافقم . توانایی حل مسئله مهمترین ویژگی برای تبدیل شدن به یک برنامه نویس خوب هست . کسی که اونو نداشته باشه قطعا برنامه نویس نخواهد شد . برنامه نویس شدن یک استعداده که طرف باید اونو داشته باشه تا در کنار علاقه ، کنجکاوی و تمرین بتونه اونو شکوفا کنه . کسی که استعدادش رو نداره همون بهتر که سراغش نره

هوش و استعداد 1 چیز اکتسابیه ولی آیا برنامه نویسی هم 1 چیز اکتسابیه ؟؟
قطعا اینطور نیست هر کسی با هر ضریب هوشی میتونه برنامه نویس کنه به شرط اینکه علاقه داشته باشه پشتکار داشته باشه!!

hadiroosta
جمعه 01 اردیبهشت 1391, 09:38 صبح
به نظر من مشکل ما انگیزه است و تا زمانی که کپی رایت در کشور عزیز ما رعایت نمیشه هیچکس انگیزه نوشتن برنامه را نداره اگر این قانون رعایت میشد
بعد ازنوشتن برنامه حس رقابت ما را در این عرصه جلو میبرد
چرا ما به قوانینی که در جهان تائید شده احترام نمیگزاریم ؟
مگر ما ادعای فرهنگ 2500 ساله نداریم ؟
اگر ما همه خواهان اجرای این قانون باشیم مجریان قانون نیز این را میفهمند!!!