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

Кто такой «хороший программист»? / Хабрахабр

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

Что отличает хорошего программиста от посредственного? И как самому стать хорошим программистом и заслужить среди друзей и коллег «почет и уважение»?

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

Думать головой? Ну что ж, это очень даже неплохая отличительная черта хорошего программиста. Как ни крути, но именно серое (или какое оно там) вещество, расположенное в нашей голове, привело нас в эту профессию; и именно «думанием» профессиональный программист зарабатывает себе на жизнь, занимаясь этим большую часть своего времени. А раз так, то почему бы не подумать о том, как стать, если не хорошим программистом в общепринятом понимании, то хотя бы немного лучше по сравнению с тем, кем был вчера.

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

Вот, например, как часто вы задаете себе подобные вопросы: «Чем отличается ваш код сегодня от вашего кода полугодичной давности? Становится ли он лучше или, быть может, он уже давно достиг совершенства? Как изменились ваши взгляды на разработку ПО за это время? Что нового вы узнали из этой безграничной области? Когда в последний раз вы написали что-либо ради интереса, а не ради «производственной необходимости»? Когда в последний раз вы помогли кому-то с техническим вопросом?»

Конечно, ответы на эти вопросы не скажут, хороший вы программист или нет. Смысл их в том, чтобы понять, становитесь вы «лучше» или топчетесь на месте. Хороший программист – это не гениальный подросток, а простой толковый парень или девушка, любящие свое дело. Человек, в котором сочетается прагматизм и стремление к совершенству, любовь к новому и глубокие знания настоящего, стремление к обучению и желание учить кого-то еще. Большинство хороших программистов прекрасно понимают, что они знают очень мало и находят в себе желание и стремление это исправлять. У каждого из нас свой путь к получению новых знаний и здесь, как и в программировании, тоже не стоит искать «серебряную пулю».

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

habr.com

Как распознать хорошего программиста? | Статья

Как нанимателю распознать насколько хорошим и талантливым окажется программист? Это не такое простое дело, как кажется. Описание опыта работы в резюме далеко не всегда может раскрывать полностью правду о программисте – с одной стороны опыт может быть обманчивым и существовать скорее только на бумаге, а не в реальности. С другой стороны далеко не всегда прекрасный программист в “официальном” резюме может указать толком и подробно, в чём, как и почему он действительно так хорош. Хотя и есть ряд тонкостей, благодаря которым можно почерпнуть даже из резюме полезную информацию, раскрывающую “качественность” программиста. Я считаю себя достаточно неплохим программистом. Кроме этого, мне довелось провести немало времени и с другой стороны – отбирая и интервьюируя кодеров при найме на работу. Поэтому я считаю, что я накопил неплохой опыт в “распознании” программиста и хочу поделиться им в этой статье, которая может оказать полезной для людей, которым доводится отбирать специалистов на работу. Хотя, кто знает, вполне вероятно эта статья поможет и хорошему программисту, который, несмотря на свои прекрасные профессиональные навыки, не умеет толком преподнести себя работодателю. Пол Грэм в своей популярной статье “18 ошибок, которые убивают стартапы ” отмечает следующее:
“Причиной смерти большинства e-commerce стартапов в девяностых стали плохие программисты. Большинство тех компании создавались бизнесмена, которые думали, что для успеха IT проекта нужно придумать хорошую идею, а потом просто нанять программистов, чтобы они её реализовали. Однако в реальности всё оказывается гораздо сложнее. Сложнее просто потому, что такие наниматели не могли определить хороший программист перед ними или нет. Кроме того, они толком и не видели хороших программистов, поскольку профессиональный и качественный кодер редко когда жаждал в качестве работы выбрать “реализацию видения проекта заказчиком”, не разбирающимся в IT и программировании. В результате, такие бизнесмены нанимают тех программистов, которые им кажутся хорошими (написано у него в резюме Microsoft Certified Developer, значит, хороший кодер, по-любому). А потом удивляются, почему их проект пыхтит как бомбардировщик второй мировой, а конкуренты проносятся мимо на реактивных самолётах. Такое может и проходит в случае большой компании, но для стартапа смерти подобно. Так как нанять хорошего программиста, если вы сами не программист? Ответа на это нет, и вряд ли будет. Можно для начала нанять одного хорошего, чтобы потом с его помощью отсеивать остальных, но этого одного хорошего тоже надо как-то найти сначала…”
Я совершенно не согласен с автором данного отрывка. Я считаю, что есть набор чётких индикаторов, по которым можно распознать хорошего программиста или же наоборот посредственного. Вот я и постарался изложить эти индикаторы качественности и некачественности в данной статье.

