Мысли кипрского разработчика программного обеспечения

Кодирование в Пафосе. Никос делится своей историей от семьи до Голанга.

Привет, Никос! Спасибо, что нашли время поговорить со мной.

Спасибо, что пригласили меня!

Расскажите нам о себе.

Я разработчик программного обеспечения с Кипра. Я замужем, у меня двое детей (близнецы) 3 года, которых я обожаю. Я кодирую или думаю о коде большую часть времени бодрствования, что, на мой взгляд, не очень здорово. Мне нравится решать проблемы с помощью кода, упрощать жизнь людям и упрощать сложные процедуры. Помимо работы на полную ставку, я поддерживаю ряд домашних проектов, некоторые из которых более успешны, чем другие. Единственное, что уводит меня от компьютеров, - это однодневная поездка с женой и детьми, хороший научно-фантастический роман или пиво с хорошим другом.

У вас отличный личный веб-сайт.

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

Вы сказали мне, что недавно вернулись в Пафос. Почему Пафос?

На самом деле я жил в Пафосе, а до недавнего времени ездил в Лимассол. Я и моя жена из Пафоса, и мы решили, что останемся в Пафосе. Поскольку в Лимассоле больше возможностей, особенно в IT-секторе, я искал работу в Лимассоле после того, как попробовал разные вещи в Пафосе. Мое предположение оказалось верным: в Лимассоле у ​​меня была хорошая зарплата в стабильной компании, и я многому научился. Но потом родились близнецы, и мои приоритеты изменились. Я быстро понял, что в будние дни я видел своих детей только 1-2 часа в день. Многие люди спрашивают меня: «почему?». Ответ таков: нельзя растить детей один час в день. Кроме того, 2 часа в день в пути казались потраченным впустую временем.

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

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

Давайте приступим к делу. Какой язык вы предпочитаете как инженер-программист и почему?

Спрашивая компьютерного фаната о его торговле, приготовьтесь к длинному ответу!

Это большая глава. У меня есть свои фавориты, но я использую разные языки для разных задач. Я твердо убежден в правильности выбора инструмента для работы. У меня есть несколько критериев:

1. Является ли то, что я пишу, временным инструментом, который запустится один раз, и я выброшу его?

Скорее всего, я напишу Java, или что бы там ни было, я часто использую что-то новое, просто чтобы поиграть с этим.

2. Это инструмент, который мне придется обслуживать долгое время? Участвуют ли другие люди?

Когда я выбираю структуру для чего-то, что я делаю на работе, у меня другие критерии. Здесь важен не только язык программирования, но и фреймворк. Если это Интернет, то мой первый выбор - PHP-фреймворк Symfony. Если это не веб, возможно, среда Java Spring или что-то подобное. Тот, кто использовал оба, скажет вам, что они очень похожи. Новые фреймворки PHP скрывают уродство PHP, и лучший из них - Symfony. Когда вы работаете в команде или собираетесь передать свой код кому-то другому для его поддержки, вам нужна строгая структура. Вы не просто пишете PHP / Java, вы реализуете что-то «Spring way» / «Symfony way», что является стандартным, и кто-то может подобрать это и продолжить. Код, который вы пишете, должен быть чистым и понятным для члена вашей команды. Кроме того, объектно-ориентированный код помогает реализовать проектируемую архитектуру.

Вам также нужно что-то, что также легко проверить. Разница между хобби и профессиональным программированием заключается в продолжительности и размере проекта. Вы должны иметь возможность легко поддерживать и добавлять новые функции в проект. Кроме того, когда вы добавляете новую функцию или исправляете ошибку, вы должны иметь возможность ответить на вопрос: «Я что-то еще сломал?». Большие фреймворки позволяют легко добиться этого, поскольку они удобны для тестирования.

3. Используется ли машинное обучение?
Python для сложных деталей. Существует множество библиотек, которые могут вам помочь.

4. Нужна ли чистая производительность / есть ли ограничения памяти / ограничения ЦП / проблемы с масштабированием?

Вперед! (Голанг)

