100 въпроса при интервюиране на софтуерни разработчици. Част 1 – изисквания и дизайн

Управление на изискванията и функционален дизайн

В кариерата си съм участвал в неизброимо много интервюта за работа. В една част от тях като кандидат, а в друга – като работодател. В тези интервюта често съм се сблъсквал с неподготвеност и от двете страни за задаване на подходящи въпроси. А задаването на въпроси е много ценно умение, което може да разкрие по-добре качествата на кандидата. Когато аз съм бил този кандидат, съм попадал в ситуации, когато изпитващите или не са знаели какво да ме питатат, или са ми задавали елементарни задачки, като сортиране на масив по метода на мехурчето. В другият случай, пък, аз и моите колеги дълго сме мислили какви точно въпроси да зададем, за да открием чрез тях най-подходящия кандидат.

Блогърът Jurgen Appelo е изготвил един много обширен списък с въпроси, с който до голяма степен решава всички тези проблеми. Списъкът е разделен в 10 категории, всяка от които съдържа по 10 въпроса. Категориите са избрани според областите на знание, дефинирани от Software Engineering Body of Knowledge (SWEBOK). Между другото, от този сайт можете да си свалите The Guide to SWEBOK – една изключително полезна книга за софтуерни разработчици.

Тук е моментът да се отбележи, че Юрген е привърженик на “гъвкавите” подходи в разработката на софтуер. Като такъв той смята, че един програмист трябва да е широк специалист и да е компетентен във всяка от 10-те области. Традиционният подход в управлението на софтуерни проекти от друга страна набляга повече на специализацията. Тоой предполага, че един член на софтуерен екип може да е специалист в една или няколко области, но не и във всички.

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

Важно е да се има предвид, че някои от въпросите нямат правилен или грешен отговор. Те са измислени, за да се провери креативното мислене на кандидата и неговата реакция в трудни моменти. Признавам си, че аз самият не можах да отговоря на всички въпроси. И това е съвсем нормално. Просто има области, в които не съм достатъчно компетентен.

Тук ще ви цитирам някои от въпросите, които най-много ми харесаха, и върху които бихме могли да дискутираме. По-долу можете да споделите дали ги смятате за подходящи и дали чрез тях можем точно да оценим знанията на кандидатите. Тоест смятате ли, че те покриват минималният набор от знания и умения, които един кандидат за позицията “софтуерен разработчик” трябва да притежава.

Първата серия от въпроси са насочени към управление на изискванията и дизайна.

Изисквания

  • Какъв ще бъде вашият съвет към клиент, който иска едновременно висока производителност, висока ползваемост и висока степен на сигурност?
  • Как се отнасяте към променящи се изисквания? Това добро ли е или лошо? Защо?

Функционален дизайн

  • Как бихте намалили усещането на потребителя за чакане, когато някои функционалности изискват много време за изпълнение?
  • Как ще проектирате функционалност за редактиране на 12 полета в списък от 10 елемента? А за редактиране на 3 полета в списък от 1000 елемента?
  • Можете ли да посочите някои ограничения на уеб приложенията срещу Windows приложенията?

Технически дизайн

  • Как ще се справите с конфликта в уеб приложение, когато различни хора се опитват да редактират едни и същи данни?
  • Познавате ли шаблоните за дизайн (design patterns)? Кои от тях сте използвали и в какви ситуации?

Следва продължение.


Ако харесвате статиите в този блог и се интересувате от тематиката, която разглеждаме, за да си гарантирате, че няма да изпуснете публикация, абонирайте се за съдържанието му чрез RSS feed или по имейл.

3 Comments

Leave a Reply

Your email address will not be published.