Особистість програміста

Особистість програміста

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

Ульям Джеймс

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

Але ж програми пишуть люди, такі ж, як ми з вами. Одні стають видатними програмістами і досягають великих успіхів, інші ж закидають професію. Перефразовуючи класика, можна сказати: «покажи мені свій код, і я скажу, хто ти». Дослідження показують, що кращі програмісти створюють програми в 10 разів швидше, ніж їх менш кваліфіковані колеги. Час, що йде на налагодження коду, а також обсяг і швидкодію підсумкової програми, рівень помилок і число виявлених помилок також різняться приблизно в 10 разів.

У цій статті ми спробуємо відповісти на запитання, які риси повинна мати людина, щоб писати досконалий код.

Інтелект і скромність

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

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

Цікавість

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

  • вивчіть процес розробки;
  • експериментуйте;
  • читайте про вирішення проблем;
  • аналізуйте і плануйте, перш ніж діяти;
  • вивчайте успішні проекти;
  • читайте книги та періодичні видання;
  • спілкуйтеся з однодумцями;
  • постійно прагніть професійного розвитку.

Професійна чесність

«Будь-який дурень здатний відстоювати свої помилки - більшість дурнів саме так і роблять».

Дейл Карнегі

Становлення висококваліфікованого програміста передбачає розвиток загостреного почуття професійної чесності, яка може проявлятися в різних формах:

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

Спілкування і співпраця

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

Творчість і дисципліна

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

Лінь

Лінь може проявлятися кількома способами:

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

Перший прояв лені навряд чи коли-небудь буде вигідним.

Ви зможете позбутися першого типу льону, якщо виробите звичку виконувати ці

завдання відразу. Ця звичка відповідає другому типу ліні - «освіченому». Ви все так само лінуєтеся, але вирішуєте неприємні проблеми, витрачаючи на них якомога менше часу. Третій варіант стрічки передбачає написання інструменту для виконання неприємного завдання. Це «довготривала лінь». Безсумнівно, це найпродуктивніший вигляд ліні (якщо, звичайно, інструмент дозволяє в підсумку заощадити час). У цьому контексті певна лінь навіть вигідна.

Однак лінь має і зворотний бік. «Поспіх» і «зусилля» цінуються в програмуванні зовсім не так високо, як на уроках фізкультури. Поспіх - це додаткові, непотрібні зусилля. Вона вказує на активність, але не на виконання роботи. Рух неважко сплутати з прогресом, а зайнятість з продуктивністю. Головну роль в ефективному програмуванні відіграє мислення, а роздумуючі люди зазвичай не здаються зайнятими.

Властивості, які менш важливі, ніж здається

Крім поспіху, є й інші властивості, доречні в інших областях життя, але не особливо ефективні при розробці ПЗ:

  • наполегливість, якщо її розуміти як ослину впертість;
  • досвід, при сучасній динаміці розвитку галузі (приклад - прихильність старим підходам і технологіям);
  • пристрасть до програмування - працюючи по 16 годин на день, ви може просто згоріти, або наробити помилок, які потім доведеться виправляти в кілька разів довше, ніж «виграний час».

Звички

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

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

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

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

Резюме

  • Здатність до написання програм безпосередньо залежить від особистого характеру.
  • Найважливіші якості програміста - скромність, цікавість, професійна чесність, творчість і дисципліна, а також «освічена» лінь.
  • Щоб стати відмінним програмістом, можна не володіти особливим талантом, але необхідно постійно прагнути до самовдосконалення.
  • Дивно, але інтелект, досвід і наполегливість шкодять програмістам не

менше, ніж допомагають.

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

Стів Макконнелл

Image