مدیریت افرادمدیریت منابع انسانی
نقشهای کلیدی در یک تیم توسعه نرمافزار کدامند؟
شما در حال ساخت محصول بعدی خود هستید. چشمانداز محصولتان هر روز جزئیتر میشود و زمان آن رسیده است که آن را به محصولی واقعی تبدیل کنید که مردم مشتاق استفاده از آن هستند.
در این مرحله، ممکن است تصمیم بگیرید که مهندسی نرمافزار را به یک شریک با تجربه که دارای پیشینه عمیق در فناوری است، واگذار کنید.
اما در حالی که ممکن است در نگاه اول به نظر برسد که مهندسان نرمافزار تنها متخصصانی هستند که در تیم خود به آن نیاز دارید، به سرعت متوجه خواهید شد که هر تیم توسعه نرمافزار از نقشهای متفاوتی تشکیل شده است. هر متخصص مسئول وظایف خاصی است.
- این آدمها چه کسانی هستند؟
- چرا باید بهای زحمات آنها را بپردازید؟
- آیا واقعاً در تیم خود به آنها نیاز دارید؟
در این مقاله قرار است با نقشهای کلیدی تیم توسعه نرمافزار آشنا شوید تا بتوانید تیم مناسبی را برای توسعه محصول خود تشکیل دهید.
نقشهای کلیدی در تیم توسعه نرمافزار
در این بخش، شما با شش نقش کلیدی در تیم توسعه نرمافزار آشنا خواهید شد.
مالک محصول (PO)
بیایید با نقش شما در تیم توسعه نرمافزار شروع کنیم.
به عنوان موسس استارتاپ، میتوانید در فرآیندهای کشف و توسعه پروژه شرکت کنید تا تمام جزئیات محصول را به تیم توسعه ارائه دهید. همچنین میتوانید این نقش را به فردی با دید روشنی از ایدهتان که میتواند علایق، خواستهها و الزامات محصول شما را درک نماید، واگذار کنید.
مالک محصول یا PO، هدف محصول را تعریف میکند و آن را برای تیم توضیح میدهد. او به طور فعال با همه متخصصان درگیر در فرآیند توسعه ارتباط برقرار کرده و قادر به پاسخگویی به سوالات مربوط به محصول است. مالک محصول لزوماً نیازی به داشتن پیشینه فنی ندارد. اگر در توسعه اپلیکیشن تازهکار هستید، نگران نباشید: همچنان میتوانید این نقش را در تیم خود بازی کنید.
مالک محصول یک بکلاگ محصول یعنی لیستی از الزامات ایجاد میکند که در مراحل مختلف رشد محصول باید برآورده شوند. اساساً موارد موجود در بکلاگ محصول ویژگیهایی هستند که میخواهید در برنامه پیادهسازی کنید. مالک محصول باید مطمئن شود که بکلاگ محصول شفاف، دقیق و صریح است.
مدیر پروژه (PM)
مدیر پروژه (PM) مسئول هر مرحلهای است که تیم توسعه نرمافزار برای برآوردن نیازهای شما و ارائه نتایج مورد انتظار پشت سر میگذارد. مدیر پروژه تنها مسئول کارایی توسعه محصول و بهینهسازی فرآیند توسعه است.
با مدیریت مناسب پروژه، تلاشهای ترکیبی توسعه، هزاران خط کد و یک ایده کسب و کار قوی، میتوانید محصولی ایجاد کنید که بتواند سالها مشتریان را شگفتزده کند و از رقبا متمایز شود.
مدیر پروژه از نزدیک با مالک محصول در ارتباط است و اطلاعات لازم در مورد موارد زیر را دارد:
- کسب و کار شما
- کاربران برنامه
- بازار هدف
آگاهی فنی اولیه، مدیر پروژه را به عضو مهمتری از تیم تبدیل میکند. یک مدیر پروژه واجد شرایط نه تنها میتواند اطمینان حاصل کند که محصول شما الزامات را برآورده کرده و ذینفعان را راضی میکند، بلکه میتواند در تخمین وظایف شرکت نماید، راههایی برای بهبود محصول پیشنهاد کند، و درک بهتری از برنامه را به تیم توسعه نرمافزار ارائه دهد.
تحلیلگر کسب و کار (BA)
راشل پولسن، تحلیلگر ارشد محصول در گوگل میگوید: «تحلیلگران کسب و کار، دادهها را تجزیه و تحلیل میکنند تا بینشهای مختلفی را بیابند که بر کسب و کار تأثیر میگذارد».
اگر هنوز کسب و کار ندارید چه؟ در این مورد، تحلیلگران کسبوکار دادهها را جمعآوری و تجزیه و تحلیل کرده، نتایج را تفسیر میکنند و پیشنهادهایی برای راهاندازی یک اپلیکیشن بالقوه محبوب ارائه میدهند.
وی یانگ، تحلیلگر محصول در گوگل میگوید: «میلیونها سوال وجود دارد که باید قبل و بعد از راهاندازی بپرسید. ما در تلاشیم تا چه اتفاقی بیفتد؟ چگونه میتوانیم آن را از نظر کمی ثابت کنیم؟ آیا ما به آن اطمینان داریم؟»
اینها سوالاتی هستند که یک تحلیلگر کسب و کار میتواند به آنها پاسخ دهد. تحلیلگران خواستههای موجود، نقاط درد و مشکلات را با یک راهحل واقعی که در برنامه نرمافزاری شما گنجانده شده است، پیوند میدهند. تحلیلگران کسب و کار با هزاران داده کار میکنند تا بهترین راهها را برای توسعه و بهبود برنامه شما پیشنهاد دهند. آنها همچنین رقبا را مورد مطالعه قرار داده، نقاط ضعف آنها را تعریف میکنند و نگرانیهای کاربران را آشکار میسازند تا به شما کمک کنند یک برنامه بهتر و کاربرمحورتر راهاندازی کنید.
بدون داشتن تحلیلگر کسب و کار در تیم خود، ناخواسته با چندین نتیجه منفی مواجه خواهید شد:
- کاربران نمیخواهند از محصول شما استفاده کنند
- کاربران محصول شما را دوست ندارند
- کاربران به محصول شما نیازی ندارند
تفاوت تحلیلگر کسب و کار (Business Analyst) و تحلیلگر سیستم (System Analyst)
ممکن است افتراق بین نقشهای تحلیلگر کسب و کار و تحلیلگر سیستم (SA) گیجکننده باشد، به خصوص اگر در توسعه محصول تازهکار هستید. تجزیه و تحلیل کسب و کار مفهوم گستردهتری است که کل یک سازمان یا حوزه کسب و کار را در بر میگیرد. تجزیه و تحلیل سیستم بر مشخصات فنی یا توسعه یک محصول خاص متمرکز است.
- تحلیلگر کسب و کار الزامات کسب و کار را توسعه میدهد، در حالی که یک تحلیلگر سیستم این الزامات را برای سیستم نرمافزاری تفسیر میکند.
- تحلیلگر کسب و کار مشکل موجود را شناسایی میکند و توضیح میدهد که چه راهحلی باید پیادهسازی شود. تحلیلگر سیستم اهداف پروژه را بررسی و نحوه پیادهسازی راهحل را در برنامه بیان میکند.
- تجزیه و تحلیل سیستم حوزهای از تجزیه و تحلیل کسب و کار است. بنابراین، در بسیاری از تیمها، تحلیلگر کسب و کار نقش تحلیلگر سیستم را ایفا میکند.
طراح UI/UX یا طراح نرمافزار (SD)
طبق گفته Forrester، طراحی جذاب اپلیکیشن ممکن است باعث جهش ۲۰۰ درصدی در نرخ تبدیل شما شود. مسیریابی بصری و تجربه کاربری یکپارچه ممکن است نرخ تبدیل شما را تا ۴۰۰% افزایش دهد.
به همین دلیل است که شما به یک طراح UI/UX ماهر در تیم توسعه نرمافزار نیاز دارید.
این تصور غلط وجود دارد که مهندسان نرمافزار میتوانند طرح برنامه را خودشان ایجاد کنند. درست است که مهندسان میتوانند از یک الگوی آماده استفاده نمایند، اما در این صورت اپلیکیشن شما دقیقا شبیه هزاران اپلیکیشن دیگر خواهد بود. علاوه بر این، ایده شما برای یک الگوی خاص ساخته نشده است. تلاش برای متناسب کردن آن با یک برنامه ممکن است منجر به ایجاد اپلیکیشنی شود که مبتذل و غیرجذاب به نظر برسد.
وظیفه اصلی توسعهدهندگان کدنویسی است، نه ایجاد طرحهای زیبا. طراحی UX و UI به خلاقیت، آگاهی از روندهای طراحی مدرن، تخصص عمیق در ابزارهای طراحی نرمافزار و خلاقیت زیادی نیاز دارد.
طراح با استعداد هنرمندی است که نرمافزار شما را به شاهکاری تبدیل میکند تا مورد پسند کاربران قرار گیرد.
طراح UI/UX در تمام مراحل توسعه اپلیکیشن مشارکت دارد:
مرحله کشف
در مرحله کشف، طراح به اثبات مفهوم برنامه با ایجاد صفحه نمایش برنامه و وایرفریم کمک میکند.
نمونهسازی یا پروتوتایپینگ
طراح با همکاری تحلیلگر کسب و کار، یک پروتوتایپ ایجاد میکند که به شما امکان میدهد با سرمایهگذاران بالقوه ارتباط برقرار کنید.
تست ایده
طراحان نرمافزار ممکن است چندین ایده طراحی را به شما ارائه دهند. شما میتوانید آنها را آزمایش کنید و تصمیم بگیرید که کدام یک منجر به تبدیل بیشتر میشود. تکرارهای مکرر طراحی ممکن است به شما کمک کند دائماً برنامه خود را بهبود بخشیده و علاقه کاربران را افزایش دهید.
هویت برند
طراح لوگو و سایر عناصر بصری را ایجاد میکند تا آگاهی از برند را افزایش دهد و شرکت شما را قابل تشخیص کند.
رابط کاربری و تجربه کاربری
مسئولیت طراح این است که یک تفسیر بصری از ایده شما ایجاد کند.
اگر در تیم توسعه نرمافزار خود طراح نداشته باشید چه؟ بدون طراح، رابط برنامه شما ممکن است به طور جدی آسیب ببیند. اگر فکر نمیکنید به یک طراح تماموقت نیاز دارید، یک طراح پارهوقت استخدام کنید.
مهندس نرمافزار (SE)
مهندسان نرمافزار (یا توسعهدهندگان نرمافزار یا برنامهنویسان) نیازمندیها و طرحها را به برنامههای قابل کلیک واقعی تبدیل میکنند که میتوانند به سؤالات کاربر پاسخ دهند، با سایر برنامهها و خدمات تعامل داشته باشند، پاسخها را ارائه دهند و انتظارات شما را برآورده کنند. مهندسان نرمافزار دقیقاً همان چیزی را میسازند که شما میخواهید در وب ببینید و اجرا کنید.
مهندسان فرانتاند
مهندسان فرانتاند رابط کاربری اپلیکیشن را میسازند. آنها عمدتاً با استفاده از چارچوبهای HTML، CSS، جاوا اسکریپت و جاوا اسکریپت، صفحات برنامه را مطابق با نمونه اولیه و الزامات کسب و کار شما ایجاد میکنند.
مهندسان بکاند
مهندسان بکاند یا سمت سرور، برنامه شما را نه تنها خوب جلوه میدهند، بلکه باعث میشوند به خوبی کار کند. آنها مسئول توسعه عملکرد برنامه شما و بهبود عملکرد آن هستند. آنها برنامه را به سرورها، پایگاه داده و APIها متصل میکنند. PHP، Node.js، Python، Java و Ruby برخی از ابزارهایی هستند که مهندسان بکاند از آنها استفاده میکنند.
مهندسان موبایل
اگر میخواهید برنامه شما تا حد امکان کاربرپسند و محبوب باشد، باید آن را به عنوان یک برنامه تلفن همراه قابل دانلود از فروشگاههای اپ استور و گوگل پلی در دسترس قرار دهید. متخصصان Swift و Java/Kotlin میتوانند به شما در ساخت برنامههای تلفن همراه برای iOS و اندروید کمک کنند. به عنوان جایگزینی برای توسعه بومی، میتوانید یک رویکرد چند پلتفرمی را در نظر بگیرید. توسعه بین پلتفرمی ممکن است از نظر هزینه و قابلیت استفاده مجدد کد، کارآمدتر باشد.
معمار نرمافزار (SA) کیست؟
در جلسه آغازین پروژه خود، احتمالاً با یک معمار نرمافزار آشنا خواهید شد. معمار نرمافزار ماهرترین مهندس تیم است. بر خلاف سایر متخصصان نرمافزار، معمار نرمافزار نه تنها کدنویسی کرده و روی توسعه اپلیکیشن کار میکند، بلکه به مدیریت پروژه و تجزیه و تحلیل سیستم کمک میکند و ارتباط اساسی بین جنبههای کسب و کار و فنی تیم را فراهم میسازد. معمار نرمافزار یک دید فنی برای کشف محصول ارائه میدهد، معماری محصول را از ابتدا طراحی میکند، راهحل را میسازد و تیم توسعه نرمافزار را رهبری میکند.
مهندس تست یا مهندس تضمین کیفیت (TE یا QA)
با وجود تعداد بیشماری از برنامهها و وب سایتها، جلب توجه کاربران و واداشتن کاربر بالقوه به استفاده از برنامه شما یک چالش است، اما فقط یک ثانیه طول میکشد تا یک کاربر را برای همیشه از دست بدهید. کیفیت پایین محصول ممکن است یکی از دلایل اصلی آن باشد.
پس چه کسی مسئول کیفیت محصول است؟
آیا شما مسئول هستید؟
البته، شما میتوانید زمان خود را برای تست کردن صرف کنید. اما با توجه به اینکه مهندسان نرمافزار هشت ساعت در روز روی نوشتن، تعمیر و بازآفرینی کد کار میکنند، باید زمان زیادی را برای آزمایش صرف کنید.
احتمالاً این زمان را ندارید. و اگر داشته باشید، احتمالاً میخواهید آن را در وظایف مهم توسعه کسب و کار سرمایهگذاری کنید، نه در تست نرمافزار.
آیا مهندس نرمافزار مسئول است؟
مطمئناً توسعهدهندگان برنامه میتوانند عملکردی را که میسازند بررسی کنند. اما این فقط منجر به اتلاف وقت میشود. هنگام آزمایش یک محصول، مهندسان زمانی برای ساخت ویژگیهای دیگر نخواهند داشت. اگر آنها زمان خود را در تضمین کیفیت سرمایهگذاری کنند، زمان ورود به بازار شما ممکن است تا حد زیادی افزایش یابد.
پس تستر نرمافزار باید مسئول باشد!
یک مهندس تست (یا مهندس تضمین کیفیت، یا مهندس کنترل کیفیت) مسئولیت اطمینان از اینکه طراحی و عملکرد برنامه شما مطابق با الزامات محصول است را بر عهده دارد. مهندس تست، طرحهای آزمایشی را توسعه میدهد، سپس آزمایشهایی را برای تأیید اعتبار محصول و یافتن خطاها یا اشکالات احتمالی در عملکرد آن اجرا میکند.
بدون مهندس تست، زمان (اگر خودتان برنامه را آزمایش کنید) یا پول (اگر میخواهید توسعهدهندگان آن را آزمایش کنند) یا کیفیت محصول و کاربران (اگر کسی برنامه را آزمایش نکند) را از دست میدهید.
جمعبندی
مارتی کیگان در کتاب «Inspired: How to Create Tech Products Customers Love» میگوید:
«تیم محصول مجموعهای از افراد بسیار ماهر است که برای مدت زمان طولانی گرد هم میآیند تا مشکلات سخت کسب و کار را حل کنند.»
اکنون، شما تمام نقشهای کلیدی تیم توسعه نرمافزار را میشناسید:
- مالک محصول (PO)
- مدیر پروژه (PM)
- تحلیلگر کسب و کار (BA)
- طراح نرمافزار (SD) یا طراح UI/UX
- مهندس نرمافزار (SE)، از جمله معمار نرمافزار (SA)
- تستر نرمافزار (ST) یا متخصص تضمین کیفیت (QA)
اکنون که اهمیت هر نقش را در تیم توسعه نرمافزار خود میدانید، میتوانید شروع به استخدام و ایجاد یک کسب و کار قوی مبتنی بر برنامه کنید.