توصیههای من زمانی که کسی از من میپرسد چگونه میتوانم یک دانشمند "داده" شوم؟ به جای آن میتوانید یک مهندس نرم افزار شوید.
این مطلب صرفاً نظر شخصی است. اگر مخالف هستید، دوست دارم دلایل شما را زیر این مطلب بشنوم.
امروزه همه آدمها و حتی مادربزرگهایشان میخواهند که دانشمند داده شوند. اما درحالیکه علم داده ممکن است جذابترین شغل قرن بیست و یکم باشد، حرفهای پرارزشتر و پردرآمدتر نیز هست، مهندسی نرم افزار.
من معمولا پیامهایی دریافت میکنم از این قبیل که به دنبال شغل جدیدی هستند و یا در فکر تغییر شغل فعلی خود هستند و از من میخواهند برای ورود به علوم داده مشاوره بگیرند. من به آنها میگویم که در عوض مهندس نرمافزار شوند.
با داشتن تجربه در هر دو، سعی میکنم شما را متقاعد کنم که دومی را انتخاب کنید.
1.تعداد مشاغل در مهندسی نرم افزار بیشتر است
در مهندسی نرم افزار نسبت به علوم داده، تعداد مشاغل بیشتری وجود دارد.
دو تصویر زیر از جستجو کردن دو واژه "دانشمند داده" و "مهندس نرم افزار” در گوگل بدست آمد.
دانشمند داده واقع در ایالاتمتحده
مهندس نرم افزار در آمریکا
این 7616 شغل علوم داده در مقایسه با 53.8893 شغل مهندسی نرم افزار است. این فقط مشاغل در ایالاتمتحده است. اما سایر کشورها نتایج مشابهی را نشان دادند.
طبق گفته Glassdoor، دانشمندان داده درآمد بیشتری کسب میکنند. اما طبق فرضیه آزمایش نشده من، مشاغل علوم داده درآمدشان مانند متوسط درآمد یک مهندس ارشد نرم افزار است.
2. هیچ اتفاق نظری وجود ندارد که علوم داده چه معنیای میدهد
مدیران اغلب بر روی اینکه علم داده دقیقا چیست، اتفاق نظر ندارند. همچنین باتوجه به محدودیتهای تجاری ممکن است آنها امکاناتی که لازمهی نقش شماست، برای شما فراهم نکنند.
این به این معنی است که مسئولیتهای یک دانشمند داده از شرکتی به شرکت دیگر متفاوت است.
اگرچه ممکن است در حالت ایدهآل بین نقش مهندس نرم افزار و دانشمند داده فاصله وجود داشته باشد. اما تقریبأ بعید به نظر میرسد در واقعیت هم، اینگونه باشد. این فاصله منحصراً برای استارتآپهایی است که در جهت ساخت زیر بناهایشان پیش میروند.
کسانی هم که برای استخدام نامزد میشوند، بجای ایفای نقشی که احتمالاً برای آنها قرار است استخدام شوند، بر روی مشکلاتی که شرکت درحال حاضر نیاز دارد حلکند، کار میکنند.
شواهد موثق از همکاران در این زمینه نشان میدهد که بسیاری از دانشمدان داده خود را درحالی یافتند که مانند یک مهندس نرم افزار، کدهای سمت سرور مینویسند.
اگر در مسابقات Kaggle رشد کرده باشید، این کاملاً مخالف چیزی است که انتظار دارید.
3. علم داده منزوی است
اکثر شرکتها آنطور که به مهندسین نرم افزار نیاز دارند به دانشمندان داده نیاز ندارند. مابقی شرکتها نیز همین الان در حال استخدام اولین دانشمند داده خود هستند.
به همین دلیل بسیاری از دانشمندان داده کار خود را تمام میکنند. حتی اگر در همان میز به عنوان برنامهنویس بنشینند.
اما یکی از قدرتهایی که حضور در یک تیم نرم افزار به شما میدهد این است که به همکاران خود بگویید :« من فکر میکنم باید قسمت ABC را به روش XYZ حل کنیم. شما چی فکر میکنید»؟
البته در مقابل، مهندسان نرم افزار یا مدلسازی پیشبینی را درک نمیکنند، یا خیلی مشغول کار بر روی مشکلات کاملاً متفاوت هستند و این میتواند گرفتن بازخورد و نظرات را سخت کند.
4. علوم داده اکتشافی هستند
برای گفتوگو با مدیرتان آن هم کاملا سرهمبندی شده آماده باشید که چرا چیزی که دوهفته زمان برای آن صرف کردید، اکنون ممکن است کاملاً بیفایده باشد.
درواقع، کار بر روی مشکلاتی که تاکنون حل نشدهاند یکی از تفاوتهای اصلی بین توسعه نرم افزار و هوش مصنوعی است.
گذشته از باگها و محدودیتهایی که دارد، شما قبل از شروع کار بر روی بیشتر پروژههای مهندسی نرم افزار میدانید که آیا این پروژهها قابل انجام هستند یا نه. درصورتی که در مورد علوم داده این حرف صدق نمیکند. و تا زمانی که یک مدل ساخته نشود نمیتوان گفت یک مدل قابل استفاده است یا نه.
5. شرکتها برای هوش مصنوعی آماده نیستند
حتی در دورهای که هر شرکتی یک شرکت هوش مصنوعی است، اکثر آنها یا زیرساخت مناسب برای پشتیبانی از آن را ندارند و یا حتی نیازی به آن ندارند.
رئیس علوم داده برای سرعت دادن به مهارت استارتآپها توصیههایی منتشر کرد:«ابتدا مشکل را بفهمید، سپس زیرساختها را ایجاد کنید، پس از آن دانشمندان داده را وارد کنید. این یک روندِ سریع نیست».
شخصی دیگر، یک دانشمند درجه یک علوم داده در یک شرکت معتبر و شناخته شده بود که تجربیاتش را با من درمیان میگذاشت.
او میگفت مجبور شد، تا مدلهای هوش مصنوعی بر روی دادههای بزرگ را بهجای فضای ابری در لپتاپ خودش آموزش دهد.
6. مهندسی نرم افزار مهارتهای عمومی را آموزش میدهد
تبدیل شدن به یک مهندس نرم افزار تازه کار مانند گرفتن مدرک MBA در تکنولوژی است. شما کمی از همه چیز را یاد میگیرید.
شما دیتابیسها (پایگاههای داده)، تکنولوژی ابری (cloud)، امنیت، و کد تمییز نوشتن را یاد خواهید گرفت.
شما مدیریت ساخت نرم افزار را با تماشای مدیر اسکرام خود و یا برنامهنویس ارشد و یا مدیر پروژه خود یاد خواهید گرفت.
شما میتوانید با بررسی کدها منتور شوید.
اگر در یک شرکت با یک تیم مهندسی پایدار و با ثبات کار میکنید، تقریبأ تضمین میشود که مهارتهای شما به سرعت بالا میرود و یک پیش ضمینه کلی را یاد خواهید گرفت.
7. مهندسی نرم افزار قابلیت انتقال و جابهجایی بیشتری دارد
مهندسین نرم افزار با داشتن تجربههای کاملتر در تکنولوژی، در صورتی که تصمیم به تغییر میکنند میتوانند بهتر و راحتتر از موقعیت فعلی خود خارج شوند.
DevOps، امنیت، برنامه نویسی سمت سرور(بکاند)، برنامه نویسی سمت کلاینت (فرانتاند)، سیستمهای توضیعشده، هوش تجاری، مهندسی دادهها، علوم داده و...
من تعدادی از برنامهنویسان را میشناسم که از نرم افزار به سمت علوم داده رفتند.اگر مختصری از توضیحات من مورد مشاغل علوم داده را متوجه شده باشید، فوراً متوجه میشوید که آنها با مهارتهای اصلی توسعه نرم افزار ارتباط ندارند.
اگر میتوانید یک پروژه را به تنهایی بسازید و مدیریت کنید، پس میتوانید کارهای بهتر از ساخت مدل برای Kaggle انجام دهید.
میتوایند آن مدل را بگیرید، آن را به محصول تبدیل کنید و تولید کنید، مجوز هایش را بگیرید و سپس برای دسترسی کاربران به محصولتان حساب آنها را شارژ کنید. این تبدیل به استارتآپ شما خواهد شد.
8. یادگیری ماشین به ابزاری برای مهندسان داده تبدیل خواهد شد
با تبدیل شدن هوش مصنوعی به محصول و استفاده آسانتر از آن، مهندسان نرم افزار شروع به استفاده از آن برای حل مشکلات خود میکنند.
دانشمندان داده از دانش تخصصی مانند آمار و شهود برای نحوه کار مدلها برخوردار هستند. اما مهندسان DevOps و امنیت علاوهبر آن، دانش تخصصی خود را نیز دارند.
من ثابت میکنم که این موارد بیشتر متداول هستند تا متفاوت!
یک متخصص نرم افزار با تجربه میتواند بین تخصصهای خود حرکت کند. حتی سریعتر از آنکه یک داوطلب جدید بتواند یکی از آنها را انتخاب کند.
درحالی که فکر نمیکنم به طور کامل علوم داده در مهندسی نرمافزار ادغام شود، اما به نظر میرسد علوم داده میتواند به یکی دیگر از تخصصهای مهندسی نرم افزار تبدیل شود.
9. هوش مصنوعی جایگزین مهندسان نرم افزار نمیشود
احمقانه است، اما من در سال 2014 وارد مهندسی نرم افزار شدم زیرا نگران بودم هوش مصنوعی مشاغل دیگر را منسوخ کند.
از آن زمان تا اکنون، تماس گرفتن در باجههای تلفن آنهم به سختی، به خارج از آن منتقل شد.
پذیرش فناوری کند است و روند هوش مصنوعی محدودتر از آن چیزی است که رسانهها سعی دارند به شما بگویند.
اما بازهم در مقایسه با سایر حرفهها، یادگیری ماشین حتی از خودکارسازی مهندسی نرم افزار فراتر رفته است. ما استارتآپهایی داریم که محصولات جذابی میسازند، مانند هوش مصنوعیای که قادر است کدها را تکمیل کند.
اما توجه داشته باشید که نوشتن کد یک کار واقعی نیست، بلکه کار واقعی حل مشکلات در استفاده از تکنولوژی است.
این یک مهارت ارزشمند و پردرآمد خواهند ماند.
درنهایت
اولاً، این صرفاً یک نظر شخصی است.
ثانیاً، من میدانم که دانشمندان داده، مهندسین ML و محققان هوش مصنوعی را درهم آمیختهام. اما فکر میکنم این استدلالها درصورتی که شغل شما هستند ارزش تفکر را دارند.
درآخر خیلی جدی نگیرید. من ترجیح میدهم که تحقیق کنید و بعد تصمیم بگیرید. این بخشی از دانشمند شدن است.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید