Программисты лучшие: Говорят, российские программисты — лучшие (или одни из лучших) в мире. Правда ли это? – Говорят, российские программисты — лучшие (или одни из лучших) в мире. Правда ли это?&nbsp

Содержание

Пять самых богатых программистов в мировой истории — Рамблер/новости

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

5 место — Павел Дуров. Эксцентричный создатель популярной в РФ соцсети «ВКонтакте» и мессенджера Telegram молод (ему всего 33 года), но уже сказочно богат. Forbes оценивает его состояние в 1,7 миллиарда долларов — на эти деньги можно купить в Новосибирске 60 тысяч однокомнатных квартир.

Павел увлекся программированием в 11 лет и применял свои знания для хулиганства. Как-то раз он сменил заставку на всех школьных компьютерах на фото учителя информатики с подписью «Должен умереть». Свое главное детище, соцсеть «ВКонтакте», Павел создал в 2006 году после знакомства с американским Facebook. Сегодня «ВК» самый посещаемый сайт в Рунете.

В 2014-м Павел Дуров эмигрировал за границу. После продажи «ВКонтакте» он занялся разработкой мессенджера Telegram. В 2017-м не побоялся вступить в крупный конфликт с Роскомнадзором, отказавшись выдать ключи для дешифрации переписок. Война с переменным успехом обоех сторон ведется до сих пор.

4 место — Линус Торвальдс. Финно-американский программист и хакер создал знаменитый Linux — ядро операционной системы GNU/Linux, являющейся на сегодня самой распространенной из свободных ОС. Торвальдс разделяет идеологию открытого исходного кода, и все желающие имеют доступ к коду Linux для усовершенствования этого продукта.

17 сентября 1991 года исходный код программы, выложенный Линусом для общедоступной загрузки, вызвал настоящий ажиотаж среди тысяч программистов. Все принялись улучшать ОС и делиться своими результатами. Сейчас лишь около 2% системного ядра Linux написано самим Торвальдсом, но за ним остается решение о внесении изменений в официальную ветку ядра. В честь Линуса Торвальдса назвали астероид, а журнал Time признавал его одним из самых влиятельных людей.

3 место — Сергей Брин. Сооснователь империи Google по итогам 2017 года занял 13-ю строчку в списке Forbes с состоянием в 47,5 миллиарда долларов. Брин родился в Москве в 1973 году в семье математиков. В шестилетнем возрасте Сергей вместе с родителями переехал в США, но по-прежнему разговаривает с ними по-русски.

В 1998-м Брин вместе с другим аспирантом Ларри Пейджем основал компанию Google. Сейчас Google управляет более чем миллионом серверов по всему миру и ежедневно обрабатывает более миллиарда поисковых запросов и 24 петабайта пользовательских данных. Компании принадлежат такие «монстры», как YouTube и ОС Android.

2 место — Марк Цукерберг. Разработчик крупнейшей социальной сети в мире — Facebook. Также владеет соцсетью Instagram и мессенджером WhatsApp. Марк называл себя хакером по призванию. 25-летний программист стал одним из самых молодых миллиардеров. В 2017 году его состояние возросло до 71 миллиарда долларов.

Цукербергу свойственны необычные черты — так, он употребляют в пищу мясо только тех животных, которых убил собственными руками. Марк отличается упорством — например, женясь на американке китайского происхождения, он поставил перед собой задачу выучить китайский язык и успешно с этим справился. Несмотря на свое богатство, миллиардер водит обычный Volkswagen Golf GTI, а также считается самым безвкусно одетым жителем Кремниевой долины.

1 место — Билл Гейтс. В 1990-е его имя стало нарицательным — так называли успешных богатых людей. В 1996-м Гейтс превратился в богатейшего человека планеты. По состоянию на 2017-й Гейтс занимает в рейтинге Forbes вторую строчку, обладая 90 миллиардами долларов.

В 13 лет Билл написал свою первую программу — игру «Крестики-нолики» на языке программирования BASIC. В 15 лет он взломал компьютер, чтобы продлить истекшее время работы, и был на все лето отлучен от машины. К концу начальной школы плохое поведение Гейтса стало волновать его родителей и учителей настолько, что он был направлен к психиатру.

В 1975 году основал компанию Microsoft, которая превратилась в гиганта по разработке программного обеспечения и дала миру ОС Windows.

