یه نویسنده

مقاله، کتاب، برنامه و ...

مقاله، کتاب، برنامه و ...

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌php و سیستم‌عامل لینوکس تشکیل می‌دهند.

طبقه بندی موضوعی

۲ مطلب با کلمه‌ی کلیدی «مهندسی نرم افزار» ثبت شده است

راهنمای انتخاب رشته-رشته‌های مرتبط با کامپیوتر

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

در ابتدا لازم میدونم سابقه تحصیلی خودم رو از ابتدا تا این‌جا رو توضیح بدم:

۱- دیپلم کامپیوتر - فنی و حرفه‌ای در سال ۸۴

۲- کاردانی فناوری اطلاعات و ارتباطات(ICT) - در سال ۹۰

۳- کارشناسی مهندسی نرم افزار - در سال ۹۲

پس همونطور که میبینید از هموم ابتدا علاقه شدید به این رشته داشتم، و خوب به اون موفقیتهایی که دوست داشتم رسیدم، و الان هم هنوز مثل روزهایی اولی که با کامپیوتر روزی ۱۸ تا ۲۰ ساعت کار میکردم، کار میکنم.

بعد از اون میرسیم به هدف از تحصیل در این رشته و زیر و بندهایی که وجود داره.

با تمام حاشیه‌هایی که این رشته داره و تمام ایرادهایی که دیگران بهش میگیرن ولی اگر کمی علاقه داشته باشین و تلاش کنید، چنان غرق این رشته میشین که رهایی از اون غیر ممکن هست. مثلا یه روز با یکی از همکاران که ۱۵ سال از من بیشتر تجربه داشت، در مورد این که اگر روزی دکتر بگه شما دیگه نباید با کامپیوتر کار کنید چه حالی دارید؟ اولین جوابی که گفتن: میمیرم.

برای ورود به این رشته و موفقیت در اون به موارد زیر توجه کنید:


۱. این رشته خیلی زود و به سرعت نور بروز رسانی میشه

هنوزم خوب یادمه. وقتی بچه بودیم میرفتیم دکتر یه آمپی سیلین، شربت اکسپکتورانت کدئین، قرص استامینوفن و اگر هم خیلی شدید بود آمپول آمپی‌سیلین. خوب من تقریبا ۶ ماه پیش یه سرماخردگی شدید گرفتم رفتم دکتر دقیقا همون داروهای ۲۰ سال پیش رو داد. پس تو علم پزشکی عمومی چه تغییر کرده؟ و اون آقای دکتر با ۵۰ سال سن و تجربیات ۲۰ سال پیش هنوزم میتونه تو این جامعه کار کنه و تازه بهش میگن دکتر حرفه‌ای و با تجربه. ولی نه عزیزان رشته کامپیوتر و تمام شاخه‌هاش این طور نیست. بلکه به سرعت نور تغییر میکنه. امروز چیزی رو یادگرفتی قطعا تا ۱ یا دوسال آینده تغییراتی درش حاصل شده و شما برای یادگیری موارد جدید باید مطالعه داشته باشین.

اگر روحیه یادگیری همیشگی رو دارین و علاقه دارین مدام چیزهای جدید یاد بگیرین این رشته بسیار کاربردی و موفق هست. ولی شاید الان بدنتون داغ باشه و بگین آره دوست دارم یاد بگیرم ولی داریم افرادی با ۳۵ تا ۴۵ سال سن که اصلا حوصله خوندن یک صفحه مطلب انگلیسی رو ندارن و میخوان روی همون تجربیات گذشته پای‌بند باشند. خب این دوستان بخت و اقبال اون‌ها روز به روز کم میشه و چه بسا روزی یک جوان ۲۰ ساله بخاطر تجربیات جدید و بقول ما update ، مسئول بالادست این شخص بشه. در کل هر روز باید بین ۴۰ تا ۹۰ دقیقه برای یادگیری فناوری‌های جدید صرف کنید. مثلا تا همین ۵ سال پیش هر کسی که میخواست طراحی ui سایت انجام بده، براحتی با table ساختار سایت رو میچید و اصلا حرفی از responsive بودن و اجر بر روی تبلت و موبایل نبود. ولی الان باید این فناوری‌ها رو برای طراحی سایت بلد باشید و اصلا اون تجربیات قدیمی دیگه کاربردی نداره. پس اون شخص طراح باید بشینه و با داشتن تمام اون تجربیات، html5و css3 و حتی فریم‌ورک‌های ui مثل bootstrap رو یاد بگیره. الان اون فناوری قبلی که بلد بود شاید در فرم لاگین بتونه از ش استفاده کنه که اونم بازم با فناوری‌های جدید زیباتر در میاد.


۲. درس خوندن در این رشته و بعدش هم کار

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


۳. چیزی به اسم نظام مهندسی و خلاصه مسئول درست‌حسابی نداره 

