توسعه دهندگان وب نقش مهمی در روند انجام یک پروژه دارند. اما یک توسعه دهنده حرفه ایی، باید در مهارتهای جانبی بیشتری تسلط پیدا کند. آنها بهتنهایی میتوانند یک کار را از صفرتا صد انجام دهند اما تبدیلشدن به یک توسعه دهنده کامل واقعی کار آسانی نیست و به مهارتهای متعددی نیاز دارد.
چطور یک توسعه دهنده Full Stack یا همهکاره شویم؟ این همیشه یکی از داغترین مباحث برای توسعه گران بوده است که هیچوقت تمامی ندارد. در بسیاری از اکانتهای فیسبوک و لینکدین، افراد شغل خود را یک توسعه دهنده Full Stack معرفی کردهاند. همچنین ظاهراً عبارت «Full stack» به یک گرایش محبوب در فضای شغلی تبدیلشده است. مقالهای که در Medium منتشر شد، شغل یک توسعه دهنده همهکاره را هم تحسین و هم موردانتقاد قرارداد. بعضی از مردم تصور میکنند که همهکاره بودن فقط یک عنوان است، اما آنچه واقعاً باید رویش تمرکز کنند، فناوری و توانایی فردی است.
مقاله مرتبط: کدام شغل را انتخاب کنیم: طراح وب یا توسعه دهنده وب؟
بهطورکلی به نظر ما بحث درباره همهکاره بودن همانند بحث مربوط به «همهفنحریف» بودن و حرفهای بودن در صنعت IT است، و صحبت درباره توسعه و درجه مهارت توسعه گری افراد است.
نمیتوانید همزمان هم یک کیک داشته باشید و هم آن را خورده باشید. اما ظاهراً طراحان و توسعه دهندگان همهکاره این امر را ممکن کردهاند. چون مهارتهای زمینهای و کناریشان این قابلیت را به آنها داده است که هم کیک داشته باشند و هم آن را میل کنند. اصطلاح دیگری هم وجود دارد که میگوید: در هر زمینه دستی بر آتش دارد اما در هیچکدام استاد نیست. اما چگونه میتوان یک توسعه دهنده تمامعیار شد؟
توسعه دهنده Full stack چه کسی است؟
اگر بخواهیم ساده بگوییم، یک توسعه دهنده همهکاره کسی است که در چندین مهارت، تسلط کامل داشته و با استفاده از آنها یک پروژه را بهتنهایی به سرانجام میرساند. بهترین پاسخ به پرسش مشابهی که در Quora مطرحشده بود میگفت:
یک توسعه دهنده همهکاره، مهندسی است که میتواند به تمام امور مربوط به پایگاههای داده، سرورها، مهندسی سیستمها و مشتریان رسیدگی کند. در پروژههای مختلف ممکن است مشتری به یک توسعه دهنده خبره درزمینهٔ موبایل، وب یا اپلیکیشنهای بومی نیاز داشته باشد.
درواقع، واژه «همهکاره» به مجموعهای از چندین فناوری مختلف اشاره میکند که برای تکمیل یک پروژه نیاز است. «Stack» مجموعه از sub-module ها است. این عناصر یا sub-module های نرمافزاری، باهم ترکیب میشوند تا بدون نیاز به ماژول های دیگر به عملکرد موردنیاز دست یابند.
چرا موضوع توسعه دهنده همهکاره بحثبرانگیز است؟
همانطور که در بالا اشاره شد صحبت در مورد توسعه دهنده همهکاره، درواقع بحث بر سر وسعت و عمق مهارتهاست. طی یک کنفرانس OSCON، یکی از مهندسان فیسبوک اعلام کرد که فقط یک «توسعه دهنده همهکاره» استخدام کردند. این موضوع، نتیجه حاصل از بحث داغی بود که به خوبیها و بدیهای یک توسعه دهنده همهکاره بودن میپرداخت.
مزایا: توسعه دهندگان همهکاره مجبورند مهارتهای جانبی دیگری هم داشته باشند، بنابراین به کمک مهارتهای گستردهای که دارند، میتوانند خیلی سریع یک نسخه آزمایشی دیگر برای محصول طراحی کنند. با در اختیار داشتن مهارت در همه زمینهها، دید وسیعتر و تفکر فعالتری دارند. علاوه براین، نسبت به فناوریها و محصولات حساستر خواهند بود. بنابراین این نوع افراد همیشه میتوانند ایدهای در مورد محصول یا طراحی داشته باشند.
مقاله مرتبط: ١٠ سایت قدرتمند برای پاسخگویی به سؤالهای برنامه نویسی
اگر بخواهیم از جنبه دیگری نگاه کنیم، آنها میتوانند به همه افراد حاضر در تیم کمک کنند و از بسیاری از هزینههای زمانی و فنی مانند ارتباط بین افراد و کمبود اطلاعات فنی بکاهند. به همین دلیل خیلی از آنها در آینده به یک کارآفرین یا یک همکار متخصص در شرکتهای استارتاپ تبدیل میشوند.
معایب: دقیقاً به دلیل گسترش مهارتهای کناریشان است که این توسعه دهندگان همهکاره نمیتوانند در یک مهارت استاد باشند. خیلی از آنها که ادعای همهکاره بودن دارند، اطلاعات کمی در مورد مهارتهای دیگر دارند. برای مثال شاید ندانند که چطور میتوان ساختار را تغییر داد تا برای توسعه ماژولار مناسب شود.
چطور یک توسعهدهنده همهکاره شویم؟
یک توسعه دهنده همهکاره حرفهای باید به دانش عملیاتی و تواناییهای لازم در همه ابعاد موجود درروند ساخت اپلیکیشن اشراف داشته باشد.
۱. زبانهای برنامهنویسی
شما باید در چند زبان برنامهنویسی مانند جاوا، PHP، C#، Pytho، Ruby، Perl و غیره مهارت داشته باشید. چون اکثر فعالیتهای اصلی کار شما باید با این زبانها نوشته شوند. شاید همه امور کاری اینطور نباشد. اما باید روی دستور زبان برنامهنویسی هم تسلط کامل داشته باشید؛ همچنین باید تا نحوه ساختاربندی، طراحی، اجرا و آزمایش پروژه بر اساس یک یا چند زبان آشنا باشید. برای مثال، اگر جاوا را انتخاب میکنید، باید به مفاهیمی ازجمله طراحی و توسعه object-oriented، الگوهای طراحی، عناصر توسعه مبتنی بر J2EE و غیره مسلط باشید.
مقاله مرتبط: زبانهایی که توسعه دهندگان وب باید بیاموزند
کجا این مهارتها را بیاموزید: Git/Github –حتماً باید نحوه استفاده از Git برای مدیریت و به اشتراک گذاشتن کدهای خود را بدانید.
۲. استفاده از فریمورکهای توسعه و کتابخانههای کمکی
معمولاً زبانهای توسعه محبوب با یک فریمورک توسعه خوب همراه هستند. JAVA Spring، MyBatis، Hibernate، Python Django، PHP thinkphp, yin و nodeJs express از این جمله هستند.
۳. فناوری Front-end
امروزه فناوریهای Front-end در توسعه پروژهها و محصولات اهمیت فراوانی پیداکردهاند. علاوه بر ویژگی محصولات، تجربه کاربری نیز یکی از معیارهای موفقیت یک محصول محسوب میشود. همه اینها به پیادهسازی فناوری front-end بستگی دارد، پس باید به بعضی فناوریهای front-end مانند HTML5، CSS# و جاوا اسکریپت مسلط باشید و کمی بیشتر در مورد فریمورکهای Front-end یا کتابخانههای کمکی مانند JQuery، LESS، SASS، AngularJS یا REACT مطالعه کنید.
مقاله مرتبط: پنج ویژگی زبان HTML که احتمالا نمیدانستید
۴. پایگاه داده و حافظه نهان (cache)
هر پروژه یا محصولی برای ذخیره اطلاعات به یک پایگاه داده نیاز دارد. شما بهعنوان یک توسعه دهنده همه فن حریف باید حداقل یک یا دو پایگاه داده داشته باشید تا نحوه تعامل با پایگاه داده را بدانید. در حال حاضر محبوبترین پایگاه دادهها شامل MySQL، MongoDB، Redis، Oracle و SQLServer هستند. از MongoDB که یک پایگاه داده اسناد است بهطور گسترده در محصولات اینترنتی استفاده میشود. برای پروژههای بزرگتر استفاده از MySQL یا پایگاه داده بازرگانی Oracle را برای یک پایگاه داده back-end پیشنهاد میکنیم. البته از پایگاههای داده حافظه مانند Redis هم میتوان برای ذخیرهسازی در حافظه نهان و بهبود عملکرد سیستم استفاده کرد.
۵. توانایی انجام طراحی در سطح پایه
اکثر مقالات یا مباحث مربوط به توسعه دهی، بندرت به نیازهای طراحی ارتباط دارند. اما بر این باوریم که مهارت طراحی بسیار مهم است. همچنین باید با اصول و مهارتهای طراحی نمونه پایه، طراحی UI و طراحی UX هم آشنا باشید.
۶. قابلیتهای فردی نیز عامل مهمی برای توسعه دهندگان است
- تفکر جهانی
- مهارتهای ارتباطی خوب
- خلاقیت
- کنجکاوی
- مهارتهای مدیریت زمان
جمعبندی
بر اساس قانون ۱۰ هزار ساعت گلادول، حدود ۱۰ سال زمان لازم است تا به دانش Front-end، Back-end و مشتری محور مسلط شده و به یک توسعهگر همهکاره تبدیل شوید. بنابراین رسیدن به آن مرحله، کاری نیست که بتوان یکشبه انجام داد. در این راه به ایجاد زیرساخت فنی لازم، تقویت مهارتهای اصلی و یادگیری مداوم برای غلبه بر چالشها نیاز خواهید داشت.
افزودن دیدگاه