Видео дня. Кто следующий из чиновников поплатится за хамство

Читайте также

11 стран с лучшими программистами в мире

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

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

11 стран с лучшими программистами в миреFlickr/Andrew Eland

Интересно, что хотя наибольшее количество пользователей сайта находится в США и Индии, эти страны заняли в рейтинге всего лишь 28-е и 31-е места соответственно.

Так какие же государства лучшие в мире в области компьютерного программирования и почему?

1. Китай
11 стран с лучшими программистами в миреpixabay.com

Китай занял 1-место в мире за лучшие результаты программистов на HackerRank в целом. Что касается конкретики, то китайцы впереди всех в структурах данных, математике и функциональном программировании.

2. Россия
11 стран с лучшими программистами в миреFlickr/bhslangj

Россия, совсем чуть-чуть уступившая Китаю в общем зачете, является лидирующей страной, когда дело касается алгоритмов — наиболее популярного типа задач на сайте.

3. Польша
11 стран с лучшими программистами в мире
pixabay.com

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

4. Швейцария
11 стран с лучшими программистами в миреGabriel Garcia Marengo/Flickr

Швейцария попала в пятерку лучших в 9 из 15 направлений программирования, оцениваемых HackerRank. Эта страна также является местом рождения Паскаля, одного из первых языков компьютерного программирования. Помимо этого, Швейцария заняла первое место в отчете Global Innovation Index за 2016 год.

5. Венгрия
11 стран с лучшими программистами в миреFlicker/roderickeime

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

6. Япония
11 стран с лучшими программистами в миреEducast

Что касается искусственного интеллекта, то Япония — впереди планеты всей, что подтвердило исследование HackerRank. И это неудивительно — к примеру, в начале лета в Университете Токио спасли жизнь женщины с помощью искусственного интеллекта, диагностировавшего рак.

7. Тайвань.
11 стран с лучшими программистами в миреpixabay.com

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

8. Франция
11 стран с лучшими программистами в миреpixabay.com

Согласно исследованию HackerRank, французские программисты лучшие в C ++. Одна из причин этого: в июне 2014 года Франция начала вводить уроки программирования в начальных школах.

9. Чехия
11 стран с лучшими программистами в миреpixabay.com

Чехия доминирует в Shell-скриптинге — написании сценариев командного интерпретатора. Кроме того, она занимает на HackerRank 2-е место по математике. Эти умения вывели страну на 9-ю позицию в списке лучших программистских держав мира.

10. Италия
11 стран с лучшими программистами в миреThe University of Napoli Federico II

Разработчики этой страны определенно впечатляют, когда речь идет о базах данных и руководствах (tutorials), занимая второе место в обоих этих направлениях. Похоже, что HackerRank не единственный, кто высоко ценит Италию, ведь Apple анонсировала открытие новой школы на 600 программистов в Неаполитанском университете имени Фридриха II.

11. Украина
11 стран с лучшими программистами в миреpixabay.com

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

10 способов стать хорошим программистом / Habr

Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
Даг Линдер

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

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

1. Учите основы

Понимание основ — это ключ к успеху в любой индустрии и любой профессии. До тех пор, пока вы недостаточно хорошо знаете основы, вы не сможете стать хорошим программистом. Знание азов позволит вам разрабатывать и реализовывать лучшие решения наилучшим способом. Если вы ощущаете пробелы в своих знаниях, будь то основы computer science, или концепции языка, на котором вы пишете, то никогда не поздно вернуться назад и повторить забытое.
2. Задавайте вопросы (как? почему?), когда пишете код

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

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

Как и в других областях, формула KISS (Keep it simple and short — делай короче и проще) работает и в программировании. Пишите логичный код и избегайте усложнений. Иногда люди пишут сложный код только для того, чтобы доказать, что они умеют писать такой код. Мой опыт подсказывает, что простой и логичный код всегда работает хорошо, приносит меньше проблем и лучше поддается расширению. Вспоминается отличная фраза:
Хороший код — это лучшая документация. Каждый раз, когда вы захотите добавить комментарий, спросите себя: «Как я могу улучшить этот код, чтобы он не требовал комментирования?»
Стив МакКоннелл

5. Уделяйте больше времени анализу проблемы, тогда вам понадобится меньше времени для ее устранения

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

6. Будьте первым, кто проанализирует и оценит ваш код

