Лучший программист – ❶ Как стать хорошим программистом 🚩 где найти хорошего программиста 🚩 Советы по карьере

Содержание

Где живут лучшие программисты мира?

Многие могли бы предположить, что в Соединенных Штатах. В конце концов, США является домом таких светил программирования, как Билл Гейтс, Кен Томпсон, Деннис Ритчи и Дональд Кнут. Но та же Индия славится своими университетами, например, Индийским институтом технологий (IIT), а хакеры из России считаются весьма эффективными. Есть ли способ определить, в какой стране программисты лучше?

Исследование HackerRank помогло ответить на этот вопрос.

HackerRank регулярно проводит десятки тысяч соревнований по программированию для разработчиков, чтобы улучшить их навыки в кодинге. Сотни тысяч разработчиков со всего мира участвуют в соревнованиях по различным языкам и областям программирования: от Python до алгоритмов безопасности и распределенных систем. Разработчиков оценивают и размещают в рейтинговой таблице, учитывая скорость и точность выполнения задач.

По данным HackerRank, самые талантливые программисты живут в России и Китае. Китайские программисты обгоняют все остальные страны по математике, функциональному программированию, а также проблемам структур данных, в то время как русские доминируют в алгоритмах – самой популярной и самой конкурентной сфере. Хотя Соединенные Штаты и Индия обеспечивают наибольшее число участников соревнований, в рейтинге они занимают только 28 и 31 места соответственно.

Лучший язык программирования 2015 года

Какие области наиболее популярны?

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

Какие соревнования наиболее популярны? Процент тестов HackerRank

Самая популярная на сегодня область программирования – алгоритмы. В ней соревнуются около 40% всех разработчиков. Эта область включает сложные задачи по сортировке данных, динамическому программированию, поиску ключевых слов и другие основанные на логике задания. Для участия в таких соревнованиях разработчики могут использовать любой язык, но их выбор может частично объяснить, почему тот или иной язык так популярен. (Алгоритмы также имеет решающее значение для технических интервью, по результатам которых программисты могут быть приняты на работу). С большим отрывом в процентном соотношении, второе и третье место занимают задачи на Java и структуры данных, на которые приходится примерно по 10% участников. Распределенные системы и безопасность — наименее популярные области.

Итак, на основе результатов этих соревнований программисты каких стран показали наилучшие результаты?

Для ответа на этот вопрос был взят средний балл каждой страны во всех областях. Прежде чем найти среднее значение, оценки были стандартизированы для каждой области (путем вычитания среднего из каждого счета, а затем делением на стандартное отклонение), что дало так называемый показатель Z, или стандартный показатель. Это позволило сравнить схожие характеристики отдельных показателей в разных областях программирования, даже с учетом того, что некоторые области являются более сложными, чем другие. Затем Z- баллы представили в таблице от 1 до 100 для легкой интерпретации.

В таблице ниже представлены данные для 50 стран с наибольшим числом разработчиков на HackerRank. Люди из этих стран приняли участие в тысячах соревнований (минимум 2000).

В какой стране лучшие разработчики? Рейтинг составлен с учетом среднего показателя решения всех тестов HackerRank

Поскольку Китай набрал самый высокий балл, китайские разработчики занимают первую позицию списка со счетом 100. Но Китай выиграл с минимальным преимуществом. Россия набрала 99,9 из 100, в то время как Польша и Швейцария закрывают топ рейтинга с баллами в районе 98. Пакистан, расположившийся на 50 месте, набрал всего 57,4 балла из 100.

Две страны, от которых в соревнованиях принимает участие наибольшее число разработчиков, Индия и США, расположились даже не в верхней половине списка. Индия занимает 31 место с общим счетом 76, а Соединенные Штаты – 28-ое, со счетом 78.

Известный хакер о USB-шпионах, москитах, девушках на MySpace и многом другом

Какую страну представляют лучшие разработчики в конкретных областях?

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

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

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

