PDA

View Full Version : گفتگو: تعیین اولویت ها و مرزهای برنامه نویسی



Programmer 1
جمعه 03 خرداد 1392, 18:46 عصر
سلام دوستان،

بنده قصد دارم در زمینه برنامه نویسی دات نت، تحت ویندوز و متمرکز بر دسکتاپ برنامه نویسی کنم. ولی اولویت موضوعات برای من کمی گیج کننده است مخصوصا در شرایط خاص ما ایرانی ها! ،
مثلا به نظرتون این ترتیب یادگیری چه جوری هستش؟
C#.Net
Wpf
MVVM
TSQL
SQL Server Management

قصد دارم ضمن اینکه از بازار عقب نمونم و در شرکت های خصوصی حرفی برای گفتن داشته باشم، یک برنامه نویس اصول گرا و مرتب و اهل متد های خوب توسعه نرم افزار هم باشم؟

حالا داشتم مبحث MVVM رو مطالعه میکردم یه جایی به unit testing برخورد کردم؟ آمازون رو سرچی زدم، کتاب The art of unit testing رو دانلود کردم شروع کردم به مطالعه، اول هاش خوب بود ولی به یه جاهایی رسید که نیاز به درک خوبی از OOP داشت، فهمیدم که در oop ضعف دارم. به فکر افتادم که مطالعاتی در زمینه oop داشته باشم، کتاب رو کمی جلوتر رفتم به TDD رسیدم، در این مورد هم کتاب های مختلفی نوشته شده کم کم به متد های اسکرام و Agile و فلسفه Lean و این چیزها رسیدم.
همین حالت در زمینه SQL و سایر مباحث توسعه نرم افزار هم پیش می آد.
هر وقت که می خوام شروع کنم با انبوهی از انتخاب ها روبرو میشم.
به نظرم باید خطر قرمز هایی برای یک برنامه نویس باشه؟ برای بنده با هدفی که عرض کردم خط قرمزهایم چیست؟ چه جاهایی رو نباید بهش سرک بزنم حتی اگه علاقه داشته باشم چون اصلا در حیطه کاری من نیست؟

ضمنا برای بازار کار ایران به نظرتون در حال حاضر کدوم شاخه برنامه نویسی رو بیشتر نیاز داره؟ بیشتر کدوم تکنولوژی ها واجب هستند که یاد بگیریم؟

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

مشکل من این هستش که اصلا نمی دونم انتخاب هایم چه ها هستند که بریزم رو کاغذ، اولویت بندی کنم.
هر وقت که شروع میکنم می بینم پیش نیازش رو رعایت نکردم و یا اصلا نیازی نبوده این مورد رو بلد باشم.
مثلا TDD خوندم بعد از اندکی مطالعه متوجه شدم که اول باید Unit testing بلد باشم. این رو خوندم دیدم Integration testing و 150 تا تست دیگه هست که اصلا به گوشم نخورده، بعدش متوجه شدم که اصلا این تست ها مرتبط با حیطه کاری من نمیشه و ...

شاید واقعا دنیای IT همینیه که هست یعنی بی مرز و بی حساب و هر کسی یه چیزی گفته و ...

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

دوستان به یه جایی رسیدیم که واقعا اگه راه حلی منطقی براش پیدا نکنم قصد دارم از برنامه نویسی و کلا دنیای کامپیوتر حتی به عنوان یک کاربر کامپیوتر خداحافظی کنم و وقتم رو بزارم پای چیزها بهتر.
واقعا دلم نمی خواد 12 ساعت پشت سیستم بشینم آخرش هم هیچی!، اگه اینطوره ترجیح میدم برم سراغ یه کار دیگه و اگه وقتی هم کنارش موند بزارم روی اسمبلی و C و این زبان های سطح پایین.
خسته شدم از هرچی نگهداری و کتابخانه ها و فریم ورک های مختلف و متدولوژی ها توسعه مختلف، دیاگرام ها گوناگون و هزار و یک چیزی دیگه . دلم می خواد بشینم بدون دغدغه از همون خط اول و بدون وابستگی به هزار و یک چیز کد بنویسم. افسوس که اگه الان این کار رو بکنم هیچ جایی استخدام نمی شم.
به قول یه بزرگی برنامه نویسی اسمبلی روح برنامه نویسان رو جلا میده! (بنده خدا بی راه هم نگفته)

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

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

