امروزه داشتن تجربهی کاری امری ضروری است. تجربه به ما کمک میکند تا بتوانیم فرصتهای شغلی بهتری داشته باشیم و مهارتهای خودمان را افزایش دهیم. برای کارفرمایان هم استخدام افراد باتجربه و با دانش از اهمیت بالایی برخوردار است و جزو اولویتهای کاری هر شرکت و سازمانی محسوب میشود. یکی از این مشاغل و تخصصها که نیاز به داشتن تجربه بالا دارد، برنامه نویسی و مهندسی نرمافزار است. برنامهنویسی جزو مشاغلی است که امروزه بسیار مورد توجه قرار گرفته است و افراد زیادی به سمت این حرفه کشیده شدهاند.
در این مقاله قصد داریم با معرفی یکی از کتابهای حوزهی نرمافزار و برنامهنویسی به شما در جهت افزایش اطلاعات لازم برای انجام کار بهتر کمک کنیم. کتاب «مهندسی نرمافزار در گوگل» در فروشگاه کتاب کادینر موجود است و شما میتوانید به راحتی این کتاب را خریداری کنید.
گوگل چگونه فرایند مهندسی نرمافزار را تست میکند
شما هم به عنوان یک برنامهنویس نیاز دارید کارتان را درست انجام دهید. پس بهتر است از گوگل یاد بگیرید. هشت سال پیش «جیمز ویتاکر» متخصص تست نرمافزار که تا همین اواخر هم یکی از رهبران تست گوگل بوده است، به همراه دو تن دیگر از متخصصان سطح بالای گوگل کتاب «گوگل چگونه نرمافزار را تست میکند» به رشتهی تحریر درآورده و منتشر کردند. این کتاب که به یکی از محبوبترین کتابهای تست نرمافزار در میان نسل جدید تستکنندگان تبدیل شده است، چگونگی تست نرمافزار توسط گوگل را نشان میدهد و نویسندگان آن تجربیات و شیوههای خود در آزمایشهای اعمال شده در گوگل را به اشتراک گذاشتهاند. هرچند کتاب موافقان و مخالفان زیادی دارد، اما به خوبی نوشته شده و حاوی اطلاعات مفیدی است.
در ماه مارس سال ۲۰۲۰ شرکت O’REILLY Media کتاب جدیدی با عنوان «مهندسی نرمافزار در گوگل» که توسط «تایتوس وینترز»، «تام منشرک» و «هیروم رایت» نوشته شده است، منتشر و در اختیارتان مهندسان نرمافزار قرار داد. من این کتاب را بطور اتفاقی پیدا کردم و اولین کاری که بلافاصله بعد از دریافت آن انجام دادم جستجوی نظرات کاربران و خوانندگان کتاب بود. نظرات مختلفی دربارهی آن وجود داشت و مردم با سلایق گوناگون در مورد آن حرف زده بودند. این کتاب برای مهندسان نرمافزاری چون من بسیار مفید و خوب است و قصد دارم خلاصهای از مطالب آن را با شما به اشتراک بگذارم.
ساختار مهندسی نرمافزار در گوگل
کتاب به سه بخش اصلی فرهنگ، فرآیندها و ابزار تقسیم شده است و تمامی مقالات، فرآیندها و ابزارهایی که در کتاب توضیح داده شدهاند، تنها به عنوان تجربهی یک شرکت خاص نوشته شده است. کتاب مهندسی نرمافزار در گوگل ممکن است برای موقعیت شما هم قابل اجرا باشد، اما در بیشتر موارد قابل استفاده و اجرا نیست، چون شرکتهای زیادی که در مقیاسی مشابه گوگل فعالیت کنند، در بازار وجود ندارند. به هر حال خواندن چالشها و چگونگی تجزیه و تحلیل و غلبه بر آنها به من کمک کرد تا دربارهی چالشهای موجود در محصول و حل آن فکر کنم.
فرهنگ
هنگام طراحی و اجرای یک سیستم با هر اندازهای، بهتر است دو اصل مهم زمان و تغییر را در نظر بگیرید. شما باید مدت زمان تولید کد و تعداد دفعات تغییر آن در طول زمان را در مد نظر داشته باشید؛ چون این اولین چیزی است که باید هنگام شروع هر پروژهای به آن فکر کنید. به عنوان مثال، اگر اسکریپت برای اتوماسیون فقط در یک مکان خاص و فقط یک بار موردنیاز است، احتیاجی به فکر در مورد توسعهپذیری نیست. اما در صورت استفاده از اتوماسیون توسط بسیاری از تیمها، هر تغییر جدید باید برای تعداد زیادی از کاربران قابل اعمال باشد.
دومین اصلی که باید هنگام طراحی و اجرای سیستم مدنظر گرفت، مقیاس و رشد است. چگونه برای رشد کاربران سیستم خود آماده هستید، فرآیندها و API چقدر خوب توصیف شدهاند و اینکه برای کاربران نهایی قابل درک است. آیا در هنگام بارگذاری، کارآمد عمل میکند؟ برای هر تیم یا سازمانی معاملات و هزینهها یک قانون طلایی برای معرفی ابزارها یا فرآیندها است. همهی سیستمهای جدید نه توسط یک فرد بلکه توسط تیم مهندسان توسعه یافتهاند. بنابراین برای رسیدن به یک هدف خاص و توسعهی یک محصول تعاملات اجتماعی خود را افزایش دهید و سعی کنید با افراد مختلف همکاری داشته باشید. به یاد داشته باشید که ایمنی روانی یک موضوع کلیدی برای یادگیری چیزهای جدید است.
رهبری یک گروه مهندسی را در دست داشتن، به خصوص برای کسی که قبلا به صورت فردی فعالیت میکرده است، میتواند سخت باشد. اما بهترین توصیه برای این افراد این است که از مقایسهی خود با دیگران دست بردارند و سعی کنند موفقیت کلی تیم خود در رسیدن به اهداف را اندازهگیری کرده و در نظر بگیرند.
اگر میخواهید در کدسازی سازگاری داشته باشید از راهنماییهای سبک مثل ویژگی یا اتوماسیون استفاده کنید. در طول بررسی کد، به درستی، درک و خوانایی کد فکر کنید و توجه داشته باشید. هنگام ایجاد هر نوع مستندی، مخاطبان هدف را به خاطر بسپارید. رسیدن هر چه زودتر به توافق در مورد اصطلاحات و اندازه تست، بهتر است. تستهای واحد را به عنوان ابزاری برای از بین بردن ترس و بازسازی مجدد در نظر بگیرید. معرفی فرهنگ تست به سازمان، همیشه زمان و تلاش میخواهد. ماکها در تستهای واحد مفید هستند اما مراقب استفادهی بیش از حد از آن باشید. پوسته پوسته بودن تستهای End to End UI که مشکلی جهانی به شمار میرود، در گوگل دردسرساز است.
ابزارها
در این بخش، نویسندگان مجموعهای از ابزارها را توصیف میکنند که در بسیاری از تیمهای شرکتی استفاده میشود و برای هر ابزار، توضیحی در مورد چرایی نیاز به ابزار و چگونگی رفع نیاز وجود دارد. ابزارها از سیستمهای کنترل نسخه و ساخت، تا یک سیستم CI در مقیاس بزرگ، از ابزار بررسی کد تا تجزیه و تحلیل کد استاتیک متفاوت هستند.
سخن پایانی
هر پروژه و محصولی منحصربهفرد است، اما وجوه مشترکی مانند سرکار داشتن با مردم و کامپیوترها دارند. این کتاب به طور کلی داستان تجربیات یک شرکت خاص را ارائه میدهد، اما برای هر مهندس نرمافزار میتواند بینش زیادی در مورد مشکلات روزمره و چگونگی شروع حداقل حرکت به سمت حل آنها ارائه دهد. هیچکس نمیتواند شکستها و موفقیتهای تیم و سازمان خود را پیشبینی کند؛ اما میتواند از قبل برای روبرو شدن با چنین چالشهایی آمادگی داشته باشد.
نویسنده: رقیه فرجی