Навики досвідченого програміста: найпопулярніші поради початківцям

Бути програмістом — це покликання? Можливо. Ми у 1cloud вирішили з'ясувати, як самі програмісти оцінюють свої досягнення, які якості вважають невід'ємними у своїй роботі (незалежно від вибраної мови і спеціалізації) і які дають поради початківцям розробникам.


/ фото David Joyce CC

1. Вимірювання коду в рядках
Кожен досвідчений програміст знає, що якість коду не визначається його довжиною або часом, який було затрачено на його написання, вважає Джордж Майна (George Maina), співробітник компанії-розробника Kopo Koop.

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

Здатність писати короткий код часто сприймається як показник високого рівня роботи. Так вважав і Стів Возняк, який в одному зі своїх інтерв'ю (див. його 14-ий відповідь) зазначив здатність команди Макінтош писати короткий і якісний код як одну з рис їх високого професіоналізму. Йому також приписывается фраза про те, що він міг зробити код з 10 рядків, рівний по функціональності кодом з 100 рядків.

Меттью Фехер (Matthew Fecher), розробник великої кількості додатків на iOS, технічний редактор книжкової серії «iPhone for Dummies» і «Mac for Dummies», один з основних членів команди AudioKit, говорит, що його набагато більше вразить максимально просте рішення, а ускладнення коду призводить лише до збільшення витраченого часу і кінцевої вартості проекту.

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

Потреба в розвитку повинна бути властива програмісту протягом всієї діяльності, говорит засновник сервісу по підбору розробників Scalable Path Дем'єн Филиатро (Damien Filiatrault).

Але в навчанні можна використовувати не тільки стандартні техніки. Наприклад, в чеському Університеті Градец-Кралове для підвищення та розвитку навику програмування в обов'язкову програму був введений предмет комп'ютерної графіки (розробники навчальної програми вважають, що навчання комп'ютерної графіки дозволяє серйозно поглибити знання програмування і тим, хто згодом не буде пов'язувати кар'єру з цим напрямком).

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

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

Постійне розширення горизонтів допомагає фахівцям легше визнавати свої помилки. Розробник, який працював на ВМФ США, Метт Пікерінг (Matt Pickering), уверен, що зростаюча кількість короткострокових курсів, які обіцяють швидко навчити людину кодити з нуля, не завжди йде на користь початківцям. У них виникає відчуття, що після такого «введення в тему» вони знають все, і поглиблювати свої навички їм більше не потрібно наявності эффект Даннинга Крюгера, коли недолік кваліфікації призводить до завищеної оцінки своїх професійних якостей.

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

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

Розробник архітектури додатків в компанії Imagine Communications Скотт Палмер (Scott Palmer) объясняет, що популярні сьогодні онлайн-тести не можуть адекватно оцінювати якість коду та професіоналізм програміста. Звичайно, існують тимчасові рамки і дедлайни проектів, але задаватися метою витрачати на створення коду якомога менше часу — не сама хороша і абсолютно не виправдана (з точки зору результату) ідея.

Цей принцип найкраще ілюструє індустрія відеоігор (зрозуміло, створення гри не зводиться до роботи програмістів і гейм-дизайнерів, однак їхня праця в даному випадку — ключової). Наприклад, випуск Team Fortress 2 був анонсований ще в 1998 році, а на прилавках гра з'явилася лише 9 років. Очікування явно варто було цього, враховуючи той факт, що у неї продолжают грати навіть в 2016 році. Розробка Diablo III зайняла ще більше, цілих 11 років. При цьому рік випуску (2012) гра побила всі рекорди за попереднім замовленням. А в 2015 році гра виявилася на 10 місці в рейтингу найбільш продаваних ігор (30 млн копій).

4. Необхідність попередньої роботи
Розробник інтернет-провайдера EarthLink Telecommunication Ашіш Чандра (Ashish Chandra), описуючи свій досвід, говорит, що більшу частину робочого часу і навіть частина особистого витрачає на обдумування коду і пошук оптимальних рішень, які можна впровадити. І навіть 50 рядків коду в день набувають зовсім іншу цінність, коли до їх написання підійшли дуже вдумливо.

Джо Армстронг (Joe Armstrong) створив мову Erlang, при розробці, наприклад, волів дуже ретельно документувати все, що тільки можливо, перед тим, як приступати до безпосереднього написання коду. Дуже часто попередня підготовка відіграє досить велику роль і полегшує роботу: Раві Шанкар (Ravi Sankar), інженер-програміст в Microsoft, впевнений, що так можна скоротити або зовсім уникнути подальших перетворень і виправлень.

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

5. Комунікабельність
У комунікабельності є дві важливі сторони — вміння працювати в команді і розуміти клієнтів. Але для Кріса Кемпа (Chris Kemp), генерального директора консалтингової компанії в сфері інформаційних технологій і бізнес-систем Paladin Consultants, клиент теж є частиною команди, тому почути його і зрозуміти, узгодити план і цілі проекту — запорука створення успішного продукту (хоча, звичайно, далеко не у всіх компаніях це завдання лежить на плечах самих розробників).

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

Тому Дам'єн Филиатро включает (під пунктом 2) гарні комунікативні навички в список відмінних рис висококласного спеціаліста. Стівен Уайатт Буш (Stephen Wyatt Bush) поділився у своєму блозі 10 заповідями програміста, яким його навчив батько, який працює в Технологічному університеті Тенессі. Згідно 5 заповіді, особливе терпіння слід виявляти в спілкуванні з людьми нетехнічних спеціальностей, щоб не підтримувати існуючий у них стереотип про програмістів.

Майкл Лайонс (Michael Lyons) і Роб Томсетт (Rob Thomsett) провели психологічне дослідження на основі системи типології особистості Майерс — Бріггс (створеної на базі ідей Карла Юнга). Вони прийшли до висновку, що половина або дві третини всіх програмістів з орієнтації свідомості є інтровертами, тобто нам більш цікавий внутрішній світ ідей і ментальних процесів, що зовнішній світ людей та предметів.

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

Кевін О Шоннесси (Kevin O Shaughnessy), веб-розробник з Британії, впевнений, що визначення свого типу особистості сприяє розумінню себе і навіть аналізу своїх помилок у роботі. Тому він пропонує програмістам пройти сам тест та ознайомитися з описом всіх типів особистості – іноді це може допомогти в суперечці чи спілкуванні з колегами і клієнтами.

Джон Олспоу (John Allspaw), технічний директор торговельної площадки Etsy, пише у своїй статті про те, що чим вище ви піднімаєтеся кар'єрними сходами, тим більше до вас пред'являється вимог – тому універсальні практики для початківців часом можуть стати в нагоді і досвідченим розробникам.

P. S. А які корисні поради новачкам можете підказати ви?

P. P. S. Про що ще ми пишемо в нашому на Хабре:

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.