С другой стороны, Россия доминирует в алгоритмах – самой популярной области. Здесь же Китай и Польша занимают второе и третье место соответственно.

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

Было также проведено сравнение, как разработчики из каждой страны распределяют свое время между различными типами заданий, и затем — какие области программирования предпочитает обычный участник HackerRank. Это позволило выяснить, какие страны чаще, чем остальные, оказываются способны пройти тест в той или иной области. 

Страны и их вероятность пройти тест в определенной области. Страны со значительно высоким или низким процентом выполнения задач в определенной области. Столбцы слева–направо: область программирования; высокая вероятность; низкая вероятность.

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

Но помимо этих двух примеров, кажется, в таблице прослеживается мало общего между выбором той или иной страной определенного типа соревнований и ее деятельностью в этой сфере.

6 причин, почему наши дети должны учиться программированию

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

Интересно также узнать, имеют ли определенные страны предпочтения в языках программирования? Правда ли, что C++ — наиболее популярный язык в Индии? Или что большинство мексиканцев выбирают Ruby?

Следующая диаграмма показывает долю соревнований на каждом из языков по странам.

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

В целом, разработчики разных национальностей участвуют в Java-соревнованиях чаще, чем на любом другом языке программирования (с некоторыми исключениями, такими как Малайзия и Пакистан, где предпочитают C++, и Тайвань, где доминирует Python). Шри-Ланка занимает первое место среди стран, предпочитающих Java. Индия, которую представляет наибольшее число разработчиков на HackerRank, занимает 8 место.

Как научиться программированию с нуля. 5 онлайн-сервисов

Какая страна никогда не проигрывает?

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

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

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

Какая страна победит на Олимпийских играх по программированию?

Каждый день разработчики по всему миру конкурируют друг с другом, чтобы стать следующим Гейтсом или Кнутом. Если провести Олимпиаду среди разработчиков, на основании рассмотренных выше данных, можно предположить, что Китай возьмет золото, Россия – серебро, а Польша – бронзу. Хотя они, безусловно, заслуживают похвалу уже за те результаты, которые демонстрируют сейчас, в то время как США и Индия не входят даже в топ-25.

Высоких вам конверсий!

По материалам: priceonomics.com.

27-11-2016

lpgenerator.ru

Топ-12 самых влиятельных программистов мира | Статья

Линус Торвальдс, Дональд Кнут, Ричард Столлман, Джон Кармак — что не имя, то легенда. Интернет-издание VentureBeat составило список самых авторитетных программистов в мировом ИT-сообществе.

Читать далее

Создал Linux, свободную операционную систему, в комнате общежития университета Хельсинки. Сегодня на Linux работают дата-центры и суперкомпьютеры, а её разработкой занимается орда фанатов open-source по всему миру.

Торвальдс известен, в частности, тем, что за словом в карман не лезет и не пытается нравиться публике. На одном из недавних выступлений, когда его спросили из зала, не отпугивает ли он своей манерой общения членов Linux-сообщества, он ответил: «Мне на вас наплевать». Про Торвальдса в среде разработчиков ходят такие же шутки, как среди обывателей про Чака Норриса. Например, Торвальдс может делить на ноль и играть в 3D-игры, исполняя их исходный код в мыслях в реальном времени.

Единственный в этом списке, кому удалось заслужить рыцарство — в рыцари его возвела британская королева Елизавета II. Он — создатель протокола передачи гипертекста (HTTP), технологии, на которой построен весь интернет.

Сейчас он возглавляет Альянс за доступный интернет, общественную организацию, которую поддерживают Google, Facebook и Microsoft, и которая задалась целью сделать широкополосный интернет доступным людям по всему миру.

Академические работы по компьютерным наукам принесли ему титул «отца анализа алгоритмов». Всё в сети, от алгоритма отбора в ленту Facebook до алгоритма подбора похожих товаров на Amazon, чем-то ему обязано. В свои 77 он пишет книгу под названием «Искусство компьютерного программирования». Кнут также является почётным профессором в Стенфорде.

