انتخاب زبان برنامه نویسی مناسب برای یک پروژه استارتاپی (دارای نسخه های وب، موبایل، ویندوز)


#1

سلام و خسته نباشید می گم به همه دوستان برنامه نویس

شرح حال ما:

من و دوستم یک پروژه استارتاپی رو می خوایم استارت بزنیم (هیچ کدوم برنامه نویس نیستیم)

ما در انتخاب زبان برنامه نویسی برای پروژمون دچار سردرگمی بدجوری شدیم…
پروژه ما باید دارای نسخه های وب، موبایل و ویندوز باشه

آگهی می کنیم:
به چند برنامه نویس مسلط به موارد زیر نیازمندیم:
Node.js + JavaScript + React Native

چند نفر که میان، بعضی هاشون می گن چرا سمت سرور PHP نه؟! بعضی می گن چرا سمت اندروید کاتلین نه؟؟!! بعضی می گن…

یعنی به وضعیتی افتادیم که لیست طول و درازی داریم از برنامه نویس های بسیار زیادی با تخصص های متفاوت!
اما نمی دونیم کدوم برنامه نویسها، و کدوم زبان ها رو انتخاب کنیم…

به ذهنم اومد از شما عزیزان، خصوصا سمیر که از جاوا اسکریپت اصلا خوشش نمیاد، در مورد این مشکل بوجود اومده کمک بگیرم؛

سوال بنده این هست:

  1. (فرض بگیرید اسنپ رو، که علاوه بر امکانات اسنپ، فقط رانندگان تاکسی پروفایلی شبیه اینستاگرام داشته باشند و مسافران امکان بازدید از پروفایل رانندگان رو بر اساس استان و… دارند و علاوه بر اون، هر راننده یک بخش بعنوان دفترچه یادداشت داره که دسترسی به اون کاملا شخصی هست و علاوه بر اینها یک کتابخونه وجود داره که ادمین اون رو عمومی منتشر کرده و هر راننده می تونه بر اساس نیاز خودش در بخش های متفاوتی از هر کتاب یادداشت های شخصی که فقط برای خودش قابل مشاهده هست درج کنه؛) برای یک پروژه استارتاپی که قرار هست نسخه وب، موبایل و ویندوز داشته باشه و سرور هر سه با هم در ارتباط باشند، چه زبان هایی رو برای هر بخش پیشنهاد می کنید؟ این زبان ها چه زبان هایی باشند که با هم تعامل بهتری داشته باشند؟

  2. من تازگی با عنوانی بنام مدیر پروژه آشنا شدم؛ اینجوری برام تعریفش کردن که معمولا مدیر پروژه با اکثر زبان ها آشنایی داره و دیگر برنامه نویسان پروژه رو راهنمایی می کنه که سیستم پس از فراگیری از کنترل خارج نشه؛ آیا ما از همین ابتدا به مدیر پروژه نیاز داریم؟

پیشاپیش از راهنمایی همه شما عزیزان متشکرم


#2

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

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

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


#3

از نکات ارزشمندی که بیان کردید بسیار متشکرم


#4

با درود خدمت شما دوست گرامی php در ایران ارزان است هم از نظر سازماندهیش برای یک گروه کوچک روی هاست های اشتراکی و هم نظر تنظیمات و پیدا کردن نیروی کاری در ایران . معمولا برانامه نویسان php در ایران خیلی زیادند و درصورت برخورد مشکل با یکیشون می تونید با دیگیری کار کنید.

من نمی دونم فرانت شما دقیقا به چه صورت است آیا لزومی دارد صفحه رفرش نشود یا فعالیت های روی صفحه شما به چه صورت خواهد بود اگر چیز خاصی ندارید مثل سایت های معمول بازار هست php و کمی jquery برای شروع کار کافیست .

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

ولی اگر قرار است شما شروع کننده مواردی باشید برای این پروژه با نیازمندی هاتون پیشنهاد ها زیاد است و راهاشون هم طولانی . اگر خودتون می خواهید یاد بگیرید

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

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

به نظرم شما مشخص بفرمایید خودتون می خواهید یاد بگیرید یا می خواهید نیرو جذب کنید شاید بهتر بشه کمک کرد


#5

اگه برنامه نویس نیستید، به برنامه نویسهایی که میگیرید اعتماد کنید. اگه میگن فلان feature باید فلان جور باشه، احتمالا درست میگن.
اینکه بخواید ۱۰۰٪ ایده‌ای که دارید رو بدون تغییر عملی کنید، نه تنها خیلی سخت و زمان‌بر هست، بلکه نتیجه‌ی درست نمیده.


۱- به نظر پروژه‌ی پیچیده‌ای نمیاد که مثلا با فلان تکنولوژی فقط قابل پیاده‌سازی باشه. پس توی انتخاب زبان برنامه نویسی، بهتره به این توجه کنید که برنامه نویسهای چه زبانی راحتتر پیدا میشن. (توی توضیحاتم زبانها و تکنولوژیهای مضخرف رو نادیده میگیرم. حتی اگه بیشترین تعداد برنامه نویسها رو داشته باشه)

  • همونطور که گفته شد، پایتون و روبی برای Back-end مناسب هستن. برنامه نویسش نسبتا راحت گیر میاد (توی سالهای اخیر تعداد مشاغلی که برای این دو زبان میبینم خیلی زیاد شده)
  • برای back-end گزینه‌ای بجز JavaScript ندارید. (گزینه‌های دیگه هم هست ولی برنامه نویسش خیلی کمه)
  • برای برنامه نویسی موبایل، دوتا راه دارید.
    ۱- برای هر سیستم عامل از زبان خودش استفاده کنید (برای اندروید از java یا kotlin و برای ios از objective-c یا swift) که در این صورت حجم کاریتون بالاتر میره و برای هر سیستم عامل حداقل یک برنامه نویس میخواید (چون حجم کار زیاده یه نفر از عهده‌ی جفتش بر نمیاد) ولی نرم‌افزارها در کل بهتر از آب در میان چون برای هر سیستم عامل یه دونه مجزا ساخته شده، اونهم با تکنولوژیهای مخصوص اون سیستم عامل.
    ۲- با js (مثلا React native) نرم‌افزار بسازید که تقریبا میشه گفت یک بار برنامه نویسی میشه و با یه مقدار کمی تغییر میشه روی دستگاه دیگه هم خروجی گرفت از کد. (لازم نیست برای هر سیستم عامل یه برنامه‌ی کاملا مجزا نوشت) مزیتش سرعت بیشتر توسعه است و عیبش اینه که خروجی نرم‌افزارها به خوبی حالت قبل نیست.

۲- با توجه به تعریفی که سمیر از مدیر پروژه ارائه دادند، خودتون میتونید مدیریت پروژه رو به دست بگیرید (با نیم نگاهی به چند خطی که بالای مطالبم نوشتم) ولی به نظرم نیاز به تیم لیدر همیشه حس میشه. حالا شاید با یه عنوان دیگه مثلا «مدیر فنی» یا «مدیر IT» یا «برنامه نویس ارشد».
چیزی که (به نظر من) خیلی مهمه اینه که اگه قراره پروژه‌ای در حوزه‌ی تکنولوژی انجام بشه، باید زیر نظر کسی باشه که به دنیای تکنولوژی مسلطه.


#6

از توضیحاتتون صمیمانه متشکرم

نه، قصد جذب نیرو داریم


#7

نکات خوبی رو گوشزد کردید، صمیمانه متشکرم از وقتی که شما و سایر دوستان متخصص برام گذاشتید


#8

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


#9

سلام.
به نظر من چون شما در حال توسعه پروژه ای هستید که به کلاینت بیشتر از هر چیزی اهمیت میده، بهتره کل بک اندتون رو به صورت رست فول پیاده کنید و برای اینکار بهترین ابزار node.js و فریمورک express.js هست، بعد از اون flask پایتون میتونه گزینه‌ی خوبی باشه و در آینده، وقتی سازمان شما بزرگ شد و پروژه تون ساختار خودش رو پیدا کرد، از میکرو سرویس هایی استفاده کنید که بهتره با گو نوشته بشن. برای ند یا اکسپرس فقط به کسی نیاز دارید که جاوااسکریپت بلد باشه و پیش زمینه ای در مورد این فریمورک ها داشته باشه، توی ایران این فریمورک ها جا افتادن و متخصص های خوبی برای اونها پیدا میشه. فلسک هم به یه پایتون کاری نیاز داره که بهش مسلط باشه، چون فریمورک چندان خوش قلقی نیست ولی برای رست فول مناسبه. اما من همیشه برای بک اند های بر مبنای رست فول، ند رو توصیه میکنم، روند توسعه با اون سریعه، کد هاش قابل فهمن، تعداد متخصص هاش زیادن و به شدت کامیونیتی بزرگی داره و پردازشش سرعت خوبی داره!
اما برای کلاینت ها
اول نسخه وب؛ چون پیشنهاد من اینه که بک اند رست فول باشه، بهترین گزینه برای فرانت vue.js هست، فرانت بدون جاوااسکریپت مثل زنبور بدون عسله (قبول دارم جاوااسکریپت تنها گزینه نیست ولی مهمترین گزینه هست!) اما جاوااسکریپت به شدت فریمورک برای فرانت داره و در این بین vue بهتر از باقی فریمورک ها میتونه با رست فول بودن بک اند کنار بیاد! جی کوئری در حال منسوخ شدنه، انگولار سرعت توسعه کمی داره و ری اکت برای رست فول بودن کارامد نیست. از نظر تعداد متخصص، برای ویو چندان متخصصی نیست ولی مطمئنا کسی که با ویو کار میکنه، برای یه سیستم استارتاپی فوق العاده ست، ایده دار و تنوع طلب و فرد به روزی هست! اما کلا در زمینه فرانت، آدم کم نیست و انتخاب نهایی چندان مهم نیست. پیاده سازی مهمترین چیزه در مورد وب و فناوری ها اونقدر اهمیت ندارن.
نسخه موبایل؛ خب برای ios سویفت و برای اندروید، جاوا رو پیشنهاد میدم. هنوز کاتلین یا فلاتر در دنیا پر طرفدار نشدن، چه برسه به ایران! در مقابل کسایی که با جاوا، برای اندروید کدنویسی میکنن، هم پر تعدادن و هم تخصص بیشتری دارن. اگه بتونید متخصص های مورد نیاز رو برای کاتلین پیدا کنید، میتونه بهتر باشه ولی کاتلین هنوز به بلوغ خودش نرسیده!
برای دسکتاپ، چون گفتید ویندوز، معلومه که سی شارپ تنها گزینه‌ای هست که میشه بهش فکر کرد.
در حالت کلی، c++ qt بهترین گزینه ست که میتونه سیستم عامل های مختلف رو به خوبی هندل کنه.

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


#10

سلام و درود
پس شما بیشتر تاکید می کنید که یک مدیر پروژه بگیریم که تحلیلگر سیستم هم باشه
از نظر کارشناسیتون بی نهایت متشکرم


#11

سلام و تشکر از راهنمایی و بیان شیواتون