Разработка программного обеспечения — это не только написание кода

Поскольку, когда вы начинаете программировать, самый распространенный совет, который вы получаете, — выучить определенный язык. На эту тему ведутся бесконечные споры и противоречивые мнения, так как у всех разный опыт и работа в разных сферах.

Я бы сказал, что единственный язык, который действительно должен знать каждый программист, — это не JavaScript и не Python; ни C++, ни Rust. Один язык английский. Не поймите меня неправильно: я не говорю вам учить английский, который, я уверен, вы уже знаете, поскольку читаете это. Позволь мне объяснить.

Разработка программного обеспечения — это не просто программирование

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

Первым шагом при разработке программного обеспечения является не переход сразу к коду и не начало проектирования системы, а скорее понимание того, что на самом деле просит и ожидает заказчик.

Важность хорошего общения

При работе в команде ключом к успеху является эффективная коммуникация. Я говорю не только о решении вопросов, что, очевидно, требует собственной эффективной организации. Вместо этого я хотел бы сосредоточиться на обычной задаче проектирования и обслуживания системы.

Всегда более очевидно, особенно в крупных многонациональных компаниях, что правильная коммуникация имеет решающее значение для предоставления качественных услуг. Тем не менее, все еще очень часто можно встретить людей, которые не могут эффективно выразить свои идеи, будь то во время встречи или в простом разговоре. Эта проблема особенно заметна в таких странах, как Италия, где трудно найти человека, свободно пишущего и говорящего по-английски.

Может случиться так, что участники не смогут эффективно сообщить о состоянии своей работы или возможных проблемах или, что еще хуже, они произносят слова с неуместной коннотацией, что может привести к тому, что коллеги недооценят проблему или предпримут контрпродуктивные действия.

В данном случае речь идет не только о знании грамматики, но и о наличии хороших коммуникативных навыков и способности убедительно выражать мысли.

Написание хорошей документации

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

Эффективная документация точно описывает поведение программного обеспечения, а также четко объясняет требования и крайние случаи. По этой причине важно не только использовать правильный язык при написании документации, но вы также должны сделать ее хотя бы несколько универсальной для пользователя. Информация должна быть легко доступна и отображаться в удобном для чтения формате.

По этой причине я предлагаю использовать подходящие инструменты для создания и публикации документации, такие как GitBook. Он позволяет быстро и аккуратно публиковать документы из репозитория git или экспортировать их в формате PDF. Кроме того, он предоставляет вам чистый редактор для написания документации непосредственно из веб-приложения и синхронизацию с репозиторием git.

Просьба о помощи

Если вы программист, я уверен, что вы обращались за помощью к Stack Overflow. Однако для получения помощи очень полезно уметь правильно изложить свою проблему, как с точки зрения языка, так и полноты.

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

Например, Джо просит помощи в его проекте компилятора C++. Его пост на Stack Overflow выглядит так:

Я создаю компилятор на C++. Каждый раз, когда я пытаюсь получить доступ к узлу синтаксического дерева, программа вылетает из-за ошибки сегментации.
Вот код структуры данных синтаксического дерева, а вот функция, вызывающая ошибку.
Я разрабатываю для Linux, используя компилятор gcc и стандарт C++20.

Это можно считать довольно полным вопросом, в котором проблема ясна и информации достаточно для воссоздания минимально воспроизводимого примера, в идеале.

Напротив, здесь показан неполный вопрос, в котором отсутствует важная информация:

Я создаю компилятор на C++. Каждый раз, когда я запускаю этот код, программа падает.
Вот функция, вызывающая ошибку.

Эти концепции, однако, применимы не только к сообщениям о переполнении стека, но и к любой подобной ситуации, в которой вам нужно сообщить о проблеме, чтобы получить помощь в ее решении.

Заключение

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

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

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

Цепь настолько прочна, насколько прочно ее самое слабое звено.

Надеюсь, вам понравилась эта статья. Если вам есть, что сказать, поделитесь своими мыслями в комментариях.

Спасибо за прочтение!