چند روز پیش در طول یک گپ و گفت بسیار کوتاه در مورد برنامه نویسی آزمون محور (Test Driven Development)، که بیشتر حول مزایای استفاده از تست کیس ها (Test Case) می چرخید؛ یکی از دوستان مطلب جالبی رو مطرح کرد. صحبت این دوست عزیز در مورد عملی بودن استفاده از برنامه نویسی آزمون محور و بحث های موجود در این حوزه بود. مسلما نمی توان یک نسخه را برای هر بیماری تجویز کرد؛ اما نکته ای در این زمینه به فکرم رسید که شاید ذکر اون خالی از لطف نباشه. برای بررسی این نکته ابتدا باید کمی در مورد فلسفه صحبت کنیم.
در فلسفه به مطالعه ماهیت واقعیت (Reality) اصطلاحا هستی شناسی (Ontology) می گویند. ماهیت واقعیت را در علوم اجتماعی می توان به سه دسته تقسیم کرد (این دسته بندی ها تا حد امکان ساده شده اند):
- عینیت گرایی (Objectivism): عینیت گرایان معتقدند واقعیت مستقل از ذهن وجود دارد.
- ساخت گرایی (Constructivism): ساخت گرایان معتقدند واقعیتی مستقل از ذهن وجود ندارد و آنچه ما به عنوان واقعیت می شناسیم ساخته ذهن بشر است.
- عمل گرایی (Pragmatism): عمل گرایان معتقدند دیدگاه های مختلف تا زمانی مفیدند که ما بتوانیم از آنها در عمل استفاده کنیم.
اما هستی شناسی در علوم اجتماعی چه ارتباطی با برنامه نویسی آزمون محور دارد؟ در پاسخ به این سوال باید بگویم همواره بحث های زیادی در زمینه استفاده از متدولوژی های مختلف وجود دارد. پاسخ ما به این بحث ها به جهت گیری فلسفی ما باز می گردد. به شخصه اعتقاد دارم همواره انعطاف پذیری و رویکردی عمل گرایانه در علوم مهندسی می تواند بسیار مفید باشد. زیرا نظریه ها، متدولوژی ها و ابزارآلات مهندسی هیچ کدام وحی منزل نیستند. در این میان رویکردی عمل گرایانه به ما کمک می کند بهترین روش های هر حوزه را بر حسب نیازمان مورد استفاده قرار دهیم!