ممنونم

mfungroup
جمعه 03 خرداد 1392, 19:30 عصر
به نظر من اول برو vb رو تو کنسول یاد بگیر بعد تو اپلیکیشن
یه کم که یاد گرفتی برو تو linq و بعد sql server بعدشم که یکم اینا رو یاد گرفتی برو اصل C++‎ رو یکم باهاش آشنا شو که با مبانی کار کامپایلر ها آشنا شی( visule C++‎ نه ها خود اصل C++‎ که کداشو باید تو win32 بنویسی)

بعدشم C#‎ رو از نقطه ابتدا تو کنسول یاد بگیر و بعد هم که میتونی با C#‎ اپ بنویسی و کلا هرکاری می تونی بکنی کلا هم اگه زرنگ باشی شیش ماهه تموم میشه و C#‎.net هم که دیگه فقط کامپیالر هست که برنامتو تبدیل به همه چی (اندروید و ای او اس غیره) تبریل کنه.
دیگه این کارو بکنی با همون C#‎ که به طور حرفه ای دنبال کنی همه کار میتونی کنی( همه کار)
و در ضمن وقتی اینا رو یاد بگیری دیگه هر زبان برنامه نویسی رو که بخوای یاد بگیری راحت می فهمی و مشکلی نیست چون کاملا عین هم هستم فقط بستر اجرا فرق میکنه
و توصیه من اینه که دقیقا از این برنامه پیروی کنی چون ترتیبی که نوشتی کاملا برعکس بود و کلا گیج میشی و هیچ چی نخواهی فهمید

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

امیدوارم موفق باشی در تمام مراحل زندگیت

Programmer 1
جمعه 03 خرداد 1392, 20:13 عصر
به نظر من اول برو vb رو تو کنسول یاد بگیر بعد تو اپلیکیشن
یه کم که یاد گرفتی برو تو linq و بعد sql server بعدشم که یکم اینا رو یاد گرفتی برو اصل C++‎‎ رو یکم باهاش آشنا شو که با مبانی کار کامپایلر ها آشنا شی( visule C++‎‎ نه ها خود اصل C++‎‎ که کداشو باید تو win32 بنویسی)

بعدشم C#‎‎ رو از نقطه ابتدا تو کنسول یاد بگیر و بعد هم که میتونی با C#‎‎ اپ بنویسی و کلا هرکاری می تونی بکنی کلا هم اگه زرنگ باشی شیش ماهه تموم میشه و C#‎‎.net هم که دیگه فقط کامپیالر هست که برنامتو تبدیل به همه چی (اندروید و ای او اس غیره) تبریل کنه.
دیگه این کارو بکنی با همون C#‎‎ که به طور حرفه ای دنبال کنی همه کار میتونی کنی( همه کار)
و در ضمن وقتی اینا رو یاد بگیری دیگه هر زبان برنامه نویسی رو که بخوای یاد بگیری راحت می فهمی و مشکلی نیست چون کاملا عین هم هستم فقط بستر اجرا فرق میکنه
و توصیه من اینه که دقیقا از این برنامه پیروی کنی چون ترتیبی که نوشتی کاملا برعکس بود و کلا گیج میشی و هیچ چی نخواهی فهمید

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

امیدوارم موفق باشی در تمام مراحل زندگیت

دوست من، نگاه به لحن مبتدی سوال نکن، این طور نیست که من در این مراحل مونده باشم، این طور نیست که برنامه نویس نباشم. 6 ساله برنامه نویسی میکنم و به دات نت هم اون طور که حداقل مرسومه آشنایی خوبی دارم ولی بحث من این ها نیست، احساس میکنم پست رو دقیق نخوندید و یا بد برداشت کردید، منظور من اینه نمی خوام یک برنامه نویس شلخته باشم. می خوام برنامه نویسی باشم که خودش از خروجی کار راضی است، راضیه که اصول مهندسی نرم افزار رو رعایت کرده، راضیه که با متد های تست نرم افزار آشناست ، راضیه که برای برنامه هاش از unit test و tdd استفاده میکنه، راضیه که از متد اسکرام و ... در توسعه نرم افزار استفاده میکنه.

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

