آنچه که باید قبل از برنامه نویس شدن بدانید
برنامهنویسی برای بیشتر کسانی که در دنیای رایانه فعالیت میکنند جالب است. مخصوصا با گسترش استفاده از اینترنت و نرمافزارهای موبایل و مسائلی که میتوان با استفاده از این ابزارها آنها را حل کرد هر روز جوانان بیشتری کار برنامهنویس شدن را آغاز میکنند.
اما بسیاری از برنامهنویسان خبره هستند که تجربیاتی را دارند که آرزو میکردند ایکاش آنها را همان روزهای اول کار میدانستند. در سایت Quora سوالی در همین مورد مطرح شده است که در این نوشته به برخی از مهمترین پاسخها خواهیم پرداخت. علاوه بر این در ادامه تجربیات خودم را نیز با شما در میان خواهم گذاشت.
در یکی از پاسخها به پنچ قانون راب پایک اشاره شده است. راب یکی از مهندسان خبره کانادایی است که کارهای شاخصی را برای آزمایشگاههای بل انجام داده است. او هماکنون در گوگل کار میکند. ۵ قانون راب عبارتتند از:
قانون اول: شما نمیتوانید حدس بزنید که یک نرمافزار کجا بیشترین زمان خودش را صرف خواهد کرد. گلوگاهها در مکانهایی هستند که تصورش را هم نمیتوانید بکنید. لذا تا زمانی که محل گلوگاه مشخص نشده است سعی نکنید میانبری برای حل آن پیدا کنید.
قانون دوم: اندازه بگیرید. هیچوقت قبل از اندازهگیری برای بهبود سرعت اقدام نکنید. حتی پس از اندازهگیری نیز تا زمانی که قطعهای از کد تحتالشعاع کدهای دیگر قرار نگرفته اقدام به این کار نکنید.
قانون سوم: الگوریتمهای فانتزی و پیچیده هنگامیکه n کوچک است، کند هستند و معمولا نیز n کوچک است. این نوع الگوریتمها ثابتهای بزرگی دارند. تا زمانی که مطمئن نشدهاید که n بسیار بزرگ خواهد بود از این الگوریتمها استفاده نکنید. (حتی پس از ثابت شدن بزرگی n اول از قانون دوم استفاده کنید.)
قانون چهارم: الگوریتمهای فانتزی بزرگتر از الگوریتمهای ساده بوده و از نظر اجرا نیز بسیار سخت هستند. از الگوریتمها و ساختارهای داده ساده استفاده کنید.
قانون پنجم: دادهها حرف آخر را میزنند. اگر ساختار داده مناسبی را انتخاب کرده و همه چیز را درست مرتب کرده باشید الگوریتم مناسب خودش پیدا خواهد شد. ساختار داده بخش اصلی برنامهنویسی است نه الگوریتم.
قوانین راب را میتوان در زندگی روزمره نیز استفاده کرد. باید به نکات اصلی مطرح شده در این قوانین توجه کنید. این نکات عبارتتند از عدم پیشداوری، سادگی و تمرکز بر روی نکته اصلی.
در جایی دیگر فرد دیگری به نکته بسیار جالبی در مورد کار برنامهنویسی اشاره میکند. در این پاسخ به این نکته اشاره شده است که زمانی پیشمیآید که روزهاست بر روی حل یک مسئله کار میکنید ولی هنوز هیچ راهکاری برای حل آن پیدا نکردهاید. ناگهان افسردگی به سراغ شما میآید و با خود فکر میکنید که برنامهنویسی کار من نیست. این لحظه، لحظهی بسیار دشوار و تعیین کنندهای است. کار را رها نکرده و به دنبال مطالعه الگوریتمهای جدید باشید با ممارست و ادامه کار خواهید دید که مسئله به دستان خود شما حل خواهد شد.
نکتهای که باید به آن اشاره کنم این است که با انتخاب برنامهنویسی به عنوان مسیر زندگی باید به این نکته دقت کنید که پا در راهی گذاشتهاید که در آن هر روز با مسائل مختلفی روبرو خواهید شد که باید آنها را حل کنید. در حقیقت مهارتی که باید در آن تسلط پیدا کنید، مهارت حل مسئله است. به همین دلیل است که سوال « کدام زبان برنامهنویسی را یاد بگیریم؟ » سوال چندان مهمی نیست و پاسخ درستی هم ندارد زیرا که یک برنامهنویس در مرحله نخست به دنبال یافتن راهکار است و بعد از یافتن آن می تواند با استفاده از هر ابزار مناسبی آن راهکار را اجرا کند.
شما چه تجربهای در این زمینه دارید؟