Хотя это трудно, но попробуйте «сломать» ваш код до того, как это сделает кто-то другой. Со временем вы научитесь писать почти безошибочный код. Всегда проводите подробную и беспристрастную оценку своего кода. И никогда не бойтесь спрашивать, что другие думают о вашем коде. Работайте с хорошими программистами и прислушивайтесь к их мнению — это поможет вам стать хорошим программистом.
7. Не пугайтесь быстрой смены технологий

За все время работы в области IT, я встречал множество людей, которых не устраивала их работа, и людей, которые меняли место работы, чтобы работать с новейшими технологиями. В таком стремлении нет ничего плохого, однако ошибка в «новейших технологиях». Каждый день появляются новые инструменты, API и фреймворки, призванные сделать разработку быстрой и простой. И эта тенденция не снизится. Однако следует понять одну вещь: фундаментальные знания и основы меняются значительно медленнее, чем фреймворки, новые инструменты и API. Можно провести аналогию с морем, на поверхности которого находятся быстрые течения, однако на глубине вода спокойна и она составляет большую часть объема. Поэтому держитесь «на глубине», поближе к основам. В мире Java приложений уровня enterprise существует много веб-фреймворков, а новые выходят каждые две недели. Однако основы клиент-серверной архитектуры, шаблона MVS (Model View Separation), фильтров/сервлетов/JSP, упаковки ресурсов, обработки XML и т.д. остаются неизменны. Поэтому лучше потратьте время на изучение этих основ, нежели на изучение вечно меняющихся фреймворков. Поверьте, зная основы, изучить новые API и фрейморки будет куда легче.
8. «Костыли»* долго не работают

Множество программистов используют «костыли»: от недостатка времени, понимания проблемы или опыта. Однако со временем такие решения делают код хуже: он становится менее расширяем и удобен в поддержке. Всегда старайтесь написать такую реализацию, о которой вы знаете все. Я понимаю, что «костыли» в некоторых ситуациях неизбежны, но тогда ситуация напоминает что-то вроде «всегда говори правду, но иногда можешь соврать».
9. Читайте документацию

Хорошие программисты читают много документации. Это могут быть спецификации, JSR, API, документы, туториалы и т.д. Чтение документации позволит вам понимать основы, и вы будете решать задачи наилучшим способом.
10. Чужой код тоже может чему-то научить

Я работал с двумя отличными программистами, которые постоянно в своих IDE держали исходники чужих проектов на Java, и обращались к ним каждый день. Они делали это не только из желания узнать, как работают базовые вещи, но и из желания научиться писать хорошие программы. Чтение исходных кодов известного open source проекта, или кодов, написанных вашим ведущим программистом, может помочь вам писать код лучше.
И последнее: не сравнивайте себя с другими

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



* — достаточно вольный перевод слова work-arounds

Как сойти за хорошего программиста / Habr

Привет, Хабр! Представляю вашему вниманию перевод статьи «How To Fake Being a Good Programmer» автора Stan Sootla.

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

Моя работа – быть более аутентичным в том, чтобы быть фальшивым программистом, чем настоящие программисты в том, чтобы быть самими собой.

Я хорош в своем деле, из меня вышел отменный шарлатан. Я дурачил бизнесменов и они делали меня своими техническими соучредителями. Я обманывал инженеров и они обсуждали со мной тему Универсального Искусственного Интеллекта. Разыгрываемое мною представление настолько правдоподобно, что однажды Министерство Юстиции спрашивало моего совета насчет создания GUI на Visual Basic, чтобы отследить IP-адрес серийного убийцы.

Секрет прост: дело не в том, что вы знаете, а в том, что вы показываете.
Настоящие программисты медленны и скучны, потому что они ограничены реальностью. Иллюзиониста же сдерживает лишь фантазия. Он свободен претворять в жизнь изощреннейшие из сценариев, и чем непристойнее, тем лучше. Часто образ хакера в глазах общественности формируется сценами гулянок и уберите детей – стоит только стать тем редким человеком, играющим на этих заблуждениях, позволяя непосвященным побаловать свои фантазии, как тут же прослывешь героем.

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

