10 حوزه ی پرطرفدار در برنامه نویسی

10 حوزه ی پرطرفدار در برنامه نویسی

از کجا شروع کنیم؟

این مقاله پر اطلاعات است! ما در کدینگ کاگز این مقاله را بر اساس بیش از 30 مقاله ی دیگر گردآوری کرده ایم که بتوانیم جامع ترین و بهترین گزارش ممکن را برای شما آماده کنیم. در مجموع در مورد 10 نوع مختلف برنامه نویسی گفت و گو می کنیم و یاد میگیریم که هرکدام چه وظیفه ای به عهده دارد و چگونه این وظیفه انجام می شود. حوزه های مختلف که در ادامه میبینید به ترتیب سختی و پیچیدگی مرتب شده اند و در این مقاله با حوزه ی توسعه ی وب(فرانت اند) شروع کرده و با تحلیل داده و یادگیری ماشین این مقاله را به انتها می رسانیم.

Easy to Hard bar polt code background

ضمناً! سخت تر و پیچیده تر بودن به معنای بهتر بودن و درآمد بیشتر داشتن در یک حوزه نیست و تنها به معنای طولانی تر و گسترده تر بودن اطلاعات و دانش مورد نیاز برای شروع فعالیت در آن حوزه است.

توسعه ی وب(فرانت اند)

بیایید با آسان ترین راه ورود به صنعت توسعه ی نرم افزار شروع کنیم. توسعه دهندگان وب یا توسعه دهندگان Front-End به افرادی گفته می شود که وظیفه ی پیاده سازی ظاهر وب سایت ها و وب اپلیکیشن ها را به عهده دارند و در کنار پیاده سازی این ظاهر باید عملکرد صحیح برنامه را مد نظر قرار دهند. نتیجه ی کار این گروه از توسعه دهدگان بهبود ارتباط ظاهری محصول با مشتری است. البته نباید بخش های مربوط به مارکتینگ (مثلا SEO) را شرح شغلی برنامه نویسان فرانت اند فاکتور گرفت. پیاده سازی ردیاب ها و بعضی از سرویس های دیگر( مثل Google Analytics) نیز با توسعه دهندگان فرانت اند است.

سطح دیگری از برنامه نویسی فرانت اند

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

  • تبلیغات هدفمند (Targeted ADS)
  • تست های رفتار متغیر (A/B Testing)
  • رصد رفتار کاربر (Heat Maps)

به عنوان یک توسعه دهنده ی فرانت اند باید رفتار مرورگر در مواجه با اطلاعات و فایل ها آشنا باشید و با روش های بهبود کارایی(Performance) و بهینه سازی تصویر و اسکریپت ها آشنا باشید. ابزاری مانند lighthouse میتوانند در این موارد بسیار به شما کمک کنند. همچنین باید در نظر داشته باشید که پیاده سازی های انجام شده توسط شما در دستگاه های مختلف، با رزولوشن های مختلف و با سرعت های اینترنت مختلف چگونه عمل کرده و نمایش داده می شوند.

دنیای توسعه دهندگان فرانت اند

برنامه نویسان فرانت اند بهترین و کاملترین ابزار توسعه ی وب را در اختیار دارند. شما به عنوان توسعه دهنده ی فرانت اند Dev Tools مرورگرهای مختلف را در اختیار دارید که کمک زیادی در زمان انجام کار به شما می کنند، ابزار lighthouse که پیشتر مطرح شد هم کمک بزرگی برای شما خواهد بود و کتابخانه ها(مثل React) و فریم ورک های(مثل Nuxt) زیادی برای انتخاب، یادگیری و توسعه ی برنامه برای شما وجود دارند.


توسعه ی وب آسان ترین راه ورود به دنیای برنامه نویسی است چرا که کمترین میزان دانش مورد نیاز برای شروع کار را می طلبد!!!!!

البته درآمد توسعه دهدگان فرانت اند تفاوت چندانی با دیگر توسعه دهندگان ندارد

ولی میزان نارضایتی شغلی در توسعه دهندگان وب بیشتر از دیگر حوزه های برنامه نویسی است!