Создатель языка программирования JavaScript, который по факту является стандартом для веб-программирования. Участвовал в создании Mozilla, компании, которая разрабатывает браузер Firefox. Ушёл с поста CEO, когда стало известно о его материальной поддержке проекта по запрету гей-браков в Калифорнии.

Создатель Docker, технологии, которую обожают разработчики, ведь она пакует приложение со всем его окружением в контейнеры и доставляет его на серверы. Работает, как виртуальная машина, но намного быстрее. Docker начинался как side-project в компании dotCloud, но когда оказалось, что продукт популярен, компания пережила пивот и вскоре превратилась в «единорога».

Создатель Facebook. Считает, что чем меньше и гибче команда, тем успешнее она будет работать. Миллиардную социальную сеть обслуживает «всего» 10 000 человек по всему миру.

Известен как DHH. Создатель Ruby on Rails, суперпопулярного фреймворка, принесшего ему титул и награду Google «Хакер года» в 2005-м.

Известен прежде всего борьбой за свободный софт, основатель GNU, автор идеи «копилефта» — в противовес копирайту. Очень принципиальный, не использует никаких проприетарных разработок.

Создатель протокола BitTorrent, подаривший пользователям возможность супербыстрой загрузки файлов. BitTorrent невероятно популярен: по скромным оценкам, его общая пользовательская база составляет 250 млн человек по всему миру. В прошлом году Том Йорк попробовал распространить альбом исключительно через BitTorrent. И всё же, возможности BitTorrent в первую очередь оценили интернет-пираты.

Создал язык программирования Java, работая в Sun Microsystems. После поглощения компании Oracle в 2010, Гослинг уволился, став одним из главных критиков Oracle. С тех пор поработал пять месяцев в Google, пока не присоедился к стартапу Liquid Robotics. Также входит в команду известного украинского стартапа Jelastic как независимый директор.

Датский программист в 1978 году создал язык программирования C++, улучшив C. Он до сих пор активно работает: преподает в Техасском университете A&M, Колумбийском университете, а ещё занят в Morgan Stanley. 

Сооснователь id Software. Во всём мире его знают как создателя Doom. Кстати, сама идея игры родилась во время партии в D&D, которую команда проводила в штаб-квартире id Software регулярно на протяжении нескольких лет. Причем гейм-мастером всегда был Джон. Он первым опробовал те трюки 3D-графики, которые до сих пор используются.

Сейчас он занят в компании Oculus VR, которую Facebook купил за $2 млрд.

dev.by

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

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

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

Flickr/Andrew Eland

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

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

1. Китай
pixabay.com

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

2. Россия
Flickr/bhslangj

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

3. Польша
pixabay.com

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

4. Швейцария
Gabriel Garcia Marengo/Flickr

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

5. Венгрия
Flicker/roderickeime

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

6. Япония
Educast

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

7. Тайвань.
pixabay.com

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

8. Франция
pixabay.com

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

9. Чехия
pixabay.com

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

10. Италия
The University of Napoli Federico II

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

11. Украина
pixabay.com

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

deadbees.net

Топ 10 лучших программистов мира

Представляем Вашему вниманию, Топ 10 лучших программистов мира!

1. Сергей Брин — соучредитель GOOGLE. Сергей Михайлович Брин является одним из самых лучших программистов на данный момент, также это американский ученый и предприниматель в итернете.

2. Сара Хайдер — инженер-программист Twitter. Сара штатный инженер-программист в Twitter, и не только, она также технический руководитель в Android на Vine Labs, наставник по развитию новых экстремальных стартапов. Раньше работала в Google, и очень даже неплохо себя проявляла.

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

