Як дістатися до 10 разів (результати): Що може дізнатися будь-який розробник у найкращих

Що робити, якщо я сказав тобі, що ти можеш бути в 10 разів кращий за середній? Не вдвічі краще. У 10 разів краще: порядок. Ви дійсно будете виділятися. У вас буде доступ до кращих робочих місць, вищої оплати праці та підвищеного задоволення від роботи.

Я брав інтерв'ю, викладав і наставляв сотні розробників. Мабуть, найціннішим виводом є те, що існує величезний діапазон рівнів кваліфікації, навіть серед розробників, які роками кодують собі на життя.

Для мене ще більше вражає те, наскільки легко більшість із них може покращитися. Я також помітив, що велика кількість розробників хочуть удосконалитись. З чим вони, схоже, борються, - це знати, над чим працювати і як над цим працювати.

Хороша новина для тих, хто прагне до досконалості, полягає в тому, що більшість інших розробників просто не усвідомлюють можливості вдосконалитись або недостатньо мотивовані, щоб взяти на себе зобов'язання.

Просто вирішивши стати 10-кратним розробником, ви отримаєте величезну перевагу перед конкуренцією.

Більше того, 10x - це не лише навички розвитку. Це лише один фактор у великій кількості важливих факторів. Очевидно, що ви не можете бути 10-кратним розробником без відбитків, але кодування відсіків однієї недостатньо.

Витоки 10-кратного мему розробника

Перевага досліджень свідчить про те, що між розробниками існує порядок різниці в продуктивності. Цитувати Стіва МакКоннелла (автор "Кодексу повний"):

Загальне висновок про те, що "Існують різниці між порядками програмістів" підтверджено багатьма іншими дослідженнями професійних програмістів (Curtis 1981, Mills 1983, DeMarco і Lister 1985, Curtis et al. 1986, Card 1987, Boehm і Papaccio 1988, Valett and McGarry 1989, Boehm et al, 2000).

Виявляється, ця річ у 10 разів виходить за межі окремих розробників. Різниці існують у продуктивності команди в різних галузях, рівні кваліфікації серед усіх видів виконавців та спортсменів тощо ...

10 разів здається цілком великою різницею. Неважко помилитися з тим, що решта з нас не має шансів досягти такого рівня передового досвіду - простий факт, більшість з нас не буде. Але що цікаво - це чіткий шлях до досконалості. Люди не народжуються великими розробниками. Вони потрапляють туди за допомогою цілеспрямованої, обдуманої практики.

Виникає важливе питання: що саме ми повинні практикувати? Що спільного у кращих розробників, і чи є ті якості, з яких решта з нас можуть навчитися та наслідувати?

Що робить деякі Devs в 10 разів краще, ніж інші?

Існує маса факторів, які роблять деяких розробників в 10 разів кращими за інших. Це набагато більше, ніж кількість квитків, які вони закривають. Звичайно, виконання роботи є життєво важливим заходом, але що ще можна вдосконалити, щоб дістатися до 10 разів, і над чим слід попрацювати спочатку?

Ми опитували близько ~ 1000 розробників, щоб дізнатися це. По-перше, ми провели неофіційне опитування у Twitter, щоб зібрати слова, які використовуються для опису надзвичайних розробників, і не таких надзвичайних розробників:

Потім ми об'єднали відповіді у список простих, описових слів і створили опитування з двома запитаннями з декількома варіантами.

Що робить чудовим розробником?

1. Подумайте про найбільш неординарного розробника, з яким ви коли-небудь працювали. Виберіть усі слова, що їх описують.

Ідея тут полягає в тому, щоб надати розробникам перелік якостей, на яких вони можуть зосередитися. Це все навички, які ви можете практикувати та вдосконалювати.

Для початку поглянемо на те, що робить великих розробників чудовими. Почнемо з топ-5:

Виявляється, всі ці фактори перемагають загальні заходи щодо підвищення продуктивності, такі як "швидкі" та "ефективні" за здоровою нормою.

Вирішення проблем: вирішення проблем - це те, що роблять розробники, тому не дивно, що ця якість отримує високі оцінки, але що відрізняє середнє вирішення проблеми від великого вирішення проблеми? Вирішення правильних проблем. Розробники хочуть відчувати себе продуктивними і засмучуватися, коли є речі, що стримують їх.

