اگر مدتی هست که وارد دنیای توسعهنرم افزار شدهاید، شاید سؤالات مختلفی برای شما به وجود آمده،مثلا فکر میکنید چه چیزی باعث ایجاد برنامه نویسی خوب میشود؟ چه مهارتهایی لازم است در سال جدید یادبگیرید تا تبدیل به یک توسعهدهنده بهتر شوید؟ دانشجویان این رشته چه چیزهایی را باید قبل از ورود به دنیای کار بدانند؟ مهارتهای مورد انتظار از یک توسعهدهنده جوان چیست؟ و سؤالاتی از قبیل اینها؛ من در این مقاله از راکت به شما کمک میکنم تا جواب تمام این سؤالات را بگیرید و بتوانید مسیر درستی را انتخاب کنید.
در ادامه، ۱۱ مهارت را برای شما شرح میدهم، که به اعتقاد من هر برنامه نویسی باید در سال ۲۰۲۰ آن را بشناسد یا بیاموزد. این مهارتها، شامل یک زبان برنامه نویسی مانند C ++ یا Java، مفاهیم ضروری علوم کامپیوتر، مانند ساختار دادهها، الگوریتمها و اصول شبکههای کامپیوتری، ابزارهای مهم مانند Git ،Docker ،Kubernetes، مفاهیم Cloud computing و پلتفرمهایی چون AWS ،GCP ،Microsoft Azure ، مهارتهای همیشه مفید و سبز مانند SQL و UNIX، ویرایشگرهایی مانند Eclipse یا Visual Studio Code و همچنین ویرایشگرهای متن مانند VIM و NotePad ++ .
البته این لیست به هیچ وجه کامل نیست، اما نقطه شروع خوبی برای مهارتهایی است که یک برنامهنویس باید بداند. اگر شما در زمینه توسعه نرمافزار به دنبال شغلی میگردید و به دنبال کار کردن در حوزه برنامهنویسی هستید، اینها مواردی هستند، که میتوانید در راستای یادگیری و بهبود تواناییهایتان برای رقابت در در این حوزه استفاده کنید.
۱. Docker and Kubernetes
من معتقدم که هر برنامهنویس، مهندس نرم افزار، دانشمند داده و حتی مدیر پروژه باید درباره کانتینرها و ابزارهایی مانند Docker و Kubernetes بداند.
اکنون ثابت شده است که پلتفرمهایی مثل Docker نه تنها به توسعهدهندگان کمک میکند تا برنامههای خود را در یک محیط واحد، تست کنند، بلکه فرایند توسعه را نیز سادهتر میکنند.
با کمک Docker میتوانید به سرعت برنامه خود را با تمام dependency های آن توسعه دهید، همچنین امکان ایزولهسازی پردازش را هم برای شما فراهم میکند. به همین ترتیب، Kubernetes هم یک ارکستراتور است، آن را به سطح بعدی می برد و می تواند کانتینرها را برای شما مدیریت کند.
این به این معناست که دیگر نیازی به نگرانی در مورد مقیاس پذیری برنامه خود ندارید و Kubernetes یا K8 میتواند این کار را برای شما به صورت خودکار انجام دهد. اگر میخواهید مهارت جدیدی را در سال 2020 بیاموزید، پیشنهاد میکنم داکر و کوبرنتز را بیاموزید، این کار نه تنها در شغل فعلی شما بلکه در پست بعدی شما نیز کمک خواهد کرد.
۲. پلتفرمهای ابری (AWS ، GCP یا Azure)
جدای از کانتینرها، Cloud چیز دیگری است که من فکر میکنم هر توسعهدهنده نرمافزار و دانشمند داده، باید در سال 2020 یاد بگیرند. شرکتها درهرسایز و دامنهای اکنون برای صرفهجویی در هزینه و مقیاس پذیری بهتر محیطهای خود را به Cloud تغییر میدهند ، این بدان معنی است که دیر یا زود، شما باید با برنامههای بومی cloud کار کنید.
یادگیری پلتفرمهای Cloud، مانندPlatform (GCP)، Amazon Web Service (AWS) ،Google Cloud یا Microsoft Azure شما را نه تنها یک قدم جلوتر از رقبای خود در شغل فعلی خود، بلکه در پست بعدی شما قرار میدهد. البته شما نیازی به یادگیری همهی آنها ندارید، و در حقیقت یادگیری یکی بدان معنی است که شما یک ایده عادلانه در مورد پلتفرمهای دیگر خواهید داشت.
برای شروع، پیشنهاد میکنم AWS را بیاموزید زیرا محبوبترین و بالغترین پلتفرم ابری است و تقاضای زیادی برای توسعهدهندگان و مدیرانسیستم با دانش AWS وجود دارد.
۳. ساختار داده و الگوریتم
اگر میخواهید یک برنامهنویس شوید، پس باید ساختار دادهها و الگوریتمها را به خوبی بدانید. هیچ راه فراری هم نیست. اینها یکی از مباحث مهم هر مصاحبه شغلی برنامه نویسی است و بدون آنکه شما از ساختار دادههای اصلی مانند یک آرایه، linked list ،map ،set، آگاهی نداشته باشید، نوشتن یک برنامه در دنیای واقعی امکان پذیر نیست.
به همین دلیل است که هر برنامهنویس باید در دوره علوم رایانه، تلاش جدی برای یادگیری ساختار داده و الگوریتم انجام دهد.
اگر یک برنامهنویس خودآموز هستید ، باید ساختار داده و الگوریتم آن را نیز بدانید. در حقیقت، بسیاری از برنامهنویسان برنامه نویسی بهعنوان اولین چیز ساختار داده و الگوریتم را به شما آموزش میدهند.
۴. ابزار کنترل ورژن (Git)
از سورس کنترل برای ذخیره کد استفاده میشود؛ و اگر میخواهید یک کدنویس یا توسعهدهنده نرمافزار شوید، باید با ابزارهای کنترل ورژن مانند Git و SVN آشنا شوید.
خوشبختانه گیت و گیتهاب بازار را بهبود بخشیدهاند و اکنون بیش از ۷۰٪ سازمانها از Git استفاده میکنند. از این رو با یادگیری Git میتوانید از آن خلاص شوید.
در ضمن، باید تلاش کنید تا Git را به خوبی یاد بگیرید، باید با مفاهیم کنترل ورژن پیشرفته مانند branching و merging و همچنین خود ابزار، راحت باشید؛ هم در خط فرمان و هم با استفاده از GUI. برای مبتدیان، GitHub Ultimate: Master Git و GitHub مکان مناسبی برای شروع است.
۵. یک ویرایشگر متن (VIM)
بهعنوان یک برنامهنویس، یک روز هم نشده که من هنگام کار از ویرایشگر متن استفاده نکرده باشم. این یکی از ابزارهای ضروری حتی برای افرادی غیر از برنامهنویسان و هر کسی است که با کامپیوتر کار میکند است.
من اکثرا از NotePad در ویندوز و VIM در لینوکس استفاده کردهام ، اما امروزه شما از نظر ویرایشگرهای پیشرفته مانند Sublime و NotePad ++ گزینههای زیادی در دسترس دارید، که عملکردی مانند IDE را ارائه میدهند.
پیشنهاد میکنم مدتی را برای یادگیری ویرایشگر مورد علاقه خود و میانبرهای صفحهکلید در آن صرف کنید؛ اگر VIM را دوست دارید، پس VIM MasterClass توسط آقای جیسون کان یک دوره عالی برای یادگیری چنین مهارتهایی است.
۶. (IDEs (VSCode / IntelliJIDEA
IDE های مدرن مانند Eclipse یا Visual Studio Code مهمترین ابزار برای هر برنامه نویسی است. برای برنامهنویسان C ،C ++ و C # انتخاب واضح است، ویژوال استودیو؛ و برای توسعهدهندگان پایتون، Jupiter Notebook هر روز بهتر و بهتر میشود. (البته همهی برنامه نویسان c++ از ویژوال استادیو استفاده نمیکنند چرا که IDE های بسیار بهتری مثل Qt Creator هم وجود دارند)
برای برنامهنویسان جاوا، سه IDE اصلی برای انتخاب وجود دارد، مانند Eclipse ،NetBeans و IntelliJ، در حالیکه Eclipse مورد علاقه من است، البته هم IntelliJIDEA به هیچ وجه بد نیست.
اگر به نظر می رسد که طرفدار IntelliJ IDEA هستید، بنابراین پیشنهاد میکنم ترفندهای IntelliJ IDEA برای تقویت بهره وری برای Java دولوپرها را مشاهده کنید تا بهتر IDE خود را بیاموزید.
۷. بانک اطلاعاتی و SQL
SQL یک پایگاهداده کلاسیک است، بیش از 30 سال است که وجود دارد، و فکر میکنم 30 سال دیگر هم در این حوزه خواهد بود. با توجه به این که پایگاه داده همه جا هست، از یک برنامهنویس انتظار میرود که با مفاهیم اساسی بانک اطلاعاتی مانند عادی سازی و طراحی جدول به همراه SQL آشنا باشد.
بسیاری از بانکهای اطلاعاتی مانندOracle ، MySQL ، Microsoft SQL Server ، PostgreSQL و … وجود دارد؛ اما دانستن فقط یکی از آنها کافی است. نکته مهم این است که شما باید با بانک اطلاعاتی آشنا باشید. شما باید بدانید که چگونه دادهها را وارد کنید/ بهروز کنید/ حذف کنید و برای آن کوئری بنویسید.
آگاهی از مفاهیم پیشرفته مانند join کردن یک aggregate function، یک امتیاز بزرگ است و اگر میخواهید آن را یادبگیرید، The Complete SQL BootCamp مکان بسیار خوبی برای شروع است.
۸. UNIX (لینوکس)
مانند SQL، یونیکس نیز تست زمان را تحمل کرده است. همچنین بیش از 30 سال است که از آن میگذرد و امیدوارم تا سالهای آینده نیز همینطور پابرجا باشد. از آنجا که بیشتر اوقات، برنامهنویسان مجبورند با UNIX کار کنند، مانند سرورهای لینوکس، داشتن دانش خوب از خط فرمان linux، از آنها انتظار میرود.
لینوکس این امکان را به شما میدهد تا به طور موثر کار کنید. میتوانید مصرف CPU و مموری را چک کنید، بفهمید که درون سیستم چه میگذرد و کارهای بسیار زیاد و پیشرفتهای را انجام دهید.( خواهش میکنم ویندوز رو رها کنید و بیاید سمت لینوکس تا لذت واقعی رو تجربه کنید، اگه میخواهید در حوزهی برنامه نویسی پیشرفت کنید و حرفهای بشید، با ویندوز به هیچ جایی نمیرسید. از من گفتن بود! )
۹. یک زبان برنامه نویسی (OOP C ++ ، Java یا Python) یادبگیرید
بهعنوان یک برنامهنویس، شما باید یک زبان برنامه نویسی مانند C ++ یا Java یا شاید Python یا JavaScript را بدانید. شما میتوانید هر آنچه را میخواهید انتخاب کنید، اما پیشنهاد شخصی من این است که حداقل باید جاوا را بدانید.
شروع آن ساده است و به همین دلیل انتخاب مناسبی برای مبتدیان است. همچنین فوقالعاده قدرتمند است و به شما امکان میدهد تقریباً هر کاری را انجام دهید.
۱۰. مبانی شبکه
دنیای امروز دنیای بههم پیوستهای است و هر کجا که بروید، شبکههای رایانهای را پیدا خواهیدکرد، از خانهای که در آن از WIFI استفاده میکنید گرفته تا مدرسه، دانشگاهها و دفاتر، از شبکه محلی (LAN) تا اینترنت استفاده میکنند.
بیشتر برنامههایی که شما خواهید نوشت نیز، مستقل نخواهند بود، و شما باید برنامهای بنویسید تا مشتریان بتوانند از هرجای دنیا به برنامه شما دسترسی پیدا کنند.( البته بسته به نوع سرویس هم متفاوت است.)
نکته اصلی این است که شما باید اصول اساسی شبکه را درک کنید، برنامهای را توسعه بدهید و از برنامه خود پشتیبانی کنید.
۱۱. یک زبان اسکریپتی یاد بگیرید
در نکته شماره ۸ از شما خواستهم که یک زبان برنامه نویسی یاد بگیرید و در اینجا از شما میخواهم که یک زبان اسکریپتی را یاد بگیرید؟ چرا؟ آیا نمیتوان از همان زبان برنامه نویسی به عنوان زبان اسکریپتی استفاده کرد؟
خوب، بدون شک برخی از زبانها وجود دارد که مناسب برای هر دو کدنویسی OOP و اسکریپتی، مانند Python است؛ بههمین دلیل از شما خواستم حداقل آن را یاد بگیرید.اما اگر زبانی را نتوانید برای هر دو مورد استفاده کنید چه؟ اینجاست که اگر زبانی بلد باشید که از هر دو را پشتیبانی کند، کار شما راحت خواهد شد.
و در آخر ...
این ۱۱ مهارت بود که هر برنامهنویس باید بیاموزد. فارغالتحصیلان کامپیوتر و افرادی که مایل به تبدیل شدن به یک برنامهنویس هستند، میتوانند از این لیست استفاده کنند تا بتوانند به یک برنامهنویس موفق تبدیل شوند. امیدوارم از این مطالب استفاده ببرید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید