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

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

Мой вопрос: что самое эффективное, что вы сделали, что улучшило ваши навыки программирования? Что вы рекомендуете другим, которые хотят улучшить?

Я ожидаю разнообразных ответов здесь, и ни один ответ «один размер не подходит всем» - я хотел бы знать, что сработало для разных людей.

876 голосов | спросил 5 revs, 3 users 41%
Oded
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

30 ответов


753

В определенном порядке ...

  • Работа с людьми гораздо умнее, чем я

  • Всегда слушайте, что говорят другие, независимо от того, являются ли они младшими, средними, старшими или гуру. название работы ничего не значит.

  • Изучение других фреймворков /языков и понимание того, как они это делают, и сравнить это с тем, что я уже знаю

  • Читайте о моделях, лучших практиках, а затем изучайте мои старые вещи и применяя эти шаблоны, где это необходимо

  • Программирование пар

  • Не согласен со всем, что говорит Джоэл. ;)

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
557

Решение TO - это «все-сделки»

Довольно рано в моей карьере я был экспертом с конкретной базой данных и языком программирования. К сожалению, эта конкретная база данных потеряла «войны с базами данных», и я обнаружил, что мои варианты карьеры ... ограничены. После этого я сознательно решил, что я никогда не позволю себе снова стать в коробке. Поэтому я изучил все, что мог: в Windows, Unix, C, C ++, Java, C #, Perl, Python, Access, SQL Server, Oracle, Informix, MySQL и т. Д. Независимо от того, какие инструменты и технологии являются новыми или необычными, я стал «парнем» - «Спроси Крейга, если он этого не знает, он это узнает». В результате я работал над всеми видами проектов, от встроенных систем для экологической телеметрии до систем управления и противоракетной обороны.

Единственная проблема, с которой я когда-либо сталкивался, - это компании, которые настаивают на том, чтобы pidgeon-соединяя меня по специальности, когда моя специальность является универсальной. [EDIT: Также известен как Polymath или человек эпохи Возрождения или мульти- специалист. ]

Что-то иметь в виду ... каков период полувыведения знаний в области высоких технологий? Он отслеживает закон Мура: половина всего, что вы знаете, устареет через 18-24 месяца. Эксперт, который выбирает неправильную дисциплину, может быть легко подорван прессой технологий; генералист должен только добавить несколько навыков и вспомнить уроки прошлого в применении этих навыков.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
459

Я всегда думал о себе как о довольно горячем программисте. Затем в нашу команду был нанят новый парень, зов его Аарон. Аарон был явно намного лучше меня в большинстве районов. Он был моложе меня. Он заставил меня понять, что за последние годы я не улучшился. Я был хакером ad-hoc и был посредственным.

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

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

Самое важное, что я узнал от Аарона, - это не перестать учиться.

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

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

Я рад, что встретил Аарона. Без него я, вероятно, все еще буду работать в старой компании со старой бандой, никуда не уйду и слишком много думая о себе.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
257

Две вещи:

  1. Прочитайте код, написанный разными людьми.
  2. Напишите документацию для кода, написанного другими людьми.

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
199

Регулярно посещайте спортзал.

Серьезно, мой мозг работает намного лучше, когда я в форме. Проблемы становятся более легкими и менее подавляющими, отключение - это гораздо меньше искушений, и работа через вещи поэтапно не кажется такой трудной задачей.
ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
181

Программирование. Работа над интересными проектами. НИЧЕГО нет, как входить и работать над вещами. Особенно под давлением. Я всегда говорю всем, кто спрашивает меня, как программировать - просто найдите классный проект (даже если вам нужно это сделать) и поработайте над ним.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
172

Заняла неполный рабочий день, обучая студентов CS в моем университете. Это действительно заставляет вас понимать что-то на совершенно другом уровне, когда вам приходится объяснять это кому-то другому.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
135
  1. Я большой поклонник системы «учиться одному языку программирования каждый год». Один год дает вам достаточно времени, чтобы пройти мимо «хорошо, я знаю синтаксис, так что теперь я знаю язык», и заставляет вас идти немного дальше и понимать, что полезно на этом языке, и программировать в стиле, родном этот язык (под которым я имею в виду, вы не заканчиваете писать Java-приложения с использованием синтаксиса Ruby). Каждый язык изменит то, как вы думаете о программировании, - я знал, как использовать рекурсию, но мышление в рекурсии не произошло, пока я не взял класс в прологе (я полагаю, что функциональный язык, такой как ML, тот же эффект).

  2. Запустите проект Pet. Мое личное уравнение для хорошего проекта для домашних животных - это то, что у вас есть опыт с + то, что вы не делаете = приложение, которое вы найдете полезным. Например, Migratr (мой собственный проект, посвященный выпуску caffeinated-weekend-turn-ongoing) начинался с «Я знаю c #, но я никогда не кодировал веб-API, а я хочу переместить все свои фотографии в Zooomr». Это может быть так же легко: «Я раньше кодировал веб-API, но я не знаю C #»

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

Выполнение этих двух вещей охватывает оба конца спектра. Изучение нового языка сделает вас лучшим кодером. Проект домашних животных сделает вас лучшим разработчиком: P

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
118

Преподавал себе сборку. Было ли это на старом чипе 6502, когда мне было 13? 14? Слишком давно. Но я не могу думать ни о чем, что улучшит ваше развитие, а не дойдет до уровня бит.

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