У більшості великих кодових баз є частини коду, які ніхто не хоче підтримувати. Якщо ви зможете встигнути копатися в тій частині коду та очистити його, ви полегшите життя всім, хто має справу з цим кодом.

Якщо є загальні процеси, які потребують автоматизації, знайдіть час для їх автоматизації. Отримайте кілька великих перемог, і ваші колеги та менеджери оцінять ініціативу. Зосередьтеся на проблемах, що найбільше впливають. Якщо кожен розробник у команді витрачає 5 хвилин на день на повторюване завдання, яке може бути автоматизовано, і для автоматизації знадобиться лише 30 хвилин, зробіть це. Для виплати інвестицій для команди, яка має 6 розробників, знадобиться лише 1 день.

Навичка: Навички розвиваються з двох інгредієнтів: розуміння та практики. Спочатку ви повинні знати, що практикувати. Ви повинні зрозуміти поняття, які складають основи мови та майстерності програмування, і тоді вам потрібно поставити це розуміння для роботи.

Якщо ви не впевнені, чому навчитися та практикувати, перегляньте "Найвищі рамки JavaScript та теми, які слід вивчити у 2017 році". Технологія швидко змінюється, але мова адаптується повільно, а засоби навчання, такі як React & Redux, навчать вас архітектурних моделей та концепцій програмування, які будуть служити вам добре протягом багатьох років, незалежно від рамки місяця.

Я іноді інтерв'ю розробників, які прекрасно відповідають на всі мої запитання, але як тільки я прошу їх показати приклади в коді, вони натикаються. Вам потрібні розумні книжки та практична майстерність. Наявність лише одного чи іншого не приведе вас далеко. Коли ви читаєте про нові поняття, не забудьте їх практикувати, а потім намагайтеся вводити їх у свій щоденний код. Переконайтеся, що ви справді добре розумієте, як і як використовувати ці поняття, і досконале розуміння того, як вони працюють у фактичних додатках.

Найкращий спосіб навчитися кодувати - це кодувати.

Вихователь / викладач: Знати багато про програмування - це чудово, але ви лише одна людина. Незалежно від того, наскільки ви продуктивними ви самі, немає жодного способу порівняти продуктивність великого множника. Мультиплікатор - це той, хто примножує продуктивність цілих команд.

Важко переокремити вплив, який мультиплікатор може мати на вашу команду. Навіть якщо мультиплікатор не створював коду самостійно, в команді з 3 осіб все одно вийдете попереду, якщо один з них є великим множником:

  • 2 1x дев
  • 1 10x розробка нічого не робить, крім того, щоб допомогти іншим 2 dev досягти 5x
  • 3 дев можуть відповідати значення внеску 10 1x дев

Насправді команди з сильною менторською культурою прагнуть наставляти один одного. Усі вносять свій код. Один-два виділяються та вкладають більше свого часу, допомагаючи іншим розробникам та надаючи якісні огляди коду.

Звичайно, просто закидання більшої пропускної здатності при проблемі не дасть кращих результатів швидше. (Див. "Міфічний місяць місяця"), але розробник, який ділиться кращими практиками з командою і допомагає їм писати більш гнучкий, більш доступний, більш без помилок код, вартує ваги золота.

Відмінник: Я часто кажу людям найняти пристрасних учнів. Світ технологій швидко змінюється, і ніхто не може йти в ногу з усім, але ви хочете, щоб розробники могли швидко адаптуватися, якщо вирішили внести важливі технічні зміни. Якщо ви хочете отримати максимальну користь від мультиплікаторів, вам також потрібно найняти розробників, які навчаються та прагнуть дізнаватися нове. Найкращі розробники - і наставники, і наставники - чудові викладачі, які також чітко розуміють, що вони можуть навчитися цінним новим навіть із самих зелених новачків.

Пристрасний: Щоб постійно вдосконалюватися, ви повинні бути вмотивованими йти вище та за рамки основних вимог до роботи. У вас повинно бути прихильність до досконалості, і коли ви станете краще і отримуєте більше визнання, це зобов'язання винагороджується визнанням та задоволеністю роботою.

