Многие люди в сообществе программистов говорят о постоянном улучшении, обдуманной практике и так далее, но когда они говорят о своих текущих практиках, это почти как если бы они «выросли полностью из чресла Зевса», потому что вы не слышали о том, как их мнения менялись со временем или что они узнали недавно.
Время от времени, хотя я хожу на беседу, или читаю книгу, или разговариваю с кем-то, они открываются немного больше, и я нахожу, что я многому научился из этих идей.
Итак, если бы вам пришлось выбрать одну вещь за последние 12 месяцев, которую вы узнали, что бы это было?
learning
self-improvement
FinnNk
источник
источник
После изучения некоторого Clojure я начал осознавать полезность функционального программирования , и это сильно повлияло на мой стиль кодирования Java. Вопреки распространенному мнению, функциональный язык программирования не является абсолютной предпосылкой для выполнения некоторого функционального программирования.
Можно включить довольно много элементов функционального программирования в императивный язык, такой как Java, и даже если он не всегда идиоматичен, он может быть очень полезным в некоторых задачах. Например, анонимные классы примерно равны замыканиям, как описано в википедии . Ленивая оценка должна быть нормой, а не чем-то необычным. Неизменность вряд ли может быть чрезмерным. Просто избавьтесь от (почти) устаревшей идеи, что создание новых объектов вместо изменения существующих является дорогостоящим из-за GC и потребления кучи - в 99,9% случаев это просто не актуально. Фактически, параллельная обработка может перевернуть даже аргумент эффективности в обратном направлении: создание новых неизменяемых объектов может быть дешевле, чем изменение существующих, поскольку вы избавляетесь от блокировки.
Больше информации о выполнении FP в чистой Java здесь , здесь , здесь и здесь .
источник
Даже если у вас превосходная команда и компетентный менеджмент для этой команды, ваша работа все еще небезопасна. Высшее руководство все еще может делать глупости, например, распускать всю дирекцию.
Короче говоря: политика имеет значение, а иногда и политика, которая влияет на вас, вы не можете контролировать.
источник
Я узнал, что целью тестирования программного обеспечения является поиск ошибок . Это не означает, что система работает правильно.
Существуют важные психологические факторы: если ваша цель показать, что программа «правильная», вы будете стремиться к испытаниям, которые, как вы знаете, пройдут. Но если ваша цель состоит в том, чтобы находить ошибки, вы будете стремиться к тестам, которые действительно подтолкнут вашу систему до предела.
Существует даже важное изменение языка, который вы используете. Если тест обнаруживает ошибку, вы называете ее успешной . Если тест не [то есть программа проходит], вы называете его неудачным . Я поймал себя на том, что иду по линии «проверочного» мышления, и это имеет большое значение.
Этот психологический эффект более подробно обсуждается в книге «Искусство тестирования программного обеспечения» , классической книге, которую я очень рекомендую. Автор, Myers, также рекомендует, чтобы тот, кто тестирует программу, не был автором или даже в той же цепочке управления. Вы можете сделать это, если вы пишете код самостоятельно, так что это требует дисциплины.
источник
Выполняйте тестовую разработку с самого начала при доставке заказчику, чтобы увидеть, как это повлияет на качество кода, и запускать только из средства запуска JUnit в Eclipse. Это привело к лучшему продукту.
источник
Истинная ценность программирования без эго.
На каком-то уровне я всегда знал, что эго и программирование не сочетаются друг с другом, но никогда полностью не обдумывал последствия. Идея о том, что вы должны активно пересматривать и находить ошибки в своих собственных практиках, я осознал только в прошлом году. Я также учусь активно искать критику моих проектов (как в пользовательском интерфейсе, так и в коде).
Однако, если честно, я все еще учусь отбрасывать эго и, вероятно, буду учиться делать это до конца своей карьеры программиста.
источник
Вот мой ответ на мой собственный вопрос:
Около года назад было решено, что автоматизированные приемочные тесты должны быть не автоматизированными версиями тестов, которые наши тестеры выполняли бы вручную. Сосредоточение внимания на тестах с единичными спецификациями, а не на попытках достичь как можно большего за один проход, сделало тесты намного проще, легче для чтения, а также помогает стимулировать постепенную доставку.
источник
Я узнал, как математические концепции, такие как полукольца, применяются к алгоритмам. При этом вы можете показать, что некоторые алгоритмы одинаковы, за исключением использования другого полукольца. Это не должно быть так странно для меня, как программиста, но моя голова была взорвана.
источник
Помимо политики, о которой говорил Фрэнк Шиарар , я недавно обнаружил, что QUnit и JSCoverage сделали мой день. И месяц. Никогда не думал, что можно будет протестировать JavaScript с охватом кода, но это так ... :-)
источник
Мои первые три благодарности за последний год программирования были бы следующие (в порядке убывания важности и благодарности):
парадигма функционального программирования, позволяющая открыть мой разум другим, зачастую более изящным и лаконичным способам выражения идей и алгоритмов в коде. Я чувствую, что мои общие навыки программирования значительно улучшились за очень короткое время благодаря идеям функционального программирования.
(Я лично благодарю Томаша Петржичека за его превосходную книгу «Функциональное программирование в реальном мире» .)
и внедрение зависимостей, и модульное тестирование научили меня тому, что композиция объектов, возможно, является лучшим способом создания сложных (объектно-ориентированных) систем (и что наследование классов не так важно, как я привык думать). Оба научили меня и заставили задуматься о том, как лучше составлять системы и как писать компоненты, которые просты в использовании, но все же достаточно гибки для повторного использования.
(Если бы мне пришлось упомянуть хороший учебный ресурс, я бы сказал « Искусство модульного тестирования» Роя Ошерова .)
Все это в совокупности привело к тому, что я написал код, в котором, как правило, меньше ошибок, чем раньше, потому что сейчас я пишу код, который гораздо легче понять и ошибиться, чем то, что я ранее выпустил.
источник
Что бы ни менялось в быстро развивающейся индустрии программного обеспечения, кривая обучения всегда здесь. «Если бы был только способ учиться, не тратя время на обучение».
источник
Я узнал, что продажа новой компании действительно может улучшить вашу работу. Моя организация была куплена у нашей старой компании в мае, и кажется, что ситуация продолжает улучшаться. Новая компания позаботилась о небольшом расходе / без затрат в нашем новом офисе, заменила наши устаревшие машины для разработки оборудованием 21-го века, продемонстрировала гибкость в управлении нашими проектами и, как правило, заставила всех нас чувствовать себя более чем желанными.
Это немного удручает, когда меня продают (немного похоже на крепостного, имеющего нового феодала, потому что он привязан к земле, которая перешла в другие руки), но конечный результат оказался намного лучше, чем я ожидал.
источник
Я бы сказал, используя модульное тестирование Microsoft в Visual Studio 2010.
Я обнаружил, что действительно легко отладить определенный метод тестирования.
Я мог в любое время запустить мой тестовый проект, чтобы проверить, работает ли приложение бизнес-уровня. Процесс тестирования гарантирует, что у моей команды не должно возникнуть проблем при развертывании полного решения для посетителей нашего сайта.
источник
Изучил базовый Python (иногда его используют для написания быстрых скриптов)
Установил ArchLinux в ВМ (раньше был Ubuntu в ВМ, мой ПК работает быстро!)
Начал с MATLAB (особенно для построения графиков и быстрых числовых проверок)
Перешел на Mercurial (из SVN) (ветвление и слияние!)
источник
Изучение шаблона MVVM помогло мне стать гораздо менее взломанным.
источник
Мне пришлось начать поддерживать веб-приложение на Python, поэтому я решил, что сейчас самое время изучить Vim . Сейчас я использую плагин IdeaVim для Intellij для разработки на Java и Flex, и я уверен, что благодаря ему мой набор текста стал быстрее и эффективнее.
источник