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

پیش زمینه

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


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

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


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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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


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