Пристрасні розробники освоюють своє ремесло, розвивають почуття гордості та власності у роботі, і вони стають щасливішими у своїй роботі.

Багато розробників запитували мене, як стати більш пристрасним і мотивованим. Моя відповідь - покращитися. Покладіть у роботу. Коли ви наберете більше навичок, ви почнете насолоджуватися цим більше. (Див. "Так добре, що вони не можуть вас ігнорувати").

Повірте мені, жоден музикант не сподобався розбиратися через їхні масштаби та швидкі дрилі, поки не почав відчувати їх покращення. Мало хто з бігунів любив відчуття задухи, поки вони не помітили поліпшення свого часу бігу, або наскільки далеко вони могли бігти до того, як їм не вистачило подиху.

Коли ми робимо щось, ми викликаємо позитивні петлі хімічного зворотного зв’язку в нашому мозку, які наповнюють нас почуттям щастя чи ейфорії. Сила цього ефекту змінюється залежно від того, наскільки великою була мета, але навіть крихітні цілі можуть викликати цикл позитивних відгуків.

Іншими словами, якщо ви намагаєтеся відчути мотивацію працювати над своїми навичками кодування, почніть з чогось насправді простого, що ви можете зробити за кілька хвилин, а потім будуйте на цьому. По мірі того, як ви все більше і більше повторюєте процес і вирішуєте більш високі цілі, рівень дофаміну у вашому мозку буде зростати, а разом з ним і ваша насолода від навчання також зростатиме.

Отримавши більше навичок, ви отримаєте більше пристрасті до оволодіння вмінням.

Що спільного для найгірших розробників?

Незалежно від того, скільки чудових якостей у вас є, є кілька негативних ознак, які можуть насправді перетягнути вас вниз. На щастя, якщо ви їх знаєте, і у вас є можливість чітко бачити ваші недоліки, можливо, ви можете зменшити негативний вплив.

2. Подумайте про найгіршого розробника, з яким ви коли-небудь працювали. Виберіть усі слова, що їх описують.

Некомпетентний: На щастя, найгірший атрибут найгірших розробників також найлегше виправити. Якщо ви зараз просто не дуже хороший кодер, перегляньте "Навчися кодексу: 13 підказок, які можуть врятувати тебе за рік", і приступай до роботи! Якщо ви не дуже вмотивовані, прокрутіть і перечитайте розділ про розвиток пристрасті до свого ремесла.

Зарозумілий: Виправити це набагато важче, але просто вирішити зусилля може призвести до великої зміни в тому, як сприймають вас інші. Нахабна людина відчуває необхідність роздути себе, або покласти інших людей, щоб почувати себе добре - але це ніколи не виходить. Замість того, щоб почувати себе краще, ви можете відчути відчуття синдрому самозванців і тривогу, що інші люди можуть виявити, що ви не такі розумні, як ви самі себе представляєте.

Нахабні люди часто:

  • Припустимо, що вони найрозумніша людина в кімнаті.
  • Відмовтеся щось пояснювати, тому що інша людина "не зрозуміла б".
  • Поговоріть з іншими / поблажте.
  • Прикинься розумнішим, ніж вони є насправді. Часто Google допомагає робити щось розумним, а не визнавати, що на світі є щось, чого вони не знають. (Примітка. Нічого поганого в тому, щоб навчитися гуглінгу. Гуглінг - просто розумно звучати - справа інша)

Не співпраця: Нахабні люди часто припускають, що вони найкраще знають, а коли інші люди працюють над спільним баченням, і зарозуміла людина часто відмовляється брати на борт. Якщо ви не погоджуєтесь з чимось, говоріть і чуйте, але не вважайте, що ви повністю розумієте всі компроміси, які решта команди розглядає, і навіть якщо ви повністю розумієте ситуацію, не використовуйте це для виправдання непокору та ривкової поведінки. Завжди роби все можливе, щоб бути добрим і корисним.

Немотивований: важко зробити щось корисне, якщо ви не мотивовані брати участь у роботі. Дивіться розділ про розвиток пристрасті вище.

Впертий: Причиною того, що я не консолідував "впертого" та "непрацюючого", є те, що впертість стосується не лише співпраці. Іноді розробники зациклюються на спробах зробити щось, що просто не працює. Вони покладуть кілька днів на рішення, яке не має шансів на успіх, але іноді відмовляться визнати, що вони наткнулися. Часто розробники будуть ударяти голову про помилку, про яку вони сліпі годинами, коли хтось інший, можливо, помітив рішення за лічені хвилини.

