سلام دوستان
من هم مثل شما بودم
من تقریبا از سوم دبستان تصمیم داشتم مهندس کامپیوتر بشم و دلیلش هم این بود که از بچگی خیلی سرم تو کامپیوتر بود و همون موقع یه کاربر خیلی خوب بودم در حالی که خیلی از دوستان و آشنایان و فامیل که حتی از من بزرگتر بودن اندازهی من بلد نبودن و من فکر کردم مال این کارم. خوب هم داشتم جلو میرفتم ولی یه سری اشتباهات کردم و وقت و زندگیم تلف شد وگرنه میتونستم الان خیلی جلوتر باشم. حالا میخوام برای شما بنویسم که اشتباهات من رو تکرار نکنید. بعضی از چیزایی که مینویسم هم مشکلاتیه که توی دوستای خودم توی دانشگاه دیدم.
به برنامهنویسی و توسعهی نرمافزار علاقه دارین؟؟ تا دیر نشده حتما حتما طراحی وب رو یاد بگیرین (یعنی HTML و CSS)
بله اینا اصلا برنامهنویسی به حساب نمیان! ولی کدنویسی که هستن! و خوبیش هم اینه که شما سریع ماحصل کارتون رو میبینین و خلاصه خیلی حال میده! حس نیاز به خلاقیت و تولید آدم رو ارضا میکنه.
به اندازهی کافی که جلو رفتین دیگه وقتشه که برنامهنویسی رو شروع کنین!
خب در مورد برنامهنویسی ممکنه خیلی گیج بشین. خودش نه ها! این که چه زبانی رو برای شروع برنامهنویسی استفاده کنین حتما اذیتتون خواهد کرد. خب این جا چند تا موضوع مطرح میشه که باید بهتون توضیح بدم!
ولی قبش میخوام یه نکتهای رو روش تاکید کنم:
موفقیت و پیشرفت روزافزون و هماهنگ با تکنولوژی روز در فناوری اطلاعات امکانپذیر نیست مگر با عادت داشتن به خودآموزی (یعنی همهاش دنبال کلاس بیرون و معلم و اینا نباشین!) و قوی بودن زبان انگلیسی (متن فارسی و آموزش فارسی رو یواش یواش باید بذارین کنار! دلیلش رو هم در پستهای آینده کامل توضیح میدم)
به ادامهی مطلب بروید...
خب باید ببینید گرایشتون به چه جور برنامهنویسیایه
ما چندین جور برنامهنویسی داریم!
بخوام خیلی کلی بهتون بگم میشه به دو جور تقسیم کرد:
1) برنامهنویسی سیستمی
2) برنامهنویسی کاربردی
خب برنامهنویسی سیستمی میره تو زمینهی توسعهی سیستم عامل و سیستمهای embedded و نرمافزارهای زیرساختی شبکه و سیستم عامل و کتابخانههای برنامهنویسی که سایر برنامهنویسها میخوان ازش استفاده کنن. خب طبیعیه که این دسته یه کم برای تازهکار سنگینه!
برنامهنویسی کاربردی هم ماشاءالله خیلی انواع و اقسام زیاد داره!
1) برنامهنویسی وب
2) برنامهنویسی موبایل
3) برنامهنویسی دسکتاپ
و..
اینا که گفتم خب مهمهاش بودن که خیلی جلب توجه میکنن و بازار کار هم نیاز زیادی بهشون داره. اما باز هم همین جا به جایی نمیرسیم K
همین برنامهنویسی موبایل مثلا. چه موبایلی؟ کدوم سیستم عامل؟ اندروید؟ iOS؟ یا ویندوز؟ فرق داره مسیر
اگر قراره برید سراغ نوشتن برنامهی کاربردی برای اندروید خب چند تا مسیر وجود داره اما اگه بخواید مسیر اصلی که یه آدم حرفهای میره رو برید باید برید سراغ زبان Java. کلا زبان جاوا رو بشناسید چیه حتی اگر سمت یاد گرفتنش نمیرید! زبان مهمیه
اگر قراره واسه محصولات اپل برنامه بنویسید خب باید برید سراغ زبانهای Swift و Objective-C
اگر قراره برای محصولات مایکروسافت (ویندوز فون، اکس باکس، ویندوز دسکتاپ و...) برنامه بنویسی طبیعتا انتخاب اول زبان C# خواهد بود.
برنامهنویسی وب که یکی از شیرینترین و باحالترین انواع برنامهنویسی کاربردیه خیلی پیدا کردن مسیر توش این روزا دشوار شده. چون تقربیا با هر زبان برنامهنویسی میشه وارد این حوزه شد اما مشکل این جا تموم نمیشه. انتخاب زبان کافی نیست! هر زبانی هم که انتخاب کنید چند فریمورک (framework) مختلف برای برنامهنویسی تحت وب داره که در کارهای ساده شاید همهشون مثل هم عمل کنن و فقط سختی یادگیریشون فرق کنه ولی تو کارهای سخت و پیچیده و در ابعاد بزرگ کلی فرقشه!
با این زبانها به طور متداول الان تو دنیا داره توسعهی وب صورت میگیره:
Java
C#
Python
Ruby
JavaScript
PHP
و...
خب هر کدوم تو همین مرحله هم مزایا و معایبی دارن و به درد یه سری کارا میخورن و به درد یه سری کارا نمیخورن!
مثلا با روبی و پایتون خیلی زودتر میشه یه نرمافزار درست کرد تا با سی شارپ و جاوا! یادگیری زبانهاشون هم راحتتره!
یا مثلا برای php کلی ابزارهای آماده وجود داره پروژهی تجاری هم براش زیاد پیدا میشه!
برای سی شارپ و جاوا ولی بیشتر پروژهها در سطح شرکتهای بزرگ و پروژههای سازمانی و ملیه.
تازه همین جا تموم نمیشه! زبان رو انتخاب کردی؟ حالا باید فریمورک رو مشخص کنی.
مثلا برای پایتون چند تا فریمورک هست از جمله Django و Flask. برای روبی هم همین طور. Php هم همین طور. جاوا و سی شارپ هم با توجه به معماریهای مختلف نرمافزار (شاید یه کم این حرفا براتون عجیب و غریب باشه) فریمورکها و کتابخانههای مختلف دارن!
همین جا یه خواهش دارم. من خیلی دارم سعی میکنم یه جوری بنویسم که هر کسی میخونه بفهمه ولی باز هم کلی توش اصطلاحات هست. اگر نفهمیدین جستجو کنین تو اینترنت حتما پیدا میکنین. ترجیحا به انگلیسی سرچ کنین. اگر واقعا چیزی گیرتون نیومد (که بعید بدونم) توی نظرات ازم بپرسین توضیح میدم!
سی شارپ در واقع روی بستری تحت عنوان .Net کار میکنه که کلا زیرساخت نرمافزاری محصولات مایکروسافته (خیلی کج و کوله دارم میگم و یه حرفهای کاملا حق داره بیاد باهام درگیر شه :-D). این دات نت که میگم خودش چندین فریمورک برنامهنویسی توی خودش داره. یکیش ASP.Net عه که خودش مجموعهای از فریمورکهای برنامهنویسی تحت وب برای دات نته. حتما بهشون بر خواهید خورد:
ASP.net Web Forms
ASP.net Web Pages
ASP.net MVC
ASP.net Signal R
ASP.net Web API
یه تعداد زیادی از دوستان هم ممکنه بگن ما عاشق بازیسازی هستیم کلی هم ایدهی بازیسازی داریم از الان هم داستانش رو نوشتیم تیم هم میخوایم جمع کنیم واسش البته برنامهنویسی بلد نیستیم ولی میخوایم انجام بدیم نقاشیها و گرافیکش هم اوکیه!
خب باید بگم که به این سادگیها هم نیست! جدا از برنامهنویسی و گرافیکش خیلی مسائل دیگه هم تو قضیه دخیله و این که حتما باید یه Game Engine یاد بگیرین! حالا در فرصتهای آینده از یکی از دوستان میخوام براتون راجع به بازی بنویسه تا غنچهسوز نشین
کلا به کار با کامپیوتر خیلی علاقه داری؟؟
خودت رو یک کابر خیلی خوب ویندوز میدونی؟ نصبش رو هم حتما انجام دادی دیگه؟ تنظیماتش رو حسابی ور رفتی؟ شبکه چی؟ شبکه بلدی؟ در حدی که یه روتر و تنظیم کنی و چند تا کامپیوتر رو به هم شبکه کنی؟ اشتراک فایل و پرینتر چطوره؟ تا حالا Dual Boot کردی؟ راجع به لینوکس چیزی میدونی؟ نمیدونی؟؟؟ حتما باید با یکی از توزیعهای لینوکس کار کنی و آشنا بشی. من Ubuntu یا Mint رو پیشنهاد میکنم برای اولین بار.
به الکترونیک هم علاقه داری؟ اصلا بیشتر به الکترونیک علاقه داری تا کامپیوتر؟؟ خب یه مهندس سختافزار (یا این روزا اسمش شده مهندسی کامپیوتر گرایش معماری سیستمهای کامپیوتری) درست حسابی باید تسلط خوبی روی الکترونیک دیجیتال و تا حدی کنترل و مخابرات داشته باشه. اگه علاقه داری:
1) با لپتاپ به جایی نمیرسی به نظرم یه کامپیوتر دسکتاپ هم بگیر هرچند ارزون. در و جیگرش رو در بیار ببین چه جوری کار میکنه.
2) فرصت رو از دست نده! سریعا شروع کن الکترونیک یاد گرفتن. کلاس؟؟ کتاب؟؟ نه بابا برو یه دونه بورد Arduino Uno بگیر خیلی راحت یه تعدادی هم دیود LED و مقاومت و از این چیزا. تو اینترنت کلی چیز باحال با راهنما هست که میتونی با اینا بسازی. هزینهش هم زیاد نمیشه. بقیهش هم یه سری قانون سادهی الکتریسیته و قانون اهم و این چیزاست واقعا چیزی نیست که نتونین انجام بدین. برنامهنویسی هم توش داره :-p قشنگ راه میفتین واسه الکترونیک دیجیتال و سختافزار
3) حتما راجع به تحقیقات جدید و تکنولوژیهای جدید بخون. راجع به Internet of Things چیزی میدونی؟؟
در آخر چند تا نکتهی دیگه:
1) از آدما کهنهکار که خیلی از شما بزرگتر هستن و توی شرکتها و سازمانهای دولتی کار میکنن راهنمایی نگیرین! اونا خیلی باسوادن ولی تکنولوژی الان به حدی پیشرفت کرده که همه چیز به شدت آسون شده و شما هم اینو میدونین اما اونا نمیدونن! پس گمراهتون میکنن و میفرستنتون سراغ چیزای بهدردنخور (حداقل واسه شروع بهشون نیاز ندارین!)
2) با تبلت و گوشی هیچوقت برنامهنویس و مهندس کامپیوتر نمیشین! اگه کامپیوتر ندارین حتما بخرین!
3) لزومی نداره حتما تو دانشگاه یا هنرستان وارد رشتهی کامپیوتر بشین!