Автор блогу simpleprogrammer.com Джон Сонмез (John Sonmez) запропонував власний еквівалент вже став класичним «Тесту Джоела». Нова анкета покликана допомогти програмістам оцінити свої навички.
Читати далі
У серпні 2000 року програміст Джоел Спольскі (Joel Spolsky) написав в блозі пост під заголовком «Тест Джоеля»: 12 кроків до Кращого Коду » .
З тих пір багато розробників при пошуку роботи використовують цей тест для оцінки потенційного роботодавця: чи є компанія підходящої для роботи? У свою чергу багато ІТ-компанії звертаються до «Тесту Джоела» як до свого роду самоперевірки, яка допомагає їм зрозуміти, які становлять їх роботи коштувати поліпшити.
Якщо вам не доводилося чути про «Тест Джоеля», він виглядає так.
- Чи користуєтеся ви системою контролю версій?
- Чи можете ви зібрати продукт за один крок?
- Чи ви робите щоденні білди?
- Чи маєте базу даних помилок?
- Чи виправляєте помилки перед написанням нового коду?
- Чи є у вас оновлений графік роботи?
- Чи є у вас специфікація?
- Надано чи вашим програмістам спокійні умови для роботи?
- Чи використовуєте ви новітнє дороге обладнання?
- Чи є у вас тестують?
- Чи пишуть кандидати на роботу код під час співбесіди?
- Чи проводите ви коридорні перевірки зручності продукту?
Детальніше про кожен з пунктів можна почитати по-російськи тут .
Ось як сам Спольскі пояснював суть однойменного тесту:
«У« Тесті Джоела »прекрасно те, що ви зможете швидко відповісти« так »чи« ні »на кожне з питань. Вам не доведеться підраховувати кількість рядків коду в день або середня кількість помилок на модуль. За кожну позитивну відповідь нараховуйте один бал. Головний недолік тесту в тому, що його не повинні використовувати його для оцінки безпеки програмного забезпечення для атомної станції.
12 балів - відмінно, 11 - добре, 10 і менше - у вас серйозні проблеми. Більшість існуючих організацій, що виробляють програмне забезпечення, набирають всього 2 або 3 бали, і вони потребують серйозної допомоги, бо компанії на кшталт Microsoft працюють на 12-ти весь час ».
«А як щодо« Тесту Джоела »для програмістів?» - задався питанням автор блогу simpleprogrammer.com Джон Сонмез. І запропонував власний варіант тесту для оцінки навичок розробників програмного забезпечення.
1. Чи можете ви ефективно використовувати систему контролю версій?
«Різні системи контролю версій можна використовувати по-різному. Однак незалежно від того, яку систему застосовуєте, ви повинні знати, як з її допомогою зробити більше, ніж просто отримати або зберегти вихідний код.
Щоб ефективно використовувати систему контролю версій, ви повинні орієнтуватися в таких поняттях, як розгалуження і злиття. Ви повинні знати, як вирішувати конфлікти при злитті і розуміти, як використовувати гілки при одиночній розробці або роботі в команді.
Оскільки управління версіями важливо практично для кожного розробника, ви повинні бути експертом у використанні різних систем контролю версій і мати уявлення про базові концепціях, які можна застосувати до всіх таких систем ».
2. Чи вмієте ви вирішувати алгоритмічні завдання?
«Я вражений тим, як багато програмістів не можуть вирішити досить прості алгоритмічні завдання. Особливо з урахуванням того, що такого роду завдання фігурують в ході чи не будь-якого серйозного співбесіди на роботу.
Будь-розробник повинен вирішити стандартну алгоритмічну завдання: «Напишіть функцію, щоб визначити, чи є два слова анаграмами». Звичайно, ви повинні вміти вирішувати завдання і складніша цієї на дошці перед потенційним роботодавцем ».
3. Програмуєте ви більш ніж на одній мові або з використанням більш однієї технології?
«Кращі програмісти - ті, хто може використовувати оптимальні інструменти для виконання конкретного завдання. Вони розуміють, що різні проблеми найкраще вирішувати за допомогою різних технологій, а не намагаються використовувати тільки те, що знають.
Дійсно хороший програміст прагне придбати якомога більше різнобічний досвід і знання, опанувавши більше ніж однією мовою програмування і присвятивши час вивчення декількох стеків технологій.
Звичайно, спеціалізація має величезне значення, але не менш важливо добре розбиратися в декількох технологічних областях, навіть якщо ви не використовуєте ці знання кожен день ».
4. Що ви робите для підвищення власного рівня освіти і навичок кожен день?
«В умовах, коли нові технології з'являються і оновлюються практично щодня, неможливо йти в ногу з часом, не приділяючи належної уваги самоосвіті і саморозвитку. Виділіть 15 хвилин в день на читання програмістів блогів, технічної літератури тощо і через кілька років ви зрозумієте, наскільки це важливо ».
5. Чи називаєте ви речі своїми іменами?
«Хороший розробник ПЗ пише ясний і зрозумілий код. Неможливо написати ясний і зрозумілий код, якщо ви не можете назвати змінні, методи, класи і все інше, що ви створюєте і що має найменування ».
Для вдосконалення в цьому напрямі автор рекомендує дві книги: «Code Complete» і «Clean Code» .
6. Чи можете ви ефективно викладати ідеї?
«Спілкування - один з найважливіших навичок, який впливає майже на все, що ми робимо в світі розробки. Від написання листів і пояснення архітектури ідеї на дошці до спілкування з клієнтами і колегами - процес розробки ПО має на увазі багато спілкування ».
На думку автора, відмінний спосіб розвинути комунікативні навички - писати на постійній основі. Наприклад, завести власний блог або авторську колонку на dev.by (є ідеї і бажання - пишіть на editor at dev.by).
7. Чи розумієте ви базові шаблони проектування?
«Для того, щоб вважатися хорошим програмістом, вам не обов'язково часто використовувати шаблони проектування. Однак ви повинні принаймні мати уявлення про найбільш поширених з них, які використовуються в технологіях і мовами програмування, з якими ви працюєте ».
Для лікнепу в цьому напрямку Джон Сонмез рекомендує прочитати «Design Patterns» або «Head First Design Patterns» .
8. Чи вмієте ви ефективно налагоджувати програму?
«Багато хто думає, що вміють налагоджувати програми, хоча насправді всього лише знають, як використовувати інструменти налагодження. Налагодження - більше, ніж покрокове дослідження рядків коду в пошуках помилки. Хороший програміст знає, що налагодження починається з висунення гіпотези про те, що може бути не так, і тільки потім застосовується відладчик, щоб довести або спростувати цю гіпотезу. Ні для кого не секрет, що більшість розробників витрачають левову частку часу нема на написання, а на налагодження коду. Тому програмісти, які вміють ефективно налагоджувати код, завжди в ціні ».
9. тестуєтеся ви власний код?
«За якість написаного коду відповідає не стільки QA-відділ компанії, скільки сам розробник. Хороший програміст несе відповідальність за якість написаного ним коду, і перш, ніж передати його QA або кому-небудь ще, тестує його на помилки. Я твердо вірю в те, що хороший програміст - це і хороший тестувальник ».
Автор рекомендує трохи застарілу, але не втратила цінності книгу «Testing Computer Software» .
10. Діліться ви знаннями?
«Одна з головних характеристик відмінного програміста - здатність відкрито і вільно ділитися знаннями. Це не тільки допомагає команді і колегам, а й вам: я абсолютно впевнений в тому, що ви ніколи не вивчите щось, поки ви навчите цьому інших. Найцінніший співробітник в команді не той, хто більше за всіх знає, а той, з чиєю допомогою цінність всіх інших учасників команди збільшується ».
11. Чи використовуєте ви кращі з доступних інструментів в роботі?
«Не має значення, яким інструментам ви віддаєте перевагу, але у вас повинен бути набір інструментів, які на ваш погляд, є оптимальними для виконання ваших завдань. Програміст, який вболіває за свою роботу, зобов'язаний витрачати час на пошук і вивчення інструментів, які допоможуть йому підвищити ефективність ».
12. Чи можете ви написати повноцінне додаток?
«Багато хто може вносити зміни в уже написаний код і виправляти помилки, але набагато менше розробників здатні написати повноцінну програму від початку до кінця.
Хороший програміст, можливо, не в змозі самостійно створити величезну корпоративне додаток, але повинен вміти написати хоча б нескладне додаток - свідоцтво того, що у фахівця є фундаментальне розуміння про те, як побудований софт і як він працює ».
«Очевидно, що це простий тест, який і близько не включає в себе все, що повинен вміти хороший програміст», - зазначає Джон Сонмез. Він рекомендує використовувати анкету для зразкової самооцінки або під час інтерв'ю з кандидатом, щоб отримати загальне уявлення про його здібностях.
Автор «Простого тесту програміста» звертає увагу, що важливо чесно оцінювати себе за всіма 12 критеріями: «Це означає, що ви ставите собі 1 бал тільки в тому випадку, якщо можете з упевненістю сказати, що повністю відповідаєте критеріям. Якщо таким чином ви набираєте нижче 8 балів, не впадайте у відчай. Це просто означає, що вам є над чим працювати. У той же час, будь-яка людина з балом вище 8 не повинен мати проблем з пошуком хорошої роботи в розробці ПЗ ».
Пропозиція Сонмез викликало досить бурхливе обговорення в коментарях під постом . А що ви думаєте про «Простому тесті програміста»?
З тих пір багато розробників при пошуку роботи використовують цей тест для оцінки потенційного роботодавця: чи є компанія підходящої для роботи?Чи користуєтеся ви системою контролю версій?
Чи можете ви зібрати продукт за один крок?
Чи ви робите щоденні білди?
Чи маєте базу даних помилок?
Чи виправляєте помилки перед написанням нового коду?
Чи є у вас оновлений графік роботи?
Чи є у вас специфікація?
Надано чи вашим програмістам спокійні умови для роботи?
Чи використовуєте ви новітнє дороге обладнання?