Во-первых, у нас есть Vim – текстовый редактор, интерфейс которого с первого взгляда выглядит настолько непонятным, что миллионы разработчиков оказываются в нем потеряны, не имея ни малейшего понятия о том, как же закрыть эту штуковину. Один тот факт, что вы осмелились использовать его, поднимает ваш статус среди коллег. Вы выглядите чуть ли не мифично, просвещая остальных о таких древних темах, как Великая война редакторов и призывая слушателей идти крестовым походом на Церковь Emacs.

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

В качестве примера, вот скриншот моего экрана когда я генерирую «дипфейки»:


Spectrogram credit: M.O.P. — Ante Up

Наконец, очень важно, чтобы вы в совершенстве освоили bash. Знание bash позволяет вам максимизировать время, которое вы проводите в консоли – оставлять этот навык без должного внимания будет кощунством, сравнимым с включением в кинозале света в середине фильма.
Нужно что-то сосчитать?

Пожалуйста:

echo "scale=0; 2 + 2" | bc

Хотите узнать загруженность процессора? Вот вариант:
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a

Ну, вы поняли.

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

Затем установите Vimium – расширение для Chrome, которое позволяет работать в сети без использования мышки. Оно подсвечивает каждую ссылку на странице комбинациями клавиш. Вот, как это выглядит:

Pro tip: заметьте, что у меня одновременно открыты и браузер и консоль. Более того, если всмотреться получше, среди моих вкладок можно заметить множество статей с arXiv и постов со StackOverflow. Это не случайность. Стратегически оркестрированный массив вкладок дает понять, что вы сумели усесться на столь желанный стул инженера машинного обучения, одной ногой разбираясь в замысловатой теории, другой – в практике.

Декорации установлены, сцена готова и шоу может начаться. Как мы уже уяснили, все ваше поведение должно демонстрировать, что вы не имеете ни малейшей нужды в мышке или тачпаде. Откиньтесь назад, положите ноги на стол и клавиатуру на ноги. Лично я люблю раскинуться в моем кресле-мешке в трех метрах от моего 40-дюймового монитора.

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

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

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

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

Я скажу: лучше быть поддельным кем-то, чем настоящим никем.

10 отличий между хорошим и нормальным программистом / Habr

Предположим, у нас есть 1 нормальный программист и 1 хороший программист (в 2 раза опытнее и с зарплатой в 2 раза больше). Значит ли это, что хороший программист напишет туже самую программу в 2 раза быстрее? Или что имея бюджет в 1000 долларов, не важно какому программисту мы отдадим работу, мы получим такую же программу? А может быть, если мы наймем 2 нормальных программистов, то они будут работать так же качественно и быстро, как 1 хороший программист? Нет — к сожалению, линейная алгебра не применима к программистам. В этой статье я попытаюсь рассказать почему нельзя складывать и вычитать линейно опыт программистов.

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

Различия между хорошим и нормальным программистом
Если программист берет в 2 раза больше денег, то логично предположить, что он в 2 раза лучше. Что же на самом деле стоит за этим абстрактным «лучше», и чем отличается хороший программист от нормального?

  • Хороший программист пишет код где-то с такой же скоростью, как и нормальный (мы все тыкаем пальцами по клавиатуре с похожей скоростью). Иногда даже медленнее (часто хорошему программисту скучно писать что-то тривиальное, и он легко может отвлечься на раздражители).
  • Зато хороший программист имеет куда больше способностей к абстрактному проектированию. Если посадить 2 неучей доказывать теорему Пифагора, то они ее не докажут. 100 неучей и за 2 недели ее не докажут, а вот 1 образованный математик сможет ее доказать за час. Также и хороший программист сможет правильно спроектировать программу тогда, когда 2 нормальных программиста покажут худший результат (и этот результат не зависит от количества программистов, он зависит от их качества).
  • Хороший программист пишет более надежные программы. Частично из-за того, что он умеет правильно их проектировать, частично из-за того, что он просто умеет писать код без ошибок (ведь он лучше, чем остальные, в конце-то концов). Очень часто этот фактор выходит на поверхность лишь несколько месяцев или лет спустя – программа оказывается запутанной и сложной в поддержке. У хорошего программиста есть куда больше шансов не допустить этой запутанности, чем у нормального программиста.
  • 1 хороший программист производительнее, чем 2 нормальных программиста. Помимо вопросов проектирования и надежности программ, есть еще один фактор: межличностная коммуникация. Чем меньше людей формируют команду, тем меньше времени будет тратиться на внутреннюю коммуникацию.
  • Качество программиста прямо пропорционально тому, как он умеет работать с заказчиком/проджект менеджером/любым субъектом, который стоит выше его и который сообщает ему, что нужно программировать. Мы все видели эту картинку, где проектировали детские качели на дереве, а в конце получилось что-то страшное. Хороший программист изначально закладывает необходимую гибкость в свою программу, чтобы если на полпути кто-то наверху передумает, то ему можно будет перевести программу в новое русло не потратив на это много костылей. Также хороший программист умеет устранять недопонимание. Он не пишет так, как ему или заказчику показалось, а добивается от клиента четкого представления об ожидаемом результате.