4. Кайла Макдональда — разработчик в Phoenix — В настоящее время работает в качестве разработчика Phoenix Group, Кайла уже ранее работал с Web Developer Squareflo более трех лет. Отличилась тем что, может общаться на языке жестов и и знает: HTML, CSS, JavaScript, JQuery, и многое другое.

5. Аманда Викстенд — сотрудник Zynga, работает в сфере разработки игр — Аманда в настоящее время основатель и владелец Meteor Grove Software, она утверждала, популярна, благодаря этому. Zynga и ведет разработку мобильных приложений. Она также получила предложение от Instagram, она его отклонила, в надежде развития своего проекта.

6. Лия Калвер — основатель и генеральный директор Grove — Лия явлась соучредителем сайтов микро-блогов Pownce в 2007 году, компания была приобретена Six Apart. В декабре 2008 года она оставила Six Apart и в феврале 2010 года и стала соучредителем Convore, который был посвящен чату в режиме реального времени, в 2011-2012 году в Convore добавлен новый продукт, Grove.io, фокусируется на размещенную в режиме реального времени в чате для компаний и объявил, что обслуживание Convore будет прекращено с 1 апреля, 2012. Калвер был названа в числе самых влиятельных женщин в Web 2.0 по Fast Company Magazine в ноябре 2008 года.

7. Джейд Реймонд — производитель «Кредо Убийцы» и управляющий директор Ubisoft Toronto. — Она начала свою карьеру с программированием для Sony и стала мгновенной знаменитостью в сфере видеоигр. У Джейд огромное количество поклонников, наличие не малого количества удивительных игр. В настоящее время она управляющий директор Ubisoft Toronto, разработчик и программист.

8. Коррин Ю — экс-главный программист Microsoft, программист, ведет разработки для XBOX 360, PS3, PC и. известен как один из самых влиятельных людей в игровой индустрии.

9. Павел Дуров — основатель Вконтакте, и на данный момент занят разработкой и уже выпущенного продукта «Теллеграм» — мобильно приложение для общения.

10. Мэтт Малленвег — основатель и ведущий разработчик WordPress — известен как автор программного обеспечения, поддерживающего более 15 процентов всей сети интернет ( Действительно впечатляюще ). Он является самым известным в сфере разработки бесплатного и с открытым исходным кодом веб-программного обеспечения.

Данные взяты по подсчету аналитиков из Европы и Америки.

Автор публикации

не в сети 5 месяцев

Veweb

36

Создание, доработка сайтов, редизайн.

Страна: Россия

Комментарии: 76Публикации: 188Регистрация: 04-07-2015

world-of-web.ru

Всем в пример. 10 качеств, которыми обладают лучшие программисты

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

10 важных качеств лучших программистов планеты

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

Нет времени на интернет. На социальные сети лучшие программисты свое время не тратят. Есть у них даже такая интересная поговорка, — «Чтобы стать профессионалом, тебе нужно всего три процента таланта и девяносто семь процентов умения не отвлекаться на интернет».

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



Чемоданчик с инструментами. Каждый раз изобретать велосипед – это не для них. Лучшие программисты всегда имеют массу собственных инструментов и наработок, которые зачастую позволяют заканчивать новые проекты за 10 минут. К тому же, если ты программист, то ты знаешь – платят за сроки, а не за строки.

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

Они стремятся понять всю систему, а не отдельные ее части. Благодаря этому все самые лучшие программисты добиваются успеха в своем деле. Только один процент разработчиков целиком погружается в свой проект, познавая его «от и до». Те же, кто занимается только кодом, обычно, так и остаются «середнячками» в своей Лиге.

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

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

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

Они готовы прийти на помощь. Лучшие программисты – командные игроки. Они с радостью помогают своим коллегами, которые работают с ними над одним проектом. «Умножение вместо сложении» — так обычно принято называть коллективную работу программистов, которая, по статистике, дает результаты в несколько раз быстрее одиночной.



Самые популярные статьи блога за неделю

post-factum.net

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

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

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

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

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

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

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

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

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

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

habr.com

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

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