Не потрапляй у цю пастку. Будьте відкриті до того, що кожен розробник час від часу осліплює проблеми у власному коді. Кожен розробник бореться. Кожен розробник потребує допомоги час від часу. Будьте готові просити про це та будьте готові надати його, коли просять вас.

Інші якості 10х розробників

На мою думку, слід зосередитись на своїх сильних сторонах більше, ніж на слабких сторонах. Виберіть 1 річ, яку потрібно покращити на цьому тижні, і невпинно зосередьтесь на цьому. Але, можливо, ти найбільша сила не в топ-5 списку. Ось деякі інші якості, які можуть істотно змінитись:

Чесні, комунікативні люди заохочують одну з найважливіших особливостей будь-яких стосунків розвитку: довіру.

Часто розробники потрапляють у пастку, де цілими днями зникають у кролячій норі, і коли вони повертаються наново, вони створили щось, що не інтегруватиметься з рештою програми, або ви дізнаєтесь, що переслідували їх хвіст намагається вирішити проблему, яка повинна зайняти години або хвилини.

Спілкуватися, спілкуватися, спілкуватися. Не бігайте самостійно занадто довго. Кожен день перевіряйте свій код. Отримуйте огляди коду щонайменше від 1 або 2 членів команди. Повідомте менеджеру, що ви працюєте щодня.

Це створить взаємну довіру. Ваша команда отримає шанс допомогти вам усунути перешкоди, і вони дізнаються, що можуть розраховувати на вас, щоб тримати їх у циклі та робити постійний постійний прогрес.

Ефективність: Що мене вражає, це те, наскільки воно далеко за списком. Це очевидно один з найважливіших аспектів особистої продуктивності, але особиста продуктивність впливає на продуктивність команди набагато менше, ніж ви можете подумати. Щоб бути по-справжньому ефективним, потрібно зосередитись на атрибутах, які поліпшать ваш коефіцієнт множення: Наскільки ви можете підвищити ефективність роботи всієї команди? Щоб дізнатися більше про особисту ефективність, див. "Зворотний відлік JavaScript на новий рік". Зокрема, пункт №2: "Покращити процес розвитку".

Наступні кроки

Як ми бачили, існує багато важливих факторів, які сприяють успіху кращих розробників. То з чого слід почати?

Здатність вирішувати проблеми - це головний пункт у списку. Ось кілька дій, які ви можете зробити зараз, щоб покращити це:

  • Надайте собі кілька вправ на кодування. Початківцям слід перевірити трек JavaScript на FreeCodeCamp або вправи на Красномовному JavaScript. Більш просунуті розробники повинні працювати над архітектурними концепціями, будуючи додатки практичної роботи. Завжди підштовхуйте себе лише до краю ваших поточних можливостей.

Те саме буде працювати над розвитком ваших навичок, ваших здібностей до навчання, і навіть із задоволенням та захопленням кодом: Практикуйтесь!

Хто міг здогадатися, що все, що вам потрібно зробити, щоб забрати 4 з 5 найбільш важливих атрибутів 10-кратного розробника - це практика?

Щоб заповнити єдиний пропущений фрагмент, навчіть те, чого ви дізнаєтесь у інших людей. Дайте відповіді на запитання, наставник, паруйте програму зі своїми колегами та переконайтесь, що всі члени вашої команди прихильні культурі наставництва.

Діліться своєю новою знайденою пристрастю до досконалості з усіма навколо вас, і вся команда покращиться з вами.

Не знаєте, над чим працювати?

Дізнайтеся JavaScript з Еріком Елліоттом. Візьміть команду з собою!

Ерік Елліот є автором "Програмування програм JavaScript" (O'Reilly) та "Дізнатися JavaScript з Еріком Елліоттом". Він сприяв досвіду програмного забезпечення для Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC, та найкращих виконавців звукозапису, включаючи Usher, Frank Ocean, Metallica та багато інших.

Він проводить більшу частину свого часу в районі затоки Сан-Франциско з найкрасивішою жінкою світу.