Когато интервюирате за работа в разработка на софтуер, вероятно ще получите някои въпроси относно дизайна на системата.

Особено ако търсите роля на висше ниво.

Подобно на голяма част от разработването на софтуер, въпросите за интервюто не приличат на реалността.

Какво представлява интервюто

Интервюиращият ви дава абстрактно описание на услуга. От вас се очаква да проектирате отговора сами.

В интервюто трябва да задавате въпроси. По принцип съберете изискванията.

  • Какво трябва да прави приложението?
  • Как ще го използват хората?
  • Колко хора ще го използват?
  • Има ли интензивни натоварвания на приложението?

Обикновено интервюиращият има някои идеи в ума си за решението, което очаква да види.

Ще трябва да предложите комбинация от технологии и стратегии за внедряване, които могат да изпълнят изискванията.

Това е обезсърчително интервю. По принцип трябва да проектирате ефективна услуга само за няколко минути разговор/мислене за нея.

Самото времево ограничение е нереалистично.

Системен дизайн в реалния свят

Нещо е бавно или не се мащабира добре в приложението ви.

Има съществуващ код и трябва да разберете как работи. Събирането на изисквания е процес на установяване кой използва съществуващата услуга и какво не е наред с нея.

Неяснотата изобилства. Прекарвате много време, просто за да разберете какъв е проблемът и как съществуващите части си пасват.

Сега трябва да измислите предложен план. И така, вие пишете проектен документ. Обикновено имате дни или седмици за проучване, планиране и записване на вашите идеи.

През тези дни и седмици ще говорите с други инженери за техните идеи. Някой има ли по-добро решение от вас? Има ли подход, който не сте обмисляли?

След като напишете документа за дизайн, ще го споделите с екипа. Всички ли разбират дизайна? Какви опасения има? Как можем да го подобрим?

Сега ще трябва да планирате работата по изпълнението на дизайна. Какъв е тестовият план за нови промени? Как да сме сигурни, че промяната е без прекъсване? Какви други екипи трябва да знаят и да прегледат този дизайн?

Интервю срещу реалност

Реалността се различава значително от интервюто.

Нека да отчетем разликите:

  • Интервюто е на зелено, абстрактен нов проблем. Реалността е работа в рамките на съществуващо приложение и зависимости.
  • Събирането на изискванията за интервю е прости въпроси. Реалността е, че трябва да пречистите стария код и да говорите със старши разработчици / други екипи, които знаят за това.
  • Интервюто отнема няколко минути с ограничение във времето. Реалността отнема дни / седмици, за да излезе с жизнеспособен дизайн на системата.
  • На интервюто работите сами. В действителност проектирането на системата е силно съвместно и всъщност изисква разговори с много заинтересовани страни.
  • В интервюто има словесен план и може би диаграма или две. В действителност трябва да можете ясно да напишете проектен документ и да включите обратна връзка.
  • Интервюто очаква перфектна идея, на място. Реалността признава, че винаги има компромиси и имате нужда от време + множество сътрудници, за да стигнете до най-доброто решение.
  • Интервюто се интересува сравнително малко от плановете за тестване, запълването на съществуващи данни, липсата на загуба на данни по време на периодите на миграция и внедряването без прекъсване. В действителност това са най-трудните части.

Изучаване на системен дизайн

Чувам от много софтуерни инженери, които са уплашени от системния дизайн. „Не знам достатъчно и се страхувам, че ще ме уволнят, защото не го знам!“

Ето истината...

Вероятно ще трябва да знаете най-важното за дизайна на системата, за да преминете през етапа на интервю. Ето някои „ресурси за интервю за проектиране на системата“.

Но не се плашете и мислете, че работата всъщност е такава.

Вместо това, проектирането на нов подход е много по-нюансирано и съвместно. Никой няма да очаква от вас да генерирате гениални идеи за нова архитектура на място.

Така че, поемете дълбоко въздух. Няма да бъдете уволнен заради дизайна на системата.

Ежедневен списък

Всяка сутрин пиша нещо ново за разработчиците на софтуер. Присъединете се към ежедневния списък, за да получавате актуализации!

Присъединете се към Medium за $5 — Достъп до целия Medium + подкрепете мен и други!