پیشگفتار:
مدتهاست که میخواستم دربارهی Tidy First (با تلفظ تایدی) مطلبی بنویسم و این نگرش زیبا و جالبتوجه را به دوستان عزیزم و خوانندگان وبلاگ معرفی کنم. با اینکه مدتهاست آن را دنبال میکنم ولی بخت و اقبال در راه ترجمهی آن با من یار نبود. خوش اقبال بودم که حمید آقای عزیزم کمک کرد تا این خواسته جامهی عمل پوشانده شود. با سپاس از ایشان، از شما دعوت میکنم که این سری از نوشتهها را دنبال نمایید.
گفتار:
کنت بک (Kent Beck) مهندس نرمافزار و متولد آمریکا است، او خالق اکس پی (xp یا Extreme Programming )، سخنران اصلی و الهامبخش بسیاری از گردهماییها و کسی است که توسعهی آزمون محور ( TDD یا Test-Driven Development) را دوباره کشف و متحول کرد.
بیتروت (Beetroot) مفتخر است که آقای بک، سخنران مهمان یکی از رویدادهای رایگان تکتاکپلاس (#TechTalk) است. با الهام از دیدگاه او درباره طراحی نرمافزار و از آنجا که بهبود مداوم کیفیت توسعه نرمافزار در خون ماست، تصمیم گرفتیم برخی از نکات کلیدی صحبتهای او در این رویداد را با شما در میان بگذاریم. حتما در وبلاگ کنت عضو شوید تا فصلهای جدید کتاب او را دریافت کنید.
در مورد طراحی نرم افزار
“طراحی نرم افزار فعالیتی در حوزهی روابط انسانی است”. این اولین خطی بود که کنت بک برای عنوان سخنرانیاش با عنوان”نخست مرتب کنید (Tidy First) چیست؟”- نوشت. در نگاه اول، توسعه نرم افزار ارتباط چندانی با روابط اجتماعی ندارد و دربارهی جفتشدگی (coupling)، چسبندگی(cohesion)، قانون توان(power law)، بازسازی (refactoring) و غیره و در یک کلام، دربارهی کد است. آیا واقعا طراحی نرمافزار ارتباطی با روابط انسانی ندارد؟ با مشاهده طراحی نرم افزار از دریچهی روابط انسانی میتوان دامنهی بررسی را کوچک کرد و به بررسی تعاملات بین افراد فنی (افراد متخصص یا geek) و افراد غیر فنی (غیر متخصص یا non-geeks) پرداخت.
در شکل زیر، دایره بیرونی مرزی است بین چیزهایی که تحت کنترل افراد فنی است و چیزهایی که تحت کنترل آنها نیست. بِک آنها را “پیشخدمتها” (waiters) و “تغییردهندهها” (changers) مینامد. پیشخدمتها درخواست میکنند تا در رفتار سیستم تغییری ایجاد شود، در حالی که تغییر کد عملا با تغییردهندهها است. رابطه بین این دو دسته میتواند پرتنش باشد، به ویژه زمانی که دو طرف یکدیگر را درک نمیکنند. در داخل دایره، مجموعه متفاوتی از روابط وجود دارد؛ در یک تیم نرم افزاری، توسعهدهندگان پیوسته با تصمیمهای خود در طراحی نرم افزار، روی یکدیگر تاثیر میگذارند.
نوع سوم رابطه، رابطه هر برنامه نویس با خودش است (برای همین صورتک خندان در وسط دایره قرار دارد). رابطه نامناسب با خودمان باعث میشود بارها و بارها کارهای سخت و دشوار را با ابزارهای کند و نامناسب انجام دهیم یا API های بد و نامناسب را تحمل کنیم و با آنها سر و کله بزنیم. به جای چنین کارهایی باید بالاترین اولویت را به رابطه با خودمان اختصاص دهیم و بعد بقیه روابط را به صورت چشمگیری بهبود دهیم. کنت بک می گوید: «تا زمانی که به عنوان یک برنامه نویس با خودم رابطه سالمی نداشته باشم، احتمالاً نمیتوانم حتی با سایر برنامه نویسان هم روابط سالمی داشته باشم. و این پایه و اساسِ موضوعی است که امروز درباره آن صحبت میکنیم، و همینطور موضوع کتابی است که مشغول نوشتن آن هستم.» (مترجم: به گفتهی جولی هنکس ارتباط سالم با خود (A healthy self-relationship) به معنای توانایی ارزش قائل شدن برای خود بهعنوان یک انسان و پذیرش نقاط قوت و ضعف خود است.)
مترجم: حمید خاتمی
گزیده:
“مشکل دنیا این است که افراد باهوش پر از شک و تردیدند، در حالی که احمقها پر از اعتماد به نفساند.” چارلز بوکوفسکی