استارتاپ

استارتاپ

گزاره‌های فنی در استارتاپ

امروزه کمتر کسب و کاری وجود دارد که با فناوری اطلاعات (IT) سروکار نداشته باشد. و استارتاپی نیست که نقش IT در آن تعیین کننده نباشد. استارتاپ باید مقیاس پذیر باشد. و یکی از مهمترین ابزارهای مقیاس پذیر شدن استارتاپ‌ها فناوری اطلاعات است.

گاهی ایده‌ای به ذهن بنیان‌گذار خطور می کند و از متخصص IT  کمک می گیرد تا آن را اجرایی کند، گاهی هم به دلیل اینکه خود بنیان‌گذار به IT مسلط است آن ایده به ذهن وی می‌رسد. بنابراین معمولا در هسته اولیه استارتاپ‌ها متخصص IT، به عنوان بنیان‌گذار یا هم بنیان‌گذار، حضور دارد.

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

 

  • وجود یک هم بنیان‌گذار با تخصص IT یک ضرورت است یا یک انتخاب؟
  • آیا هر متخصص IT می تواند یک هم بنیان‌گذار مناسب برای استارتاپ باشد؟
  • این هم بنیان‌گذار چه تخصص های فنی و غیر فنی باید داشته باشد؟
  • چه نیروهای فنی و چند برنامه‌نویس باید استخدام شوند؟
  • آیا نگرانی خروج نیروهای فنی از تیم جدی است؟
  • چند ماه زمان می‌برد تا برنامه نویسی تمام شود و محصول حاضر شود؟
  • از ابزارهای مایکروسافت استفاده شود یا ابزارهای منبع باز؟
  • با چه زبانی برنامه نویسی شود؟
  • چه سروری و با چه مشخصاتی لازم است؟
  • ….

وجود یک هم بنیان‌گذار با تخصص IT یک ضرورت است یا یک انتخاب؟

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

از طرفی باید مراقب بود که زیاده روی نشود. اینکه همه بنیان‌گذاران یک استارتاپ را صرفا متخصصان IT تشکیل دهند درست به همان میزان نادرست است که هیچ متخصص IT در تیم بنیان‌گذار وجود نداشته باشد. ترکیب متوازنی از تخصص ها و تجربه های مختلف و ضروری برای موفقیت کسب و کار از جمله متخصص IT  احتمال موفقیت را بیشتر می کند.

آیا هر متخصص IT می تواند یک هم بنیان‌گذار مناسب برای استارتاپ باشد؟ این هم بنیان‌گذار چه ویژگی های عمومی و تخصص های فنی باید داشته باشد؟

پاسخ پرسش اول مطلقا خیر است! یک فرد ابتدا باید ویژگی‌های عمومی یک هم بنیان گذار خوب را داشته باشد. آن گاه از نظر فنی بررسی شود که آیا به عنوان یک متخصص IT  شرایط لازم برای عضویت در تیم بنیان‌گذاران استارتاپ را دارد یا خیر.

برخی از ویژگی‌های عموم یک هم بنیان گذار خوب عبارتند از:

توانایی کار تیمی، مسئولیت پذیری، انتقادپذیری، اعتقاد به بهبود مستمر و عدم مقاومت در برابر تغییرات لازم، استقبال از یادگرفتن و علاقمند به اشتراک دانش و تجربه و آموزش به دیگران، خوش رویی، سخت کوشی و خستگی ناپذیری، هوش و ذکاوت و …

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

چه نیروهای فنی و چند برنامه نویس باید استخدام شوند؟

اگر استارتاپی هم بنیان‌گذار فنی مناسب را داشته باشد شاید تا مدتی نیاز به استخدام نیروی فنی دیگری نباشد. برای تصمیم گیری درباره استخدام نیروی فنی لازم است با تخصص های مورد نیاز آشنا شد.

برای طراحی سامانه های نرم افزاری توسط تیم های کوچک و چابک، حداقل به تخصص های زیر نیاز است:

  • برنامه نویس سمت سرور(Backend developer): طراحی بانک اطلاعاتی، برنامه نویسی وب، مدیریت سرور
  • برنامه نویس سمت کاربر (Frontend developer): طراحی وب، طراح و برنامه نویسی UI/UX
  • برنامه نویس موبایل