1. Увлечённость.

Во время работы мне довелось встретить доселе небывалый тип программистов: программист-карьерист. Представители данного типа кодеров пошли в программирования только потому, что считается, что именно в IT можно сделать хорошую карьеру. Они и пальцем не притронутся к кодированию в своё свободное время, они не понимают, зачем у одного человека дома может быть несколько компьютеров и зачем они объединены в сеть. Это только работа и заниматься всем этим стоит только на работе. Они не учат ничего нового по своей воле, программирование для них – это рутинная работа с девяти до шести. Они не обсуждают за пределами офиса какие-то технические вопросы, да и на работе обсуждают их без всякого энтузиазма. Я считаю, что хорошие программисты всегда увлечены программированием. Хороший программист будет программировать даже бесплатно – просто для себя. Хороший программист может проесть вам всю плешь разговорами о какой-то технической проблеме, с которой он столкнулся во время разработки, и как он её разрешил, полагая, что это действительно важно и интересно. Некоторые видят в этом определённую социальную закомплексованность – мол, нет у человека других тем для разговора, кроме как о каких-то там багах или функциях. Однако если вы хотите распознать хорошего кодера, подобная страсть к обсуждению программирования пусть даже и в ущерб каким-то другим навыкам общения, будет хорошим показателем качественности кодера. Если вы наняли человека, который способен на одном дыхании полчаса обсуждать технологию, которую он использует – вам определённо повезло.

2. Самообразование и интерес к обучению новому.

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

3. Интеллект

Некоторые люди из бизнеса и менеджмента считают, что недостаток тактичности в общении – это прямо свидетельство о необразованности и невысокой интеллектуальной развитости человека. Однако умственные способности человека имеют много проявлений и эмоционально-вербальное только одно из них. Хорошие программисты не тупые. В принципе. В реальности – они одни из умнейших людей из всех, кого я знаю. Причём у многих из них при этом ещё и прекрасные навыки общения с людьми. Клише о том, что настоящий программист в разговоре в компании не может толком и предложения вставить, это всего лишь клише. По моему опыту общения с лондонской Ruby юзергруппой, за небольшим исключением в ней собрались исключительно умные, общительные и разговорчивые люди. Глядя на них, вы не подумаете никогда “ну что за стадо гиков” по крайней мере до тех пор, пока вы не подойдёте поближе и услышите, что они с жаром обсуждают RESTful приложение со сложным пользовательским интерфейсом клиентской части. Это не значит, что они будут чувствовать себя как рыба в воде в любой обстановке. Но это значит, что если окружающие условия и социальный контекст комфортабелен вы сможете прекрасно побеседовать с ними как с самыми общительными людьми (а может даже и ещё лучше, поскольку по моему опыту программисты, если говорят о какой-то вещи, то это действительно интересно и полезно, а не просто изысканный, но пустой стёб). Даже не думайте нанимать “немого” программиста, который вроде как должен быть хорошим. Он им не будет. Если человек не может в обычной расслабленной обстановке подержать беседу, толку и на работе от него будет немного. С другой стороны, далеко не все те, кто умён и сообразителен имеет потенциал стать действительно хорошим программистом.

4. Скрытый опыт