У микросхемы 65xx было три регистра (аккумулятор, X и Y) и инструкции машинного уровня для умножения или деления. Я помню, как кодировал рутину для вычисления повреждения битвы, просматривал книгу и вдруг понял, что мне придется писать свою собственную математическую библиотеку. Провел пару недель, нацарапав 1 и 0 по всей моей тетради, пытаясь понять, что означают «деление» и «десятичные знаки».

Я изучал C ++, pascal, .NET, многие другие с тех пор ... но никто из них не научил меня так много, не заинтриговал меня или не оставил меня с чувством «ничего себе», что сборка на моем старый коммодор сделал.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
110

Оглядываясь на старые вещи, я писал и понимал, насколько они плохи.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
93

Read

  • книги, а не только веб-сайты
  • для самосовершенствования, а не только для самого последнего проекта
  • об улучшении вашей торговли, а не только о новейших технологиях.
  • читайте код, а не только вы работаете.

Просто создайте аппетит к чтению.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
87

Программирование.

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
81

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

И второе самое главное, подумайте о том, что вы делаете, почему вы это делаете, и как вы можете сделать это лучше. То же самое с предыдущими проектами. Оглянитесь на то, что вы сделали, и как вы можете сделать это по-другому. Подумайте о том, что можно было бы сделать лучше, или где вы могли бы улучшить его.

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
72

Многие люди предложили написать код. Я должен сказать, что чтение кода других людей намного выгоднее.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
70

Пара, запрограммированная с очень разнообразными и упрямыми людьми

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
67

Основные вещи, которые помогли мне в качестве программиста:

  • Узнал сенсорный ввод.
  • Учился преодолевать застенчивость и спрашивать вопросы.

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

И если вы не спросите, никто не скажет вам.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
56

Участие /участие в проектах с открытым исходным кодом было для меня самым большим.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
53

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

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

  2. Тестирование, тестирование, тестирование. Многие программы, которые я видел в крупных корпорациях, используют тестовые примеры. Черт, они используют JUnit, xUnit и все другие языки тестирования модулей. Но проблема, которую я видел, заключается в том, что большинство программистов никогда не видят, как выглядит их программное обеспечение в Production. Узнайте, как пользователи (или системы, если это пакетные задания) взаимодействуют с вашим приложением, библиотекой или интерфейсом, чтобы узнать, какую отвратительную информацию они бросают на него. Это поможет вам создать хорошие тестовые примеры и перестать предполагать, что ваша программа всегда будет получать правильный набор данных.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
48

Изученная схема.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
46

Написание кода и многое другое.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
45

Изучение регулярных выражений.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
39
ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
38

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
36

Выйдите из моей последней работы.

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
29

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

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

Я думаю, самое главное, когда я начал видеть сам мой код, как потребляемый другими программистами, а не машиной. Легко писать код, который может обрабатывать ваш компьютер, но это трудно написать DRY, понятный код.

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
29

Говорят, что 70% хорошего кода - это проверка и обработка ошибок. Когда я начал программировать таким образом, мой код стал намного лучше. Размышление о том, что может пойти не так, а затем сразу же разобраться с этим, сыграло огромную роль. Он чувствует себя , как делать все, что проверка просто мешает получить код и работает, но сокращает время от начала до конца в 2-4 раза.

  

Только кто эти люди «они» и где живут «они»?

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
28

Мое умение кодирования сильно улучшилось, когда я начал задаваться вопросом, прежде чем внедрять что-то , как я буду документировать эту вещь .

«Вещь» здесь должна иметь всю возможную детализацию. От метода до всего продукта. Например, на уровне метода это предотвращает добавление метода в API, который не подходит или неясен, прежде чем писать его. И если мне действительно нужно реализовать метод, я не могу документировать (легко), это знак, что есть проблема с дизайном где-то ...

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
28

Постоянно изучайте и изучайте то, что узнаете.

С помощью:

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

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
27

Это обычно мой хронологический порядок изучения любой новой технологии:

  1. Регулярно читать хорошие блоги (Atwood, Martin Fowler и т. д.), следить за новостями технологий, следить за интересными новыми технологиями. Эти шаги позволят мне решить, найду ли я что-нибудь интересное для дальнейшего изучения.

  2. Прочитайте правую книгу или любой другой ресурс, который вы узнаете для своего уровня (например, для начинающих, если вы хотите изучить шаблоны проектирования, я бы предложил «Образцы первых образцов дизайна»). У меня также есть особые предпочтения для книг .

  3. Разверните игрушечный проект или два, используя то, что я узнал. Я не беспокоюсь о полезности проекта. Мое намерение - это просто использовать мое обучение. (например, проект калькулятора для ООП был бы точным)

  4. Я бы увидел, могу ли я использовать материал на работе . (Например, хотя мы не используем подрывную работу на работе, я использую ее как мой локальный репозиторий, я использовал Ruby для задачи, которая в противном случае была бы слишком монотонной и занимала бы много времени)

  5. Это лучшая часть, которую я считаю большинством людей. Сеансы обмена знаниями . Сделайте сеанс или два для членов коллеги, например. Я считаю, что преподавание - один из лучших способов научиться технологии. Я гарантирую, что ваш уровень понимания технологии станет многократным, независимо от того, пользуетесь ли вы аудиторией или нет. : -)

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22
24

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

ответил Dan Diplo 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 22:42:22 +0400 2010, 22:42:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132