Comments 145
Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США
10 тыс — это вообще не о чём, гораздо хуже, когда 10 млн
Может поэтому давно существует фраза «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте»?
Программисты, которые писали софт для самолетов Boeing, сделали ошибку ценой в десятки человеческих жизней.Фишка там как раз в том, что программисты там не сделали вообще никаких ошибок!
В обоих известных случаях проблема была в том, что программы, действовавшие строго по спецификации, гробили самолёты из-за неправильного дизайна всей системы…
И какой из этого следует вывод, интересно?
Если программист совершил ошибку, которая стоит 10 млн, то чаще всего виноват не только он, а в первую очередь вся цепочка руководителей, которая допустила создание процесса, где такой ущерб может нанести одна человеческая ошибка.
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
Это что, правда круто?
Я вам больше скажу — возможно проснутся в 3 часа ночи с офигенной идеей как решить проблему и это и правда очень круто
Но когда начинал бывало что не знал как решить какую-то задачу, засыпал с мыслью об этом, а на утро решение задачи приходило без особых усилий, и это реально было круто)
Нет
Просто просыпался с ИДЕЕЙ, которая пришла невесть откуда. И обычно это срабатывало.
8. Существует большая разница между заглавной и строчной буквой
Автор еще о проблемах с «с» и «с» не слыхал.
первая — греческий символ вопроса.
Они хотя бы на разных клавишах обычно
Java 1.8, gradle 5.5
Сомнительные правила.
Например, 5 — только самостоятельно усвоенные знания могут эффективно применяться, 13 — математика и программирование разные специальности и требуют разного склада ума, 21 — алгоритм необязательно однозначен — путей достижения результата может быть много, и так далее…
Хотя наличие правил всегда лучше их отсутствия — главное помнить про исключения.
7. Вам не нужно 5 мониторов
У меня на работе один монитор, потому что в материнской плате всего один видео-выход. А закупку новых компов согласовывают уже где-то год.
Более того, каждый день на работе вижу 3-4 человек которые сидят перед двумя выключенными мониторами и кодят на ноуте
(хотя я не понимаю зачем так страдать)
Можно очень быстро между ними переключаться просто переводя взгляд. Гораздо быстрее, чем между окнами на одном мониторе по Alt+Tab, проверено на себе. Меня долго уговаривали поставить второй монитор, а потом так понравилось, что поставил и третий. Затем перешёл с Windows на десктопе на Ubuntu на ноуте и стал пользоваться рабочими пространствами (workspaces) на одном мониторе. Их вообще 4 по-умолчанию. Так и отвык от множества мониторов. По большому счёту, удобство — вопрос привычки.
Или скажем когда дизайнишь/правишь GUI, то делая изменения в xaml/css на одном мониторе можно сразу увидеть результат на другом. И это лично для меня гораздо удобнее чем каждый раз переключать десктопы.
Но ясное дело что это всё зависит от задач и привычек конкретного человека :)
Это не только быстрее, но и легче, так как не нужно тратить микроусилия на комбинацию клавиш и переключение контекста. Хоть и мелочь, но после большого количества начинает раздражать.
А чем плох любой другой годный ноутбук? Три с половиной года пользуюсь одним асусом RoG-серии, с виндой и кубунтой на борту, более чем доволен...
(и сам себе отвечу:) А, ну хотя бы тем, что надо накатывать кубунту вместо того, чтобы взять и пользоваться. Действительно, для обучения может быть и так.
Для меня накатка нужных ОС на новую машину воспринимается примерно наравне с подключением мышки и прочей периферии, включением в 220 и прочей регулировкой высоты нового стула. Часть необходимой настройки под себя.
Впрочем, у всех свои предпочтения, и мой опыт совершенно не повод всем делать так же. Я и не программер, в числе прочего.
Да, и начинать обучение сразу с покупки MBP… Наверное, отставной гугловский техлид может себе такое позволить, но ему начинать учиться как-то поздновато. А я просто процитирую седьмой пункт обсуждаемой статьи.
Не тратьте свои деньги.
После ~10 лет общения с линуском для меня это тоже труда не составляет. Но изначальный совет предназначался тем, кто только собирается учиться программировать, и судя по остальным советам, только-только школу окончил.
Для меня самая первая установка убунты была настоящим красноглазием приключением — со своей борьбой с драйверами NVidia и сборкой каких-то пакетов из исходников, когда я даже apt-get не освоил, а про git только слышал.
Нулёвый уровень, конечно, грустно видеть, но в учении другим профессиям не ожидают же от человека сразу какого-то стажа? Так что соглашусь, что методология должна исходить от нуля.
А ещё можно наклепать рабочих столов. С одной стороны — практически то же самое, с другой — когда на каждом "столе" по нескольку "правильно расставленных" окошек, альт-таб может нарушить естественный порядок вещей.
И одна и та же консолька, выпадающая по f12, на каждом из столов, — спасибо, что ты есть.
Ну тут от видеовыхода зависит. DisplayPort 1.2 (если с версией не напутал) поддерживает daisy chaining (нужны мониторы с поддержкой MST). Я к ноуту подключал 2 внешних 1440p монитора через один разъем.
Существует большая разница между заглавной и строчной буквой
Вспоминилось из недавнего: один из разработчиков решил сделать решение одной таски двумя способами, и сделал две ветки c именами, различающимися регистром одной буквы. У всех всё нормально, но у тестировщиков винда и гит (в гит баш) с ума сходил. Потому что винда.
Самое странное, что NTFS замечательно всё поддерживает, но всё ещё совместимость с MS-DOS, а то и CP/M поддерживают на уровне ОС...
То, что весь этот кода ради совместимости с MS-DOS, которой нужно было быть совместимой с CP/M — это да…
А что бы было на macOS?
У всех всё нормально, но у тестировщиков винда и гит (в гит баш) с ума сходил.
У тестировщиков работа такая.
15. Митапы невероятно ценны
В начале весьма пугало то, как выйти на уровень, на котором я почуствовал бы себя комфортно. Но как только я принял участие во встрече, то понял, что таких же разработчиков, как и я, было множество.
Ценность заключается во встрече с такими же людьми, которым некомфортно от своего уровня знаний/умений?
- Вам не нужно 5 мониторов
Ну и одного маловато.
Перешел с 2 фуллхд на 1 широкоформатный. Стало гораздо удобнее.
Или вы что имеете ввиду?
Тоже перешел некоторое время назад с 2×1К 24" на 4К 28", стало… не очень. Общая площадь меньше, шрифт сильно меньше сделать не получится, в итоге информации перед глазами меньше. Поставил рядом ещё один старый "квадратный" монитор 4:3 в вертикальной ориентации, стало лучше. В итоге советую ориентироваться на общую площадь поверхностей, возможно один 4К монитор диагональю дюйма 34 было бы норм.
Так 4к от 2к ничем, кроме плотности пикселей не отличается же. Я формат монитора сменил.
Разница будет, только если физические размеры монитора пропорционально увеличатся. Если по высоте у вас понитор такой же останется, то пофиг, какое там вертикальное разрешение, хоть 8к.
Переход на широкоформатный монитор дает ощутимую разницу, т.к. такие мониторы физически гораздо шире.
Формат кстати, кроме угла обзора по большей части ничего не меняет, ведь рабочее пространство это кол-во пикселей а не их соотношение (если мы видим больше по ширине за счет уменьшения по высоте, рабочего пространства больше не станет).
Зависит напрямую и от разрешения и от физического размера. Потому что физический размер букв и элементов интерфейса у вас будет одинаковый, если вы не хотите убить себе глаза. Сравните 4к разрешение на 13" мониторе и на 30". На 30" вы без проблем 3-4 окна разместите, а на 13" только одно, и то будете страдать от того, что все очень мелко. А разрешение у вас будет одинаковое, при этом.
И да, производители и пользователи мобильных телефонов с вами бы явно не согласились, ведь по вашей логике, телефону в 6 дюймов, вполне себе было бы достаточно 800*600
Это вы, похоже, издеваетесь. Все мои мониторы вот уже 25 лет находятся на одном и том же расстоянии от глаз.
В качестве примера — дома 28^4к и я сижу к нему довольно близко расстояние примерно 30-40см, при том что на работе 2*23^1080р от которых я часто сижу на расстоянии выше 60см
Сколько людей не видел, работающих за компьютером, у всех всегда мониторы в 40-50 сантиметров стоят от лица, попробуйте посмотреть по сторонам.
Подумайте, почему для мобильных специальные мобильные версии сайтов делают, хотя они давно уже имеют разрешение 2к.
Надо все таки отделять зерна от плевел — на счет мобильных версий, так во первых у них формат другой, во вторых мобильные еще и на кликабельность ориентированны, так же там проблема с тем что их часто держат на большом расстоянии от глаз и даже люди с дальнозоркостью должны иметь возможность не прибегая к очкам быстро получить контент, при этом сохраняя функционал.
p.s. тема сильно поменялась, дальше спорить не вижу смысла.
Лично мне два 24" моника создают достаточно рабочего пространства. При этом даже если рядом третий запихать лучше не станет(пробовал), он просто за пределами активной рабочей зоны оказывается и простаивает.
При этом если взять просто один широкий монитор на полтора метр шириной и пол метра высотой — он тоже прекрасно заменит собой два монитора.
Не в количестве счастье.
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
А еще дебажить код во сне и утром править найденные ошибки. Жаль не часто случается:)
дебажить код во сне… Жаль не часто случается:)Не жаль.
Это довольно надежный признак чрезмерного зацикливания и начинающегося переутомления. Следующий шаг — отсутствие ощущения отдыха после сна, ну и дальше в очередь выстраиваются уже всякие спецэффекты.
То есть, сам по себе код во сне — это скорее хороший показатель. Примерно как высокая мгновенная скорость бега: прямо сейчас вы выкладываетесь на полную. Просто если это состояние будет продолжаться долго, больше нескольких дней… По моей личной статистике, три-четыре дня, и пора себя оттаскивать за уши.
В юности мне, конечно, снилась домашняя химлаборатория, и сон плохо отличался от яви. Но необходимость ходить в школу это все-таки поправляла, глубоко проваливался я только на мелких каникулах. А в более позднее время…
Последний эпизод был как раз с кодом, писал фигню себе по кайфу, учился чему-то. Дней пять код снился, потом пришел жестокий приступ нейродермита. Нифига не душегреющее ощущение, честное пионерское.
1. Учитесь на практике
Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
2. Программирование не похоже на подготовку к тесту
Запоминание всплошную не имеет существенного значения.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из ....
Эти пункты подходят практически для любого технического творчества.
24. Заставьте компьютер думать как человек
Действительно, создайте AI, а еще лучше AGI /s
24. Заставьте компьютер думать как человек
А вот лично мне кажется, что это плохая идея… нужно заставлять себя думать как компьютер.
А если конечно пишешь код для «машин», то тогда надо самому думать как компьютер :)
и да, про пользователей никто и не говорит, перевод все таки о том как лучше программировать, ну а про защиту от дурака, разумеется прописная истина, но это уже кажется немного о другом.
И проблема в том что многие программисты даже не пытаются использовать второй подход. Даже когда делают вещи для пользователей. И в результате часто получаются программы, которые у нормального человека вызывают головную боль и непонимание :)
Речь все таки идет о том как научиться программировать, и на этом этапе пытаться заставить думать компьютер как человек на самом деле еще рано. К тому же тут речь не о каком то конкретном языке а о программировании в целом.
Да и в принципе, хороший код и юзабилити это немного разные вещи.
А на счет вариантов — для меня думать как компьютер это понимать как выполняется твоя программа на всех уровнях. А думать как человек, это писать полностью абстрагированный код, закрываясь конкретными технологиями.
Компьютер в любом случае не думает. И заставить его невозможно.
Вначале я пытался найти причину каждой встреченной проблемы. Это не обязательно.
Да нет, обязательно. До тех пор, пока причина проблемы не выяснена — проблема не решена, а замаскирована. И только и ждет удобного случая чтобы возникнуть снова.
Существует большая разница между заглавной и строчной буквой
В текстах тоже. Это понятно тем, кто кто учился читать-писать не с СМСок или сообщений соцсетей.
возможно проснутся в 3 часа
И понять, что функция, которую использовал в коде во сне не существует. Или что придуманная конструкция физически невозможно или жутко избыточна (это уже про инженерную конструкцию, не про код).
но подавляющее большинство задач не предполагает наличия таких идей в принципе :)
Подавляющее большинство != все и всегда, да и у кого-то их может быть чуть больше (а есть те, кому просто функций из фреймворка накидать для сайта-однодневки и все его задачи сделаны), но для старта, конечно, сложные задачи будут неверным выбором.
KvanTTT
Если совет по поводу мониторов начинающим, то достаточно одного (это как занятие фотографией не стоит начинать с покупки оборудования на многие килобаксы), потом, возможно, придётся потратиться.
# 20 — да, каждый может сделать ошибку. От этого никто не застрахован. Но для этого существуют тесты, для этого существует отладка. А создавать продукт с мыслью: «а, даже если где-то накосячу — не беда» ИМХО — в корне неправильно. Ну или полениться проверить до той степени, когда сам уверен в своем продукте.
Самостоятельно учиться — очень сложноОбучение построено на обратной связи и продолжении попыток сделать, наконец-то, хорошо.
Нет фидбэка — нет обучения.
Ну фидбэк не обязательно должен быть от человека. Пишем приложение и пробуем разобраться с каким-то инструментом — наше приложение и даст нам фидбэк. Так что "самостоятельно" вполне себе учиться можно. Просто сложнее.
Но программирование подразумевает врубание в абстрактные абстракции, до которых додуматься самостоятельно — невероятно, и продвижение без фидбэка с разъяснениями возможно только с определенного уровня «взрослости в теме». Вы указали как раз этот момент, когда самостоятельность ничуть не вредит, а только обеспечивает базу.
Программирование в общем случае исключение из правила "по определению". Фидбэк моментальный в том, что программа не запускается или запускается, но делает не то, что ожидается. И, главное, второй человек не нужен для этого.
1. Сразу после того как задача решена, пройдите дебаггером по каждой строке, посмотрите значение каждой переменной, подумайте что вы не учли и что может пойти не так. Это займет не много времени, но сильно сократит дальнейшие затраты на тестирование и исправление багов.
2. Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться. После того, как код написан этот комментарий можно удалить или распределить пояснения по коду.
3. Начав работать над новой задачей создайте новый документ и понятными только вам словами опишите концепцию — какова задача и как это будет работать. Без особой необходимости не правьте и не читайте этот документ. После завершения задачи документ можно удалять.
4. Допустим, вы начали писать код, но вас преследует неуверенность, как сделать, чтобы он правильно работал в каждой из возможных ситуаций. Для решения этой проблемы лучше выписать все возможные ситуации и придумать алгоритм решения для каждой из них независимо. Дальше можно подумать как объединить эти N алгоритмов в один универсальный (если это вообще необходимо).
5. Если ваш мозг взрывается от вопросов, какие классы нужно создавать, к какому классу относить конкретную функцию и каковы должны быть принципы взаимодействия этих классов, попробуйте для начала представить (или реализовать) задачу в виде данных, последовательно проходящих через преобразующие их функции. Для любого мозга это всегда проще.
6. Есть программисты, которые умеют создавать приложения с использованием множества фреймворков и шаблонных решений и при этом они совершенно не умеют писать сложные алгоритмы, изобретать и реализовывать сложные концепции. Есть программисты, которые напротив умеют писать алгоритмы и создавать сложные системы, но с большим трудом осваивают чужие фреймворки. На рынке труда себя находят и те и другие.
Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться.
Золотые слова. Еще добавлю про копи-пасту: если копипастите кусок кода (из другого проекта, например), то перенаберите его снова. Ну то есть — закомментируйте то, что скопипастили и наберите этот же код руками (с автокомплитом). Помогает лучше понять, что именно этот код делает и избежать "тупых" ошибок (например, какая-нибудь переменная названа по другому).
Я про копи-паст даю такие советы обучающимся программированию или конкретному стеку про чужой код, как с просторов интернета, так и с рабочего проекта.
За собой заметил, что как-то лет дцать назад стал медленнее концепции новые осваивать. Проанализировал и понял, что до того набирал код примеров из книжек, а потом начал копипастить с интернетов.
Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США
Задумчиво вспоминает Ариан-5 падающую в океан.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из программистов.
Что под этим понимается? Я не совсем понял. Какие махинации, какие проблемы?!
24. Заставьте компьютер думать как человек
Дейкстра когда-то сказал (не ручаюсь за точность цитаты): «Использование антропоморфной терминологии по отношению к компьютерам является признаком профессиональной незрелости».
Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.
Синдром самозванца как по мне один из лучших мотиваторов для программиста, а вот самоуверенность это точно враг
24. Заставьте компьютер думать как человек
У слишком многих людей складывается впечатление, что нужно думать как компьютер. На самом деле всё наоборот.
Не, ну если быстродействие нас не интересует, то можно и так. Но это скорее относится к интерфейсу, «делайте интерфейс так, что бы пользователям было удобно общаться с ним почти как с человеком».
Дальше замечания не к переводчику.
- 8 — Если регистр это проблема, то где же про [0]?
- 16 — Если знаешь о будущем конфликте — можно и предупредить товарищей ведь.
- 17 — Характерно для всех, не только начинающих.
- 20 — Это не ОК, а проблемы документации, проверки Pull Requests, QA.
- 24 — Зачем?
27 вещей, которые я хотел бы узнать заранее, прежде чем начинать программировать