Данный пункт можно было бы включить в пункт “увлёченность”, но он является таким важным индикатором качества программиста, что лучше его было лишний раз подчеркнуть и раскрыть. Я начал программировать, когда мне было девять лет, на компьютере Commodore 64. Затем я перешёл на PC, где возился с Pascal. В четырнадцать лет я, потратив уйму времени, написал на C и Assembler небольшой движок для графических эффектов с обращением напрямую к видеокарте. Это было то, что я называю “стадией кокона”. Когда я делал первые шаги на этой стадии, я был посредственным программистом, мне не хватало уверенности взяться за что-нибудь действительно сложное. По её окончанию, я как-раз-таки приобрёл эту уверенность и знал, что могу кодировать вполне себе хорошо практически всё что угодно. Отражено это всё каким-либо образом в моём резюме? Нет, конечно. Я искренне верю, что у любого хорошего программиста резюме представляет собой лишь только верхушку айсберга, а большая часть всего скрыто. Что-то кажется не совсем уместным, что-то не соответствует профилю вакансии, однако является при этом замечательным достижением и подтверждением профессионализма и увлечённости человека как программиста. Хороший вопрос который стоит задать на собеседовании – “Не могли бы вы рассказать что-нибудь о своём личном проекте, даже и наоборот, особенно, если он не связан с вашим рабочим профилем – что-нибудь, на что вы тратили своё свободное время и это не нашло отображения в резюме?”. Если человек не может на этого ничего ответить (при том, что резюме у него на двадцать страниц), то он, скорее всего не самый хороший программист. Даже программист с наиболее исчерпывающим резюме, должен иметь пару-тройку проектов, которые остались за кадром.

5. Разнообразие технологий.

Здесь всё очень просто. Так как хороший программист всегда любит обучить и узнать и попробовать новую технологию, а также образно выражаясь “поиграться” с ней даже если он не имеет отношения к его профессиональной деятельности, любой хороший программист старше 22 лет должен разбираться в доброй дюжине различных технологий. Они могут быть и в каком-то смысле бесполезными, но для хорошего программиста изучение новой технологии – один из самых интересных способов провождения свободного времени. Чем они, собственно, со свойственной им увлечённостью и регулярно занимаются. Конечно, они не должны быть гуру во всём, но любой хороший специалист будет разбираться в целом перечне различных технологий. Но здесь необходимо учитывать одну тонкость. Любой Java программист средней руки перечислит вам в своем списке известным ему технологий, что-нибудь типа Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell scripting и т.д. На самом деле это всё по сути ветви и части одной технологии. Непрограммисту это, наверное, понять сложно, но если спросить у программиста как все его перечисленные навыки коррелируют между собой, то всё станет ясным. Переспециализированность кодера на одной и той же технологии – это индикатор не самого лучшего программиста. Наконец, хороший знак, если технологии известные программисту представляют собой самые новые и продвинутые языки или там фреймворки. На момент написания статьи (Ноябрь 2007) это Merb, Flex, RSpec, HAML, UJS и многие другие. Они кстати, тоже связаны между собой и через несколько лет их перечисление будет таким же перечислением “одной и той же” технологии, как и в примере с Java. Правда, здесь надо упомянуть, что стоит разделять понятия разнообразности и прогрессивности. Знание разнообразных технологий за определённый промежуток времени это положительный индикатор, в независимости от того насколько они прогрессивны. Одновременно является положительным фактором и знание новых технологий программирования, в независимости от того, насколько впоследствии исчезнет их вариативность и разнообразность.

6. Формальность квалификации

Это как раз тот момент, когда “официальная” квалификация программиста не является индикатором его качественности. Хороший программист может иметь специализированное образование, а может и не иметь. Различные сертификаты типа MCSE или SCJP могут означать высокий уровень кодера, а могут и нет. Они призваны быть доступными и желательными для всех программистов, но не более того. Всё что они означают – это наличие у человека определённого набора знаний. Это, по сути, гарантия для нанимателей из больших компаний, что “вот этот вот парень знает Java, и у него есть официальное доказательство этому” без проведения всяких там интервью и собеседований. Если вы нанимаете программиста для стартапа или создаёте штурмовую команду для решения важнейших задач на уровне предприятия, вы должны игнорировать формальную “официальную” квалификацию программиста. Она ничего вам толком не расскажет о том, насколько хорош тот или иной специалист. Точно также нужно игнорировать и возрастной показатель – программист может быть хорош и прогрессивен и в 18 лет и в 40 лет. (Кроме разве что случая, когда вы подбираете команду одного возраста, для того чтобы создать лучшую кооперацию в коллективе, впрочем, возрастная дискриминация официально итак запрещена в большинстве стран). В завершение темы, по моим наблюдениям большинство посредственных программистов начинают кодировать только в университете, изучая соответствующие предметы. Большинство хороших программистов начинают программировать задолго до ВУЗа, и обучение в университете является лишь развитием их хобби, зародившимся ещё до него. Если ваш программист не занимался каким-либо кодированием до университета, а на практическом уровне начал участвовать в разработке только по его завершению на своей первой работе, то своре всего он вряд ли будет хорошим программистом.