موقعیت های شغلی برای این توسعه دهندگان بسیار زیاد است و معمولا این توسعه دهندگان از آخرین نسخه ی تکنولوژی ها و ابزارها استفاده نمی کنند چرا که در زمان معرفی نسخه ی جدید ابزارها، ابزارهای مکمل، کمترین میزان هماهنگی و کارکرد را با نسخه های جدید دارند و زمانی که ابزارهای مکمل شما برای نسخه های بعدی کتابخانه و فریم ورک مورد علاقه ی شما عرضه می شوند، توسعه دهندگان کتابخانه یا فریم ورک نسخه های بعدی را عرضه می کنند. البته با این حال تعداد موقعیت های شغلی طراحی وب،حدودا برابر با جمع تعداد موقعیت های برنامه نویسان سیستمی(برنامه های تحت سیستم عامل) به زبان های مختلف است! علت این مسئله اهمیت بیشتر وب اپلیکیشن ها(برنامه هایی که برای کار نیاز به اینترنت دارند) نسبت به برنامه های سنتی است. در دنیای واقعی کار بر روی وبسایت یک کسب و کار هیچوقت به اتمام نمی رسد.


به عنوان یک
توسعه دهنده و برنامه نویس زیرساخت های هوش مصنوعی
توسعه وب آخرین چیزی بود که یاد گرفتم و واقعا آسان ترین چیزی بود که یاد گرفتم!


شروع فعالیت به عنوان توسعه دهنده ی فرانت اند

برای شروع فعالیت به عنوان توسعه دهنده ی فرانت اند 2 راه پیش رو دارید! یادگیری موارد زیر در هر دو راه مشترک است:

  • HTML
  • CSS
  • حداقل یکی از فریم ورک های CSS(مثل بوت استرپ، تیلویند و یا متریال)

و پس از آن به یک زبان برنامه نویسی نیاز دارید و برای این مسئله 2 گزینه ی زیر پیش روی شماست:

  1. جاوااسکریپت و یکی از فریم ورک ها یا کتاب خانه های مشهور(مثل React, Vue, Angular, ...)
  2. اگر یک زبان برنامه نویسی بلدید در مورد wasm و بکار گیری زبان مورد علاقه ی خود در طراحی وب تحقیق کنید.

بسیار خب! از طراحی فرانت اند عبور می کنیم!

بک اند وب(Back End)

این حوزه کمی سخت تر از برنامه نویسی فرانت اند است. توسعه دهندگان فرانت اند علاقه دارند از API های آماده استفاده کنند و کار خود را به نمایش بگذارند اما در دنیای واقعی این توسعه دهندگان با API های توسعه داده شده توسط توسعه دهندگان بک اند سر و کار دارند که معمولا بسیار دقیق تر و پیچیده تر از API های آماده هستند. وب اپلیکیشن ها بدون برنامه ی بک اند نمیتوانند هیچ عملکرد خاصی را از خود به نمایش بگذارند. برنامه ی بک اند هسته و مغز یک وب اپلیکیشن خواهد بود. برنامه نویسان فرانت اند ممکن است در پیاده سازی طراحی خود موفق باشند اما زمانی برنامه ی آنها واقعا کار میکند که بتوانند درست با برنامه ی بک اند ارتباط برقرار کند. برنامه ی بک اند میتواند فایل ویا رشته های JSON( JavaScript Object Notation ) ارسال و دریافت کند تا با برنامه ی فرانت اند در ارتباط باشد.

تقریبا با تمام زبان های برنامه نویسی میتوان برنامه ی بک اند را نوشت، البته دلیلی ندارد که حتما این کار را انجام دهید. در برنامه نویسی بک اند معمولا درک زبان برنامه نویسی برای توسعه برنامه کافی نیست و باید با پیچیدگی دیتابیس ها و طراحی معماری و داده ها آشنا باشید. هدف این است که با افزایش حجم داده ها برنامه ی شما بتواند سریع، دقیق و کارا باشد و برنامه ی شما از کار نیوفتد(اصطلاحا دارای UP Time بالا باشد). همچنین باید بتوانید قالب های درخواست خود از دیتابیس(Query) را به گونه ای مدیریت کنید که در بهینه ترین حالت خود باشند.

سطح دیگری از برنامه نویس بک اند

در سطوح بالاتر برنامه نویسی بک اند باید موارد زیر آشنا باشید:

  • Telemetry
  • Monitoring
  • Queue
  • Caching
  • DB Searching and Managing
  • Protocol Buffers
  • Microservice Design and Programming