C / C ++ дает вам лучшую производительность, но я избегаю их любой ценой. C - довольно маленький язык, но он позволяет легко стрелять левой ногой в ногу, и вы можете целыми днями искать проблемы с памятью. C ++ - это массивный язык программирования, который поддерживает так много всего, но программа, написанная на C ++, может очень быстро стать нечитаемой / неподдерживаемой. Решение здесь - Голанг. Официально он в 1,5 раза медленнее, чем C, который по-прежнему очень быстр, но вы можете очень легко создавать качественное программное обеспечение. Его создатели (Google) много думали над созданием языка таким образом, чтобы ошибиться было очень сложно. Если он компилируется, скорее всего, он будет работать нормально.

Сейчас я в основном пишу на Java, но с тревожной скоростью переписываю вещи с других языков на Golang. Такие вещи, как сканирование всего Интернета на предмет открытого порта, можно выполнить с помощью 100 строк Golang, и самое приятное то, что вы можете сделать это с помощью простого ноутбука или небольшого VPS за несколько часов.

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

Но это мое мнение. Большинству людей нравится Python. Начать очень легко, и есть много библиотек, которые могут помочь новичку. Кроме того, его используют инженеры и ученые всех мастей, поэтому у него есть множество библиотек для помощи с вычислениями, машинным обучением и т. Д. Но у него есть свои ограничения, такие как GIL (Global Interpreter Lock), что означает, что у вас нет настоящего параллелизма. . Раньше Google работал на C и Python, теперь они создали и используют Go. Так что это вам кое-что говорит. Если ситуация станет серьезной, попробуйте другой язык.

Каким вы видите ближайшее будущее развития технологий на Кипре?

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

Какой совет вы дали бы начинающим разработчикам программного обеспечения на Кипре?

Это прекрасное время, чтобы работать инженером-программистом на Кипре, но также необходимы хорошие должности. Постарайтесь выучить все, что попадется вам в руки, и запомнить; опыт не менее важен при университетском образовании. Опыт - это клей, который связывает воедино все, что вы знаете. Нам повезло, как разработчикам программного обеспечения, мы можем практиковать все, что захотим, только с вашим ноутбуком. Попробуйте работать в разных средах и узнайте все, что сможете. Работайте в стартапе, где вы делаете всего понемногу, а затем работаете в большой компании, чтобы изучить процедуры и то, как поддерживаются более крупные проекты. Запустите несколько проектов, попробуйте что-то создать, а если не получится, повторите. Покажи людям, что ты делаешь (чего я никогда не делал). Есть много людей, которые хотят финансировать умных молодых программистов, находить возможности и использовать их. Позже я узнал, что всего можно достичь, упорно работая, целеустремленно и чётко поставив цели.

И еще немного технических советов…

Напишите чистый код. Вы тратите больше времени на чтение кода, чем на его написание. Комментарии - это ложь - пишите код настолько чистым, что он не нуждается в комментариях. При необходимости напишите лишь несколько комментариев.

· Написание тестов Не слишком много, в основном интеграция https://twitter.com/rauchg/status/807626710350839808?lang=en

Хорошо подумайте. Прежде чем приступить к задаче, найдите самый простой способ чего-то достичь.

Моя любимая цитата:

Глупцы игнорируют сложность. Прагматики терпят это. Некоторые могут этого избежать. Гении удаляют его.

Второй фаворит…

Интеллект - это способность не делать работу, но при этом делать ее.

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

Узнайте свой домен. Лучшие программисты - это те, кто понимает, что делает. Знание предметной области действительно важно. Если вы пишете программное обеспечение для бухгалтерского учета, вам следует изучить бухгалтерский учет. Если вы пишете защитное ПО, научитесь взламывать. Спросите своих пользователей, проявите искренний интерес к их проблемам и постарайтесь понять их.

Еще одна цитата (извините 😊 ):

Для каждого желаемого изменения сделайте его легким (предупреждение: это может быть сложно), а затем внесите легкое изменение

Если ваша архитектура не поддерживает какую-либо функцию и ее очень сложно реализовать, выполните рефакторинг всего приложения, чтобы поддерживать ее более естественным образом - чтобы упростить его добавление. Затем добавьте его. Отличная статья здесь: https://martinfowler.com/articles/preparatory-refactoring-example.html

В заключение, какую последнюю мысль вы хотели бы сказать нашим читателям?

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

Большое спасибо, Никос.

Если вы хотите связаться с Никосом, свяжитесь с ним по адресу [email protected] или на его веб-сайте https://nikos.glikis.net/

Если вы заинтересованы в изучении новых возможностей разработки программного обеспечения на Кипре, посетите нас по адресу https://www.hrinnovate.org