Профит из всего этого
Ну допустим, а как из всего этого можно извлечь выгоду? Я бы лично извлекал ее следующим путем:
  • В команде программистов должен быть разброс в профессионализме. Для успеха предприятия нужны умные программисты и нормальные программисты. Они оба хорошие и умеют хорошо работать вместе.
    • Умные программисты будут решать самые сложные задачи и брать на себя вопросы проектирования и общего виденья.
    • Нормальные программисты будут выполнять более рутинные задачи, но для них это будет интересно, и они будут более продуктивны и эффективны в финансовом плане (зачем платить 1000уе хорошему программисту за решение этой задачи, если ее может решить нормальный программист за 500уе практически в теже самые сроки?)
    • Как бонус, умные программисты будут развивать и подымать квалификацию нормальных программистов.
    • И еще один бонус: все будут счастливы. Хорошие программисты будут довольны своей работой, т.к. им не нужно заниматься рутиной, а нормальные программисты будут довольны, т.к. у них есть возможность учиться и развиваться, смотря на своих старших братьев.
  • Лучше брать качеством, чем количеством. Если мне нужно увеличить скорость разработки или еще как-то нарастить «ресурс» программистов, то я бы первым делом попытался увеличить квалификацию программистов, а не их количество. Таким образом я экономлю на расходах межличностной коммуникации.
  • Возможно, этот пункт не пересекается плотно с вышесказанным, но я бы еще уделил внимание эффективности каждого из членов команды. Эффективность и профессионализм – это разные вещи. Профессионализм – это потенциал, а эффективность – это то, на сколько этот потенциал раскрывается. Эффективность зависит от разных факторов:
    • Эмоциональные взаимоотношения между членами команды.
    • Внешние раздражители (шум, голод, программист-сосед, который отвлекает каждые полчаса, и многое другое)
    • Интерес к поставленой задаче (любой человек работает менее эффективно, если внутренне он не согласен с тем, что от него требуют)

Где лучше жить программисту. Сравниваем 9 стран / Habr

Предлагаю вашему вниманию сводную таблицу-сравнение под кодовым названием «Лучшая страна для программиста», которую я подготовила с помощью IT-блогеров из разных стран. В список попали Германия, США, Испания, Канада, Австралия и Австрия, а также добавила в список Англию, Швейцарию и Нидерланды.

В этой статье страны сравнивались по следующим параметрам:

1. Зарплаты программистов
2. Налоги
3. Стоимость жизни
4. Социальное обеспечение
5. Развитость рынка IT

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

Не воспринимайте все описанное в статье как научное исследование, отнеситесь к данным как к наброскам общей картины.

На этом месте лирика заканчивается и начинаются цифры.

*Данные по запросу «Software Developer/Engineer» взяты с сайтов Glassdoor.com, Indeed.com, PayScale.com.
*Все зарплаты пересчитаны из местных валют в доллары США по актуальному курсу на 19 марта 2018.

*Это очень упрощенная таблица, поэтому я сделаю несколько пояснений. Все страны из списка используют прогрессивную систему налогообложения, а это значит, чем больше зарплата, тем больше налог. В Германии, Канаде, США и Швейцарии налог с зарплаты зависит от региона. Наличие супруга/и, детей, наличия кредитов, определенные траты и некоторые другие факторы в большинстве стран могут существенно снизить ставку налогоплательщикам.

*В Англии подоходный налог в размере 20% применяется к зарплате в диапазоне 45-150k, при зарплате больше 150k фунтов вам придется заплатить уже 40%.

*Для Нидерландов в таблице указан размер подоходного налога с применением «правила 30%», согласно которому 30% зарплаты высококвалифицированного иностранного специалиста не облагаются налогом. Налог на остаток высчитывается по стандартной шкале и в нашем случае составляет 42%.