Примечание:

Данные индикаторы не являются категоричными и единственно правильными. Вы можете найти хорошего программиста, который не будет отвечать каким-либо из вышеназванных показателей, но вряд ли он будет опровергать их все. Вы можете также найти и плохого программиста, который, наоборот, будет отвечать всем показателям. Но, так или иначе, я уверен, что если программист соответствует в хорошем смысле всем индикаторам, которые я перечислил, тем больше вероятность того, что он будет качественным специалистом, с которым стоит иметь дело. Итак, подведём итоги и тезисно по пунктам перечислим положительные и отрицательные индикаторы высокого уровня программиста. Положительные индикаторы:
  • Увлечённость технологиями
  • Программирование – не только работа, но и хобби
  • Способность прожужжать все уши о какой-то технической проблеме и методах её решения, если потребуется
  • Наличие достаточно серьёзных (а часто и не одного) своих персональных проектов
  • Изучает технологии по своему собственному желанию
  • Подтверждённое упорство о том, какую технологию лучше использовать в данном случае
  • Ощущает некомфортность, когда приходится работать с технологией, которую он не считает правильной
  • Очевидно умён и сообразителен, способен поддержать разговор на различные темы
  • Начал программировать задолго до поступления в университет
  • Располагает скрытыми знаниями и личными проектами неуказанными в резюме
  • Знание широкого набора технологий
Отрицательные индикаторы
  • Программирование для него – повседневная рутина, работа с 9 до 6
  • Нет стремления обсуждать технические проблемы, даже при их наличии
  • Изучает новые технологии только по принуждению
  • Готовность работать с любой технологией, с которой скажут, ему нет разницы и дела до этого.
  • Не выглядит особо быстросоображающим
  • Начал программировать только в университете
  • Весь опыт программирования укладывается в резюме
  • Сфокусирован исключительно на одной или двух технологиях и не знает ничего кроме них.
источник, оригинал

dev.by

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

Чтобы стать хорошим программистом вам нужно:

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

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

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

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

5. Вам необходимо самостоятельно искать информацию. Для этого нужно регулярно посещать книжные магазины и закупать журналы и книги нужной тематики. Так же не лишним будет регулярно просматривать информацию в интернете, и подписаться на RSS. Чем больше вы получаете информации, тем больше навыков приобретете, следовательно совсем скоро сможете выполнять большие объемы работ.

6. Пишите коды обдуманно и аккуратно. Малейшая помарка в кодах, даст сбой во всей работе, особенно если вы работаете в команде программистов, и все пишут один и тот же код. Не забывайте ставить отступ. Коды без отступов, превращает весь процесс работы в сложное чтение. При написании работы (кодов), будьте бдительны и аккуратны.

7. Для мотивации изучения и становления вами программистом, может послужить высокая заработная плата. Зарплата программиста зависит от организации, в которой вы собираетесь работать. Но если вы квалифицированный специалист знающий свое дело, то любой работодатель не пожалеет высокой зарплаты. Знайте это. Например, в Москве средний по знаниям специалист – программист базы данных может получать от 1000$ до 2000$. У высококвалифицированных специалистов максимальный уровень зарплат не подсчитать.

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

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

 

www.kakprosto.ru

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

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

Они проводят собственные исследования