اگر مورد اول رو خوب مطالعه کرده باشین به این پی بردین که چرا این رشته با رشته‌های دیگه تفاوت داره. حالا با این اوصاف چرا در رشته‌های مثل عمران( که اون هم مثل دکترها علم استاتیک دارن) نظام مهندسی دارن ولی در رشته‌ای مثل نرم‌افزار ما چنین چیزی نداریم. در بازار کار بسیار زیادن شرکتهایی که دارن کارهای در سطح ملی انجام میدن و با کمک بند پ چه پروژه‌هایی رو که نمیگیرن ولی از سطح سوادشون بپرسین از من میگم ۱۰۰- و حتی اوضاع وخیم‌تر از این هم هست. بنده تجربه جلسه با چند تا از این عزیزان رو داشتم. در جلسه‌ای که طرف مسئول شرکت بود و خلاصه خودش رو ۲۰ سال تجربه در این حرفه میدونست، فرق IDE رو با Compiler نمیدونست و توی جلسه برگشت به من گفت: ما توی #C  میریم و روی صفحه دکمه میزاریم، حالا شما توی GCC چطوری دکمه میزارین. برگشتم بهش گفتم توی زبان #C چیزی به ایم گذاشته دکمه تعریف نشد بلکه این امکانات IDE هست که شما امکان دکمه گذاشتن دارید و معمولا زبان #C رو هم با IDE معروف اون یعنی Visual Studio‌میشناسن. خلاصه با وجود نطام صنفی رایانه‌ای چیزی به اسم درو پیکر برای این رشته نیست. هر چقدر شما متخصص و تجربه داشته باشید، معمولا پروژه‌های top به بند پ میرسه(که شامل حال ما نمیشه). هر چند بارها مشاهده شده که همون شرکتهای بی‌تجربه کار رو خراب میکنن  بعدش ناچار مسئولان دست به دامن شرکت‌های و افراد با تجربه میشن برای جمع کردن خرابکاری اون دوستان. پس دارید وارد این رشته میشید از الان مسیر خودتون رو باید خوب بشناسید و بدونید که خودتون هستید و خودتون نه حامی هست و نه مسئولی.


۴. این رشته فقط برنامه‌نویسی نیست

نمیدونم چرا همه رشته کامپیوتر رو با برنامه‌نویسی میشناسن. در صورتی که یک باور بسیار غلط هست. این رشته تنوع بسیار بالایی داره و در چند سال اخیر هم شاخه‌های مختلفی از این رشته بوجود اومده مثل:

  • امنیت. چه در شبکه و چه در امنیت نرم‌افزار
  • شبکه. با توجه بر تمام مشتقات این شاخه، شاخه‌های جدید مثل voip که تلفیقی از شبکه و مخابرات هست
  • سخت‌افزار. باز هم با تمام زیر شاخه‌های جذاب، شاخه‌هایی مثل طراحی embedded
  • مستندات نرم‌افزاری. مثل تهیه مستندات برای ماژول نوشته شده یا نرم‌افزار انجام شده. یا حتی تهیه مستندات تجربیات برای یک پروژه تا در اختیار کارمندان دیگر گذاشته بشه
  • مدیر پروژه. این رشته اصلا مدیر پروژه مختص خودش رو میخواد
  • فناوری‌اطلاعات. کسی که به انواع فناوری‌های روز آشنا هست و میتونه شرکتها رو در تهیه محصول جدید یا انتخاب فناوری کمک کنه.
  • مسئول فنی و نگهداری و پشتیبانی. اگر بخوبی مواردی مثل شبکه و سخت‌افزار و پایگاه داده و خلاصه از هر فناوری یه سر رشته داشته باشید براحتی میتونید در قسمتهای فنی و مهندسی یا پشتیبانی شرکتها مشغول بکار بشید.
و حتی چندین زیر شاخه دیگه که من به ذهنم نرسید. ولی صرفا کدنویسی نیست. هر چن همین برنامه‌نویسی خودش چندین زیر شاخه داره و شما هم تا حدودی با اون‌های آشنا هستید:
  • برنامه‌نویسی دستکتاپ. مثل زبانهای #c و java
  • برنامه‌نویسی سیستمی مثل ++c/c و حتی اسمبلی
  • برنامه‌نویسی سایت  سمت سرور مثل php‌و asp.net
  • طراحی gui برای سایت مثل html,css,js
  • طراحی سه بعدی و گرافیک کامپیوتری
  • طراحی بازی و انیمیشن
پس این رشته شاخه‌های متنوعی داره و شما باید بر حسب علایق و توانایی یک کدوم رو انتخاب کنید.

