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

اما بسیاری از برنامه نویسان خبره  هستند که تجربیاتی را دارند که آرزو  می کردند ای کاش آنها را همان روزهای اول کار می دانستند. در سایت [Quora](http://www.iclub.ir/the-new-blog-of-quora) [سوالی در همین مورد](http://www.quora.com/Computer-Programming/What-are-the-things-you-wish-you-knew-when-you-started-programming-for-the-first-time)  مطرح شده است که در این نوشته به برخی از مهمترین پاسخ ها خواهیم پرداخت.  علاوه بر این در ادامه تجربیات خودم را نیز با شما در میان خواهم گذاشت.
در یکی از پاسخ ها به پنچ قانون راب پایک اشاره شده است. راب یکی از  مهندسان خبره کانادایی است که کارهای شاخصی را برای آزمایشگاه های بل انجام  داده است. او هم اکنون در گوگل کار می کند. ۵ قانون راب عبارت تند از:
**قانون اول**:  شما نمی توانید حدس بزنید که یک نرم افزار  کجا بیشترین زمان خودش را صرف خواهد کرد. گلوگاه ها در مکان هایی هستند که  تصورش را هم نمی توانید بکنید. لذا تا زمانی که محل گلوگاه مشخص نشده است  سعی نکنید میانبری برای حل آن پیدا کنید. 
**قانون دوم**: اندازه بگیرید. هیچ وقت قبل از اندازه گیری  برای بهبود سرعت اقدام نکنید. حتی پس از اندازه گیری نیز تا زمانی که  قطعه ای از کد تحت الشعاع کدهای دیگر قرار نگرفته اقدام به این کار نکنید.
**قانون سوم**: الگوریتمهای فانتزی و پیچیده هنگامیکه n کوچک  است، کند هستند و معمولا نیز n کوچک است. این نوع الگوریتمها ثابت های  بزرگی دارند. تا زمانی که مطمئن نشده اید که n بسیار بزرگ خواهد بود از این  الگوریتم ها استفاده نکنید. (حتی پس از ثابت شدن بزرگی n اول از قانون دوم  استفاده کنید.)
**قانون چهارم**: الگوریتمهای فانتزی بزرگتر از الگوریتمهای  ساده بوده و از نظر اجرا نیز بسیار سخت هستند. از الگوریتمها و ساختارهای  داده ساده استفاده کنید.
**قانون پنجم**: داده ها حرف  آخر را می زنند. اگر ساختار  داده مناسبی را انتخاب کرده و همه چیز را درست مرتب کرده باشید الگوریتم  مناسب خودش پیدا خواهد شد. ساختار داده  بخش اصلی برنامه نویسی است نه  الگوریتم.
قوانین راب را می توان در زندگی روزمره نیز استفاده کرد. باید به نکات  اصلی مطرح شده در این قوانین توجه کنید. این نکات عبارت تند از عدم   پیش داوری، سادگی و تمرکز بر روی نکته  اصلی. 
در جایی دیگر فرد دیگری به نکته بسیار جالبی در مورد کار برنامه نویسی  اشاره می کند. در این پاسخ به این نکته اشاره شده است که زمانی پیش می آید  که روزهاست بر روی حل یک مسئله کار می کنید ولی هنوز هیچ راه کاری برای حل  آن پیدا نکرده اید. ناگهان افسردگی به سراغ شما می آید و با خود فکر  می کنید که برنامه نویسی کار من نیست. این لحظه، لحظه ی بسیار دشوار و  تعیین کننده ای است. کار را رها نکرده و به دنبال مطالعه الگوریتم های جدید  باشید با ممارست و ادامه کار خواهید دید که مسئله به دستان خود شما حل  خواهد شد. 
نکته ای که باید به آن اشاره کنم این  است که با انتخاب برنامه نویسی به  عنوان مسیر زندگی باید به این نکته دقت کنید که پا در راهی گذاشته اید که  در آن هر روز با مسائل مختلفی روبرو خواهید شد که باید آنها را حل کنید. در  حقیقت مهارتی که باید در آن تسلط پیدا کنید، مهارت حل مسئله است. به همین  دلیل است که سوال « کدام زبان برنامه نویسی را یاد بگیریم؟ » سوال چندان  مهمی نیست و پاسخ درستی هم ندارد زیرا که یک برنامه نویس در مرحله نخست به  دنبال یافتن راه کار است و بعد از یافتن آن می تواند با استفاده از هر  ابزار مناسبی آن راه کار را اجرا کند.
**شما چه تجربه ای در این زمینه دارید؟**