در حال یادگیری دانشها یا در حال جمعآوری کتابها؟
چهار مرحله Software Development و تاثیر عجیبش رو بخش های دیگه زندگی
به نام خدا.
سلام.
مقدمه
اگه دقت کنی، میبینی که ما آدما خیلی اوقات وقتی با یه «مسئله» روبرو میشیم، از اون مسئله سریع یه «کوه» تو ذهنمان میسازیم و سریع هم تو ذهنمان به خودمان میگیم:
- خیلی سخته
- نمیشه
- من نمیتانم
- فقط یه سری آدمای عجیب قریب که احتمالاً از فضا آمدن، توانایی اون کار رو دارن.
- و هزار بهانه و توجیه و . . .
این قضیه که آدم موقع مواجه شدن با یه «مسئله» خودش رو ببازه و خودش رو دست کم بگیره و فکر کنه در توانش نیست، اتفاقاً خیلی هم واکنش طبیعی و نرمالیه برای ما انسان ها.
انتظار داشتی که بگم فقط تعداد کمی اینقدر ضعیف هستن؟ نه بابا، ما آدما بیشترمان ضعیفیم و فقط نقشِ آدمای قوی رو بازی میکنیم.
حالا قبل از اینکه بریم سراغ اون ۴ مرحله، یکم راجب مفهوم «مسئله» حرف بزنیم.
«مسئله» و روش های روبررو شدن باهاش
اصلاً «مسئله» یعنی چه؟ از اسمش معلومه که یعنی «چیزی که باید حل بشه».
حالا وقتی آدما با یه مسئله روبرو میشن، معمولاً به ۳ جورِ مختلف واکنش نشان میدن بهش:
- دسته اول سریع یه کوه تو ذهنشان میسازن و ازش فرار میکنن. (شاید ۹۰ درصد جامعه)
- دسته دوم هرجور به هر زحمتی شده به جَنگش میرن ولی وقتی شکست میخورن ول میکنن. (شاید ۹ درصد)
- دسته سوم هم به جنگش میرن ولی حتی بعد از شکست خوردن هم باز میجنگن تا وقتی که موفق بشن. (شاید یک درصدِ باقیمانده)
من تو این مقاله زیاد نمیخوام رو این قضیه زوم کنم، فقط میخوام بگم که اکثر ماها وقتی با یه مسئله روبرو میشیم، اصلاً بلد نیستیم چکار کنیم. اصلاً هم فکر نکنید که آدما از شکم مادرشان قوی به دنیا میان.
آدمایی که جزو دسته ۳ هستن، یه روزی تو دسته اول بودن، بعدش با تلاش رفتن تو دسته دوم و در آخر هم تو دسته سوم.
ولی چطور این کار رو کردن؟
روش های مختلفی میتانه تاثیر بزاره:
- بعضی وقتا یه آدم واقعاً یه هدفی داره که به هر دلیلی خیلی هم براش ارزشمنده. این باعث میشه که انگار اتوماتیک بره تو دسته سوم!
- بعضی وقتها یه آدم مجبوره یه کارایی رو بکنه و اصلاً حق انتخاب نداره تو زندگی. این آدمم میره تو دسته سوم ولی فرقش اینه که زندگی مجبورش کرده.
- بعضی وقتها یه پدر یا مادر (یا هر دو) جوری با بچه برخورد میکنن که از بچگی یادبگیره وقتی شکست خورد بازم ادامه بده و ولش نکنه. این نکته خیلی مهمه چون خیلی از ویژگی های ما از بچگی شکل گرفتن و ریشه های اونها رو میتانی تو همون بچگیات گیر بیاری.
- و شاید چیزای دیگه.
میخوام بگم که فکر نکنید هرکی تو دسته سومه حتماً یه آدمیه که عاشق کارشه و از لحظه به لحظش هم لذت میبره. اتفاقاً تو این دنیا اون فاکتورِ «مجبور بودن» خیلی خیلی قوی تر از اون «هدف داشتن» و «علاقه داشتنه».
بریم سراغ اصلِ این مقاله، یعنی ۴ مرحله تو برنامه نویسی که خیلی میتانه به شما کمک کنه که چطور با مسائل مختلف روبرو بشین.
۴ مرحله برنامه نویسی
ببین، اگه نوشتنِ یه برنامه رو به عنوانِ یه «مسئله که باید حل بشه» در نظر بگیریم، و اگه به همون شکلِ عادی که با مسائل دیگه روبرو میشیم باهاش برخورد کنیم، نتیجه این میشه که اون پروژه برنامه نویسی یا اصلاً به سرانجام نمیرسه و یا نتیجه کار، خوب از آب درنمیاد.
این دقیقاً مشکلی بود که برنامه نویس های اون روزهای اولِ برنامه نویسی، باهاش سر و کله میزدن و خیلی زود بعد از اینکه ما نیاز به برنامه های پیچیده تر پیدا کردیم، کسایی که تو این حیطه بودن، تصمیم گرفتن که بیان یه چارچوب برای مواجه شدن با پروژه های برنامه نویسی درست کنن که خودشان رو از سردرگمی ها نجات بدن.
نتیجش شد این ۴ مرحله (البته من به خاطر این مقاله یکم خلاصش کردم که شما اصلِ قضیه رو بگیرین):
مرحله اول - Analysis
تو این مرحله تو میای اون مسئله ای که قراره حل بشه رو آنالیز یا بررسی میکنی. خودمانی بخوام بگم، توی این مرحله ما دنبالِ جوابِ سوالِ «چه» هستیم. یعنی اینکه میخوایم ببینیم این نرم افزاری که قراره ساخته بشه، «چه» کارهایی قراره انجام بده.
مرحله دوم - Design
تو مرحله Design، ما دیگه میداینم نرم افزارمان قراره چکار بکنه. اینجا دنبال اینیم که ببینیم حالا این نرم افزار ما «چطور» قراره اون کارها رو انجام بده.
مرحله سوم - Implementation
تازه تو این مرحله هست که ما میایم و شروع به کُد نوشتن میکنیم. یعنی الان هم میدانیم که چه کاری قراره انجام بشه و هم میدانیم که اون کارها چطور قراره انجام بشن. پس میایم و اون Design که تو مرحله قبلی انجام دادیم رو تبدیل میکنیم به یه برنامه (با استفاده از زبان های برنامه نویسی).
مرحله چهارم - Maintenance
دیگه تو این مرحله ما نرم افزار خودمان رو داریم و از این به بعد دیگه نوبت به Maintenance میرسه. کارهایی مثل برطرف کردن Bug ها و آپدیت کردن برنامه و غیره همه اینجا انجام میشن.
ربط این ۴ مرحله به زندگی ما
خب، حالا اینها چه کمکی به ما میتانن بکنن؟ اکثر برنامه نویس های تازه کار بدون اینکه مراحل ۱ و ۲ رو انجام بدن، مستقیم یا علی میگن و شروع میکنن به کُد نوشتن. نتیجش هم میشه سردرگمی و از دست دادنِ اعتماد به نفس و سردرد و هزار جور حس بدِ دیگه و اگر هم نرم افزاری تولید بشه، از نداشتنِ یه Design درست حسابی زجر خواهد کشید که همه رو هم عذاب خواهد داد بعد از تولیدش.
ربط این ۴ مرحله به جاهای دیگه زندگی ما میتانه این باشه که وقتی که با «مسئله» روبرو میشی، زود نرو همینجور سراغ حل کردنش و زود هم تو ذهنت کوه نساز و زود هم ناامید نشو:
- اول اون مسئله رو یه آنالیز بکن و ببین «چه» کاری اصلاً قراره که انجام بشه.
- بعدش ببین «چطور» باید اون کارها انجام بشن تا به هدفت برسی و یه Design برای خودت درست کن.
- بعدش هم اون Design رو از دنیای فکر و Plan خارج کن و به «عمل» تبدیلش کن تا اون مسئله حل بشه.
- مرحله ۴ هم که معمولاً برای هدف های دیگه (بجز برنامه نویسی) کاربردی نداره (چون تو مرحله قبل مسئله حل شده دیگه!) ولی شاید بتانی برای خودت یه استفاده ای ازش بکنی.
حرف آخر
در آخر هم یه جمله از Earl Nightingale:
All you need is the plan, the road map, and the courage to press on to your destination.
تنها چیزایی که احتیاج داری اینهاس: برنامه ریزی، نقشه راه، و داشتنِ شجاعت برای ادامه دادن (پشتکار) تا زمانِ رسیدن به مقصد.
دفعه بعدی که با یه مشکل یا مسئله روبرو شدین، اول به «چه» و بعد هم به «چطور» فکر کنید.
مخلص، یا علی.
مطلبی دیگر از این انتشارات
شادی هایی که فقط میلیاردرها تجربه میکنن . . .
مطلبی دیگر از این انتشارات
عملِ بی احساس و «ماهیچه عمل»
مطلبی دیگر از این انتشارات
چطور میشه به یه هدف بزرگ رسید؟