Или «семь раз отмерь, один раз отрежь». Или «погугли это».
Что ни говори, но большинство программистских проблем, с которыми вы сталкиваетесь, уже были решены в том или ином виде — Экклесиаст был прав, когда заявил, что ничто не ново под солнцем. В виде библиотек на гитхабе, записях в блогах, или всего лишь в контактах с опытными людьми. Хорошие программисты знают, что надо сначала поискать, прежде чем пытаться решить проблему.
Я видел даже великих программистов, спешащих за решением: но худшие программисты, с которыми я работал, никогда не консультируются с остальными, и как результат — проделывают огромное количество лишней работы или же решают задачи абсолютно неверным способом. И, к сожалению, позже они платят за свои ошибки.

Они читают сообщения об ошибках (и реагируют на них)

Это включает работу со стеком вызовов. Да, это сложно и некрасиво — но если вы не готовы сделать это, то как вы планируете понять, в чем проблема? Наиболее эффективные программисты, которых я знаю, не боятся докапываться до сути проблемы.
Наименее эффективные видят, что была ошибка, но даже не трудятся читать сообщение об ошибке. (Это звучит смешно, но вы удивитесь, как часто мне приходится сталкиваться с этим.)
Делая шаг дальше, можно сказать, что великолепные программисты видят проблему и чувствуют потребность ее решить. Чтение сообщений об ошибке для них всего лишь начало: они стремятся глубоко погрузиться в проблему, чтобы выяснить, что она из себя представляет и что пошло не так. Они не заинтересованы в перекладывании ответственности, они хотят найти решение. Они действительно несут ответственность.

Они обращаются к исходникам

Документация, тесты, люди: все эти вещи врут. Не преднамеренно, конечно. Но если вы хотите точно знать, как что-то работает, тогда вам надо посмотреть код.
Не бойтесь, если это не тот язык программирования, с которым вы на “ты” — если вы в первую очередь пишете на Ruby и предполагаете, что ошибка в одной из библиотек на Си, то открывайте эту библиотеку и изучайте ее. Да, вы можете не получить ничего. Но кто знает? Сделать хоть что-то — лучше, чем не пробовать ничего!
Если у вас нет доступа к исходникам, то, к сожалению, это становится тяжелее, но принцип остается в силе. Плохие программисты мало заинтересованы в изучении исходников, и в результате проблемы осложняют им жизнь гораздо сильнее чем тем, кто готов сделать некоторые исследования.

Они просто делают это

Хорошие программисты готовы действовать. У них есть особенность, которую бывает сложно контролировать: они реализуют решение как только выявляют проблему или видят новый feature request, иногда слишком рано и иногда слишком агрессивно. Но их инстинктивная реакция на проблему — решить ее сразу же.
Иногда это может быть хлопотно, но их энтузиазм является важной частью высокого качества их работы. Пока некоторые спорят или ждут, когда проблема исчезнет сама, хорошие программисты начинают решать ее.
Говоря проще (и, возможно, слишком очевидные вещи): если вы видите, как кто-то взволнованно уцепился за проблемы и начал работать над ней, то, скорее всего, у вас уже есть хороший программист.

Они избегают кризисов

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

Они хорошо общаются

В конце концов, программирование — это одна из форм коммуникации. Способность кратко и выразительно выражать свои мысли так же важна в написании кода, как и в написании прозы — я всегда считал, что тот, кто сможет написать содержательное письмо, элегантный статус-отчет или даже просто эффективную записку будет лучшим программистом чем тот, кто этого сделать не может.
Это применимо и к коду. Конечно, можно написать одну строчку из круглых и фигурных скобок, однобуквенных функций, но зачем? Если это никто не понимает, то в чем смысл так поступать? Хорошие программисты находят время, чтобы правильно донести свои идеи в любой среде, в которой они оказываются.

Они увлечены

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

Автор: vovochkin

Источник

www.pvsm.ru

3 качества хорошего программиста – Senior Software Vlogger

