افراد خیلی زیادی هستند که تخصص های مختلفی دارند که لزوما ارتباطی با مهندسی نرم افزار هم نداره اما قصد دارند وارد این حوزه بشن. احتمالا اولین سوالی که به ذهنشون میرسه اینه که بدون داشتن مدرک دانشگاهی مرتبط میتونم وارد این حوزه بشم یا خیر. جواب کوتاه «بله» هست و برای اثبات این ادعا کافیه به تصویر زیر دقت کنید. طبق این گزارش تقریبا ۱ میلیون شغل در صنعت تک وجود داره که باید توسط افرادی با مهارت های غیر مرتبط پر بشه.
پس قطعا کار برای شما هست. اما بهتره قبل از شروع حتما یک مسیر و هدف مشخص رو برای خودتون تعیین کنید. این حوزه مهارت های بسیار متنوعی رو میطلبه و هرکدومش دنیای خودشو داره، از برنامه نویسی وب (بکند و فرانت و طراحی) گرفته تا برنامه نویسی موبایل و امنیت و هوش مصنوعی و شبکه. برای این که سردرگم نشید و بتونید در مدت زمان کوتاهی تصمیم درستی بگیرید، بهتره که ابتدا یک ارزیابی کلی روی حوزه ها مختلف داشته باشید و سعی کنید به مقدار کمی در مورد هرکدوم مطالعه کنید و حتی اگه بشه بصورت تجربی اون حوزه رو تجربه کنید.
این نکته رو هم اینجا اضافه کنم که دسته بندی ای که بنده انجام میدم به هیچ وجه کامل نیست و طبق تجربه شخصی هست، اما امیدوارم به شما کمک کنه که مسیرتون رو بهتر مشخص کنید.
اولین قدم اینه که شما متوجه بشید اصلا به برنامه نویسی علاقه دارید یا نه. نگران نباشید، حتی اگه به برنامه نویسی هم علاقه نداشته باشید باز تو این صنعت برای شما کار هست!
راه های مختلف برای ارزیابی وجود داره، پیشنهاد من اینه که سعی کنید با مقدمات چند زبان محبوب مثل «Python»، «JavaScript»، «Golang»، «CSharp»، «PHP»، «C/C Plus Plus» و «Java» آشنا بشید، و سپس در سایت هایی مثل quera یا leetcode سعی کنید مسائل مختلفی رو حل کنید. این کار به شما میگه که از کد زدن در زبان مورد نظر چقدر لذت می برید. زبان هایی که لیست کردم خیلی زیاد هستند، به جز این لیست، زبان های دیگه ای هم هستند مثل Kotlin و Ruby. شما میتونید در موردشون تحقیق کنید و فقط یکی دو مورد رو امتحان کنید، شاید انتخاب اولتون انتخاب آخرتون باشه!
خب اولین قدم این میشه که ببینیم باید چه زبانی رو یاد بگیریم.
عوامل مختلفی در تصمیم نهایی شما برای انتخاب زبان برنامه نویسی تاثیرگذار خواهند بود و من سعی می کنم چند عامل مهم رو به شما معرفی کنم.
قطعا «بازار کار» مهم ترین عامل خواهد بود، شما اگه قصد دارید یک برنامه نویس «فرانت» بشید، هیچ راهی ندارید جز اینکه «جاوااسکریپت» یاد بگیرد! اگه قصد دارید به دنیای هوش مصنوعی وارد بشید بخوای، نخوای باید «پایتون» یاد بگیری. در دنیای امنیت هم زبان سی و کمی دانش در مورد زبان اسمبلی تقریبا اجتناب ناپذیر هست. در دنیای بکند یادگیری زبان sql یه امر ضروریه. پس هدفت رو مشخص کن و بر اساس هدف و بازار کارش، سعی کن زبان برنامه نویسی رو انتخاب کنی.
این نکته مخصوصا در ابتدای کار خیلی مهمه. من پیشنهاد می کنم حتما چند زبان مختلف رو امتحان کنید و ببینید که با کدوم زبان بیشتر احساس راحتی دارید و اون زبان برای شما سادگی بیشتری داره. زبان هایی مثل «پایتون» مشهور هستند به سادگی، علت اصلی این امر شباهت زیاد syntax این زبان به گرامر زبان های انسانی ست. اما اگه از من بپرسن، میگم که گولنگ هم زبان خیلی ساده ایه فقط باید کمی حوصله کنی! خیلی ها ممکنه همین حس رو به جاوا اسکریپت داشته باشن.
قطعا عامل مهم دیگه که به بازار کار هم بی ارتباط نیست، قدرتمندی یک زبان هست، اینکه اون زبان چه فریمورک هایی داره، چه کامیونیتی داره و چه شرکت هایی ازش استفاده می کنن تو قدرتش تاثیر گذاره.
سازندگان هر زبان، فلسفه ای برای خود دارند و از منظر خود به دنیای برنامه نویسی نگاه می کنند. با مشاهده قواعد و ویژگی های زبان های مختلف، میتونید متوجه بشید که ذهنیت شما، بیشتر با کدوم فلسفه مطابقت داره.
خیلی خلاصه بخوام بگم جوابش میشه «بستگی داره». بستگی به حوزه ای که قراره کار کنید داره. اگه دنیای قشنگ هوش مصنوعی رو انتخاب میکنید، قطعا دانش آکادمیک لازمه. البته برای کسب دانش آکادمیک لازم نیست حتما دانشگاه برید. پلتفرم هایی مثل یوتیوب الان بزرگترین دانشگاه هستند. اما برای شروع در حوزه برنامه نویسی فرانت و تا حدودی شاید بکند، در ابتدا لازم نیست دانش کسب کنید، این دانش کم کم به سراغ شما میاد.
در نهایت، اگه دوست داشتی از دنیای علوم کامپیوتر بیشتر بدونی، سه درس یا موضوع «مبانی کامپیوتر و برنامه نویسی» و «ساختمان داده ها» و «طراحی الگوریتم» میتونه شروع خوبی باشه برای شما. منبع فارسی و انگلیسی برای این سه موضوع زیاده و با یه جستجوی ساده میتونید با هر mediumی که راحت تر هستید (کتاب، ویدیو، مقاله) شروع کنید.
در ادامه سعی می کنم حوزه های تخصصی مختلفی که با برنامه نویسی می توانید در آن فعالیت داشته باشید رو لیست کنم.
برنامه نویسی وب شاید محبوب ترین دسته باشه، که خودش شامل دو دسته «فرانت» و «بکند» میشه. بسته به اینکه شما بیشتر به دنیای انسان ها و تعامل با اونها علاقه دارید، یا به دنیای کامپیوتر و تعامل با سیستم، میتونید بین فرانت و بکند یک حوزه رو انتخاب کنید. شاید از نظر دانش برنامه نویسی یادگیری فرانت کمی ساده تر باشه و پیش نیازهای کمتری داشته باشه. پس شاید بدک نباشه اگه فکر می کنید خیلی سختتونه، ابتدا برنامه نویسی فرانت رو محک بزنید.
برای این حوزه لازمه که شما HTML و CSS رو یاد بگیرید که یادگیری مفاهیم ابتدایی این دو نباید بیشتر از ۱ ماه از شما وقت بگیره، پس از اون باید سعی کنید زبان Javascript رو یاد بگیرید و حتما در یادگیری این زبان ویژگی های نسخه ES6 زبان رو هم فرا بگیرید. قدم بعدی میشه اینکه با یادگیری یک فریمورک مثل React سعی کنید پروژه های واقعی رو پیاده سازی کنید.
دنیای برنامه نویسی بکند بسیار متنوع هست ولی احتیاج داره که با تکنولوژی ها مختلف بیشتری سر و کله بزنید. برای برنامه نویسی بکند شما میتونید از بین زبان های C-Sharp، Java، PHP، Javascript(nodejs)، Golang، Python و حتی Ruby یکی را انتخاب کنید. در کنار زبان برنامه نویسی احتیاج دارید که با دیتابیس ها آشنا بشید و SQL یاد بگیرد. همچنین دانش سطحی نسبت به سیستم عامل های unix-base خیلی کمک کننده است و در انتها باید در مورد دنیای cloud و ابزارهای اون مثل Docker و Kubernetes مطالعه داشته باشید. اگه قصد دارید برای برنامه نویسی بکند گولنگ رو انتخاب کنید بنده یک برای گولنگ آماده کردم که میتونید مطالعه کنید. خیلی از
در دنیای امروز، بخش اعظمی از کاربران با استفاده از گوشی های موبایل کارهای روزمره خود را انجام می دهند. هر چقدر هم که اپلیکیشن های تحت وب، تلاش کنند که تجربه کاربری راحتی برای کاربران ایجاد کنند، باز هم قطعا نمی توانند جای اپلیکیشن های موبایل را بگیرند. بسته به پلتفرم مورد نظر، یعنی اندروید یا ios شما باید برنامه نویسی Java و Kotlin، یا Objective-C و Swift را یاد بگیرید.
با پیشرفت تکنولوژی و پیچیده تر شدن نیازمندی ها، دنیای cloud محبوبیت ویژه ای کسب کرده و برای آن ابزارهای مختلفی ساخته شده. همین امر باعث شده که حوزه تخصصی جدیدی به نام DevOps بوجود بیاد که اگه به زبان خیلی ساده بگم، وظیفه DevOps اینکه اقدامات لازم از مرحله «توسعه کد» تا مرحله «اجرا شدن آن روی سرور» برای دیده شدن توسط کاربران رو انجام بده.
حوزه علوم داده و هوش مصنوعی دنیای بسیار متفاوتی ست که علاوه بر دانش برنامه نویسی، دانش آکادمیک نیز لازم دارد و شاید بهترین انتخاب در این حوزه زبان Python باشد و صد البته زبان هایی مثل R و Julia هم ممکن است کمک کننده باشند.
در حوزه امنیت شما بهتر است زبان «سی» و «پایتون» را یاد بگیرید. البته، همچون حوزه های دیگر، دنیای امنیت دنیای گسترده ایست و بسته به اینکه به برنامه نویسی ابزار علاقه دارید یا دنیای هک، نیازمندی ها متفاوت خواهد بود.
همانطور که عرض کردم، حتی اگر به برنامه نویسی علاقه ندارید هنوز شغل های زیادی هستند که منتظر شما هستند. شغل هایی که عرض می کنم از نظر مهارت های مورد نیاز تنوع زیادی داره و احتمالا شما حداقل در یکی از این شغل ها مهارت دارید.
افراد فعال در این دسته باید دانش خوبی نسبت به چیزی که قرار هست مدیریت کنند داشته باشند، اما خیلی لازم نیست برنامه نویسی یاد بگیرند. شغل هایی مثل Database Administrator یا Network Administrator نیاز داره که شما از پایگاه های داده یا شبکه اطلاعات خوبی داشته باشید، که با گذراندن یک سری دوره و مطالعه چند کتاب می توانید مفاهیم پایه ای مرتبط را یاد بگیرید. و پس از آن بهتره که به دنبال یک فرصت شغلی به عنوان کارآموز یا مبتدی باشید که فرصت داشته باشید در دنیای واقعی کسب تجربه کنید.
یکی از شغل های بسیار پرمتقاضی و جذاب شغل UI/UX Designer است که به دنیای طراحی مرتبط هست. این نکته رو همینجا عرض کنم که لزوما قرار نیست حتما آدم مستعدی باشید که وارد دنیای طراحی بشید، خیلی وقت ها با تمرین و کسب تجربه انسان میتونه در یک حوزه ای خلاق هم بشه. پس به خودتون برای ورود به این دنیا سخت نگیرید.
هدف از یادگیری همه این مهارت ها، تولید محصول است. و هدف از تولید محصول رساندن آن به دست کاربران است. برای اینکه کاربران از محصول ما استفاده کنند لازم است که محصول توسط کاربران دیده شود. یکی از مهم ترین راه های دیده شدن نمایش داده شدن محصول در صفحات نتایج موتورهای جستجو ست. اهمیت سئو (search engine optimization) به قدری بالاست که متخصصین این حوزه همیشه در تلاش هستند با حل چالش های حوزه خود خروجی بهتری را برای محصول فراهم آورند.
اگه به کارهای مدیریتی علاقه مند هستید و فکر می کنید در ارتباط با آدم ها میتونید تعامل سازنده داشته باشید میتونید اسکرام مستر بشید و اگه فکر می کنید به مدیریت محصول علاقه دارید میتونید مدیر محصول بشید.
در حوزه مدیریت شغل های مختلف دیگه ای هم وجود داره که به دانش عمیق مدیریتی احتیاج داره که اگه میخواید بیشتر در موردشون بخونید بهتره نگاهی به سرفصل های گرایش های مختلف IT در دروس دانشگاهی بندازید.
هر کسب و کاری قطعا در یک مقطعی احتیاج خواهد داشت که برای بهتر دیده شدن محصولش، بازاریابی کنه. اما بازاریابی تو دنیای دیجیتال با بازاریابی سنتی خیلی تفاوت داره. و این موضوع دانش تخصصی خودش رو داره و در نتیجه نیازمند متخصص های خاص خودشه. تو دنیای بازاریابی دیجیتال اون متخصص، میتونه شما باشی!
هر چه بیشتر، بهتر 😉. اما در مورد زبان، شما باید مهارت کافی در خواندن و درک مطالب داشته باشید. همچنین اگر می خواهید فرصت های شغلی بهتری در ایران و حتی بصورت remote از خارج از کشور داشته باشید، باید مهارت مکالمه کافی رو هم داشته باشید. اما به هیچ وجه یادگیری خودتون رو وابسته به یادگیری زبان نکنید. از منابع فارسی شروع کنید به یادگیری، در کنارش حتما، حتما و حتما سعی کنید حداقل در دو مهارتی که ذکر کردم، زبان انگلیسی تون رو هم تقویت کنید.
اگه از من بپرسن سریعترین راه هک کردن یک مهارت چی میشه میگم «شرکت در بوتکمپ» هست. هک کردن نه به معنی رایج «هک» بلکه به معنی کسب مهارت لازم برای انجام دادن یک کار، بدون نیاز به دانش عمیق. بسته به حوزه و زبانی که انتخاب می کنید بوتکمپ های فارسی و انگلیسی مختلفی وجود داره که میتونید با شرکت در این دوره ها، خیلی سریع مراحل یادگیری و کسب تجربه رو پیش ببرید.
مهم ترین رمز موفقیت در هر شغلی فعالیت واقعی و کسب تجربه در شغل مورد نظر هست. برای کسب تجربه راه های مختلفی وجود داره که رایج ترینش میشه «استخدام» شدن در یک شرکت و کسب تجربه. اما این تنها راه ورود نیست. شما میتونید «کسب و کار» خودتون رو شروع کنید. مهم نیست «کسب و کار» چیه و قراره چه اتفاقی براش بیفته.
مهم ترین نکته اینه که کار رو شروع کنید و حتما حتما به سرانجام برسونید. اگه کار به اتمام نرسه شما هم «ناامید» میشید و هم «سردرگم»، چون دوباره میرسید به نقطه صفر که حالا چطوری شروع کنم؟! اما وقتی که کار رو تموم کنید سه تا موفقیت کسب کردید. یک اینکه احتمال داره واقعا کسب و کاری که شروع کردید جای رشد داشته باشه و همون رو ادامه بدید. دو اینکه حداقل چیزی که بدست میارید یه رزومه خوب برای استخدام هست. عامل سوم که از همه مهم تره اینه که شما به شدت «اعتماد به نفس» کسب می کنید که «من می توانم»، و بعد از این مرحله است که دیگه هیچ چیزی در راه موفقیت جلودار شما نیست.
اینکه چندین بار تاکید می کنم حتما پروژه ای که بای خودتون تعریف می کنید رو باید به اتمام برسونید دلیلش اینه که هر چقدر در یک پروژه جلوتر برید چالش های جدی تر و سخت تری منتظر شماست که با هیچ کتاب و دوره آموزشی ای نمیتونید اون چالش ها رو یاد بگیرید. تنها راه حل اون چالش ها جستجوی زیاد در منابع مختلف و امتحان کردن راه های مختلف هست که ممکنه ساعت ها از شما وقت بگیره. و دقیقا این عامل باعث میشه شما بتونید تجربه خیلی خوبی کسب کنید. خیلی اوقات آدم ها به چالش های سخت که میرسن کار رو رها میکنن، اما اگه بدونن چقدر به موفقیت نزدیک هستن هرگز دست از تلاش کردن بر نمیدارن.
در این سال ها با افراد و شرکت های مختلفی در سطوح بزرگ و کوچیک و متفاوت کار کردم و برای من اثبات شده است که اکثر افراد موفق در این حوزه بیشتر از هر چیزی «خودباوری» دارند و به پشتوانه باور، تلاش مستمر می کنند. شما برای حضور و موفقیت در این حوزه به دو عامل «باور» و «تلاش» بیش از هر عامل دیگه ای مثل «استعداد» و «تحصیلات دانشگاهی» احتیاج دارید. پس وقت رو تلف نکنید و حتما از همین امروز شروع کنید.
عذرخواهی: من سعی کردم در مورد بخشی از کلیدواژه هایی که در مقاله به آنها اشاره شد، منبع هم معرفی کنم، اما اگه برای همه کلیدواژه ها این اتفاق نیفتاده، از شما عذرخواهی میکنم. قطعا باجستجوی کلید واژه ها به فارسی و انگلیسی کلی منبع خواهید یافت.
و کلام آخر اینکه، قرار نیست هر آنچه که در این مقاله عرض کردم خدمتتون درست باشه، اگه کم و کاستی ای دیدید به بزرگواری خودتون ببخشید و امیدوارم که مفید باشه براتون 🌹.
اگر در طول مسیر یادگیری احتیاج به کمک دارید می توانید با بنده از طریق ایمیل در ارتباط باشید. همچنین برای اطلاع از مطالب جدید می توانید کانال تلگرام GoCasts را دنبال کنید.