موانع برنامه نويسى براى پياده سازى ايده هاى بزرگ

سلام
خیلی از ما... شاید حتی خود تو! ایده ای داری كه فكر می كنی می تونی با اون دنیا رو فتح كنی. ایده هایی كه وقتی خودت رو بعد از انجام اون می بینی احساس رضایت می كنی. ایده هایی كه می تونن تو رو تبدیل به رهبر یك گروه (مثل لینوس توروالدز) كنه یا تبدیل بشی به مدیر سرشناس یك شركت بزرگ (مثل استیو جابز) یا محبوب دل ها بشی (مثل گیت هاب) كه البته به احتمال زیاد همه ی این موارد تو رو به پول بزرگ می رسونه (واقعا قصد ندارم بیل گیتس رو مثال بزنم!!)

موانع برنامه نویسی برای ایده های بزرگ

خیلی خوب. وقتشه كه از مقدمه بگذریم.

صورت مسئله اینه كه یك ایده ی خوب داری اما موانعی وجود داره كه دست و پات رو برای شروع به كار بسته. این موانع می تونه در ضمیر ناخود آگاه تو باشه و كافیه بشناسیش و راه مقابله باهاش رو بدست بیاری تا شاید بتونی شروع كنی به كار (دقیقا دارم مثل روانشناس ها صحبت می كنم!)
به قول جرج مارتین خالق رمان نغمه یخ و آتش:

وقتی نقطه ضعف تون رو بپذیرید، کسی نمیتونه ازش ضد شما استفاده کنه.
Once you've accepted your flaws,no one can use them against you