۵. منابع رایگان و بی‌نهایت فروم و سایت برای حل مشکل
شما چه در مرحله یادگیری و چه در مرحله ورود به بازار کار، از منابع قابل دسترس برای این رشته دوق زده خواهید شد. البته در زبان فارسی بسیار کم و در زبان انگلیسی بسیار فراوان. برای یادگیری هز موضوعی صرفا در سایت لیندا یه جستجو بزنید چندین عنوان فیلم آموزشی تهیه میکنید یا در YouTube  چندین هزار فیلم آموزشی رایگان یپیدا میشود. سایت‌های رفع مشکل هم از stack overflow گرفته تا سایت برنامه‌نویس این خودمون.

۶. زبان انگلیسی در این رشته حرف اول را میزند 
برای موفق شدن نیاز شدید به متون انگلیسی دارید. از کتاب گرفته تا مقاله و سایت. البته بیشتر باید reading قوی داشته باشید و هر چند برای پرسیدن سوال در سایت‌های خارجی writing هم باید خوب باشه. ولی بیشتر reading چون نیاز به مطالعه روزانه و کسب تجربیات دارید. البته لازم هم نیست حتما به کلاس برید(هر چن مفیده) بلکه همین الان برای شروع و یادگیری از فیلمهای آموزشی زبان انگلیسی و متون انگلیسی شروع کنید. خود به خود بعد از چند وقت میبیند که براحتی هر کتاب انگلیسی رو میتونید بخونید. زبان تخصصی این رشته رو خوب یاد بگیرید. 

۷. درسهایی مثل ساختمان داده، الگوریتم ،آمار و احتمالات و شبکه رو خوب بخونید
این دیگه بعد از مرحله انتخاب رشته هست. شما باید برای داشتن ذهن تحلیل‌گر به طراحی الگوریتم مسلط باشید و بتونید هر مسئله‌ای رو با دیدگاه تحلیل‌گر خودتون حل کنید. ساختمان داده فکر کنم توی تمام رشته‌های باشه(قبلا که این طوری بود) چون به شما کمک میکنه ساختار داده‌ها و کار با اون‌ها رو بهتر یاد بگیرید. معمولا این درس خیلی شبیه طراحی الگوریتم هست ولی با دیدگاه کار با داده و باد کدهای بیشتر سرو کار داره. آمار و احتمالات درس بسیار شیرین و کاربردی هست. به نظرم تمام انتگرال و دیفرانسیل رو از رشته نرم‌افزار بزارن کنار عوضش در حل سال تحصیلی چند واحد آمار و احتمالات اضافه کنن. ابن درس هم ذهن تحلیل‌گر شما رو تقویت میکنه و هم در حل بسیاری مشکلات سخت‌افزاری و نرم‌افزاری کاربرد داره. شاخه هوش مصنوعی،  داده‌کاوی و وب معنایی کلا روی آمار و احتمالات میچرخه. من همیشه با این که از ریاضی متنفر بودم(اغلب بین ۱۰ تا ۱۴ نمرم بود) ولی همیشه عاشق آمار و احتمالات بودم(نمرم بین ۱۷ تا ۲۰). پس این درسها رو جدید بگیرید و خوب بخونید. در آخر شبکه رو میشه مادر فناوری روز دونست. چون شما چه توی برنامه‌نویس، سخت‌افزار و فناوری‌اطلاعات مشغول به فعالیت بشید باید یک متخصص شبکه حرفه‌ای بشید. متاسفانه وقتی حرف از شبکه میاد همه فکر میکنم منظور سیم و کابل هست، نخیر دوستان منظورم فناوری‌های شبکه مثل شناخت پروتکل‌ها و نرم‌افزارهای شبکه هست. در شبکه ۱۰ درصد یا کمتر در حوزه passive هست و ۹۰ درصد اون در حوزه active شبکه.  در اولین توصیه کتاب دکتر احسان ملکیان بنام اصول شبکه و همچنین کتاب تازه ترجمه شده ایشون بنام شبکه های کامپیوتری از دیدگاه بالا به پایین(نوشته کرس و راس) رو تهیه و چندین و چندبار بخونید تا خوب یاد بگیرید. 

دیگر موردهای بیشتری ندارم  شاید چند روز یگه چیزهای بیشتری به ذهنم برسه که به این متن اضافه کنم. 
موفق باشید و آرزوی سربلندی برای تمام شما دوستان و عزیزان، رو از خداوند منان دارم.

دانلود پروژه آز مهندسی نرم‌افزار

دوستانی که آز مهندسی نرم افزار دارن میتونن از پروژه های زیر به عنوان نمونه استفاده کنن.

پروژه پمپ گاز: بررسی و تحلیل سیستم جاری گاز سوز خودروی گلسرخ چابکسر - تهیه کننده مهرداد سیف زاده

پروژه انبارداری: بررسی و تحلیل سیستم جاری انبارداری شرکت نادری - تهیه کننده مهندس محمدرضا رجبی