Многие знают или где-то слышали, что хороший программист должен быть ленивым программистом, но я думаю, что не очень многие знают, откуда это вообще пошло и что за этим стоит. И все, почему-то, помнят про лень, но не помнят про два других качества, о которых говорил Ларри Уолл в своей книге «Программирование на языке Perl». Собственно он то и был автором этих «трех уникальных качеств для программиста», для хорошего программиста, как он считает, и эти три качества – лень, нетерпение и гордыня.

Давайте начнем с лени

Все думают что ленивый программист – это такой программист которому лень поднять зад и что-то делать и вот он такой сидит и поэтому он срывает сроки и поэтому ему лень что то ответить, ему лень писать документацию, ему лень писать тесты, ему лень писать все, он ленивый и поэтому как бы хороший программист. Но на самом деле это не так, это несколько особый вид лени и это тот вид лени который побуждает программиста автоматизировать те задачи, на которые он не хочет тратить свои силы или которые приходится повторять снова, снова и снова, собственно одно из качеств языка Perl это регулярные выражения. Сам Ларри Уолл, насколько мне известно, очень много работал с текстом и ему стало настолько лень постоянно делать одни и те же задачи с текстом, что он создал язык Perl чтобы автоматизировать в первую очередь обработку текста, конечно можно спорить на сколько хороший язык Perl или плохой язык Perl как язык программирования, но этот язык решал свои задачи и был одно время довольно сильным игроком, скажем так, на сцене программирования. Так вот давайте, почитаем, что же сам Ларри Уолл пишет про лень: «Лень, это то качество, которое заставляет тебя прикладывать огромные усилия чтобы создать инструменты, которые будут сохранять человеческий труд, твой труд и труд других людей», т.е. люди будут использовать эти инструменты день за днем и скажем так не будут тратить силы и труд на бесконечные эти вещи, которые вы  автоматизируете с помощью этих ваших программ. Но также он пишет, что важно не только создавать эти инструменты, но очень важно документировать эти инструменты, потому что вам лень отвечать на эти бесконечные вопросы «как работает то», «как работает другое». Т.е. мало того, что вы создали что-то полезное, но вы еще и задокументировали это, чтобы к вам больше вообще не обращались за этим советом. Ларри Уолл как-бы говорит что «вот я ленивый, поэтому я мало того что написал (придумал) Perl, так еще и пишу эту книгу как Perl пользоваться, чтобы вы мне не задавали эти вопросы». Что еще можно отнести в эту же копилку? Я бы сказал, что иногда ленивый программист – хороший программист – когда он начинает задавать вопрос «почему?»  и иногда ставит под сомнение «фичи», которые ему непонятны. Т.е. иногда бывает так, что проблему заказчика можно решить вообще не программируя, потому что например эта «фича» не нужна, или она может решиться одним email-ом, или она может решиться одной Google-таблицей или Exel-таблицей и вообще не надо ничего программировать и ты экономишь себе силы и ты в принципе решаешь проблему клиента – я считаю что это можно отнести тоже к лени.

Теперь давайте поговорим  о втором качестве, это нетерпение.

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

И самое последнее третье качество программиста, о котором говорит Ларри Уолл, это гордыня.

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

Вот и все три качества, про которые частенько забывают, помнят только лень и представляя эту лень как «лежать на диване».

Like this:

Like Loading…

Related

seniorsoftwarevlogger.com

Как стать хорошим программистом? / Хабрахабр

Дорогие хаброюзеры, знаю что вы больше любите вкусьненькие посты чем размышления и всякие разные вопросы-опросы. Но у меня уже который месяц болит голова от одного и того же вопроса — как стать хорошим программистом (ниже опишу что я имею ввиду). Вопрос состоит вот в чем:

Я с детства стал увлекаться созданием сайтов. С 6го класса делал первый сайт для своей школы, учил HTML и вставлял различные готовые ЯваСкриптпы в свои мелко-сайты. Начал покупать полезную литературу и осваивать CSS и HTML. Позже в 9м классе учился программировать на Делфи. Школьный паскаль указывать не буду — это все проходили.

