برنامه نویسی یا دانشگاه..مسئله این است!

عنوانی که شاید مطالب خیلی زیادی راجع به آن در اینترنت پیدا کنید.تفاوت این پست با پست های دیگه‌ای که در اینترنت وجود دارن اینه که تمام مطالب حاصل تجربه های شخصی بنده حقیر هست و بیشتر سعی در کمک کردن به افرادی هست که در انتخاب بین دانشگاه و یادگیری خود آموز گیر افتادن.قبل از اینکه ادامه مطلب رو بخونید شاید بد نباشه چند خطی در مورد خودم بگم.تحصیلات:من در رشته تجربی تحصیل کردم(اون زمان ها قرار بود دکتر شم و درمان ایدز رو کشف کنم مثلا...). دوسال کنکور ریاضی دادم و سال 97 وارد دانشگاه سراسری(در استان گلستان) شدم..همونطور که معلومه زیاد درسخون نبودم.البته تا سال سوم دبیرستان درس و نمراتم خوب بود و از نقطه ای که از درس زده شدم و رفتم دنبال برنامه نویسی نمراتم افت کرد(معدل دروس نهایی پیش دانشگاهی 10/13).کار:باتوجه به مجازی بودن دانشگاه ها از فرصت استفاده کردم و در حال حاضر در یک شرکت دانش بنیان در تهران برنامه‌نویس لاراول هستم.پیش از این هم به صورت فریلنسر و دورکاری کار کردم.خب دیگه فکر کنم کاملا مشخص شد که مطلبی که دارید میخونید رو کسی نوشته که هم تجربه درس‌خون بودن رو داره و هم تجربه یادگیری و کار کردن خود آموز.هم دانشگاه رفته و هم خودش مسیر یادگیری خودآموز رو طی کرده..و اما بریم سراغ اصل مطلب...نکته مهمی که قبل از هرچیزی باید بهش توجه اینه که دانشگاه رفتن هیچ منافاتی با یادگیری برنامه نویسی نداره!یعنی چی؟! یعنی میتونیم هم دانشگاه بریم و هم برنامه نویسی یاد بگیریم؟ مگه ما چقدر تایم و انرژی داریم؟ چرا باید وقتمون رو تو دانشگاه تلف کنیم وقتی میتونیم همون تایم رو روی کارمون و یادگیری تمرکز کنیم؟ مدرک دانشگاهی به چه دردی میخوره مهم اینه که چی یاد داری و چطور میتونی یک پروژه رو پیاده سازی کنی!در حدی که الان دیگه حتی ادارات دولتی هم میپرسن چی بلدی و کسی نمیپرسه مدرکت چیه.سوالاتی که چند سال پیش از خودم میپرسیدم و هر کسی هم که منو تشویق به دانشگاه رفتن میکرد برای قانع کردنش ازشون استفاده میکردم.سوالاتی که منطقی هم هستن و کسی نمیتونه منکرشون بشه.پس چیشد که خودت رفتی دانشگاه؟فرار از سربازی! دلیلی که خیلی هارو تا دکتری هم پیش برده (:در ابتدا دلیلم فقط و فقط فرار از سربازی بود اما بعد از اینکه وارد دانشگاه شدم بعد از 2 سال (4 ترم) متوجه شدم دانشگاه رفتن خوبی هایی هم داره و اصلا بهتر شد که اومدم دانشگاه.درسته در دانشگاه‌های ایران چیزی بهمون یاد نمیدن که بشه ازش پول درآورد منتهی یک نکته رو نباید فراموش کرد اون هم اینکه در بهترین دانشگاه‌های دنیا هم چیزی بهتون یاد نمیدن که بتونید ازش پول دربیارید(بالای 20 تا پادکست از ایرانی های خارج نشین و خود خارجی ها گوش دادم و این مطلب رو شکمی ننوشتم!).به هر صورت همه چیز بستگی به خودتون داره.کسی که دنبال یادگیری باشه دانشگاه هم باشه یادگیریش رو دنبال میکنه و کسی که دنبال یادگیری نباشه با دانشگاه نرفتن هم نمیتونه چیز زیادی یاد بگیره.آخرش چکار کنیم بریم دانشگاه یا بیشینیم تو خونمون یادبگیریم؟اگر آقا هستید قطعا میدونید اگر نخواید برید دانشگاه باید برید سربازی(من اسمش رو خدمت نمیذارم دلیلشم خودتون میتونید حدس بزنید).شاید بگید میرم یک دانشگاه الکی یک رشته الکی ثبت‌نام می‌کنم تا بتونم از معافیت تحصیلی استفاده کنم و بعدش میشینم پای یادگیریووو میییترکونم حاجی(ایموجی که چشاش شکل قلبه - دو الی سه عدد).زرشک!اول اینکه یک سر به آگهی های استخدام بزنید میبینید که اکثرا مدرک تحصیلی مرتبط با رشته کامپیوتر رو جزو الزامات در نظر گرفتن.دوم اینکه اگر قراره دانشگاه برید دیگه چه دلیلی داره عمرتون رو توی یک دانشگاه الکی و رشته الکی هدر بدید؟!!تو که گفتی دانشگاه چیزی بهمون یاد نمیده پس چرا اینطوری شد؟!دانشگاه چیزی بهتون یاد نمیده ولی بهتون میگه چه چیزهایی رو نیاز دارید تا یاد بگیرید و حتی میتونه کلی شما رو در مفاهیم اولیه جلو بندازه.مفاهیمی مثل طراحی الگوریتم و ساختمان داده و مهارت حل مسئله رو در دانشگاه میتونید خیلی راحت‌تر متوجه بشید و درک کنید.در بدترین حالت لااقل یک سری مفاهیم کلی دستگیرتون میشه که با مطالعه میتونید عمیق‌تر بشید.منظور اینکه دانشگاه میتونه یک جرقه بزنه براتون ، اینکه با اون جرقه چکار میکنید به شما بستگی داره.ای که الان وگفتی یعنی چ!اکثر مصاحبه‌ها و پادکست‌هایی که دیدم و گوش دادم همگی در نقطه مشترک بودن.شرکت‌های بزرگ (منظور تعداد نفرات شرکت یا مساحت شرکت نیست و منظور شرکت هایی هست که سرشون به تنشون بی‌ارزه) همگی دنبال مهندس نرم افزار هستند و نه برنامه نویس.برای نمونه آگهی استخدام دیجی‌کالا رو نگاه کنید می‌بینید که عنوانش PHP Engineer هست و نه PHP Developer.یعنی شما باید مهارت حل مسئله بالایی داشته باشید و با الگوریتم‌ها و ساختمان داده‌های معروف آشنایی داشته باشید.آشنایی با time complexity و مفاهیم مربوط به آن الزامی هست.هرکسی میتونه یک کدی بنویسه که کار کنه مهم اینه کدی که مینویسیم چقدر کارا هست.مصاحبه‌ای که از مدیر ارشد فنی دیجی کالا دیدم یک نکته جالب داشت اون هم اینکه میگفت :« ما برنامه نویس PHP نمیخوایم و مهندس نرم افزار میخوایم.یعنی کسی که الگوریتم‌ و دیتا استراکچر بدونه ، PHP رو ما خودمون بهش یاد میدیم اگر بلد نباشه»مواردی که در چند خط بالا نوشتم مفاهیمی هستن که در دانشگاه یا به شما یاد میدن یا حداقل جرقه یادگیریشو برای شما روشن میکنن.نکته بعدی اینکه زبان های برنامه‌نویسی ، کامپایلرها ، دیتابیس‌ها و به صورت کلی «کامپیوترها» توسط افرادی خلق شدن که سواد آکادمیک داشتن(الخصوص ریاضیات و فیزیک).الگوریتم‌های رمزنگاری و فشرده‌سازی ، هوش مصنوعی ، یادگیری ماشین و ... همگی زاده ذهن افرادی هست که به علم(منظور فقط دانشگاه نیست منظور هر منبع علمی هست) توجه ویژه‌ای داشتن.سخن پایانیاگر میخواید به عنوان یک مهندس نرم افزار تاثیری روی محیط و دنیای اطرافتون داشته باشید دانستن مفاهیمی که در دانشگاه تدریس میشه الزامیه.تلگرام و اینستاگرام و ... بدون الگوریتم های پیچیده فشرده‌سازی و رمزنگاری به هیچ عنوان در جایگاه فعلی نبودن.(فرض کنید اگر الگوریتم فشرده سازی نداشتند چقدر باید هزینه برای ذخیره سازی اطلاعات پرداخت میکردند).اگر صرفا میخواید یک طراح سایت یا برنامه نویس نویس معمولی باشید نیازی به دونستن این مفاهیم نیست و میتونید از همین امروز خودآموز توی نت سرچ بزنید و یک زبان رو یاد بگیرید و کسب درآمد کنید.s