البته صرف شناخت نقطه ضعف كافی نیست و باید ازش عبور كنی. این هم اضافه كنم كه این نوشته صرفا و صرفا برای برنامه نویس هاست.

  1. ترس از هك شدن برنامه و سخت گیری زیاد در پیاده سازی
    برای خود من این بزرگ ترین مانعه. قبل از این كه باگ هایی مثل SQLi یا XSS رو بشناسم بدون محابا برنامه های خیلی بزرگ رو می نوشتم اماالان حتی برای نوشتن یك فرم ساده جستجو باید نگران باشم كه مشكل نداشته باشه و این موضوع من رو ناچار به استفاده از فریم ورك هایی مثل جنگو كرده. نمی خوام در مورد ضرورت های استفاده از فریم ورك ها صحبت كنم اما ترجیح می دم برای پروژه ام خودم از اول كد بزنم و بدونم دقیقا چه اتفاقی داره می افته. دوست دارم خودم دوباره چرخ رو اختراع كنم!
     
  2. نیاز به یادگیری تكنولوژی جدید
    اتفاقاتی مثل همین موضوعِ قبلی، ما رو مجبور به یادگیری تكنولوژی/های جدید می كنه. معمولا هر چقدر كه برنامه نویسی و سر و كله زدن با كدها لذت بخشه؛ یادگیری، زمانبر و حوصله سر بره و ممكنه باعث فرسایشی شدن كار و نهایتا فراموشی هدف اصلی بشه. به خصوص وقتی كه  كارمند باشی و فقط آخر هفته ها بتونی وقت اساسی روی پروژه بذاری. مسلما منظور من از این بند، تحقیق و سرچ در گوگل برای حل یك مشكل نیست و باور دارم این كار به خصوص وقتی كه مشكل حل میشه فوق العاده باحاله.
     
  3. تولید همزمان نسخه وب، اندروید، ios و...
    بعضی ها دوست دارند از همون اول برنامه شون رو تحت تموم پلتفرم ها ارائه بدند. به نظرم برای شروع صرفا اون كاری رو انجام بده كه بلدی و برات راحت تره. وقتی برنامه ات محبوب دل ها شد خیلی ها حاضر خواهند بود كه برای نوشتن سایر پلتفرم ها بهت كمك كنند.
     
  4. نقل قولی از لینوس توروالدز خالق لینوکس
    اگر می‌دانستم که چقدر کار باید انجام شود و انجام آن چقدر دردسر دارد و پیش بردن بعضی چیزها چقدر انرژی می‌طلبد، شاید اصلا شروع نمی‌کردم. اگر سواد کافی برای درک مشکلات پیش رو داشتم، احتمالا هیچ‌وقت لینوکس را از همان دو سه نسخه اولیه، جلوتر نمی‌بردم. اگر می‌دانستم که چه‌قدر نکات جزیی را باید مراعات کنم و اگر می‌دانستم که مردم چه انتظاراتی از یک سیستم‌عامل دارند، سناریوهای ترسناکی در ذهنم شکل می‌گرفت که هرگز نمی‌توانستم بر آن‌ها غلبه کنم. (برگرفته از ترجمۀ جادی)
     
  5. ساخت یك چیز كامل از همون اول
    قرار نیست از همون اول نسخه ١.٠ رو عرضه كنی.  از نسخه ٠.٠١ تا نسخه ١.٠ صد نسخه و حتی از ٠.٠٠١ تا ١.٠ هزارتا نسخه وجود داره كه می تونی خرده خرده كاملش كنی!! اما تبلیغات جدی رو زمانی شروع كن كه حداقل نسخه یك آماده شده باشه.
     
  6. محدویت های زندگی كارمندی
    استاد عزیزم می گه برای رسیدن به موفقیت باید بلند پرواز بود و بلافاصله اضافه می كنه كه گورستان پر است از انسان های بلندپرواز!! چون این رابطه یك طرفه است و ممكنه در این مسیر حتی محتاج نون شب بشی. پیشنهادم دو چیزه: یك: اگر دانشجوی لیسانس و بی دغدغه ای؛ بدان كه در طلایی ترین زمان زندگی هستی و می تونی نماد پروژه ی بزرگ دیگه ای باشی كه در خوابگاه شروع شده و دو اینكه: اگر مسئولیت هات زیاد شده و نگرانی های یك شغل تضمین شده رو داری و معنیش اینه در شركت دیگه ای استخدام شدی؛ می تونی به این برنامه به عنوان یك پروژه آخر هفته و به عنوان یك تفریح نگاه كنی.
     
  7. شكست ها و تجربه های تلخ قبلی
    خیلی شانس كمی وجود داره كه اولین تلاش، كسی رو به نتیجه برسونه. مگه توی دنیا چندتا فیس بوك یا لینوكس وجود داره؟! شكست های بی شمار قبلی می تونه سایه بندازه روی دقیقا همون پروژه ای كه قراره تو رو به نتیجه برسونه پس شروع به كار كنیم. البته اگر این یكی هم جواب نداد می گم: خوب! پس جواب در راه حل بعدیه و این دنباله تا آخرین نفس ادامه داره!!
     
  8. ثبت دامنه، اسم پروژه، لوگو، از همون اول روی گیت هاب، متن باز بودن یا نبودن، لیسانس و مجوز برنامه و...
    اووووه! كی میره این همه راه رو! اول برنامه رو شروع كن بعدا در مورد بقیه اش وقت هست. البته قبول دارم كه تا دامنه رو ثبت نكنی نمی شه ؛)
     
  9. انتخاب زبان برنامه نویسی
    این هم که دیگه برای هر کس یه چالشه جدیه! به خصوص وقتی به بیش از یک زبان مسلط باشی. سوال اینه که پایتون کد بزنم یا php یا اصلا ASP؟ هر کدومش یه خوبی هایی و یه بدی هایی داره! اگر واقعا تسلط ات روی همه ی این ها خوب مسلما پایتون بهتر از Php و php بهتر از ASPـه. ولی اگر با ASP راحت تری با همون شروع کن. حرفم اینه که فقط شروع کن بقیه اش خودش میاد...
     
  10. انتخاب زبان نمایش
    قراره برنامه و پروژۀ ما یک برنامۀ بین المللی باشه دیگه؟!؟ پس باید هم سازگار با زبان انگلیسی باشه و هم سازگار با زبان فارسی! بعد می ریم توی این فاز که یک فایل ترجمه داشته باشیم که تمام لیبل های برنامه و... رو از اون بخونه تا به این شکل بعدا هم بشه کل سیستم رو با یک حرکت ترجمه کنیم... این ها استانداردهای خیلی خوبیه ولی واقعا نیازه از همون اول کلی از انرژی مون رو صرف این کار کنیم؟!
     
  11. نگرانی در خصوص تبلیغات و استقبال عمومی پیش از تولید برنامه
    از همین اول به فكر ماركتینگ و بازاریابی و... هستیم. راه حل ساده است. وقتی برنامه تولید شد خودش بهمون می گه از چه طریقی باید به بقیه معرفی بشه.
     
  12. مقایسه كار خود با فیس بوك و اپل و لینوكس و گیت هاب
    قرار نیست برنامه از همون اول با گرافیك و ui و ux بالا ارایه شه. به صفحه اول گوگل نگاه كن. حتما می دونی كه علت سادگی صفحه جست و جوی گوگل این بوده كه لری پیج و سرگئی برین علم و دانش هوش مصنوعی داشتند و از طراحی سایت چیز زیادی نمی دونستند و همینجوری یه چیزی سر هم كردند كه قسمت اصلی كارشون دیده شه.
     
  13. تعریف برای دیگران
    تا وقتی پروژه و برنامه تون به نتیجه نرسیده برای دیگران تعریفش نكنید چون ضمیر ناخودآگاه شما فكر می كنه كه انجامش دادید و كار تمومه.

اگر چیز دیگه ای میشه اضافه كرد لطفا بهم ایمیل بدید.
نویسنده: تمدن و جمعی از بزرگان