Pull to refresh

Comments 145

Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США

10 тыс — это вообще не о чём, гораздо хуже, когда 10 млн

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

Может поэтому давно существует фраза «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте»?
Программисты, которые писали софт для самолетов Boeing, сделали ошибку ценой в десятки человеческих жизней.
Фишка там как раз в том, что программисты там не сделали вообще никаких ошибок!

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

И какой из этого следует вывод, интересно?
Не «дизайна», а архитектуры, строения или конструкции, в вашем комментарии подходит второе слово, в русском языке дизайн означает совсем другое
Приборка, но, в целом, согласен.
Самое смешное, что ваш код реально может сопровождать если не психопат, то человек с психопатическими чертами поведения, которому, по вполне естественному стечению обстоятельств, нравятся сложные структурированные виды деятельности, к которым относится программирование, а неструктурированные явления (к которым относится человеческий фактор, эмоции и т.п.) он будет считать не естественным обстоятельством, а назойливым «багом», который нужно искоренять всеми доступными средствами.
UFO just landed and posted this here

Редко, кто знает о шизоидности, приятно видеть такой комментарий)))

UFO just landed and posted this here
Многие сотрудники совершают ошибки, стоящие миллиарды долларов, и при этом даже не умеют программировать.
Если программист совершил ошибку, которая стоит 10 млн, то чаще всего виноват не только он, а в первую очередь вся цепочка руководителей, которая допустила создание процесса, где такой ущерб может нанести одна человеческая ошибка.
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.

Это что, правда круто?

Я вам больше скажу — возможно проснутся в 3 часа ночи с офигенной идеей как решить проблему и это и правда очень круто

но подавляющее большинство задач не предполагает наличия таких идей в принципе :)
Конечно, подавляющее большинство задач — рутина. Что не отменяет существование интересных задач, пусть не у всех, и не в каждый момент времени.
Ну когда у тебя большой опыт за плечами то да.
Но когда начинал бывало что не знал как решить какую-то задачу, засыпал с мыслью об этом, а на утро решение задачи приходило без особых усилий, и это реально было круто)
Да я бы лучше от эротических кошмаров просыпался.
примерно таких?
— что будет, если мы профакапим дедлайн?
— у профессиональных кинологов это называется «вязка»
ну тогда сохранить эту идею в памяти, проснуться в нормальное время и вспомнить — высший пилотаж
UFO just landed and posted this here
В школе и в университете я частенько мог днями а то и неделями решать, так сказать, творческие задачи по физике в рамках подготовки ко всяким олимпиадам, конкурсам. И тогда я действительно мог среди ночи проснуться с готовым решением и броситься записывать. В задачах для бизнеса, я лично за 15 лет с таким не сталкивался. Некоторое время после университета меня это беспокоило, потом я решил что надо расслабится и получать удовольствие от того что есть ). А спустя какое то время вообще перестал дома писать программы, предпочитая активный отдых после работы: велосипед, каяки, бассейн прогулки на природе. Чего и другим советую )
или проснуться с утра с решением проблемы, которая еще вчера казалось нереальной.
гоняю во сне юнит-тесты. не круто.
Хорошие unit-test'ы и погонять приятно.
Если иногда и из-за идеи, пришедшей во сне, то это круто. А вот если постоянно и/или из-за кошмаров, то наверное что-то идёт не так :)
Согласен. Под вопросом. Потенциально такая жизнь приводит к профессиональному выгоранию
Я так находил возможности прохождения миссий в «Commandos» :)

Просто просыпался с ИДЕЕЙ, которая пришла невесть откуда. И обычно это срабатывало.
UFO just landed and posted this here
UFO just landed and posted this here
8. Существует большая разница между заглавной и строчной буквой

Автор еще о проблемах с «с» и «с» не слыхал.
а греческие программисты могут добавить ; и;

