15.09.2022

Сергей Немчинский: Какие инструменты есть у программиста?

Сергей Немчинский
22 минут просмотра
Сергей Немчинский: Какие инструменты есть у программиста?

Естественно, я не перескажу вам все инструменты, которые могут быть у разработчика. Таких инструментов огромное множество. На разных проектах, в разных языках программирования, в разных средах, для разных предметных областей, для разного психотипа программистов будут использоваться абсолютно разные инструменты. Здесь я буду рассказывать про инструменты, которыми пользуются подавляющее большинство программистов с моей точки зрения (ибо статистики нет). Но новички могут не знать о каких-то инструментах и это видео будет им полезно.

  • 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 вам понадобится при оформлении презентаций, как для своей команды, так и для заказчика. Опять же, чем выше ваш уровень синьорности, тем чаще вы будете сталкиваться с необходимостью подготовить презентацию и рассказать что-то кому-то. От умения сделать хорошую презентацию и преподнести вашу работу будет зависеть ваша зарплата. Причем зарплата намного больше зависит от навыка презентовать работу и ее результаты, чем от вашей работы как программиста. Помним, что софт скиллы для продвижения важнее, чем хард скиллы.

Будьте готовы, что офисный пакет вам придется использовать довольно часто.

Всегда ваш Сергей Немчинский