Беседы о программировании
Спасение и проклятие профессии разработчика в том, что практически не существует ограничений на то, что было бы полезно знать. По мере того как ПО становится частью каждого продукта или услуги, дополнительные знания могут послужить предпосылкой для карьеры разработчика, которая предполагает не только набивание кода.
Многие пытались составить список того, что необходимо знать и понимать разработчику. Профессора информатики Юджин Черняк и Дрю Макдермот в одном из своих учебников описали такой идеальный уровень подготовки: в него входят не только умение программировать или знание структур данных и логики, но и математический анализ, статистика, физика.
Изучая логику и, конечно же, отдельные области программирования, такие, как рекурсия, мы начинаем создавать код, который выполняет поставленные задачи (или по крайней мере не наносит ущерба) даже в неидеальных условиях. Чем больше наших программ начинает работать в сетях, конфигурации которых мы не можем контролировать, а то и знать, тем важнее становится это умение.
Средства обработки исключений в языках Си++, Java и Ада - не просто декорация. Освойте их и пользуйтесь ими.
Все больше задач требуют сложных методов доступа к данным, а не просто грубого перемалывания информации, поэтому структуры данных перестают быть просто рутиной. Выбор правильной структуры данных определяет то, насколько правильно, быстро и гибко осуществляется подбор информации.
На самом деле вся идея объектно-ориентированного подхода состоит в том, чтобы рассматривать код как принадлежность соответствующих ему данных, как что-то, что помогает данным внести свой вклад в решение вашей конкретной задачи. Если же вы пользуетесь объектами только с целью сгруппировать процедуры в маленькие именованные блоки, то вы не понимаете идею ООП. Во главе угла находятся данные.
Итак, вы, почесывая затылок, киваете головой, соглашаясь со мной. Но зачем тогда, спросите вы, анализ, статистика, физика? На самом деле первое имеет существенно большее значение, чем кажется. Анализ, язык описания переменных величин - лучший инструмент в случае, когда задачу можно решить несколькими способами.
Сейчас, когда ПО выходит из-за кулис и становится неотъемлемой составляющей работы, самой ценной частью любых товаров или услуг, нам, как и создателям продукта, приходится задумываться над начальными инвестициями и текущими издержками. Решение потратить больше средств на начальном этапе, чтобы значительно снизить издержки на каждом следующем цикле - компромисс, требующий точного и аккуратного расчета.
Чтобы выпустить продукт, которым можно было бы гордиться, необходимо быть частью команды, которая определяет, какую задачу нужно решать. И хотя в ходе обсуждения математических выкладок на доске может и не оказаться, знание математических методов лишь увеличит ценность вашей позиции, даже если вы не упоминаете об этом вслух. (Мой вам совет: не надо говорить об этом на людях.)
А как же физика? Ограничения на производительность наших компьютеров, пропускную способность сетей или надежность беспроводных коммуникаций накладывают законы физики. Если вы не представляете себе, как это работает, вы пишете код для идеального мира с небольшими объемами информации, путешествующими по каналам, в которых нет шумов. Разработчик, пишущий программы для реального мира, создаст более работоспособный продукт.
Ну а статистика? Все больше ПО становится звеном в цепи поддержки принятия решений, корректируя ход игры, а не только отслеживая счет. Если анализ - язык описания переменных величин, то статистика - язык описания ошибок и неопределенностей, которые возрастают при наличии стремительных изменений.
Короче говоря, речь идет о решении задач в терминах реальной жизни, а не программных интерфейсов. Делайте это, и вам будет сопутствовать успех, или оставьте это другим и приготовьтесь на них работать.
Питер Коффи