Привет. Эта статья является частью серии, в которой мы разговариваем с профессиональными разработчиками программного обеспечения, спрашиваем их, каково это зарабатывать на жизнь написанием кода, и, возможно, по ходу дела получаем некоторое представление об индустрии разработки программного обеспечения.
Сегодня наш гость — MVP Delphi и писатель Дэвид Корнелиус. Дэвид называет себя «программистом насквозь». Он управляет небольшим бизнесом по разработке программного обеспечения из своего домашнего офиса и, кажется, правильно расставляет приоритеты, когда говорит: «Я люблю семью, музыку, настольные стратегии и природу». Живя, как он, на полпути между Тихим океаном и Каскадными горами, Дэвид говорит, что это означает, что ему предлагается широкий выбор мест для изучения — либо на мотоцикле, либо в походе от кемпинга.
Table of Contents
Привет, Дэвид, спасибо, что поговорил со мной сегодня
Что ж, очень приятно познакомиться, Ян !! 😁
Какие продукты Embarcadero вы используете а) чаще всего б) регулярно?
a и b: Delphi XE, 10.4, 11. Каждый день.
Как и / или почему вы стали разработчиком?
Когда я учился в начальной школе, моим любимым предметом была математика. У меня есть программируемый калькулятор TI (Texas Instruments), и я буду соревноваться со своим дедом в самых сложных вычислениях, которые мы могли придумать за его ограниченные 32 шага.
В небольшой средней школе, в которой я учился, был TRS-80 с кассетным «приводом» для хранения, но я с нетерпением ждал, пока он загрузится / сохранится, с его многочисленными попытками и ошибками, так что я потерял интерес. Но позже, когда школа открыла свою первую компьютерную лабораторию с тремя Apple II, я потратил все свободное время, обучая себя AppleSoft BASIC. Когда я дошел до конца учебника и понял, что мой друг пишет игры, которые нельзя было бы сделать на одном только BASIC, я знал, что мне еще очень многое предстоит узнать — к тому моменту я был увлечен программированием! Следующим очевидным шагом была специализация в области компьютерных наук в колледже, а остальное, как говорится, уже история.
Вы думаете, что когда-нибудь перестанете быть разработчиком? Если да, то что будет дальше?
Нет, у меня слишком много идей, чтобы когда-либо останавливаться, даже если я продам свой дом и поеду по стране на автофургоне, я все равно буду программировать часть времени.
Что заставило вас начать использовать Delphi / C ++ Builder?
Колледж познакомил меня с несколькими языками программирования. Я изучал ассемблер на трех разных процессорах, наслаждался структурой FORTRAN, мне наскучил COBOL, и я бросил этот класс, посмотрел на некоторые нишевые языки, такие как SNOBOL, и выучил C, используя Let’s C Марка Уильяма . Но наиболее полезным был класс, в котором преподавались общие концепции программирования с использованием недорогого инструмента, который позволял редактировать, компилировать и отлаживать все в одной среде IDE, что было новой концепцией середины 80-х годов. Это был Турбо Паскаль.
Позже, на моей первой долгосрочной работе в области программирования, мне представилась возможность запустить совершенно новое приложение, и я мог выбрать любой инструмент программирования, который я хотел. Я перешел на Turbo Pascal, затем на версию 4, потому что я уже знал, как его использовать, я мог перейти к сборке, если мне нужно (что я действительно делал иногда), и он начал становиться популярным — это было логичное место начать.
По мере роста приложения с годами я переместил кодовую базу на Borland Pascal, поддержал вспомогательные проекты на других языках программирования и даже написал некоторые вещи, используя Borland Turbo C ++. Но наиболее продуктивно я работал с языком Object Pascal — это было до тех пор, пока я не попытался кое-что запрограммировать для Windows 3.1 с помощью Object Windows Library (OWL). Когда вышел Delphi, я с радостью отказался от OWL в пользу этого удивительного нового инструмента программирования на основе компонентов. И снова это было логичное место для начала — на этот раз для создания приложений Windows.
Если бы вы могли дать какой-нибудь совет студенту, который подумывает о карьере разработчика программного обеспечения, что бы это было?
Задайте себе следующие вопросы:
- Могу ли я мыслить логически и анализировать глубокие проблемы?
- Могу ли я сосредоточиться на одной задаче длительное время?
- Нравится ли мне решать умственные задачи и решать логические задачи?
- С удовольствием узнаю новые идеи и принимаю меняющиеся технологии?
- Могу ли я подолгу сидеть за компьютером?
Если вы ответите утвердительно на все (или, по крайней мере, на большинство) из них, у вас будет хороший шанс преуспеть как разработчик. Получение удовольствия от процесса создания программного обеспечения действительно важно для стабильной карьеры, поэтому возьмите несколько уроков (либо бесплатные онлайн-уроки, либо в рамках формального образования) как можно раньше, чтобы почувствовать, на что это похоже, а затем сравнить это с другими интересами.
Мне очень нравится играть музыку, но я понял, что это не то, что я хотел бы изучать и тратить на это по 8-10 часов в день, иначе любовь сменится тяжелой работой. Для меня этого не было с разработкой программного обеспечения. Ты должен знать себя!
Табуляция… или пробелы?
Я с Фрэнком Лаутером ! [Пробелы]
Какой самый лучший день у вас как разработчика?
Возможность решить проблему или добавить функцию, которая делает клиента по-настоящему счастливым, — это величайшее чувство, но день, который запомнился мне как особенно приятный, был для меня чем-то особенным. Еще в начале 1990-х годов на большинстве ПК на базе DOS не было кнопки сброса, требующей от пользователя выключения питания, ожидания, пока HD перестанет вращаться, а затем повторного включения питания в случае сбоя программы. Они также поставлялись с одним встроенным динамиком, который иногда зависал, если программа вылетала из строя в неподходящее время — требуя мучительного процесса остановки / ожидания / перезапуска, чтобы прекратить раздражающий высокий визг. Это случалось со мной слишком много раз, поэтому я написал быструю программу Turbo Pascal, которая просто отключила динамик. Это была однострочная программа, отлично работавшая с первого раза, я назвал ее SHUTUP и поместил ее в PATH, чтобы я мог в любое время ввести ее из командной строки DOS.
Что самое плохое в работе разработчика?
Одна из самых неприятных вещей в работе разработчика — это столкновение с проблемой, которую вы не можете понять и на которую вы тратите часы или даже дни, пытаясь обойти ее, только чтобы понять, что это очень простая проблема или ошибка, которая только поднимает свою уродливую голову для вашего конкретного расположения оборудования.
Какой самый крутой совет по разработке вы знаете?
Только один? Есть из чего выбирать! Я думаю, что лучший совет, который я бы дал, — это помогать тем, кто работает в редакторе Delphi в течение всего дня, а именно изучать, использовать и настраивать живые шаблоны . Чтобы стать хорошим и быстрым, может потребоваться немного времени и практики, но быстрый набор текста и кодирование — это огромный рост производительности.
Работа из дома, работа из офиса, работа в открытом / общем пространстве? Что ты предпочитаешь и почему? Вы можете выбирать?
Если бы я работал в компании, которая решила перейти на открытую планировку, я бы уволился. Я не могу себе представить, чтобы разработчик мог сосредоточиться достаточно долго, чтобы что-то сделать в среде, где нет стен и каждый может видеть / слышать всех остальных.
Я люблю работать из дома и быть самим себе боссом. Работодатели редко осознают преимущества для продуктивности предоставления удобного стола и стула или приобретения приличного оборудования. Нет двух абсолютно одинаковых людей, но большинство компаний по-прежнему стараются уместить всех на «стандартном» рабочем столе.
Я выше среднего, поэтому у меня стул выше среднего, мой стол очень высокий и я использую подступенки для монитора, чтобы моя осанка была прямой, и мне не приходилось сутулиться или смотреть на монитор — все что может вызвать напряжение шеи и спины.
Но иногда я работаю на своем ноутбуке в кафе или парке, где настраиваю все вокруг себя и на короткое время сосредотачиваюсь на одной задаче.
Расскажите нам что-нибудь интересное, что, по вашему мнению, мы могли не знать.
Я взял 7 лет уроков игры на фортепиано в начальной и средней школе, и мне это понравилось — я получил достаточно хороших результатов, чтобы выиграть небольшой конкурс в старшей школе за один год. Я также играл на трубе, валторне, баритоне и тубе в средней школе в разное время (и пел в хоре). Я все еще играю на тубе большую часть времени на Tuba Christmas в Портленде , штат Орегон, и мне очень нравится мое последнее приобретение — бас-гитара, которую я использую, чтобы аккомпанировать группам прославления в местной церкви.
Есть ли место в сфере высоких технологий, которое вы хотели бы посетить?
Я думаю, если бы у меня была возможность посетить штаб-квартиру Borland в тот день, это было бы круто, но у меня нет горячего желания увидеть что-либо, кроме, возможно, посетить места, о которых я читал для исторического контекста. .
Вы когда-нибудь встречали известных / хорошо известных технических деятелей? Кто это был? Как прошло?
Будучи координатором ODUG с 2000 года, я имел удовольствие встретиться с несколькими известными людьми в сообществе программирования Delphi, проводящими групповые туры пользователей, продвигающих новые версии Delphi или сторонних компонентов. К ним относятся (в произвольном порядке) Джон Кастер, Дэвид «I» Интерсимон, Андерс Олссон, Сарина Дюпон, Джим МакКит и Рэй Конопка. Большинство презентаций прошло без сучка и задоринки, но однажды Дэвид I приехал в Портленд, аудитория, которую мы использовали, изменила свою политику в отношении использования аудио / визуального оборудования без моего ведома, что помешало нам использовать потолочный экран и проектор; нам пришлось толпиться вокруг его ноутбука, чтобы посмотреть, чем он делится — все шло не так, и мне было жаль всех. Вскоре после этого мы поменяли место проведения. [ЯПервое правило презентаций AnB — всегда будет плохо, и чем больше вы планируете, тем больше будет неудач😂 ]
Если бы вы могли убедить кого-то рассмотреть Delphi или C ++ Builder, каким был бы ваш метод, как бы вы это сделали?
Я бы научил их основным конструкциям программирования с использованием псевдокода, а затем удивил бы их, сообщив, что они только что выучили Delphi!
Если бы вы могли взмахнуть волшебной палочкой «исправить технологическую индустрию», что бы вы изменили?
Я бы не позволил компаниям, работающим в социальных сетях, использовать личные данные для получения прибыли и использовать таинственные алгоритмы для управления тем, какие сообщения вы видите.
Какой технический продукт вы хотите изобрести / спроектировать и почему?
Facebook. Не потому, что у меня есть желание стать газиллионером, а потому, что я считаю, что платформа — отличный способ поддерживать связь с семьей и друзьями, но мне не нравится тот факт, что компания получает прибыль от того, что так много обо мне знает и корректирует, какие посты я с большей вероятностью увидят (см. мой ответ «волшебная палочка»).
Если бы вы могли снова прожить свою жизнь, вы бы все равно стали разработчиком? Почему?
Наверное, мне это очень нравится. Но я серьезно подумывал об архитектуре — думаю, это было бы одинаково весело, сложно и с достаточным разнообразием, чтобы поддерживать мой интерес в течение долгого времени.
Сколько кофе вы пьете в день и достаточно ли этого?
Если в доме окажется свежий кофе, я выпью одну или две чашки. Если нет, то обычно я в порядке. Я редко стараюсь изо всех сил искать кофеин. Однако время от времени бывают те ранние утра после поздней ночи, когда уравнение меняется!
Вы ночной ястреб, который кодирует до позднего вечера, утренний человек, который встает рано и прямо в рабочее время, или вы придерживаетесь какого-то обычного рабочего времени?
Раньше я все время программировал в предрассветные часы ночи, но теперь уже не так много. Мало того, что сейчас сон стал для меня более ценным, у меня нет возможности спать часто; поэтому я изменил свой график раньше. Но я все еще не тороплюсь — нужно время, чтобы проснуться достаточно, чтобы продуктивно работать с клавиатурой.
За всю свою карьеру вы когда-нибудь «тянули ночь напролет», чтобы иметь дело с чем-то, что абсолютно необходимо сделать?
Да, иногда из-за приближающегося крайнего срока, но чаще, потому что я верю лжи, я говорю себе, что это последнее дело займет всего несколько минут. В большинстве случаев, если я оставлю задачу на следующее утро, я смогу решить ее за четверть времени!
Опишите еще кое-что, чем вы занимались в своей карьере, что может дать читателям представление о том, что делает разработчика.
Большая часть того, что я написал, используется людьми, которые не понимают основную технологию. Для этого требуется способность понимать расплывчатые запросы и превращать их в требования, переводить жалобы в отчеты об ошибках и прогнозировать действия пользователей, которые могут нарушить работу вашего приложения, и активно предотвращать их. Работа над системой управления учителями, которая запустила образовательное программное обеспечение для студентов, сразу же научила меня, насколько важно надежное и удобное программное обеспечение, особенно когда меня поместили в комнату с ними, и я почувствовал их боль, когда они столкнулись с проблемами. Нет лучшего мотивации, чем заставить ваших пользователей повернуться на стуле, посмотреть на вас и спросить, что им делать с этим большим, длинным сообщением об ошибке на экране!
Какой день программирования был для вас самым напряженным?
В 2002 году я создал прототип веб-приложения для дневной торговли на PHP для предпринимателя. Он хотел снять рекламный видеоролик для ночного телевидения, чтобы заинтересовать людей и подписаться на продолжение финансирования проекта, но он добавлял запросы функций быстрее, чем мы могли их выполнить, в результате чего некоторые аспекты сайта оставались незавершенными или временно трудными. -кодированный. Он привез группу из нас, которые работали над проектом, в Лас-Вегас, затем нанял несколько моделей, чтобы они показывали на экране, пока он рассказывал об этой удивительной программе, которую пытался продать. В последний момент, не посоветовавшись со своим техническим персоналом, он пошел и купил гигантский телевизор для демонстрации — не монитор или проектор и экран, а телевизор! У моего ноутбука не было подходящей видеокарты или графических драйверов для правильного определения экрана (двое из нас сражались с ним в течение 30 минут), поэтому мы застряли с уродливым разрешением 640 × 480 на этом большом дисплее. Мне пришлось внести несколько изменений в последний момент, передвинуть одни вещи по экрану и скрыть другие, пока съемочная группа и модели ждали. Я вносил эти изменения, сидя на полу у стены конференц-зала, а полураздетая девушка сидела прямо передо мной, ожидая своей очереди, чтобы встать и потанцевать перед экраном!
Вы котируете работу с клиентами? Если вы это сделаете, не раскрывая ничего, что могло бы вызвать у вас дискомфорт, какой процесс вы используете?
Иногда, когда этого требуют клиенты. Но тогда я оцениваю это намного выше, чем я думаю. Я предпочитаю предоставлять смету и выставлять счет ежечасно; затем часто общайтесь и выставляйте счета, чтобы клиент понимал прогресс и стоимость.
Как не дать клиентам / руководителям программ / менеджерам «расползаться по функциям»?
Зарядите их за это. Серьезно, это так просто. Я объясняю им, как функции, которые они запрашивают, выходят за рамки первоначально запрошенного объема и почему это будет стоить дороже. Все, что я делаю, отмечается в счете-фактуре в отдельной строке, так что они видят стоимость каждого запроса.
Опишите для вас типичный сеанс программирования. Как это началось? Вы делаете перерывы? Есть ли у вас какие-нибудь ритуалы / привычки, чтобы сопровождать это?
Я выбираю проект и задачу и вникаю в них. Иногда для новых проектов или проблем мне приходится останавливаться и рисовать блок-схему или списки чисел; Для этого хорошо подходит ручка / бумага, так как они активируют другую часть мозга. Часто я сначала создаю пользовательский интерфейс, который дает мне более ясное представление о том, как законченная версия будет выглядеть и действовать, что может выявить дополнительные соображения, которые следует кодировать. В других случаях, например, для исправления ошибок, я сначала начну добавлять дополнительный код ведения журнала, чтобы быстрее определить проблемную область.
У меня нет установленных правил для времени или ритуалов — иногда я нахожусь в ловушке и пишу код прямо в течение пары часов, в других случаях проблема более сложна и требует частых перерывов, чтобы просто остановиться и подумать о проблеме. Он меняется так же, как и мои проекты.
Вы слушаете музыку, пока пишете код? Если да, то не могли бы вы рассказать нам несколько треков / исполнителей / выступлений?
Я долгое время использовал Pandora для потоковой передачи музыки, и у меня есть несколько различных пользовательских каналов, которые различаются в зависимости от моего настроения, от электроники / транса до холода, техно / дабстепа и кельтского. Среди моих любимых художников — Autograf, Jes, Blackmill, Amethystium, Nordlight, Trifonic, Lindsey Stirling, Celtic Woman, The Glitch Mob, Krewella и Celldweller.
Используете ли вы какие-либо методы или техники, такие как Agile, Scrum, Kanban, TDD? Если да, то почему? Если нет, то почему?
Я не выбирал метод, а затем искал инструмент для его реализации, я нашел Trello, и мне он понравился для управления проектами, затем я обнаружил, что Trello — лучший инструмент Канбан. Итак, я полагаю, что использую Канбан — вольно, а не целенаправленно.
Вы отслеживаете ошибки? Если да, что посоветуете?
Я пробовал несколько различных инструментов с открытым исходным кодом, веб-инструментов для отслеживания ошибок, и ни один из них мне не очень понравился. После того, как я начал использовать Trello, я реализовал его функцию «метки», чтобы отмечать «карточки» как «запросы функций» или «исправления ошибок» и так далее.
Большинство проектов, над которыми я работаю, небольшие — если бы у меня была большая команда, работающая над одним гигантским проектом, я бы, вероятно, делал все по-другому.
Чем занимается хороший разработчик программного обеспечения?
Использует систему контроля версий! Так много программистов, которые либо делают копии своего кода в другом каталоге, либо периодически архивируют исходные файлы. Я начал работать с JediVCS пару десятилетий назад и очень скоро осознал огромные преимущества, если оглянуться на свою историю изменений. Я перешел на более новые системы управления версиями и теперь использую Git для КАЖДОГО проекта, над которым я работаю.
Что делает плохой разработчик программного обеспечения?
Не форматирует и не комментирует свой код. Грязный и раскомментированный код не только сложно поддерживать, но и делает практически невозможным переход к нему другого разработчика — если только в инструменте разработки нет средства форматирования кода, такого как Delphi!
iPhone, Android, прочее — а почему?
Мне нравится свобода выбора возможностей настройки и приложений, которые предлагают телефоны Android, поэтому я предпочитаю эту платформу для личного использования. Единственный iPhone, который у меня есть, — это деактивированный мобильный телефон, который я использую для тестирования. Однако у меня есть iPad, и он мне очень нравится как планшет.
Для разработчика: ПК против Mac? Почему?
По той же причине, по которой я выбираю телефоны Android, я использую ПК с самого первого дня — свобода выбора аппаратных и программных инструментов и их настройки так, как я хочу. Я хорошо разбираюсь в Windows и командной строке со всеми ее ярлыками и за годы собрал множество служебных программ. Они также стоят намного дешевле, и довольно просто добавить или заменить жесткий диск или видеокарту.
Однако пару лет назад я добавил Mac Mini в свою коллекцию оборудования, чтобы я мог разрабатывать для платформы iOS, и он начал расти во мне. По мере того, как возможности оборудования увеличивались и стандартизировались, а потребность в настройке уменьшалась, грань размывается, особенно с учетом того, что я могу запускать Windows поверх Mac (но не наоборот).
Чем вы хотите, чтобы вас запомнили?
Что я честный человек, который предпочел бы снизить ставку, чем обмануть клиента.
Какой фильм для разработчиков, хакеров, техников и компьютерщиков лучший?
Мне очень понравилась трилогия «Матрица». С тех пор было снято много других хороших фильмов, но этот запомнился мне больше всего.
У вас есть книга, продукт или услуга, которые вы хотели бы упомянуть?
Я всегда стремлюсь расширить свой набор навыков, и одна из самых сложных вещей, которую нужно пройти, — это если вы создали хороший, надежный продукт или создали отличную библиотеку кода только для того, чтобы понять, что клиенты и конкуренты перешли на более новые интерфейсы — или что еще хуже, другие платформы! Книга, которую я недавно закончил, « Бесстрашная кроссплатформенная разработка с помощью Delphi» решает эту проблему, показывая этим разработчикам нюансы мобильных устройств, как начать веб-разработку и способы использования REST-сервисов. Реальные приложения создаются поэтапно, что, я надеюсь, устранит барьеры, сдерживающие разработчиков, которые чувствуют себя застрявшими в решении только для Windows. Если вам нужно поддерживать несколько платформ, эта книга — отличное место для начала!
[ Я должен указать здесь, что на самом деле я купил печатную версию книги Дэвида по предварительному заказу, хотя мне предлагали бесплатные копии для обзора. Это отличная книга, и мы скоро рассмотрим ее с Дэвидом. — IanB ]
У вас есть веб-сайт, который люди могут посетить, и если да, то какой?
Да, corneliusconcepts.com для бизнеса и corneliusconcepts.tech для моего блога.
Если вы пользуетесь Твиттером, каков ваш твиттер?
Какой способ связи с потенциальными клиентами вы предпочитаете?
Страница контактов на моем сайте: https://corneliusconcepts.com/contact_us
Спасибо за участие, Дэвид, я очень ценю это.
Вскоре я снова поговорю с Дэвидом в интервью, в котором мы обсудим его книгу и его мотивы, стоящие за ее написанием.