خب اینجا یک مشکل پیش می آد: اگه به سمت علاقه خودتون برید که معمولا به درد بازار کار نمی خورید، چون وقتی که باید میزاشتید روی بانک اطلاعات روی متد برنامه نویسی xp گذاشتید، به جای اینکه برید غرق کلاس های FCL بشید رفتید تو بحر CLR و بهینه سازی کد و متد های نگهداری نرم افزار. خب طبیعیه اون فردی که با اطلاعات سطحی ولی حرفه ای مورد نظر بازار کار آشناست سریعتر جذب میشه، تا بنده که آشنایی عمیقتر و آینده نگر تر نسبت به توسعه نرم افزار دارم ولی شاید کد نویس حرفه ای و کار راه اندازی نباشم. (کمی توضیح اینجا سخته امیدوارم متوجه بشید). شاید اون فردی که یک برنامه شلخته ی مورد رضایت کارفرما و مشتری نهایی ظرف 3 ماه نوشته 6 ماه بعد نتونه تغییری توی برنامه ایجاد کنه ولی بنده که برنامه رو می خوام طی 8 ماه بنویسم و 1 سال بعد هم تغییرات رو به سادگی اعمال کنم با ناراحتی کارفرما و مشتری روبرو میشم و به عبارتی به درد بازار کار نمی خورم!.
خب اینجا یا باید فقط به فکر پول در آوردن بود و حسرت یک برنامه نویس قانونمند و کار درست رو خورد و یا ....؟ جای نقطه چین هر چی بزاریم بوی ضرر میده.

دوستان دیگه هم لطفا مشارکت کنید.
مدیران برنامه نویس، منتظر نظرات شما نیز هستم.

Programmer 1
شنبه 04 خرداد 1392, 09:13 صبح
65 بازدید، 1 پاسخ، تشکر هم اصلا نشده، چه استقبال بی نظیری.

Programmer 1
شنبه 04 خرداد 1392, 19:15 عصر
دوستان که میتوانند راهنمایی کنند، خواهش میکنم دریغ نفرمایید. تاپیکی ایجاد کردم که هر روز به امید پاسخ بهش سر میزنم، برام واقعا جای سواله ، برنامه نویس که این همه کاربر داره، یعنی کسی دغدغه هاش این موارد نیست که الان حلش کرده، کسی براش این موضوعات اصلا مهم نیست، و یا شاید اصلا همه در چنین شرایطی قرار دارند که امیدوارم این طور نباشه

ashkufaraz
شنبه 04 خرداد 1392, 19:33 عصر
طرز فکر جالبی داری
این طرز فکر به درد ایران نمی خوره
این طرز فکر به درد یک فردی که دنبال کار ثابت و تجاری ست توی ایران نمی خوره
این طرز فکر به درد خارج از ایران می خوره که اصولی و مرتب کار کنی نه مثل خیلی از ما ها تنها اسپاگتی نویسی بشی و یک سری کد پشت سرهم ردیف کنی که کارفرما یا مشتری بخواد و خودتم هم هیچ لذتی نبری.

Programmer 1
دوشنبه 06 خرداد 1392, 09:25 صبح
خیلی جالبه، از یک طرف این عدم شرکت در بحث امیدوار کننده است و به عبارتی دیگه آدم رو دل داری میده و از یک طرف دیگه اگه بدبینانه نگاه کنیم خیلی جای نا امیدی داره

sinarad
پنج شنبه 09 خرداد 1392, 23:58 عصر
پروگرامر یک عزیز سلام،

اگر ممکن است با ایمیل من مکاتبه کنید:
sinaaraad-at-gmail