مهارت‌های کار تیمی نرم‌افزار قسمت دوم: اشتراک گذاری دانش

اگر دانش و تجربه‌‌تون رو برای خودتون نگه می‌دارین، شما گالوم ارباب حلقه‌ها هستین و دانش شما، «حلقه عزیز» شماست. برای گالوم کار نکرد، برای شما هم کار نمی‌کنه!

در نوشته قبلی سری مهارت‌های کار تیمی نرم‌افزار درباره اهمیت پذیرش مسئولیت کد گفتم، در این یادداشت به اشتراک گذاری دانش می‌پردازم.

گالوم بودن یا نبودن، مساله این است

اگر شما هم جزء آن دسته از برنامه‌نویسان هستید که فکر می‌کنید دانش یا تجربه‌ای که کسب کردید را باید برای خودتان حفظ کنید و به اشتراک گذاری آن با دیگران مساوی نابود شدن آینده شغلی‌تان و زیاد شدن دست در بازار و ... است، 2 تا خبر برایتان دارم:

1- شما گالوم هستید و دانش شما،‌ حلقه شماست. تا جایی که من یادم می‌آید گالوم سرنوشت جالبی نداشت.

2- حتی اگر از سرنوشت گالوم نجات پیدا کنید، این حلقه خوش آب و رنگ دانش، چشم شما را روی این حقیقت می‌بندد که دانش و تجربه کسب شده در این حرفه زود کهنه می‌شود و چند سال دیگر، جوان‌ترها خیلی راحت جای شما را خواهند گرفت.

صحنه سقوط گالوم به درون مواد مذاب کوه هلاکت در فیلم بازگشت پادشاه به همراه حلقه عزیز!

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

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

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

ابزار اشتراک دانش

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