Звичайно, я не перелічу вам всі інструменти, які можуть бути у розробника. Таких інструментів безліч. На різних проектах, у різних мовах програмування, у різних середовищах, для різних предметних галузей, для різних психотипів програмістів будуть використовуватися абсолютно різні інструменти. Тут я розповідатиму про інструменти, якими користується переважна більшість програмістів на мій погляд (бо статистики немає). Але новачки можуть не знати про якісь дуже корисні інструменти.
- IDE (integrated development environment)
IDE існують практично під усі мови програмування. А якщо під якісь мови не існує, тоді для них є спеціальні надбудови.
IDE бувають дуже простими, з дуже урізаним функціоналом. Але бувають і дуже великі, що містять величезну кількість інструментів розробника. Наприклад, Eclipse, IJ. Можна розробляти взагалі не виходячи за межі IDE. Тут є підключення до віддалених середовищ, робота з віддаленими файловими системами, віддалений деплой, робота з базами і багато іншого.
На мою думку, використання IDE є абсолютно ультимативним. Хоча є програмісти, які вважають, що можна обійтися текстовим редактором. Найзручнішим текстовим редактором, на мою думку, є Notepad++. Принаймні він може підсвічувати ключові слова відповідної мови програмування.
- Система контролю версій
На сьогоднішній момент переважна кількість систем контролю версій – це різні дистрибутиви Git. Git був написаний Лінусом Торвальдсом, винахідником Linux. Сьогодні використовують три поширені дистрибутиви: GitHub, GitLab, Bitbucket GitHub більше відомий як паблік-репозиторій, де розміщують свій код програмісти та компанії. Хоча його можна використовувати і за прямим призначенням як систему контролю версій.
GitLab частіше використовується для роботи в компаніях, хоча GitHub і GitLab дуже схожі і якщо ви новачок, то, швидше за все, ви не помітите особливої різниці.
Bitbucket часто називають гітом для багатих. Ця система дуже добре інтегрується із Jira, оскільки створена однією компанією. В основному використовується в ентерпрайз-середовищі.
Це ультимативний інструмент для розробників будь-якою мовою.
- Редактор баз даних
Ким би ви не працювали у програмуванні, інструменти редактора баз даних вам потрібно знати обов’язково. Зазвичай інструмент заточено на конкретну базу даних (PostgreSQL, MySQL, Oracle). У серйозних IDE вбудований функціонал редагування баз даних. Тут вибираєте ви, користуватися ним усередині IDE або користуватися середовищем, яке поставляє сам розробник баз даних. Іноді воно зручніше, ніж IDE, але за великим рахунком це питання смаку.
- Фреймворк
Базовим інструментом роботи програміста є фреймворк під вашу мову програмування. Знати та вміти користуватися ним обов’язково. Швидше за все про нього вас запитуватимуть ще на співбесіді. Я навіть не зупинятимусь на цій темі, тому що необхідність знання фреймворку очевидна.
- Інструмент тестування ПЗ
В цей блок входять unit tests, фреймворк юніт-тестування для вашої мови. Якщо ваш результат коду можна перевірити руками (наприклад, ви розробляєте мобільний або веб-додаток, які можна поклікати), то все більш-менш зрозуміло. Але якщо ви розробляєте API, то йдеться про більш серйозні інструменти тестування. Наскільки знаю, новачки API не розробляють, тому зараз не сильно заглиблюватимуся в інструменти для такого тестування.
- Профілювальник коду (профайлер)
Це програми, які перевіряють на швидкість виконання та знаходять вузькі місця у вашому коді. Таким інструментом новачки зазвичай не користуються, тому що найчастіше не роблять перформанс тюнінг коду. Але іноді на проекті бувають саме такі завдання. Або ж ви робите програму самостійно і якийсь ключовий момент у вас сильно гальмує. Ось у цих випадках якраз і допоможе профайлер. Шукаємо його під свою мову. Для Java я використовував JProfiler, він платний, але дуже потужний. Він прямо по коду показує, що саме гальмує і скільки часу витрачається на кожному рядку коду. Це дуже зручно.
Звичайно, це не означає, що новачок насамперед повинен бігти і ставити профайлер. Ні. Але ви повинні знати про наявність такого інструменту і що за потреби можете ним користуватися.
- SHELL
Shell – досить поширений інструмент, при тому, що багато новачків взагалі про нього не чули. Знати інструмент потрібно хоча б на рівні вміння копіювати файли та надати права. Для Backend розробника знати shell абсолютно ультимативно, для Frontend програмістів дуже бажано. Так, фронтендери можуть сказати, що їм це не потрібне. Однак сучасні фронтенд програми теж збираються з шела. Звичайно, є різні способи обійти це, але якщо ви вмієте користуватися командами Shell, все буде набагато зручніше і простіше. Окрім іншого, деякі програмісти вважають, що через shell зручніше працювати з Git.
- UML-редактор
UML має вміти читати будь-який розробник, навіть новачок. Це зовсім не складно, на освоєння у вас піде буквально кілька годин. Вам потрібно вміти прочитати клас-діаграми та діаграми послідовності (sequence). Тобто, всього дві діаграми, кожна з яких складається десь із 5 елементів.
Якщо ви мідл-розробник і вище, ви повинні вміти писати ці діаграми. Навіщо? Тому що замовники часто запитують UML-діаграми за ключовими моментами архітектури системи. Але навіть якщо у вас це не запитують, я дуже раджу малювати такі діаграми для майбутнього себе або інших програмістів, які будуть працювати з вашим додатком.
Вам не потрібно покривати UML всю програму, оскільки багато інформації = відсутність інформації. Діаграми потрібні тільки за ключовими моментами, які складно зрозуміти з коду і набагато легше зрозуміти з UML. Саме тому я виношу UML як окремий інструмент. Ніколи не використовуйте вбудований UML-редактор в IDE. Тому що ви просто натиснете кнопочку та отримаєте UML-діаграми за всіма класами, які у вас є, а це безглуздо. Така діаграма ні про що не розповідає, і нікому не потрібна. У цьому випадку вам потрібно витратити купу часу, щоб викинути з цієї діаграми те, що не потрібно, і залишити лише значущі елементи. При цьому, якщо ви малюєте діаграму з нуля, ви туди додаєте тільки те, що потрібно. І це набагато простіше.
- Офісні програми
Якщо ми говоримо про Windows, це Microsoft Office (Word, Excel, PowerPoint) — ви будете використовувати їх досить часто, особливо з підвищенням рівня сеньорності. Джуніору Word буде потрібен тільки для читання документації, яку досить часто надсилають саме в Word. Але рано чи пізно вам доведеться самому писати документацію по проекту, хоча б release notes або дописувати якийсь шматок опису description проекту, архітектурні документи та ін.
Excel – цікавий інструмент, яким багато програмістів взагалі не вміють користуватися. Особисто я нормально розібрався в Excel, тільки коли почав займатися бізнесом. Але якби я умів ним користуватися раніше, як програмісту він би мені став у нагоді багато-багато разів. Excel — класний інструмент, щоб систематизувати якісь знання та дані, зробити якісь обчислення та ін.
PowerPoint вам знадобиться при оформленні презентацій як для своєї команди, так і для замовника. Знову ж таки, чим вищий ваш рівень сеньорності, тим частіше ви стикатиметеся з необхідністю підготувати презентацію і розповісти щось комусь. Від уміння зробити хорошу презентацію вашої роботи залежатиме ваша зарплата. Причому зарплата набагато більше залежить від навички презентувати роботу та її результату, аніж від вашої роботи як програміста. Пам’ятаємо, що софт скіли для просування важливіші, ніж хард скіли.
Будьте готові, що офісний пакет вам доведеться використовувати досить часто.
Завжди ваш Сергій Немчинський