امروزه سطح بالاتر برنامه نویسی بک اند به عنوان حوزه ی سوم پر طرفدار توسعه ی نرم افزار انتخاب می شود و به آن توسعه ی میکروسرویس های بک اند گفته می شود!

شروع فعالیت به عنوان توسعه دهنده ی بک اند

زبان ها و فریم ورک های زیر مرسوم ترین راه ورود به دنیای بک اند هستند (لیست به ترتیب موقعیت های شغلی مرتب شده است):

  1. .Net(C#)
  2. Laravel(PHP)
  3. Django(Python)
  4. NodeJS(JavaScript)
  5. GoLang
  6. Java
  7. Rust
  8. Ruby
  9. FastAPI(Python)- previously Flask

در کنار یادگیری هرکدام از این زبان ها و فریم ورک ها که انتخاب می کنید، نیاز است که یک ORM جامع و ارتباط با دیتابیس های مرسوم مانند Mongodb و MySQL را بلد باشید.

میکروسرویس های بک اند

تفاوت این حوزه با حوزه ی بک اند کمی محو است! پشت وب اپلیکیشن های بزرگ کوه یخ بزرگی از سرویس های مختلف است که هرکدام کارهای مختلفی انجام می دهند. یکی وظیفه ی مدیریت فرم ها را دارد، یکی دیگر مسئولیت مدیریت کاربران، یکی مسئول موجودی فروشگاه و دیگری ... .

بزرگترین سازمانی که از این نوع معماری استفاده می کند شرکت Google است. زمانی که برنامه ی شما بزرگ می شود و یا تعداد کاربران شما بسیار افزایش می یابد، استفاده از فریم ورک های سنگین و یکپارچه(Monolith)، مثل Django برای مدیریت تمام بخش های برنامه و استفاده از یک دیتابیس و یک فضای ذخیره سازی اطلاعات، اصلا منطقی به نظر نمی رسد! هدف توسعه دهندگان میکروسرویس ها حفظ کارایی و افزایش قابلیت نگهداری (Maintainability) برنامه ها(سرویس ها)ی بک اند است.

شروع فعالیت به عنوان توسعه دهنده ی میکروسرویس

برخلاف گزینه های زیاد برای توسعه ی بک اند برای توسعه ی میکروسرویس ها از زبان ها و فریم ورک های زیر استفاده می شود(لیست به ترتیب بیشترین تا کمترین میزان استفاده است):

  1. .Net(C#)
  2. NodeJS(JavaScript)
  3. GoLang
  4. Java
  5. FastAPI(python)

به این سطح از برنامه نویسی بک اند اصطلاحا سطح Enterprise یا شرکتی گفته می شود.

در مقابل میکروسرویس ها

Monolith vs Microsevice

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

مثلا فرض کنید در یک سیستم مونولیت یک سیستم مدیریت کاربر(ثبت نام و ورود و ...) و یک سیستم ثبت سفارش و یک سیستم ارسال و یک سیستم پرداخت دارید. اگر تعداد درخواست های سیستم مدیریت را n در نظر بگیریم، تعداد درخواست های ثبت سفارش، ارسال و پرداخت به ترتیب 10n و n/2 و n/2 خواهد بود. میدانیم که برای پیاده سازی این سیستم به صورت میکروسرویسی نیاز به 1 سرویس ثبت نام داریم و فریم ورک های میکروسرویسی حداقل 10 برابر از سرویس های مونولیتی سرعت عملکرد بهتری دارند، پس از محاسبه نتیجه ی تعداد سرویس ها میتواند به این صورت باشد مدیریت کاربر 1 عدد با جنگو(به خاطر آسان بودن کار)، سرویس ثبت سفارش با FastAPI تعداد 4 عدد، سیستم ارسال با Go یک عدد و سیستم پرداخت با NodeJS یک عدد. این سیستم های کوچکتر در مجموع ممکن است منابع بیشتری مصرف کنند اما مدیریت سیستم و نگهداری کد ها را ساده تر می کنند.


یکی از ویژگی های مهم میکروسرویس ها کم بودن حجم برنامه و قابلیت دور انداختن و بازنویسی سرویس است.

در کنار این مسئله اگر به تعداد بیشتری از یک سرویس نیاز داشته باشید نیازی نیست برنامه ی جدیدی بنویسید و میتوانید این کار را به کوبرنتیز(K8S یا Kubernetes) بسپارید.


دیپلوی کردن(Deploy یا بارگزاری پروژه روی سرور) پروژه های میکروسرویسی نیز سریع تر انجام می شود.

با تکنولوژی های جدید تر ارتباطی مانند Protocol Bufferها نیز میتوان ارتباط بخش های مختلف معماری و سرویس ها را بسیار سریع تر کرد(تا یک میلیون درخواست در ثانیه!)

مهندسین داده یا Data Engineers

حوزه ی بعدی که باهم بررسی میکنیم حوزه ی مهندسی داده است. این حوزه از نظر تعداد مشاغل رشد بیشتری از باقی حوزه های برنامه نویسی داشته است و پیش بینی می شود که موقعیت های شغلی این حوزه از برنامه نویسی میکروسرویس نیز بیشتر شود.

data engineer job demand

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

DevOps

متخصصین دواپس وظیفه ی ایجاد یک ساختار خودکار برای پیاده سازی فرآیند توسعه ی برنامه را دارند. به تصویر بالا چرخه ی دواپس نیز گفته می شود. این چرخه از 8 مرحله تشکیل می شود و مرتبا تکرار می شود:

1- مرحله اول: برنامه ریزی(Plan)

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

2- مرحله ی دوم: نوشتن برنامه(Coding)

در این مرحله تست ها و برنامه نوشته می شوند و در ریپازیتوری پروژه قرار میگیرند و پس از بررسی تایید، اصلاح و یا رد می شوند.

3- مرحله ی سوم: ساخت برنامه(Build)

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

4- مرحله ی چهارم: تست کردن(Test)

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

5- مرحله ی پنجم: عرضه(Release)

در این مرحله با توجه به تغییرات انجام شده و نسخه ی فعلی برنامه یک شماره ی 3 گانه به نسخه ی برنامه اختصاص می یابد. اعداد این شماره از راست به چپ(کمترین ارزش به بیشترین) شامل: پچ ها و اصلاحات نرم افزاری، تغییرات کوچک و تغییرات بزرگ می شوند.

Software Versioning

6- مرحله ششم: بارگزاری(Deploy)

در این مرحله برنامه به صورت خودکار بر روی سرور بارگذاری شده و قابل دسترسی برای کاربران خواهد بود.

7 و 8 - مرحله هفتم و هشتم: عملیاتی کردن(Operate) و نظارت(Monitor)

در این دو مرحله برنامه به وظایف خود ادامه می دهد و در این حین اطلاعاتی را از عملکرد برنامه و رفتار کاربر گردآوری می کند که در مرحله ی برنامه ریزی به کمک برنامه نویسان ارشد و سیاست گزاران برنامه می آید و میتوانند برای مرحله ی بعدی چرخه برنامه ی بهتری بریزند. به این صورت یک سیکل DevOps به پایان می رسد.

وظایف توسعه دهندگان DevOps

متخصصین DevOps وظیفه ی مدیریت فرآیند توسعه ی نرم افزار و اتوماسیون فرآیندهای قابل اتوماسیون شدن را به عهده دارند. این متخصصین علاوه بر آشنایی دقیق با یک زبان برنامه نویسی نیاز به آشنایی کافی با عملکرد باقی زبان ها و فریم ورک های یک وب اپلیکیشن هستند و از ابزار متفاوت و زیادی برای انجام وظایف خود استفاده می کنند. این توسعه دهندگان به کسب و کارها و دیگر برنامه نویسان کمک میکنند که عملکرد و محصول بهتری را در زمان های کوتاه آماده و عرضه کنند. همچنین این متخصصین با استفاده از سرویس ها و ابزار مختلف مدیریت مجازی سازی مانند داکر، کوبرنتیز، AWS و Gitlab اتوماسیون مورد نیاز برای فرآیند ها را بسیار ساده تر از گذشته ایجاد و مدیریت می کنند.

برنامه نویسان Embedded Systems

این توسعه دهندگان پس از متخصصین دواپس بیشترین میزان مشاغل را دارند اما در ایران حقوق بسیار کمتری نسبت به متخصصین دیگر این مقاله دریافت می کنند. این برنامه نویسان بیشتر با سخت افزارهای ضعیف تر، ارزان تر و دقیق تر سر و کار دارند؛ سخت افزارهایی مانند میکروکنترلرها، میکروپروسسورها، M2M ها و FPGA ها.

شروع فعالیت به عنوان توسعه دهنده ی Embedded System

یک توسعه دهنده ی Embedded System ابتدا یک سخت افزار را برای یادگیری و کار انتخاب میکند و زبان برنامه نویسی مرتبط با آن را یاد میگیرد تا بتواند روی آن برنامه بنویسد. زبان های پرکاربرد برای این کار شامل موارد زیر هستند:

  • Embedded C
  • Embedded Cpp
  • Lua
  • Arduino
  • Basic
  • MicroPython
  • JavaScript

این برنامه نویسان بخت برگشته همچنین همیشه باید مراقب منابع محدود( مثلا 2 مگابایت رم) و اجزای مختلف سخت افزار (مانند مدار تغذیه، تعداد و انواع پورت های ورودی و خروجی ، طراحی مدار و ...) باشند و برنامه ی خود را با توجه به منابع محدود سیستم بنویسند.

برنامه نویسی High Performance

برنامه نویسان این حوزه مشابه برنامه برنامه نویسان دیگر حوزه ها هستند با این تفاوت که در حوزه ی کاری خود( از فرانت اند تا هوش مصنوعی) میتوانند برنامه را به پرسرعت ترین و سبک ترین حالت ممکن بنویسند. مثلا یک برنامه نویس فرانت اند با یاد گرفتن #C و وب اسمبلی (wasm) میتواند به یک برنامه نویس High Performance تبدیل شود، یک توسعه دهنده ی بک اند با بکاری گیری Protocol Buffers و زبان C یا ++C برای سریع تر انجام دادن وظایف برنامه میتواند تبدیل به یک برنامه نویس High Performance شود و یک متخصص هوش مصنوعی با پیاده سازی بخش های مختلف شبکه به زبان ++C می تواند تبدیل به یک برنامه نویس High Performance شود. این برنامه نویسان با قابلیت بسیار سریع تر کردن برنامه های مرسوم حوزه ی کاری و تخصصی خود High Performance لقب می گیرند.

در موارد بالا wasm از جاوااسکریپت سریع تر است و میتواند در محیط مرورگر کار کند. C و ++C نیز از سریع ترین زبان های برنامه نویسی سطح پایین موجود هستند.

تست کننده نفوذ یا PenTester

فرض کنید اجزای یک دستگاه چاپ را می شناسید و میتوانید آن را باز و بسته کنید، میتوانید آن را بهتر کنید و میتوانید آن را مجبور کنید که در حد توان خود برای شما کارهای مختلف انجام دهد و یا حتی آن را کاملا از کار بیاندازید! متخصصین امنیت نسبت به برنامه های کامپیوتری اینگونه هستند! به متخصصین امنیت اصطلاحا هکر نیز گفته می شود. متخصصین امنیت درآمد خوبی دارند اما راه طولانی و طاقت فرسایی برای پِنِتِستِر شدن پیش رو دارند، این متخصصین باید بیشتر از دیگر متخصصین در حوزه ی خود مشغول یادگیری باشند و همیشه باید در حال یادگیری آخرین تکنولوژی های ممکن باشند. معمولا شرکت های بزرگ چند متخصص امنیت را استخدام می کنند اما متخصصین امنیت می تواند در کنار شغل خود از راه های دیگری نیز درآمد کسب کنند. یکی از راه های قانونی پر طرفدار برنامه های Bug Bounty هستند که به ازای پیدا کردن حفره ها و نوشتن حمله برای حفره ی پیدا شده به متخصصی که این کار را انجام داده پاداش خوبی می دهند.

اگر در ایران قصد فعالیت در این حوزه را دارید بهتر است برای شرکت در باگ بانتی های بزرگ یک حساب PayPal و MasterCard برای خود ایجاد کنید تا بتوانید درآمد منصفانه تری داشته باشید. درآمد پیدا کردن حفره های مختلف را در یکی از پرطرفدار ترین برنامه های Bug Bounty در جدول زیر میبینید.

جدول بالا برای جوایز و حفره های دسکتاپ و سرور است

جدول پایین برای جوایز و حفره های دستگاه های موبایل

شروع فعالیت به عنوان متخصص امنیت

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

توسعه ی بازی

اگر به این حوزه علاقه دارید در نظر داشته باشید که علیرغم موقعیت های شغلی زیاد برای توسعه دهندگان بازی ها، درآمد این حوزه در تمام دنیا پایین تر از دیگر حوزه های پرطرفدار برنامه نویسی است و کار این توسعه دهندگان بسیار سخت و طاقت فرساست. تنها کسانی که واقعا به ساخت بازی علاقه دارند وارد این حوزه می شوند!

علم داده و یادگیری ماشین

از بین حوزه های پر طرفدار آخرین حوزه هوش مصنوعی است! متخصصین این حوزه درآمد بالایی دارند ولی درآمد آنها از متخصصین بک اند و میکروسرویس کمتر است. دو زمینه ی کاری پر طرفدار و پرکاربرد هوش مصنوعی، یادگیری ماشین(یادگیری ماشین و یادگیری عمیق) و علم داده است. برخلاف مهندسین داده، متخصصین هوش مصنوعی با داده های ساختار نیافته و نامشخص تری سر و کار دارند و نسبت به این داده ها میتوانند وظایف مختلفی داشته باشند؛ از این وظایف می توان به موارد زیر اشاره کرد:

  • سیستم تشخیص و دسته بندی داده ها
  • سیستم های پیش بینی داده ها
  • سیستم های پیشنهاد کننده بر اساس داده ها
  • سیستم های پردازش تصویر
  • سیستم های پردازش زبان های طبیعی
  • سیستم های تشخیص تغلب(Fraud)، خطا(Error) و عیب(Fault)
  • و ...

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

راه پیشنهادی شروع فعالیت به عنوان متخصص هوش مصنوعی

در این بخش 2 راه پیشنهادی ساده تر برای شروع فعالیت در زمینه ی یادگیری ماشین و علم داده را باهم بررسی می کنیم:

راه پیشنهادی شروع فعالیت به عنوان متخصص یادگیری ماشین

روند شروع یادگیری شما به ترتیب زیر است:

  1. یادگیری زبان برنامه نویسی پایتون
  2. یادگیری مقدمات یادگیری ماشین با SciKitLearn
  3. یادگیری کتابخانه ی Numpy
  4. یادگیری مباحث یادگیری ماشین و یادگیری عمیق با یکی از کتابخانه های تنسورفلو یا پایتورچ
  5. یادگیری برنامه نویسی سطح بالاتر، ابزار مختلف برنامه نویسی و بررسی کامل پروژه ی روش تورینگ
  6. یادگیری FastAPI برای دیپلوی شبکه ها

راه پیشنهادی شروع فعالیت به عنوان متخصص علم داده

روند شروع یادگیری شما به ترتیب زیر است:

  1. یادگیری زبان برنامه نویسی پایتون
  2. یادگیری مباحث آماری و مقدمات یادگیری ماشین با SciKitLearn
  3. یادگیری کتابخانه ی Numpy
  4. یادگیری مباحث بصری سازی و تحلیل داده و علم داده و یادگیری کامل کتابخانه ی Pandas
  5. یادگیری برنامه نویسی سطح بالاتر، ابزار مختلف برنامه نویسی و بررسی کامل پروژه ی روش تورینگ
  6. یادگیری کتابخانه ی featuretools
  7. یادگیری FastAPI برای دیپلوی شبکه ها

سخن آخر

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

اگر از کاری که انجام می دهید لذتی نبرید، نمیتوانید در طولانی مدت آن کار را انجام دهید.

اگر هنوز حوزه ی کاری مورد علاقه ی خود را انتخاب نکرده اید، زودتر آنرا پیدا کنید و شروع کنید!

اگر در ابتدای راه هستید، سریع تر و پر قدرت تر پیش بروید تا بتوانید زودتر نتیجه بگیرید!

اگر تازه شروع به کار کرده اید، از یادگیری دست نکشید و سعی کنید هر هفته بهتر از هفته ی قبل باشید و چیز های بیشتری یاد بگیرید!