Привет. Эта статья является частью серии, в которой мы говорим с профессиональными разработчиками программного обеспечения, спрашиваем их, каково это зарабатывать на жизнь написанием кода, и, возможно, по ходу дела получаем некоторое представление об индустрии разработки программного обеспечения.
В нашем кресле для интервью сегодня просто чудесная Далия Прасникар. Далия находится в чудесном историческом и живописном городе Загеб в Хорватии. Позже вы услышите больше об истории разработки Далии, но она также является опытным фотографом, а также уважаемым автором нескольких замечательных книг по кодированию. Вы можете сказать, что она хороший кодировщик — она пока единственная, кто вернул свои ответы с помощью MarkDown !
Table of Contents
Далия, спасибо, что согласились принять участие в интервью!
Спасибо 🙂
Какими были бы ваши краткие вечерние новости о том, кто вы и чем занимаетесь?
Разработчик программного обеспечения, консультант, автор книг, Embarcadero MVP. Крушу чужое ПО и пишу собственное с 1985 года.
Какие продукты Embarcadero вы используете а) чаще всего б) регулярно?
Конечно же, Delphi.
Как и / или почему вы стали разработчиком?
В детстве я хотел стать космонавтом. Я действительно увлекался космосом, астрономией, наукой… и всем, что с ними связано. Когда мне было около девяти, первым научно-фантастическим сериалом, который я помню, я смотрел, был сериал Блейка «7» . И моим любимым персонажем был Керр Эйвон. Очень умный, саркастичный компьютерный гений. В самом начале сериала он сказал: «Кто управляет компьютером, тот управляет кораблем», и это был решающий момент, когда «Я хочу быть космонавтом» превратилось в «Я хочу управлять компьютерами».
Конечно, в реальной жизни быть разработчиком и зная то, что я знаю сейчас, управлять компьютерами и кораблем — это действительно иллюзия. Чаще бывает наоборот. Вот почему я никогда полностью не доверяю тому, что связано с технологиями.
Вы думаете, что когда-нибудь перестанете быть разработчиком? Если да, то что будет дальше?
Я, вероятно, мог бы быть фермером … но я был бы фермером, который пишет код в качестве хобби. [ Я тоже! Нам обоим следует поговорить с коллегой-разработчиком Алистером Кристи — он живет в блоке образа жизни — IanB]
Что заставило вас начать использовать Delphi / C ++ Builder?
Я выучил Turbo Pascal в старшей школе, и он быстро стал моим любимым языком. Он мог делать все, что мог C, и был намного быстрее — не только для написания кода, но и для компиляции.
Я начал свою карьеру ИТ-журналистом в BYTE Croatia (лицензиат McGraw-Hill) и редактором журнала MIPS Computer. С появлением Интернета и онлайн-публикаций в 90-х я перешел к веб-разработке. Я использовал Java и JavaScript до того, как начал использовать Delphi. Исходя из Turbo Pascal, который я также все время использовал для написания различных утилит и генераторов веб-страниц, Delphi был естественным выбором для разработки приложений Windows.
Над чем Вы сейчас работаете?
Как вы знаете, я уже написал две книги по Delphi: Delphi Memory Management и Delphi Event-based and Asynchronous Programming.
Я люблю писать книги. Это возможность поделиться знаниями, но также и возможность учиться. Независимо от того, насколько хорошо вы знаете какую-либо тему, всегда есть какие-то темные уголки, на которые нужно пролить свет, чтобы правильно объяснить это другим.
После написания второй передачи было довольно легко переключиться на пятую передачу, поэтому я пишу больше книг по Delphi. Других подробностей у меня пока нет.
Но да, на горизонте появляются новые книги по Delphi.
Какой язык программирования вы бы порекомендовали выучить в первую очередь?
английский 🙂
Если бы вы могли дать какой-нибудь совет студенту, который подумывает о карьере разработчика программного обеспечения, что бы это было?
Начните учиться с чтения книг. Сначала узнайте о концепциях и алгоритмах. Языки второстепенные. Все они ограничены своей реализацией, и изучение концепций через язык обычно приводит к недопониманию. Поскольку разные языки реализуют одни и те же концепции по-разному, шаблоны кодирования, обычно используемые на одном языке, не обязательно хорошо работают на другом.
Не позволяйте правилам управлять вами. Хорошие практики и правила — это больше руководящие принципы, чем жестко запрограммированные правила. Они предназначены для помощи разработчикам в выполнении общих задач. В тот момент, когда правило становится обузой, вы должны прекратить его применять. Однако это палка о двух концах, и люди довольно часто интерпретируют это как разрешение нарушать правила повсюду, потому что они не полностью понимают причины, лежащие в основе конкретного правила. Кроме того, со временем правила и практика меняются по той или иной причине, и то, что когда-то было хорошей практикой, может быть уже не так хорошо.
Простой код лучше умного. Если вы не можете чего-то добиться с помощью простого кода, тогда — и только тогда — вы можете применить хитрые уловки. Важно записать, что делает умный код и почему, потому что вы скоро это забудете. И, конечно же, объяснение позволяет другим людям легче понять ваш код.
Опыт не остановит вас от написания идиотского кода и совершения глупых ошибок. Опыт помогает обнаружить и признать такие ошибки раньше, чем позже, и это первый шаг к их исправлению.
Никогда не переставай учиться.
Девиз разработчика
Разработчики не мастера-джедаи. «Делать. Или нет. Нет попытки », не работает. Это «Если сначала у вас не получится, попробуй, попробуй, попробуй, попробуй… попробуй, попробуй, попробуй еще раз».
Табуляция… или пробелы?
Пространства.
Стиль отступа
Allman для языков в скобках, GNU для Pascal. Разница заключается в отступе блока, где begin..end требуется дополнительный отступ для более четкого разделения.
Какой самый лучший день у вас как у разработчика?
Их было много… трудно выбрать один.
Что самое плохое в работе разработчика?
Вы никогда не перестанете писать код в уме.
Какой самый крутой совет по разработке вы знаете?
Если вы застряли, примите ванну, гуляйте, спите… делайте все, что вас расслабляет.
Работа из дома, работа из офиса, работа в открытом / общем пространстве? Что ты предпочитаешь и почему? Вы можете выбирать?
Работа из дома. Более удобная настройка. Это не тратит время на поездки. Собственный туалет. Вы можете пережить пандемию, не меняя своих привычек.
Расскажите нам что-нибудь интересное, что, по вашему мнению, мы могли не знать.
Первая версия Turbo Pascal, которую я использовал в средней школе, работала на CP / M. Я также был в первом поколении старшеклассников, у которых не было COBOL в своей учебной программе.
Если бы вы могли взмахнуть волшебной палочкой «исправить технологическую индустрию», что бы вы изменили?
Я бы создал байт-бит побольше! (Для тех, кто не понимает, о чем я говорю, в 80-х годах была своего рода резиновая бейсбольная бита, которой можно было ударить по своему дурацкому компьютеру, ничего не сломав.)
Если бы вы могли убедить кого-то рассмотреть Delphi или C ++ Builder, каким был бы ваш метод, как бы вы это сделали?
Что мне всегда нравилось в Turbo Pascal, а затем и в Delphi, так это то, что это довольно универсальный язык — не только с точки зрения пригодности для разработки самых разных приложений, но и с точки зрения того, что он позволяет вам программировать на самых разных уровнях абстракции. .
Вы можете использовать его как инструмент RAD для быстрого прототипирования и разработки. Вы можете писать и использовать фреймворки с высокой степенью абстракции, где вы можете добиться чего-то с помощью всего нескольких строк кода. И все же вы все равно можете перейти на уровень ОС и напрямую взаимодействовать с API ОС. На платформе Windows вы можете пойти еще глубже и написать ассемблерный код напрямую.
Мне очень нравится эта сборочная деталь. В настоящее время я не использую его слишком часто, но в тех редких случаях, когда я использую, я очень рад, что он есть.
Я не уверен, что это будет действительно очень убедительный аргумент. Возможно, это пережиток прошлого, когда возможность перейти на уровень сборки была огромным преимуществом, но мне просто нравится такая гибкость.
Какой технический продукт вы хотите изобрести / спроектировать и почему?
Когда я был ребенком, после просмотра « Семерки» Блейка , я подумал, что было бы здорово иметь их компьютер, Дзен, внутри часов, поэтому у меня было множество рисунков, показывающих, как эти часы будут выглядеть. Это считается? [ ОПРЕДЕЛЕННО! — IanB, я тоже фанат Blakes 7 !!! ]
Если бы вы могли снова прожить свою жизнь, вы бы все равно стали разработчиком? Почему?
да. Управление кораблем…
Сколько кофе вы пьете в день и достаточно ли этого?
Множество. Этого никогда не бывает.
Вы ночной ястреб, который кодирует до позднего вечера, утренний человек, который встает рано и прямо в рабочее время, или вы придерживаетесь какого-то обычного рабочего времени?
Когда приходит вдохновение!
За свою карьеру вы когда-нибудь «тянули ночь напролет», чтобы иметь дело с чем-то, что абсолютно необходимо сделать?
да. Но не так часто, как когда я был в издательстве. Моя самая длинная пробежка составила около 30 часов.
Опишите еще кое-что, чем вы занимались в своей карьере, что может дать читателям представление о том, что делает разработчика.
Я тоже фотограф. Думаю…🙂
Какой самый глупый вопрос вам задают (ни один из них не в счет!)
Как много времени это займет?
Расценки на работу с клиентами? Если вы это сделаете, не раскрывая ничего, что могло бы вызвать у вас дискомфорт, какой процесс вы используете?
Почасовая оплата. Фиксированные сборы работают только для настройки «шаблона», когда у вас есть продукт, который можно настроить, и где настройка состоит из очень конкретных, известных и предсказуемых шагов.
Как остановить клиентов / менеджеров программ / менеджеров от «расползания функций»?
Сказав, сколько времени потребуется, чтобы закончить это.
Опишите для вас типичный сеанс программирования. Как это началось? Вы делаете перерывы? Есть ли у вас какие-нибудь ритуалы / привычки, чтобы сопровождать это?
Зависит от того, что я делаю — пишу ли я новый код, отлаживаю или пишу книгу. Самая распространенная тема — я много гулю и читаю много документации.
Я делаю перерывы, когда пишу, потому что часто нужно остановиться и подумать, прежде чем что-то писать. Короткий перерыв дает вам возможность переосмыслить и убедиться, что вы не идете в неправильном направлении.
С другой стороны, отладка не любит перерывов, особенно когда вы отслеживаете какой-то неуловимый Heisenbug. Вам часто нужно отслеживать огромное количество логики кода в своей голове, и любое отвлечение или перерыв легко сотрут все это, и вам придется начинать все сначала.
Вы слушаете музыку, пока пишете код? Если да, то не могли бы вы рассказать нам несколько треков / исполнителей / выступлений?
Иногда. Темы фильмов, поп и рок 80-х… Когда мои дети были маленькими, и я одновременно работал и присматривал за детьми, в том числе целый день слушал музыку из Age of Empires или Settlers IV.
Используете ли вы какие-либо методы или приемы, такие как Agile, Scrum, Kanban, TDD? Если да, то почему? Если нет, то почему?
Краткий ответ: да. Это зависит от проекта.
Длинный ответ: это своего рода коварный вопрос. [ Ну, заметили! 😈- IanB ]
Любой из перечисленных приемов имеет множество вариантов (или, по крайней мере, люди применяют их вольным стилем). Сказать «да» любому из вышеперечисленных не означает, что вы строго следуете данному процессу. И это не значит, что лучше использовать одно над другим. Подобно тому, как хорошие практики кодирования не существуют в пустоте, и их основная цель — помочь вам достичь конечной цели, методы управления проектами и качеством также являются частью одного и того же процесса. Если процесс становится самоцелью, значит, вы теряете возможность достичь своей конечной цели: создание функционального, обслуживаемого и качественного программного обеспечения.
Вот почему я ненавижу называть части процесса, потому что он никогда не высечен на камне и адаптируется к проекту и требованиям команды.
Вы отслеживаете ошибки? Если да, что посоветуете?
Нет, я убиваю их на месте. Иногда это превращает их в жуков-зомби.
Хороший разработчик программного обеспечения:
Тупой разработчик, а то кровавый бардак устроят.
Плохой разработчик программного обеспечения:
Я вчера 🙂
iPhone, Android, прочее — а почему?
Никаких телефонов. Слишком много отвлекающих факторов.
Для разработчика: ПК против Mac? Почему?
ПК, потому что Turbo Pascal и Delphi работают на ПК. В настоящее время я использую Mac для разработки под iOS и macOS, но мне это никогда не нравилось. Я не говорю, что Windows идеальна — это далеко не так, но я больше привык к ее особенностям. Не могу привыкнуть к тем, что на macOS.
Чем вы хотите, чтобы вас запомнили?
Моя шляпа! 😛
Какой фильм для разработчиков, хакеров, техников и компьютерщиков лучший?
Как насчет лучшей книги для разработчиков? Автостопом по Галактике .
Что касается фильмов, я бы, наверное, сказал « Назад в будущее» и « Звездные войны: Новая надежда» , но научно-фантастические сериалы — лучшие. Их сложно оценить, потому что все, что мне нравится, уникальны: « Семерка Блейка» , « Звездный крейсер Галактика» , « Звездный путь» , « Звездные врата» …
Ни одного разработчика нельзя видеть без: _____________________________
Компьютер!
Если бы о вашей жизни сняли фильм, кого бы вы хотели сыграть?
Анджелина Джоли (1995). 😛
У вас есть веб-сайт, который люди могут посетить, и если да, то какой?
https://dalija.prasnikar.info/
Если вы пользуетесь Твиттером, каков ваш твиттер?
@ dalijap