بسته به منابع انسانی در دسترس و منابع مالی که در اختیار است، همچنین اولویت های فنی استارتاپ، می توان تصمیم گرفت که همه این وظایف را بر عهده یک نفر مثلا هم بنیان‌گذار فنی قرارداد یا نیروی فنی متخصص در هر یک از این تخصص‌ها را به صورت مجزا استخدام کرد و در واقع یک تیم فنی تشکیل داد. مدیریت این تیم فنی مهمترین مسئولیت هم بنیان‌گذار فنی استارتاپ خواهد بود. معمولا درباره برنامه نویسان وب که هر دو تخصص سمت سرور و سمت کاربر را دارند از اصطلاح Full stack developer استفاده می شود. این افراد در صورت داشتن سایر شرایط ممکن است گزینه خوبی برای هم بنیان‌گذار فنی هم باشند.

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

  • مهندس نرم افزار
  • کارشناس امنیت اطلاعات
  • کارشناس تست / کنترل کیفیت
  • کارشناس شبکه و مجازی سازی / ادمین سرور ها
  • تحلیلگر سیستم / کارشناس مستند سازی
  • کارشناس طراحی، گرافیک و چند رسانه ای

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

افزایش بیش از نیاز تعداد افراد یک تیم علاوه بر این که هزینه نیروی انسانی را افزایش می دهد، می‌تواند برخی اثرات زیان بار دیگری نیز داشته باشد، از جمله سربار زمانی ناشی از افزایش ارتباطات میان‌فردی موجب کاهش چابکی و بهره‌وری خواهد شد.

آیا نگرانی خروج نیرو های فنی از تیم جدی است؟

بله اما این نگرانی درباره نیروی های غیرفنی نیز وجود دارد. خصوصا اگر فردی که از تیم خارج می شود، از کارکنان کلیدی یا از بنیان‌گذاران باشد. بنابراین بهتر است از ابتدا پیش‌بینی‌های لازم شده باشد. لازم است این نکته مد نظر قرار گیرد که هر چند وجود مواردی مانند اهداء سهام، دستمزد و پاداش خوب، محیط کاری جذاب و … موجب افزایش انگیزه کارکنان جهت ادامه حضور در استارتاپ می شود، اما همواره ممکن است شرایطی خارج از کنترل بنیان‌گذاران  یا کارکنان پیش بیاید که یک یا چند فرد کلیدی ترجیح دهند یا مجبور شوند از تیم خارج شوند. مانند:

  • کاهش سطح انرژی فردی و انگیزه‌های درونی، ناامیدی از موفقیت
  • دریافت پیشنهاد کاری با شرایط بهتر
  • تصمیم به مهاجرت
  • مشکلات شخصی، بیماری

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

برخی از کارهایی که می تواند مشکلات ناشی از خروج نیروهای متخصص را کاهش دهد:

  • حتما در مشارکت‌نامه برای خروج هم بنیان‌گذاران پیش‌بینی لازم شده باشد. در صورت خروج یک هم بنیان‌گذار از تیم اجرائی چه اتفاقی برای سهام وی می افتد؟ آیا وی همچنان سهامدار باقی می ماند؟ یا موظف است سهام خود را به بنیان‌گذاران باقی‌مانده منتقل کند؟ با چه شرایطی؟
  • در قرارداد استخدام کارکنان شرح وظایف شغلی و شرایط خروج و تسویه حساب شفاف سازی شده باشد.
  • باید تلاش شود به صورت دوره‌ای (روزانه، هفتگی، ماهانه) و مستمر از همه فایل‌ها (سرورها، سورس‌ها) نسخه پشتیبان تهیه و در جای امنی نگهداری گردد و این موضوع در فرهنگ‌سازمانی نهادینه شود.
  • تاکید بر مستندسازی صحیح طراحی‌ها، فرآیندها و سورس‌ها نیز می‌تواند راهگشا باشد.
  • تا حد امکان حساب‌های کاربری در سامانه‌های مختلف خدماتی اعم از بانک‌ها، شبکه‌های اجتماعی، ایمیل و … به نام استارتاپ یا با مشخصات حقوقی ثبت گردند.

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

چند ماه زمان می‌برد تا برنامه نویسی تمام شود و محصول حاضر شود؟

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