*Стоимость жизни в разных городах очень индивидуально: кто-то готов жить в бабушкиной квартирке на окраине и есть «доширак», а другой меньше чем на пентхаус в центре города не согласен. Самое объективное, что я смогла придумать, – это показать вам рейтинг от Numbeo.com, и применить предложенный индекс уровня жизни на полученную в таблице выше среднюю зарплату.

*Данные взяты с сайта Startup Rankin.

*Во многих странах IT-рынок в основном покрывают местные компании.
*В таблице указаны офисы крупных IT-компаний не по их наличию как таковому, а по наличию открытых IT-вакансий (больше 10) и наличию отдела разработки в этом офисе.

*в США (в Кремниевой долине в частности) IT-компании часто увеличивают отпуск своим сотрудникам со второго года.

*В таблицу я добавила Россию, чтобы Вам было легче сравнивать.

Еще один важный пункт социального обеспечения – медицина, но раскрыть ее кратко довольно сложно. Из приведенных в списке стран лучшее бесплатное медицинское покрытие в Англии, а в США бесплатно получить медицинские услуги могут только люди с достатком ниже установленного минимума. IT-специалистам платят гораздо больше этого минимума.



Если вы хотите узнать о какой-то из стран больше, welcome на YouTube каналы:

Германия – Senior Software Vlogger
Канада – Two In Canoe
США – ProgBlog TV
Испания – Pavel Savinov
Австрия – Austria Online (RuViennaVoice)
Австралия – Sydney Online

Что делает хорошего программиста хорошим? / Habr