первая — греческий символ вопроса.
Столкнулся как-то с китайской запятой:, и , (попробуйте выделить и увидите что символы разной ширины)
А ещё существует японский пробел (ideographic space).
Но чаще всего спотыкаются о различие ` и ' в MySQL.
В Rust на эту тему сделали сначала issue, а потом, по его результатам, целую проверку на такие вот хитрые совпадения. Мелочь, а приятно.

Они хотя бы на разных клавишах обычно

Наш тестировщик в ответ на запрос к АПИ отправлял «ОК», и проверял пришло или нет. Я потратил два полных дня чтобы понять что проверял он «OK» в латинской раскладке, а отправлял в русской.
Недавно при внедрении пайплайнов не собрался проект. Причина — русская «с» в середине(!) названия класса. Причем на машине разработчика все собиралось отлично.
Java 1.8, gradle 5.5
UFO just landed and posted this here

Сомнительные правила.
Например, 5 — только самостоятельно усвоенные знания могут эффективно применяться, 13 — математика и программирование разные специальности и требуют разного склада ума, 21 — алгоритм необязательно однозначен — путей достижения результата может быть много, и так далее…
Хотя наличие правил всегда лучше их отсутствия — главное помнить про исключения.

7. Вам не нужно 5 мониторов

У меня на работе один монитор, потому что в материнской плате всего один видео-выход. А закупку новых компов согласовывают уже где-то год.
многие кодят на 15' ноутах и не считают это проблемой
Более того, каждый день на работе вижу 3-4 человек которые сидят перед двумя выключенными мониторами и кодят на ноуте

(хотя я не понимаю зачем так страдать)
Я привык работать за двумя мониторами, мне трудно за 15' ноутом. Любой работой удобней заниматься за большим рабочим столом, разве нет, разве программирование исключение?
Программирование по большей части происходит в голове. Да и невозможно одновременно смотреть в несколько мониторов.
UFO just landed and posted this here
У меня как раз так — большой монитор для кода и рядом маленький «как у пользователя» чтобы смотреть а как UI будет выглядеть на типовом мониторе в компании.

Можно очень быстро между ними переключаться просто переводя взгляд. Гораздо быстрее, чем между окнами на одном мониторе по Alt+Tab, проверено на себе. Меня долго уговаривали поставить второй монитор, а потом так понравилось, что поставил и третий. Затем перешёл с Windows на десктопе на Ubuntu на ноуте и стал пользоваться рабочими пространствами (workspaces) на одном мониторе. Их вообще 4 по-умолчанию. Так и отвык от множества мониторов. По большому счёту, удобство — вопрос привычки.

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

Но ясное дело что это всё зависит от задач и привычек конкретного человека :)
Да конечно удобнее 2 монитора.
На одном идет разработка, на втором результаты работы. Особенно для фронтенда это актуально.

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

UFO just landed and posted this here
А где документацию смотрите? Не раздражает альтабаться постоянно?
На днях смотрел видос бывшего гугловского программиста, где он рассказывал, почему для работы можно использовать только макбук (https://youtu.be/BnwB8Oh628Q) и у него задача переключения вкладок (Ctrl+Tab) была настолько востребованной, что он измерял ею производительность ноутбуков. Из забавного: он рекомендовал начинать обучение программированию с покупки макбука, аргументируя это тем, что если вам не нравится процесс работы, то вряд ли вы добьётесь результата.

А чем плох любой другой годный ноутбук? Три с половиной года пользуюсь одним асусом RoG-серии, с виндой и кубунтой на борту, более чем доволен...


(и сам себе отвечу:) А, ну хотя бы тем, что надо накатывать кубунту вместо того, чтобы взять и пользоваться. Действительно, для обучения может быть и так.

Вот уж у кого что болит…
Для меня накатка нужных ОС на новую машину воспринимается примерно наравне с подключением мышки и прочей периферии, включением в 220 и прочей регулировкой высоты нового стула. Часть необходимой настройки под себя.
Впрочем, у всех свои предпочтения, и мой опыт совершенно не повод всем делать так же. Я и не программер, в числе прочего.

Да, и начинать обучение сразу с покупки MBP… Наверное, отставной гугловский техлид может себе такое позволить, но ему начинать учиться как-то поздновато. А я просто процитирую седьмой пункт обсуждаемой статьи.
Не тратьте свои деньги.

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


Для меня самая первая установка убунты была настоящим красноглазием приключением — со своей борьбой с драйверами NVidia и сборкой каких-то пакетов из исходников, когда я даже apt-get не освоил, а про git только слышал.

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

Не бойтесь, в университете видел начинающих индивидуумов, которые окна с ошибками закрывали в миг, подобно бухгалтерам, а потом задавали вопрос: а почему не работает?
Нулёвый уровень, конечно, грустно видеть, но в учении другим профессиям не ожидают же от человека сразу какого-то стажа? Так что соглашусь, что методология должна исходить от нуля.
UFO just landed and posted this here
На 13" монике да еще и с разделением… Ну такое себе.

А ещё можно наклепать рабочих столов. С одной стороны — практически то же самое, с другой — когда на каждом "столе" по нескольку "правильно расставленных" окошек, альт-таб может нарушить естественный порядок вещей.


И одна и та же консолька, выпадающая по f12, на каждом из столов, — спасибо, что ты есть.

Тайловые оконные менеджеры решают проблемы альттаба, да и вообще ускоряют работу с окнами.
Только при условии достаточного размера рабочего пространства.
Это либо super wide монитор, либо несколько мониторов.
мечтаю о третьем мониторе. и в общем-то пофиг, кто что скажет)
Попробовал как то 3 моника, не зашло, возможно из-за растановки, все три были в ряд, к вечеру шея уже болела из-за перевода взгляда с к райнего левого на крайний правый) Сейча работаю на маке 15, и никакого дискомфорта

Мне зашло 2 монитора обычных и экран ноута. Ноут сбоку со всякими второстепенными вещами, на которые когда просто два монитора места жалко на них. В центре IDE, с другой стороны браузер c разрабатываемой страницы

Плюсую, раньше мечтал о двух, но теперь как-то и двух мало)

Ну тут от видеовыхода зависит. DisplayPort 1.2 (если с версией не напутал) поддерживает daisy chaining (нужны мониторы с поддержкой MST). Я к ноуту подключал 2 внешних 1440p монитора через один разъем.

Существует большая разница между заглавной и строчной буквой

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

хороший рецепт напакостить девелоперам на винде)
Недавно видел результат обфускатора, который строчные, заглавные и прочие недопустимые имена файлов для Win/NTFS использовал :)

Самое странное, что NTFS замечательно всё поддерживает, но всё ещё совместимость с MS-DOS, а то и CP/M поддерживают на уровне ОС...

Ничего странного не вижу. Это чтобы регистронезависимость и всякие странные правила типа «точка в конце имени файла не считается» поддерживать код нужно писать. А взять «сырую строку» и использовать её вместо имени файла — много ума не надо.

То, что весь этот кода ради совместимости с MS-DOS, которой нужно было быть совместимой с CP/M — это да…

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

Потому что NTFS может немножно больше, чем виндовое API для работы с NTFS =)

Держать все исходники на специальном отдельном томе со включенным учётом регистра?

У всех всё нормально, но у тестировщиков винда и гит (в гит баш) с ума сходил.

У тестировщиков работа такая.

15. Митапы невероятно ценны

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

Ценность заключается во встрече с такими же людьми, которым некомфортно от своего уровня знаний/умений?
Ценность заключается в укрощении синдрома самозванца. Как минимум.
  1. Вам не нужно 5 мониторов

Ну и одного маловато.

Перешел с 2 фуллхд на 1 широкоформатный. Стало гораздо удобнее.

А FullHD — это не широкийформат?
Или вы что имеете ввиду?

Тоже перешел некоторое время назад с 2×1К 24" на 4К 28", стало… не очень. Общая площадь меньше, шрифт сильно меньше сделать не получится, в итоге информации перед глазами меньше. Поставил рядом ещё один старый "квадратный" монитор 4:3 в вертикальной ориентации, стало лучше. В итоге советую ориентироваться на общую площадь поверхностей, возможно один 4К монитор диагональю дюйма 34 было бы норм.

Так 4к от 2к ничем, кроме плотности пикселей не отличается же. Я формат монитора сменил.

Если разрешение одинаковое то да, а если на 2к будет 1080р а на 4к 2160р (что как правило и происходит) то разница в рабочем пространстве нет, не в 4 раза весьма существенна.

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


Переход на широкоформатный монитор дает ощутимую разницу, т.к. такие мониторы физически гораздо шире.

Что??? Речь шла о рабочем пространстве, которое практически не зависит от физического размера монитора, а зависит по большей части от разрешения.
Формат кстати, кроме угла обзора по большей части ничего не меняет, ведь рабочее пространство это кол-во пикселей а не их соотношение (если мы видим больше по ширине за счет уменьшения по высоте, рабочего пространства больше не станет).

Зависит напрямую и от разрешения и от физического размера. Потому что физический размер букв и элементов интерфейса у вас будет одинаковый, если вы не хотите убить себе глаза. Сравните 4к разрешение на 13" мониторе и на 30". На 30" вы без проблем 3-4 окна разместите, а на 13" только одно, и то будете страдать от того, что все очень мелко. А разрешение у вас будет одинаковое, при этом.

Мииинуточку, вы что издеваетесь?) Тут уже будет зависеть на сколько далеко мониторы будут от глаз.
И да, производители и пользователи мобильных телефонов с вами бы явно не согласились, ведь по вашей логике, телефону в 6 дюймов, вполне себе было бы достаточно 800*600

Это вы, похоже, издеваетесь. Все мои мониторы вот уже 25 лет находятся на одном и том же расстоянии от глаз.

Боюсь даже спрашивать, это только у вас или уже есть стандарт?)
В качестве примера — дома 28^4к и я сижу к нему довольно близко расстояние примерно 30-40см, при том что на работе 2*23^1080р от которых я часто сижу на расстоянии выше 60см

Сколько людей не видел, работающих за компьютером, у всех всегда мониторы в 40-50 сантиметров стоят от лица, попробуйте посмотреть по сторонам.


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

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

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

Всё упирается не в количество мониторов, а в рабочее пространство.
Лично мне два 24" моника создают достаточно рабочего пространства. При этом даже если рядом третий запихать лучше не станет(пробовал), он просто за пределами активной рабочей зоны оказывается и простаивает.
При этом если взять просто один широкий монитор на полтора метр шириной и пол метра высотой — он тоже прекрасно заменит собой два монитора.
Не в количестве счастье.
UFO just landed and posted this here
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.


А еще дебажить код во сне и утром править найденные ошибки. Жаль не часто случается:)
дебажить код во сне… Жаль не часто случается:)
Не жаль.
Это довольно надежный признак чрезмерного зацикливания и начинающегося переутомления. Следующий шаг — отсутствие ощущения отдыха после сна, ну и дальше в очередь выстраиваются уже всякие спецэффекты.

То есть, сам по себе код во сне — это скорее хороший показатель. Примерно как высокая мгновенная скорость бега: прямо сейчас вы выкладываетесь на полную. Просто если это состояние будет продолжаться долго, больше нескольких дней… По моей личной статистике, три-четыре дня, и пора себя оттаскивать за уши.
UFO just landed and posted this here
Вам везет.
В юности мне, конечно, снилась домашняя химлаборатория, и сон плохо отличался от яви. Но необходимость ходить в школу это все-таки поправляла, глубоко проваливался я только на мелких каникулах. А в более позднее время…
Последний эпизод был как раз с кодом, писал фигню себе по кайфу, учился чему-то. Дней пять код снился, потом пришел жестокий приступ нейродермита. Нифига не душегреющее ощущение, честное пионерское.
1. Учитесь на практике
Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
2. Программирование не похоже на подготовку к тесту
Запоминание всплошную не имеет существенного значения.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из ....

Эти пункты подходят практически для любого технического творчества.
Я бы добавил пункт, что ещё придётся программировать себе инструменты для работы. Не все плагины и утилиты написаны.
24. Заставьте компьютер думать как человек

Действительно, создайте AI, а еще лучше AGI /s
24. Заставьте компьютер думать как человек

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

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

И проблема в том что многие программисты даже не пытаются использовать второй подход. Даже когда делают вещи для пользователей. И в результате часто получаются программы, которые у нормального человека вызывают головную боль и непонимание :)
Ок, тогда и я попытаюсь объяснить.
Речь все таки идет о том как научиться программировать, и на этом этапе пытаться заставить думать компьютер как человек на самом деле еще рано. К тому же тут речь не о каком то конкретном языке а о программировании в целом.
Да и в принципе, хороший код и юзабилити это немного разные вещи.
А на счет вариантов — для меня думать как компьютер это понимать как выполняется твоя программа на всех уровнях. А думать как человек, это писать полностью абстрагированный код, закрываясь конкретными технологиями.
Ок, похоже мы всё-таки почти всё пониманием одинаково. За исключением того о чём сама статья :) Для меня это не об обучении программированию как таковом, а о том что автор до многих вещей дошёл с неким опозданием и по его мнению лучше понять их ещё до того как начать программировать :)
Да вообще странная формулировка с претензией на глубину и неоднозначной интерпретацией.
Компьютер в любом случае не думает. И заставить его невозможно.
Я бы все таки сказал что любой процесс вычислений это думать)
Вначале я пытался найти причину каждой встреченной проблемы. Это не обязательно.

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

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

Но причину-то все равно надо найти.

Существует большая разница между заглавной и строчной буквой

В текстах тоже. Это понятно тем, кто кто учился читать-писать не с СМСок или сообщений соцсетей.


zolern


возможно проснутся в 3 часа

И понять, что функция, которую использовал в коде во сне не существует. Или что придуманная конструкция физически невозможно или жутко избыточна (это уже про инженерную конструкцию, не про код).


KongEnGe


но подавляющее большинство задач не предполагает наличия таких идей в принципе :)

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


KvanTTT
Если совет по поводу мониторов начинающим, то достаточно одного (это как занятие фотографией не стоит начинать с покупки оборудования на многие килобаксы), потом, возможно, придётся потратиться.

> Подавляющее большинство != все и всегда
Это и есть 28-я вещь, которую нужно знать: ваша работа будет преимущественно унылым рефакторингом или кодингом по плохой спецификации.
# 13 — после этого читать дальше не стал — смотрел только названия пунктов. Гением — да, но знать надо. Вполне вероятно, что бОльшая часть высшей математики не пригодится, но не факт. Всё зависит от решаемых задач. В любом случае математика необходима.
# 20 — да, каждый может сделать ошибку. От этого никто не застрахован. Но для этого существуют тесты, для этого существует отладка. А создавать продукт с мыслью: «а, даже если где-то накосячу — не беда» ИМХО — в корне неправильно. Ну или полениться проверить до той степени, когда сам уверен в своем продукте.
Но в #13 сказано именно «гением». Зачем изменять смысл, а потом самому спорить с этим? :)
Необычайно полезная статья. Мое мировоззрение перевернулось. Вознаградил себя шоколадкой за написанный код и приготовился сделать следующий шаг в обучении, не останавливаясь на пороге новых свершений.
Перефразируем
Самостоятельно учиться — очень сложно
Обучение построено на обратной связи и продолжении попыток сделать, наконец-то, хорошо.

Нет фидбэка — нет обучения.

Ну фидбэк не обязательно должен быть от человека. Пишем приложение и пробуем разобраться с каким-то инструментом — наше приложение и даст нам фидбэк. Так что "самостоятельно" вполне себе учиться можно. Просто сложнее.

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

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

Программирование в общем случае исключение из правила "по определению". Фидбэк моментальный в том, что программа не запускается или запускается, но делает не то, что ожидается. И, главное, второй человек не нужен для этого.

То, что ожидает программист совсем не равно тому, что ожидает пользователь.

Поэтому если программист пишет не для себя, а для заказчика (другого человека), то… собственно вокруг этого и крутятся все анекдоты и кулстори.
Из личного:
1. Сразу после того как задача решена, пройдите дебаггером по каждой строке, посмотрите значение каждой переменной, подумайте что вы не учли и что может пойти не так. Это займет не много времени, но сильно сократит дальнейшие затраты на тестирование и исправление багов.
2. Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться. После того, как код написан этот комментарий можно удалить или распределить пояснения по коду.
3. Начав работать над новой задачей создайте новый документ и понятными только вам словами опишите концепцию — какова задача и как это будет работать. Без особой необходимости не правьте и не читайте этот документ. После завершения задачи документ можно удалять.
4. Допустим, вы начали писать код, но вас преследует неуверенность, как сделать, чтобы он правильно работал в каждой из возможных ситуаций. Для решения этой проблемы лучше выписать все возможные ситуации и придумать алгоритм решения для каждой из них независимо. Дальше можно подумать как объединить эти N алгоритмов в один универсальный (если это вообще необходимо).
5. Если ваш мозг взрывается от вопросов, какие классы нужно создавать, к какому классу относить конкретную функцию и каковы должны быть принципы взаимодействия этих классов, попробуйте для начала представить (или реализовать) задачу в виде данных, последовательно проходящих через преобразующие их функции. Для любого мозга это всегда проще.
6. Есть программисты, которые умеют создавать приложения с использованием множества фреймворков и шаблонных решений и при этом они совершенно не умеют писать сложные алгоритмы, изобретать и реализовывать сложные концепции. Есть программисты, которые напротив умеют писать алгоритмы и создавать сложные системы, но с большим трудом осваивают чужие фреймворки. На рынке труда себя находят и те и другие.
Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться.

Золотые слова. Еще добавлю про копи-пасту: если копипастите кусок кода (из другого проекта, например), то перенаберите его снова. Ну то есть — закомментируйте то, что скопипастили и наберите этот же код руками (с автокомплитом). Помогает лучше понять, что именно этот код делает и избежать "тупых" ошибок (например, какая-нибудь переменная названа по другому).

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


За собой заметил, что как-то лет дцать назад стал медленнее концепции новые осваивать. Проанализировал и понял, что до того набирал код примеров из книжек, а потом начал копипастить с интернетов.

Мне одному кажется, что это пост вредных советов?)
UFO just landed and posted this here
Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США


Задумчиво вспоминает Ариан-5 падающую в океан.
3. Махинации совершенно приемлемы

Я использую Google для решения большинства своих проблем, как и многие из программистов.


Что под этим понимается? Я не совсем понял. Какие махинации, какие проблемы?!

Там в оригинале cheating, списывать, как в школе.

24. Заставьте компьютер думать как человек


Дейкстра когда-то сказал (не ручаюсь за точность цитаты): «Использование антропоморфной терминологии по отношению к компьютерам является признаком профессиональной незрелости».
Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.

Синдром самозванца как по мне один из лучших мотиваторов для программиста, а вот самоуверенность это точно враг
Для программистов с постсоветского пространства важно ещё одно правило: учите английский.
24. Заставьте компьютер думать как человек

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


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

Даже мысли не возникло, что это про UI.

Перевод как будто Promt из детства.

Дальше замечания не к переводчику.

  • 8 — Если регистр это проблема, то где же про [0]?
  • 16 — Если знаешь о будущем конфликте — можно и предупредить товарищей ведь.
  • 17 — Характерно для всех, не только начинающих.
  • 20 — Это не ОК, а проблемы документации, проверки Pull Requests, QA.
  • 24 — Зачем?

Sign up to leave a comment.

Articles