Потом на это дело я все таки забил, несколько лет занимался бизнесом и решил вспомнить молодость и пойти учиться в Компьютерную Академию. Два с половиной года потратил на обучение на веб-дизайнера. Программирование с++ мне вообще не далось, сколько не пытался его в курить — ни как не получалось. Зато пхп очень понравился, особенно в то время я был захвачен выводом из баз данных информации и начал развиваться в этом направлении. Сделал одному клиенту сайт на своем движке (что написал по книгам наших программистов) — интернет-каталог, вложил пол года в раскрутку. Сайт начал приносить прибыль причем большую и я стал опять заниматься коммерцией, забив на программирование.

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

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

Когда я ходил по собеседованиям на пхп-программера — мне давали такие простенькие задачки на логику(а она у меня вроде есть) и PHP которые нужно было без интернета решить самому. Ну кто устраивался на работу и принимает на работу в курсе про задачи что принято задавать на собеседованиях. Я даже книгу скачал этих готовых задачек и пытался зазубрить — но на работе уже не мог вспомнить мелкие подробности и проваливался.

Многие люди не могут стать 3д дизайнерами из за отсутствия определенного «визуального образа мышления» (не знаю как правильно сказать). Они представляют фигуры и объекты в голове и видят их не так как остальные из чего могут делать хорошие модели в том же 3д максе.

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

Проходили ли вы такое и если да то поделитесь опытом, буду очень признателен!
Как вы прошли путь от новичка до девелопера?
Спасибо.

habr.com

Каким программистом из всех видов программистов быть лучше всего. Упростите.

Web.
Бурно развивающийся раздел программирования, ориентированный на разработку динамических Internet-приложений. Языки веб-программирования — это соответственно языки, которые в основном предназначены для работы с интернет-технологиями. Языки веб-программирования делятся на две группы: клиентские и серверные.
Клиентские языки

Как следует из названия, клиентские языки обрабатываются на стороне пользователя, а если проще — программы на клиентском языке выполняет браузер. Отсюда следует и недостаток — обработка скрипта зависит от браузера пользователя, и пользователь имеет полномочия настроить свой браузер так, чтобы он вообще игнорировал скрипты. При этом, если браузер старый, он может не поддерживать тот или иной язык или версию языка, на которую опирался разработчик. С современными браузерами таких проблем возникать не должно, к тому же языки программирования не так уж часто кардинально обновляются (раз в несколько лет) и лучшие из них давно известны. Также код клиентского скрипта может посмотреть каждый, выбрав в меню «Вид» своего браузера пункт «Исходный код» (или что-то в этом роде) .
Преимущество же клиентского языка заключается в том, что обработка скриптов на таком языке может выполняться без отправки документа на сервер. Программа сразу проверит правильное заполнение формы перед отправкой, и, если необходимо, выведет ошибку.
Самым распространенным из клиентских языков является JavaScript, разработчиками которого является компания Netscape совместно с компанией Sun Microsystems. Ещё один популярный язык — это VBScript от Microsoft[источник не указан 368 дней] .
См. также AJAX, Adobe Flash, Microsoft Silverlight.
[править] Серверные языки

Когда пользователь дает запрос на какую-либо страницу (переходит на неё по ссылке или вводит адрес в адресной строке своего браузера) , то вызванная страница сначала обрабатывается на сервере, то есть выполняются все программы, связанные со страницей, и только потом возвращается к посетителю по сети в виде файла. Этот файл может иметь расширения: HTML, PHP, ASP, Perl, SSI, XML, DHTML, XHTML.
Работа программ уже полностью зависима от сервера, на котором расположен сайт, и от того, какая версия того или иного языка поддерживается.
Важной стороной работы серверных языков является возможность организации непосредственного взаимодействия с системой управления базами данных (или СУБД) — сервером, на котором упорядоченно хранится информация, которая может быть вызвана в любой момент. Популярными среди систем управления базами данных являются:
Firebird
IBM DB2
IBM DB2 Express-C
Microsoft SQL Server
Microsoft SQL Server Express
mSQL
MySQL
Oracle
PostgreSQL
SQLite
Sybase Adaptive Server Enterprise
ЛИНТЕР

otvet.mail.ru

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

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