Я работал со многими программистами на протяжении долгих лет — некоторые из них были очень яркими, а некоторые — определенно «никакими». Недавно я имел удовольствие работать с несколькими высококвалифицированными специалистами, так что я потратил немного времени в размышлениях, чем же я восхищаюсь в них. Что делает хорошего программиста таким хорошим, а плохого — таким плохим? Или, немного коверкая русский язык, что делает хорошего программиста хорошим?
Исходя из своего опыта могу сказать, что «великолепие» программиста никак не связано с возрастом, образованием или финансовым состоянием. Это связано с тем, как вы действуете и, более детальнее, как вы думаете. Я заметил стойкий набор привычек у программистов, которыми я восхищаюсь. Более чем хорошее знание выбранного языка программирования, глубокое понимание структур данных и алгоритмов, более чем годы опыта работы, то, как они общаются, как они управляют собой и как они подходят к разработке — все это говорит об удивительном уровне их мастерства.
Конечно, быть хорошим программистом — это намного больше, и я не стану оценивать любого программиста исключительно по наличию (или отсутствию) этих практик. Но я опознаю мудрость, когда я вижу ее, и когда я вижу программиста, обладающего этими чертами, я думаю: «Этот человек действительно знает, что он делает.»
Они проводят собственные исследования
Или «семь раз отмерь, один раз отрежь». Или «погугли это».
Что ни говори, но большинство программистских проблем, с которыми вы сталкиваетесь, уже были решены в том или ином виде — Экклесиаст был прав, когда заявил, что ничто не ново под солнцем. В виде библиотек на гитхабе, записях в блогах, или всего лишь в контактах с опытными людьми. Хорошие программисты знают, что надо сначала поискать, прежде чем пытаться решить проблему.
Я видел даже великих программистов, спешащих за решением: но худшие программисты, с которыми я работал, никогда не консультируются с остальными, и как результат — проделывают огромное количество лишней работы или же решают задачи абсолютно неверным способом. И, к сожалению, позже они платят за свои ошибки.
Они читают сообщения об ошибках (и реагируют на них)
Это включает работу со стеком вызовов. Да, это сложно и некрасиво — но если вы не готовы сделать это, то как вы планируете понять, в чем проблема? Наиболее эффективные программисты, которых я знаю, не боятся докапываться до сути проблемы.
Наименее эффективные видят, что была ошибка, но даже не трудятся читать сообщение об ошибке. (Это звучит смешно, но вы удивитесь, как часто мне приходится сталкиваться с этим.)
Делая шаг дальше, можно сказать, что великолепные программисты видят проблему и чувствуют потребность ее решить. Чтение сообщений об ошибке для них всего лишь начало: они стремятся глубоко погрузиться в проблему, чтобы выяснить, что она из себя представляет и что пошло не так. Они не заинтересованы в перекладывании ответственности, они хотят найти решение. Они действительно несут ответственность.
Они обращаются к исходникам
Документация, тесты, люди: все эти вещи врут. Не преднамеренно, конечно. Но если вы хотите точно знать, как что-то работает, тогда вам надо посмотреть код.
Не бойтесь, если это не тот язык программирования, с которым вы на “ты” — если вы в первую очередь пишете на Ruby и предполагаете, что ошибка в одной из библиотек на Си, то открывайте эту библиотеку и изучайте ее. Да, вы можете не получить ничего. Но кто знает? Сделать хоть что-то — лучше, чем не пробовать ничего!
Если у вас нет доступа к исходникам, то, к сожалению, это становится тяжелее, но принцип остается в силе. Плохие программисты мало заинтересованы в изучении исходников, и в результате проблемы осложняют им жизнь гораздо сильнее чем тем, кто готов сделать некоторые исследования.
Они просто делают это
Хорошие программисты готовы действовать. У них есть особенность, которую бывает сложно контролировать: они реализуют решение как только выявляют проблему или видят новый feature request, иногда слишком рано и иногда слишком агрессивно. Но их инстинктивная реакция на проблему — решить ее сразу же.
Иногда это может быть хлопотно, но их энтузиазм является важной частью высокого качества их работы. Пока некоторые спорят или ждут, когда проблема исчезнет сама, хорошие программисты начинают решать ее.
Говоря проще (и, возможно, слишком очевидные вещи): если вы видите, как кто-то взволнованно уцепился за проблемы и начал работать над ней, то, скорее всего, у вас уже есть хороший программист.
Они избегают кризисов
У плохих программистов есть общая особенность: они склонны перепрыгивать от одного искусственного кризиса к другому, никогда по-настоящему не разбираясь в причинах первого. Они перекладывают вину на сторонние части своих программ, проводя часы в отладке того, что работает отлично. Они дают эмоциям взять верх над собой, доверяя интуиции, а не тщательному, детальному анализу.
Если вы в спешке проноситесь сквозь проблемы (или даже рассматриваете каждую проблему как катастрофу мирового масштаба), то вы наверняка делаете ошибки или не решаете основные вопросы. Великие программисты находят время, чтобы понять, что пошло не так, даже если столкнулись с настоящей катастрофой. Более того, они рассматривают регулярные проблемы как задачи, которые должны быть решены. Таким образом, они решают большинство проблем более аккуратно, и делают это, не накаляя атмосферу внутри организации.
Они хорошо общаются
В конце концов, программирование — это одна из форм коммуникации. Способность кратко и выразительно выражать свои мысли так же важна в написании кода, как и в написании прозы — я всегда считал, что тот, кто сможет написать содержательное письмо, элегантный статус-отчет или даже просто эффективную записку будет лучшим программистом чем тот, кто этого сделать не может.
Это применимо и к коду. Конечно, можно написать одну строчку из круглых и фигурных скобок, однобуквенных функций, но зачем? Если это никто не понимает, то в чем смысл так поступать? Хорошие программисты находят время, чтобы правильно донести свои идеи в любой среде, в которой они оказываются.
Они увлечены
Я думаю, что это должно быть наиболее важным аспектом хорошего программиста (и, возможно, эта часть применима не только к компьютерным наукам).
Если вы по-настоящему заботитесь о том, что вы делаете, если это не только работа, но и хобби, интерес и даже восхищение, то у вас есть большое преимущество перед кем-либо еще в своей области. Великие программисты всегда программируют. Их коллеги будут работать по 8 часов в день — не только на работе, но и в области программирования вообще. У них нет проектов по программирования на стороне или большого интереса во вкладе в сообщество. Они не пробуют новые хитрые методы и безумные языки программирования просто чтобы увидеть, как они работают.
Когда я вижу программиста, который делает свой собственный проект-хобби на выходных, который вовлечен в создание утилит, которыми он пользуется каждый день, который очарован новым и интересным, то тогда я точно знаю, что вижу удивительного человека. В конечном итоге, великие программисты выбирают свою профессию не только как способ зарабатывания денег, но и как возможность сделать жизнь лучше. Я думаю, что это и делает хороших программистов теми, кто они есть. Для них кодинг — это способ к изменению мира. И это я считаю достойным уважения и восхищения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *