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

پیش زمینه

پس از شکل گیری علاقه من به بازی سازی که البته بخشی از زمینه یادگیری سریعش را یک پروژه پیشنهادی از یک معلم فراهم کرد من با دوستانم چند بازی کوچک در Game Maker 6 ساختیم و پس از آن هم در اوایل دوره دانشجویی به دنبال ساخت بازی خودمان بودیم. برای کسب درآمد کنار تحصیل هم به کارهای شبکه مشغول بودیم که البته کمابیش انجام می دادیم و جدی نبود. بعد ها هنگام تولید اولین پروژه بزرگمان که به شکست انجامید برای کسب درآمد در انجمن های یونیتی به دنبال پروژه گشتیم و کم کم انجام پروژه های مشتری به جد آغاز شد.


چرا باید پروژه دور کاری انجام دهیم؟

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


نکات مثبت و منفی انجام پروژه مشتری

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

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

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

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


تجربیات من در گرفتن پروژه

قلم این بخش کمی امری است، شما موقع خواندن در نظر بگیرید که من نظرم را می گویم و فکر نمی کنم که این درستترین نظر است.

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

هنگام گرفتن پروژه از خارج از کشور گرفتن پروژه برای کل تیم فنی و هنری و طراحی کار مشکلی است و معمولا برای انجام این کار به نمونه کار تیمی و رفتن به کنفرانس ها نیاز دارید. من برای تیمی کار می کردم که خیلی از پروژه های prototype مورد نیاز War Gaming را انجام می داد ولی تیم ما بازی های زیادی در کنسول و PC ارایه کرده بود و در صنعت دارای network قوی بود.

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

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

نوشتن بلاگ و پاسخ گویی به وسالات دیگران به شکل کامل و عمیق به شناخته شدنتان کمک می کند ولی نمی دانم اگر به این کار علاقه نداشته باشید چه قدر خوب می توانید آن را انجام دهید. من اولین پستم برای گاماسوترا را طی دو ماه و آخر شب ها نوشته و پاک نویس کردم (به ساعت این پست هم نگاه کنید :) ). داشتن برخورد مناسب و نظرات جالب و کلا ارتباط خوب و روابط عمومی بسیار کمک می کند ولی اگر کاری را مصنوعی انجام دهید سریع مشخص شده و به ضررتان تمام می شود. هیچ کس از همه کارهای دیگران ذوق نمی کند. خودونی بگم ادا در نیارید :) 

شما در برخی کارها ضرر خواهید کرد. من در ابتدای کار به دلیل بد تخمین زدن خودم یا ناتوانی تیممان در انجام کاری یک پروژه را کنسل کردم و یک پروژه به مشکل خورد که هم ناتوانی و تخمین اشتباه ما بود و هم کار نابلدی کارفرما. یک ماه تمام کارفرما نمی توانست بازی را روی iPhone خود نصب کند و نسخه قدیمی را می دید و در نهایت از پروژه 10000 دلاری فقط 4500 دلار به ما رسید که البته آن روزها پول خوبی بود و ما هم دفتر گرفتیم و هم کارمان را جدیتر ادامه دادیم. طول می کشد تا بتوانید کارها را خوب تخمین بزنید و قبل از زیاد شدن مهارتتان پروژه های بزرگتر را نگیرید و یا از با تجربه ترها کمک فکری بگیرید. 


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

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

گرفتن پروژه از کارفرماهای کشورهای فقیرتر معمولا ساده تر است و مهارت کمتری لازم دارد ولی کیفیت پروژه ها هم پایینتر است و معمولا رزومه خوبی برایتان نیست. آن را فقط در ابتدا و هنگام ضرورت انجام دهید. کشورهای آسیای شرقی به جز ژاپن و کره جنوبی و کشور های دیگر آسیایی و آفریقایی از این دسته هستند. گرفتن کار از آمریکا هم به دو دلیل سختتر از اروپاست. یکی ممنوعیت قانونی آن ها و دوم اختلاف ساعتی که می تواند تعامل را سخت کند. البته بسته به این که تیم سازنده اصلی در غرب یا شرق آمریکا باشد ساعاتی که با هم بیدار هستید و کار می کنید می تواند بین 2 تا 6 ساعت از روز باشد (فرض کردم تا 10 شب حاضرید بمونید سر کار).

از سایت هایی که پروژه ها در آن ها قرار می گیرند فقط upwork/oDesk خوب هستند که اگر کسی از خارج برایتان حساب باز نکند که بتواند ثابت کند در آن کشور است به راحتی بلاک خواهید شد. معمولا بهترین کارها را از انجمن های نرم افزارهایی که با آن ها کار می کنید و جاهایی مثل بخش شغل های stack overflow خواهید گرفت زیرا اعضای اصلی صنعت بیشتر در این مکان ها دنبال نیرو می گردند. در باره مدل سازی و آرت ظاهرا موضوع مقداری متفاوت است که من اطلاع چندانی از آن ندارم. معمولا کسانی در odesk و ... کار قرار می دهند که بیرون صنعت هستند و یا برای سازمانشان / مدرسه شان نیاز به بازی دارند و یا پولی دارند و دوست دارند بازی بسازند و دانششان به زیر صفر میل می کند و گاهی شیرجه می زند که بسیار خطرناک است.


