هروقت میخوایم کاری رو انجام بدیم، یکی از چالشهایی که باهاش روبرو میشیم انتخاب ابزار مناسب و کافی برای انجام اون کار هست. مثلا برای خوردن سوپ مشخصا از قاشق استفاده میکنیم، یا برای جمع و تفریق از ماشین حساب. ولی برای خوردن ماکارونی چطور؟ شده تا حالا بین قاشق یا چنگال یا چوب (ازینا که چینیا استفاده میکنن) مردد باشید؟ شده تا حالا برای انتخاب ابزار برای ماکارونی اول به فرم و شکل ماکارونی دقت بکنید؟ در نهایت شما میتوانید با هر سه ابزار و یا حتی بدون آنها ماکارونی رو بخورید، ولی مهم اینه که بتونید مناسبترین ابزار رو برای خوردن ماکارونی انتخاب بکنید. توی این مقاله میخوام یه تناسبی رو بهتون معرفی کنم که شاید بتونه کمکی بکنه بهتون برای اینکه کارهاتون رو با انتخاب ابزار مناسب، بهتر انجام بدید.
برای درک بهتر میخوام مثالهایی از کار خودم براتون توضیح بدم. توی حوزه کاری IT مخصوصا وقتی با سیستم عامل لینوکس درگیر هستی، برای انجام یک کار همیشه چندین ابزار رو میتونی پیدا بکنی که تورو به نتیجهای که میخوای برسی، میرسونه. مثلا وقتی میخوای تعداد کانکشنهای باز روی سیستم عامل رو ببینی چند راه مختلف وجود داره که میتونی استفاده بکنی و شاید براتون این سؤال پیش بیاد که خب من الان برای انجام این کار کدوم ابزار رو انتخاب بکنم و کدوم ابزار مناسب تره.
قبل از اینکه بخوام ادامه بدم، به این نکته توجه بکنید که نحوه کارکردن آدمها با ابزارها مثل دستخط میمونه و هر کسی به یک روش خاصی از ابزارها استفاده میکنه. مثلا برای ویولون هر استادی و هرکسی میبینی آرشه رو یه طور خاصی میگیره یا نحوه گرفتنش زیر چونه توی هر شخص متفاوت هست، کلا هرکسی دستخط خودشو داره و شما هرگز نمیتونی از روی دستخط، غلط املایی بگیری. پس اول توصیه من اینه که وقتی توی یک کاری پشت دست یکی مینشینید، هیچوقت بهش نگید که مثلا پیچگوشتی رو این طوری بگیر. بهش بگید این پیچ رو ببند، میزان مصرف پردازنده رو ببین، ببین چقدر روی دیسک IOPS داره، اون ظرفها رو بشور، ماشین رو تمیز کن و اجازه بدید اون شخص برای انجام کارش، با دستخط خودش رو پیش بره. حالا ممکنه که یکی با یک تکنیکی که اون هم ناشی از <<<<تجربه>>>> هست سریعتر به نتیجه برسه. مثلا میخوام ظرفها رو بشورم، چون خیلی ظرف شستم بلد هستم که ظرفها رو سریعتر و با مصرف آب کمتری بشورم.
یه زمانی هست که شما میخواهید که اون آدم ظرف شستن بلد باشه، در اون حالت بهتره که در فرصتی مناسبتر بهش در قالب کار به صورت عملی بیاموزید. اجازه بدید آدمها دستخط شما رو هنگام نوشتن و نحوه استفاده از ابزارها رو هنگام کار کردن ببینند و بیاموزند. بهشون یاد بدید که با این روش سریعتر و راحتتر به نتیجه میرسید.
خب حالا برگردیم سر موضوع اصلی. اگه خیلی ساده بخوام براتون توضیح بدم توی انجام کار، اهمیت و تاثیر شناخت، انتخاب و دستخط از اندازه ۱۰۰ به نسبت زیر هست:
۱۰ درصد اینه که بدونیم ابزارها وجود دارند، ۲۰ درصد بتونیم ابزار مناسب رو انتخاب بکنید، ۷۰ درصد که بتونیم از ابزاری که انتخاب کردیم به بهترین شکل استفاده بکنیم.
شماها اگه فقط بدونید که فلان ابزار وجود داره، به ۱۰ درصد رسیدید. یعنی خب مهمه که بدونید پیشگوشتی وجود داره. یا مثلا برای دیدن میزان مصرف RAM میتوان از فلان ابزارها استفاده کرد. این عدد ۱۰ که نوشتم دلیل بر کم اهمیت بودن نیست. اتفاقا از نظر من شما کافیه بدونید که چه ابزارهایی موجود هستند، مابقی رو با مطالعه راهنمای اون ابزار میتونید متوجه بشید.
حالا که میدونید چه ابزارهایی موجود هستند، قدم بعدی اینه که بتونید مناسبترین ابزار رو انتخاب بکنید و این مستلزم اینه که یه سری اطلاعات و تجربیات از ابزارهای موجود داشته باشید. خب من برای دیدن میزان مصرف RAM میدونم که ابزارهای top, htop, sar, vmstat, free , /proc و ابزارهای دیگر موجوده. حالا اینکه کدوم رو انتخاب کنم که مناسب باشه، به اون نیاز و شرایط محیط بستگی داره. مثلا من میخوام که فقط میزان بافر و کش و فضای خالی رو ببینم، یا فقط یه عدد میخوام که درصد باشه، یا دقیقا به بایت میخوام ببینم و حالات دیگری. خب اینجاست که مشخص میشه که من با انتخاب ابزار مناسب میتونم بهتر به نتیجه برسم. مثلا برای خوردن ماکارونی، اگه هدف خوردن سریعتر ماکارونی باشه و ماکارونی به شکل صدفی باشه، من قطعا قاشق رو انتخاب میکنم ولی با همین هدف با شرایط متفاوت مثل ماکارونی رشته ای شاید چنگال مناسبتر باشه.
و اما بخش دیگر قضیه اینه که من بعد از انتخاب ابزار مناسب باید بتونم از اون ابزاری که انتخاب کردم بهترین استفاده رو بکنم. این بخش به این دلیل رقم بیشتری داره که برمیگرده به تجربه آدم. شما ممکنه ندونید خیلی ابزارها موجود هست. یا اینکه ندونید که چه ابزارهایی ممکنه جواب کار شما رو بدن. ممکنه شما فقط یک ابزار بلد باشید برای انجام اون کار ولی با تجربه و دستخطی که دارید از همون ابزار بهتر و مناسبتر استفاده بکنید. ممکنه شما ماکارونی صدفی رو با چنگال سریعتر از من با قاشق تموم بکنید. یا مثلا شما برای دیدن میزان مصرف RAM فقط ابزار vmstat رو بشناسید و بلد باشید، ولی با همون ابزار خیلی سریع تمامی نیازهاتون رو برآورده بکنید.
دوران دانشجویی برای مدتی در یک کارخانه شیشه سازی کار میکردم. اونجا یه مهندسی بود که زبانش خیلی عالی بود. ایشون هر کلمه یا قاعده یا اصطلاحی میپرسیدیم بلد بود، جوری که بهش میگفتیم دیکشنری ناطق. همین آدم با همین سطح دانش زبان انگلیسی، وقتی تکنسینهای خارجی میومدن شرکت نمیتونست باهاشون انگلیسی صحبت کنه. حرفاشو روی کاغذ مینوشت و بعد نشونشون میداد. اون ابزار در دستش بود. طرز استفاده از ابزار رو هم به خوبی بلد بود. ولی در شرایط عملیاتی نمیتونست استفاده بکنه. این موضوع فقط به تجربه آدم برمیگرده و اینکه باید انجام بده تا تجربشو به دست بیاره. مثلا شما در نظر بگیرید که روی یک لینوکسی که اینترنت نداره میخواید ببینید پورتی از یک IP دیگر رو روی TCP میتونید ببینید یا نه و از خوششانسی هم ابزار telnet نصب نیست روی سیستم عامل. چکار میکنید؟ اینجا با یک سرچ راحت توی اینترنت telnet without telnet میتونید راهش رو پیدا بکنید.
نیازی نیست که ما همه ابزارها رو بشناسیم، هیچ اشکالی نداره که یکی با ۱۰ سال سابقه مثلا ندونه که فلان آپشن از فلان کامند چیکار میکنه. خب خیلی ساده میتونه راهنما بخونه یا سرچ بکنه. خیلی وقتها فقط کافیه بدونید که فلان ابزار وجود داره و راحت میتونید نحوه کارش رو مطالعه کنید. همین مطالعه ها در گذر زمان با تجربه تبدیل میشه به یک توانایی عالی در استفاده از ابزارها.
در انتها اگه شما برگردید و بگید که هر سه موضوع به یک اندازه سهیم هستند، حرف نادرستی نگفتید. ابزارها کار شما را راحتتر میکنن برای رسیدن به هدفتون.
خودمون رو با عمیق شدن توی ابزارها گیج نکنیم. ابزارها رو مطالعه کنیم و از وجودشون مطلع باشیم، تا حدودی بدونیم که چه ابزاری چه کاری برای ما انجام میده، با تمرین و تجربه ابزار مناسب رو انتخاب و استفاده بکنیم