تزریق انقلابی

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

در این طور موارد اگر فرد برنامه‌نویس آن قدر وقت و حوصله نداشته که همه این موارد را بررسی کرده و ضمناً معتقد باشد که feature مورد نظر چندان هم اثر بدی رو کلیت سیستم ندارد و می‌توان موارد جزیی به وجود آمده را بلافاصله رفع و رجوع کرد آن وقت می‌توان از یک روش انقلابی استفاده کرد. من اسم این روش را «تزریق انقلابی» گذاشته‌ام. به این معنی که ابتدا موارد اصلی بررسی شده و سپس feature مذکور بدون آن که توجه کسی (مشتری/کاربر/کارفرما/مدیر پروژه/…) به آن جلب شود به سیستم تزریق (اضافه) گردد. البته مدتی هم باید گوش به زنگ مشتری ماند تا هر گونه ایراد و اشکال احتمالی سریعاً برطرف گردد.

خواندن کتاب‌های کامپیوتری

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

دسته اول: ابزارها
شامل کتاب‌هایی که برای آشنایی و یادگیری ابزار خاصی نوشته شده‌اند. مثل:

دسته دوم: فناوری‌ها
شامل کتاب‌هایی که استفاده از فناوری خاصی را آموزش می‌دهند. مثل:

دسته سوم: زبان/مفهوم
کتاب‌هایی که زبان‌های برنامه‌نویسی را آموزش می‌دهند، راجع به یک استاندارد صحبت می‌کنند یا مباحث آکادمیک مثل طراحی الگوریتم، لایه‌های شبکه، سیستم عامل و… را مورد بحث قرار می‌دهند. مثل:

دسته چهارم: برنامه‌نویسی
کتاب‌هایی که راجع به خود برنامه‌نویسی هستند. این طور کتاب‌ها فرض می‌کنند شما آشنایی لازم با ابزارها، فناوری‌ها و زبان‌های مربوطه را دارید. آنها بدون توجه به Platform خاصی راجع به خود برنامه‌نویسی و تکنیک‌های مورد نیاز در برنامه‌نویسی و توسعه‌ی نرم‌افزار حرف می‌زنند. مثل:

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

کتاب‌های دسته دوم (فناوری‌ها) نسبت به کتاب‌های دسته‌ی قبل نیاز به مطالعه و دقت بیشتری دارند. اگر چه همیشه لازم نیست آدم همه‌ی سوراخ سنبه‌های یک فناوری را بلد باشد اما اقلاً باید بداند آن فناوری چه طور امکاناتی دارد و اقلاً به طور سر سری هم که شده یک بار مطالبی راجع را به آن خوانده باشد. کتاب‌های این دسته و دسته قبل همیشه نیاز به کمی تمرین دارند.

کتاب‌های دسته سوم (زبان‌ها/مفاهیم) کتاب‌هایی هستند که به نظر من بیشتر وقت‌ها لازم است یک دور کامل آنها را خواند. چون همیشه به یک دید کلی راجع به آن زبان/مفهوم نیاز هست. متاسفانه بیشتر کتاب‌های این دسته خیلی هم حجیم هستند و باید تک تک پاراگراف‌های آن را با تمرکز مطالعه کرد. شاید به همین خاطر است که آدم تا در دانشگاه است و وقت دارد باید مفاهیم و کتاب‌های اصلی را مطالعه کرده و کاملاً فهمیده باشد.

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

پادکست‌های اسکات هنزلمن

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

تعدادی از پادکست‌های جالب اسکات:
۱- Learning about NHibernate 3 with Jason Dentler : فایل صوتی پادکست، فایل PDF

۲- Geek Relationship Tips with Scott’s Wife : فایل صوتی پادکست، فایل PDF

۳- Aspect Oriented Programming (AOP) and LinFu with Philip Laureano : فایل صوتی پادکست، فایل PDF

۴- Jeff Atwood on the Future of Stack Overflow : فایل صوتی پادکست، فایل PDF

۵- John Lam and the Science of Fitness : فایل صوتی پادکست، فایل PDF

۶- Women in Technology in the Muslim World : فایل صوتی پادکست، فایل PDF

۷- Jon Skeet – World’s Greatest Living Programmer, or just a nice English guy?‎ : فایل صوتی پادکست، فایل PDF

۸- Hello World: Computer Programming for Kids and Other Beginners : فایل صوتی پادکست، فایل PDF

۹- Spolsky, Atwood, Blyth, Hanselman = Crazy-Delicious || Content-Free?‎ : فایل صوتی پادکست، فایل PDF

۱۰- The Art of Unit Testing with Roy Osherove : فایل صوتی پادکست، فایل PDF

وبلاگ «اسکات هنزلمن»
بایگانی پادکست‌های «اسکات هنزلمن»