از ابزارهای مایکروسافت استفاده شود یا ابزارهای منبع باز؟ با چه زبانی برنامه نویسی شود؟

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

  • در استارتاپ، انتخاب سرمایه‌های انسانی متخصص و متعهد -با ویژگی هایی که پیش‌تر به آن اشاره شد- مهم‌تر از انتخاب ابزار هستند. لذا لازم است ابتدا هم بنیان‌گذار فنی مناسبی پیدا کنید. آنگاه انتخاب ابزار و زبان را برعهده وی بگذارید.
  • در دنیای امروز تقریبا امکان تبدیل، ارتباط و اتصال بین همه ابزارها و زبان‌های مرسوم تا حد قابل قبولی فراهم آمده است، با این حال، معمولا هم بنیان‌گذار فنی، سازگاری ابزارها و زبان‌ها را در نظر خواهد گرفت. به عنوان مثال چنانچه در یک استارتاپ از زبان برنامه نویسی C# برای توسعه سمت سرور استفاده شود، معمولا انتخاب اول برای سیستم عامل سرور Windows server و برای طراحی پایگاه داده MS-SQL server خواهد بود. اما برنامه نویسان PHP ترجیح می دهند از MySQL برای بانک اطلاعاتی استفاده کنند یا برای برنامه نویسان Java استفاده از پایگاه داده Oracle اولویت دارد.

 

بانک اطلاعاتی

زبان برنامه نویسی

سیستم عامل سرور

MS-SQL server

C#

Windows server

MySQL

PHP

Linux

Oracle Java

Windows/Linux

 

  • برخی از ابزارها رایگان هستند و برای استفاده از برخی دیگر باید هزینه پرداخت. می‌بایست این نکته را در نظر داشت که در ایران پرداخت هزینه بابت لایسنس نرم افزارهای خارجی عرف نیست. لذا تاکید بیش از حد روی این موضوع با واقعیت‌های کشور هم‌خوانی ندارد. چنانچه استارتاپی قصد تاسیس دفتر و گسترش محدوده فعالیت خود به خارج از کشور را داشته باشد، لازم است این موضوع را بیشتر مورد تحقیق قرار دهد. البته شرکت مایکروسافت نیز نسخه های رایگان یا ارزان قیمتی از ابزار های خود ارائه کرده و همچنین در سالهای اخیر گام هایی به سمت Open Source برداشته است.
  • تیم فنی همواره می کوشد از همه ابزارها و روش‌هایی که در اختیار دارد و به آن‌ها مسلط است در راستای تحقق اهداف استارتاپ بهترین استفاده را نماید. به عنوان مثال ممکن است برای میزبانی سامانه و پایگاه داده از سرورهای مایکروسافت ویندوز استفاده کند، اما برای میزبانی وبلاگ و ایمیل، سرورهای لینوکس را ترجیح دهد. این موضوع نه تنها اشکالی در کار ایجاد نمی‌کند و ناسازگاری محسوب نمی‌شود بلکه گاهی موجب استفاده بهتر از منابع مالی و امکانات سرورها می گردد.

 

چه سروری و با چه مشخصاتی لازم است؟

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

یکی از مهمترین و گرانقیمت ترین منابع سخت افزاری سرور CPU می باشد. پرسشی که مطرح می شود این است که چه میزان از این منبع لازم است؟ بستگی دارد استارتاپ مورد نظر چند کاربر داشته باشد. به بیان دقیق‌تر، حداکثر تعداد کاربرانی که همزمان به سرور متصل هستند اهمیت دارد. همچنین فاصله زمانی بین دو درخواست متوالی هر کاربر و اینکه پاسخ به هر درخواست کاربر بطور متوسط در چه زمانی قابل محاسبه و ارائه توسط سرور است. مشخص است که دادن پاسخ کاملا دقیق کار ساده ای نیست.

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

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

ابزارهای آنلاین و نرم افزارهای متنوعی با عنوان کلی Stress test  یاLoad test  برای شبیه‌سازی رفتار تعداد زیادی کاربر هم‌زمان وجود دارد که تیم فنی می‌تواند با کمک آن‌ها تا حدودی ظرفیت پاسخگویی سرور را اندازه بگیرد یا به شناسایی قطعه کدهای نیازمند به

ممکن است بپسندید...

پست های محبوب

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *