لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
به کارگیری از مفهوم کایزن در کدنویسی

به کارگیری از مفهوم کایزن در کدنویسی

پس از جنگ جهانی دوم، ژاپنی ها مفهومی تحت عنوان Kaizen را ابداع کردند که این مفهوم تک کلمه ای توانست آینده ژاپن و بالتبع دنیا را دستخوش تغییرات شگرفی کند. اگر بخواهیم این واژه ژاپنی را به صورت تحت الفظی به زبان فارسی ترجمه کنیم، با معادلی همچون "بهبود مستمر" رو به رو خواهیم شد (واژه kai به معنی "تغییر یا اصلاح" می باشد و zen هم به معنی "خوب" است.) از جمله شرکت های بزرگی از این مفهوم در مدیریت و توسعه خود استفاده نموده و هم اکنون هم آنرا به کار می بندند می توان به شرکت های تویوتا و کنُن اشاره کرد. چنانچه بخواهیم کایزن را به صورت خیلی ساده توضیح دهیم، بایستی بگوییم که کایزن به سازوکاری گفته می شود که در آن تغییرات کوچک به منظور بهبود عملکرد، اثربخشی بیشتر، راندمان بیشتر و در عین حال جلوگیری از اتلاف وقت، نیرو و انرژی کمتر اعمال می شوند.

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

به طور مثال، بسیاری از توسعه دهندگان وب سایت را می بینیم که کماکان از نسخه های قبلی زبان HTML استفاده می کنند (اگر HTML را بتوان زبان نامید) و این در حالی است که شاهد تغییرات شگرفی در آخرین نسخه از این زبان که HTML5 است شاهد هستیم که اگر این گروه از طراحان بتوانند خود را با تغییرات صورت گرفته در این نسخه تطبیق دهند، دست ایشان در طراحی وب اپلیکیشن های به مراتب جذاب تر و حرفه ای تر باز خواهد شد. یا به عنوان مثال های دیگر، می توان به عدم کامنت گذاری در اسکریپت ها، کدنویسی به سبک اسپاگتی، نامگذاری متغیرها، متدها و کلاس ها بدون توجه به ماهیت آنها و ... اشاره کرد. حال ممکن است این سوال برای کسانیکه به این صورت کدنویسی می کنند پیش بیاد که "خب! وقتی قرار نیست کسی کدهای برنامه یا اپلیکیشن ما را ببیند، پس چه لزومی دارد که تمیز کدنویسی کنیم؟".

در پاسخ به این سوال می توان به یکی از گفته های ارزشمند آقای مرحوم استیو جابز استناد کرد که می گفت: "آن طرف از یک کمد دیواری که رو به دیوار است را هم می بایست به گونه ای طراحی و رنگ آمیزی کرد که اگر روزی کسی اساس کشی داشت و پشت آن کمد دیواری را مشاهده کرد، شکه نشود!". با همین استراتژی بود که ایشان کامپیوترهای مکینتاش را به گونه ای روانه بازارهای جهانی کرد که علاوه بر زیبایی ظاهری، زیبایی درونی هم داشتند و همین مسئله منجر به ربودن گوی سبقت از رقبای اپل گشت. قضیه در برنامه نویسی هم دقیقاً به همین صورت است. درست است که احتمالاً اسکریپت هایی که می نویسیم قرار است فقط و فقط توسط خودمان ویرایش شوند، اما فرض را بر این بگذاریم که ممکن است روزی پیش بیاد که یک برنامه نویس دیگر قرار است تا کدهای ما را ویرایش کند و آنجا است که اهمیت کدنویسی اصطلاحاً "تمیز" خود را به خوبی نشان خواهد داد. اگر بخواهیم از امروز کایزن را در کدنویسی به کار بندیم، با کار خیلی دشواری رو به رو نخواهیم بود زیرا همانطور که پیش از این توضیح دادیم، کایزن به معنی تغییرات شگرفت و یکباره نیست بلکه کایزنی کردن کدهای خود بدان معنا است که به مرور زمان سعی کنیم تمیز تر، اصولی تر، قابل ویرایش تر و به طور کلی حرفه ای تر کدنویسی کنیم. علاوه بر بهبود مستمر، یکی دیگر از اصول مکتب کایزن جلوگیری از هدر رفتن وقت و انرژی است.

حال سوال اینجا است که چگونه می توان این اصل مهم کایزن را در برنامه نویسی اعمال کرد. برای روشن شدن مسئله، ابتدا مثالی می زنیم. فرض کنیم در حال توسعه اپلیکیشنی هستیم که در آن یک اسکریپت را بارها و بارها می بایست مورد استفاده قرار دهیم. اگر بخواهیم این اسکریپت را که ممکن است هرچند کوتاه هم باشد هر دفعه بازنویسی کنیم، این کار منجر به اضافه شدن به حجم کدها، اتلاف وقت و مهم تر از همه ویرایش بسیار دشوار خواهد شد چرا که در صورت نیاز به اعمال یک تغییر کوچک در اسکریپت خود، می بایست به هر تعداد که از آن اسکریپت در برنامه یا اپلیکیشن خود استفاده نموده ایم ویرایش انجام دهیم. اما اگر بخواهیم از اصل "هدر رفتن وقت و انرژی" کایزن در کدنویسی استفاده کنیم، به سادگی خواهیم توانست تا اسکریپت های تکراری را در قالب کلاس ها و متدهای مختلف تعریف کرده و هر کجا که نیاز داشتیم، یک شیئ جدید از روی آن کلاس ایجاد نموده و از ویژگی های آن کلاس و بالتبع متدهای مربوط به آن استفاده کنیم. در این صورت، حتی اگر اسکرپیت ما نیاز به تغییر داشته باشد، به سادگی خواهیم توانست تا این اسکریپت را ویرایش نموده و بدون نیاز به کدنویسی بیشتر و اتلاف وقت، تغییرات صورت گرفته روی هر تعداد Objectیی که از روی اسکریپت مربوطه ساخته باشیم اعمال خواهد شد. اینها فقط مثال هایی بودند از حوزه هایی در برنامه نویسی که می توان با "کایزنیزه" کردن آنها، و مسلماً ایجاد یک فرهنگ بهبود مستر در کدنویسی خود، مهارت های برنامه نویسی خود را ارتقاء بخشیم.

به طور خلاصه، یک برنامه نویس کایزنیزه شده، برنامه نویسی است که موارد زیر را رعایت می کند: - یادگیری دائمی در حوزه زبان برنامه نویسی مد نظر خود - کدنویسی تمیز و اصولی - کامنت گذاری موثر - عدم پیروی از کدنویسی به سبک اسپاگتی - نامگذاری اصولی متغیرها، کلاس ها و متدها - استفاده بهینه از OOP یا شیئ گرایی در برنامه نویسی - در تعامل بودن با سایر برنامه نویسان - ثبت نام در خبرنامه های وب سایت ها و وبلاگ های مرتبط با حوزه کاری خود - در ارتباط بودن با سایر برنامه نویسان سراسر دنیا از طریق فوروم ها و شبکه های اجتماعی - ارتقاء مهارت های زبان انگلیسی به خصوص مهارت های خواندن و نوشتن - انتقاد پذیری و تلاش در جهت نقاط ضعف - عدم کپی برداری از پروژه های غیر اپن سورس - مشارکت در پروژهای اپن سورس - خلاقیت به خرج دادن هم در طراحی Front-end و هم در کدنویسی Back-end - به کارگیری از مفاهیم UI و UX در طراحی اپلیکیشن - Debug کردن پروژه قبل از تحویل آن به کاربران - فراگیری مهارت های کار گروهی - بازخورد گرفتن از کاربران و اعمال نظرات ایشان روی اپلیکیشن و ....



بهزاد مرادی