در پست قبل راجع به این موضوع کمی می خواستم بیشتر به شکل عملی صحبت کنم. این که کارها رو از کجا می شه پیدا کرد و چه طور کار رو می شه گرفت که چون طولانی شد ننوشتم. تو این پست اونا رو توضیح می دم و این که باز هم می گم من کسی رو به انجام این کار تشویق نمی کنم. فکر می کنم باید اولویت نوشتن پروژه خود آدم باشه و با این کار می شه شرکت رو ماندگار کرد. این کار فقط برای زنده نگه داشتن شرکت مناسبه و ترجیحا باید مقدار پولی که می گیرید اون قدر باشه که به نوشتن پروژه خودتون کمک کنه و با پروژه خارجی تموم نشه.حالا در باره مکان های گرفتن کار بگم که همونطور که قبلا گفتم بیشتر تو انجمن های مربوط به خود شرکتا کار پیدا می کنید و تو آشنایی با آدم ها از طریق بیرون دادن demo/screenshot/blog/... ولی حالا فرض کنید کاری یافتید که می خواید بگیریدش. باید چی کار کرد؟ طبعا اولش یه پیام یا ایمیل به ارسال کننده کار می فرستید. معمولا خودشون روش ارتباط رو می نویسند. بعد معمولا ازتون زمان و قیمت می خوان ولی به جز اون ها خیلی خوبه که تو ایمیلی کوتاه توضیح بدید چرا برای اون کار مناسبید و دروغ نگید. تشخیصش با وناست که شما مناسبید یا نه. قطعا کارایی هم سطحتون پیدا خواهد شد. اولش هم قطعا خیلی بیشتر طول خواهد کشید. این رو باید بدونید که در بیشتر مواقعی که با کشور های اروپایی و آمریکایی کار می کنید، باید با طرف مقابل روی اسکایپ یا برنامه دیگری صحبت کنید. برنامه دیگر معمولا شامل google hangout و جدیدا slack می شه. 

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

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

گاهی ممکنه مشکلی پیش بیاد که از سمت مشتری باشه و دیر متوجهش بشه. خوبه که صبور باشید و این رو هم باید بدونید که ممکنه کسی پولتونو بخوره. من در ابتدای کار که تجربه کمتری داشتم این مشکل دو بار برام پیش اومد. یه بارش از شب تا صبح امتحان رو یه بازی turn based شبکه ای کار کردیم که چون fade to black گوش می دادیم اسمش شد fade to black و طرف گفت من اولین build رو تو Android ببینم باهاتون قرارداد می بندم. ما هم با فیلترینگ برای اولین بارمو ن یه build گرفتیم و براش فرستادیم و سه روز وقت طلف کردیم که تهش معلوم شد یارو تو دمو پروژه رو به سرمایه دارا نشون می داده پول بگیره. 

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

نکته دیگه ای که باید حواستون باشه، برای پروژه هایی که ساعتی بهتون پول نمی دن هست. تو اونا باید تخمین خوبی بزنید و کلا تخمین زدن  نرم افزار سخته، بازی از اونم سختتره. کتاب demystifying the black art of software estimation آقای استیو مک کانل رو پیشنهاد می کنم. 

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

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

امیدوارم این پست مفید بوده باشه و امیدوارم بتونید رو پروژه های خودتون کار کنید.


از انجمن یونیتی شروع کردم به کار گرفتن و اولش اصولا با قیمت پایین مثلا یه پروژه یه ماهه اگه 1000 دلار بود راضی بودم. سریع یاد می گرفتم و کلی تلاش می کردم. یه مشتری اما خودش بهمون کار داد و برای دوتا بازی 10هزار دلار خواست بده و ما هم قبول کردیم و باید تو دو ماه می نوشتیم جفتشو که شکست خورد و حدود 4500 دلار بهمون داد برای یهبازی که ساختیم. بازی AR بود و برای شرکت تترا پک در کانادا و خودش مارو پیدا کرد از گوگل ، فکر کنم در باره بازیای شبکه مقاله داشتیم و سرچ کرده بود. 
بعدها ارزونتر و گرونتر کار گرفتم نسبت به شرکت محل کارفرما و حقوق های معمولشون و توانایی تیم ما و پیچیدگی کار. از 10 دلار برای هر ساعت گرفتم تا 45 دلار برای هر ساعت. طبعا 45 دلاریش مال الآنه که سه تا بازی بیرون اومده دارم و بیش از 5 سال تجربه جدی حرفه ای و مثلا توی muchdifferent کتابخونه های شبکه ساختم و ... 
الآن به جای انجمن یونیتی تو یونیتی کانکت می گردم اگه کار بخوام و یا کسایی که از قبل می شناسنم بهم کار می دن. در ضمن خود MuchDifferent که گفتم در واقع خودش پیشنهاد کار داد بعد این که کلی تو انجمنشون کمک یوزر های دیگه می کردیم و در باره کار با تکنولوژیشون بلاگ می نوشتیم و ... خیلیاش خود به خود و تو زمان طولانی برای انجام کار خوب زیاد و بدون توقع خاصی اتفاق افتاد. 

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

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

راستی تو ایرانم کار گرفته بودیم با قیمتای خیلی پایین قبلش و یه بازیم به گلرنگ فروختیم دو تومن حدودا سال 89

http://ashkan-saeedi.blog.ir/1396/10/15/%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A7%D8%B2-%D8%AE%D8%A7%D8%B1%D8%AC-%D8%A7%D8%B2-%DA%A9%D8%B4%D9%88%D8%B1