Привет, Хабр! Представляю вашему вниманию перевод статьи «27 things I wish I knew when I started programming» автора Ken Mazaika.

Заранее, прежде чем начинать программировать, хотелось бы узнать массу вещей, но вот 27 из них, которые приходят на ум. Самые важные я поставил под номерами 14 и 26, чтобы вам было интересно прочитать статью полностью.

1. Учитесь на практике


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

2. Программирование не похоже на подготовку к тесту


Запоминание всплошную не имеет существенного значения.

3. Махинации совершенно приемлемы


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

4. Накапливать непроверенные наработки — плохая стратегия


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

5. Самостоятельно учиться — очень сложно


Обсуждение кода и сотрудничество с другими начинающими разработчиками для большинства людей — лучший способ научиться.

6. Не грузитесь сожалениями


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

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


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

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


Мне потребовалось некоторое время, чтобы привыкнуть к тонким различиям между похожими символами и начать замечать их. Пока вы не привыкнете к этому — может быть довольно неприятно.

9. Попытка понять все — безнадежное дело


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

10. Участвуйте в парном программировании как можно больше


Нет более быстрого способа научиться писать код.

11. Изменение плохого кода является частью работы


Раньше я думал, что каждый кусок кода нужно делать идеальным. Но внесение улучшений в ваш код — это естественно. Вы пишете не книгу, чтобы нельзя было изменить её после публикации.

12. Обращайтесь за помощью правильно


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

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

13. Вам не нужно быть гением в математике


Если вы не «математик», это не значит, что вы не можете быть программистом.

14. Всегда отмечайте маленькие победы


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

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


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

16. Избежание merge-конфликтов делает вас счастливее


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

17. Признавать, что вы чего-то не знаете — это нормально


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

18. Чтобы получить работу, не требуется 10000 часов


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

19. Готовьтесь просыпаться утром, думая о коде


И когда так происходит, это действительно чертовски круто.

20. Совершать большие ошибки — естественно


Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США. В итоге я усвоил самый важный урок моей карьеры программиста: не бойтесь ситуаций, где вы можете допустить ошибку, если риск это оправдывает. Благодаря такому вы, как разработчик, станете лучше.

21. Алгоритм подобен поиску имени в телефонной книге


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

22. Вы никогда не почувствуете, что готовы программировать по-серьёзному


Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.

23. Программисты никогда не прекращают учиться


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

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


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

25. Программирование — это использование подходящего инструмента для работы


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

26. Прекратить прямо перед переменами к лучшему — распространенный поступок


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

27. Научиться программировать нелегко


Но именно поэтому это дело стоящее.

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

Теперь я могу помогать другим людям в достижении их целей в направлении программирования. Что может быть лучше?

Комментарии (134)


  1. zxweed
    24.07.2019 14:45

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

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


    1. Almet
      24.07.2019 14:55

      Ошибки — есть ошибки, какими бы они не были, самое главное — сделать вывод


    1. halted
      24.07.2019 16:34

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


      1. khim
        24.07.2019 17:49

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

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

        И какой из этого следует вывод, интересно?


        1. CheMAX23
          26.07.2019 16:55

          Не «дизайна», а архитектуры, строения или конструкции, в вашем комментарии подходит второе слово, в русском языке дизайн означает совсем другое


          1. khim
            26.07.2019 17:01

            Приборка, но, в целом, согласен.


      1. Moskus
        24.07.2019 22:48

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


        1. Samoglas
          26.07.2019 11:25

          Это похоже на шизоида, которых в IT все много.
          Ни разу не шизофреник и не психопат, лишь акцент в характере.


          1. lunavsegba
            26.07.2019 13:36

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


            1. Samoglas
              27.07.2019 08:43

              Скажем громкое «Нет!» стигматизации акцентуаций характера!

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


    1. saboteur_kiev
      26.07.2019 01:48

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


  1. JC_IIB
    24.07.2019 15:10
    -1

    19. Готовьтесь просыпаться утром, думая о коде
    И когда так происходит, это действительно чертовски круто.

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


    1. zolern
      24.07.2019 15:53
      +2

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


      1. KongEnGe
        24.07.2019 16:21

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


        1. Stalker_RED
          25.07.2019 15:29

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


        1. dimatsourkan
          26.07.2019 16:57

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


      1. ledocool
        25.07.2019 08:37
        +2

        Да я бы лучше от эротических кошмаров просыпался.


        1. KongEnGe
          26.07.2019 17:21

          примерно таких?

          — что будет, если мы профакапим дедлайн?
          — у профессиональных кинологов это называется «вязка»


      1. trueMoRoZ
        25.07.2019 10:57

        ну тогда сохранить эту идею в памяти, проснуться в нормальное время и вспомнить — высший пилотаж


        1. alsii
          25.07.2019 20:48

          "банан большой..." ага :) /анекдот


      1. zeolant
        25.07.2019 11:25

        В школе и в университете я частенько мог днями а то и неделями решать, так сказать, творческие задачи по физике в рамках подготовки ко всяким олимпиадам, конкурсам. И тогда я действительно мог среди ночи проснуться с готовым решением и броситься записывать. В задачах для бизнеса, я лично за 15 лет с таким не сталкивался. Некоторое время после университета меня это беспокоило, потом я решил что надо расслабится и получать удовольствие от того что есть ). А спустя какое то время вообще перестал дома писать программы, предпочитая активный отдых после работы: велосипед, каяки, бассейн прогулки на природе. Чего и другим советую )


      1. m1khaylov
        26.07.2019 16:57

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


    1. Urgen
      24.07.2019 17:29
      +2

      гоняю во сне юнит-тесты. не круто.


      1. Koneru
        24.07.2019 20:08
        +1

        Главное чтобы не E2E


      1. nochkin
        25.07.2019 00:24
        +1

        Хорошие unit-test'ы и погонять приятно.


    1. tungus28
      24.07.2019 20:35
      +1

      Нет


    1. Kanut
      25.07.2019 10:05
      +1

      Если иногда и из-за идеи, пришедшей во сне, то это круто. А вот если постоянно и/или из-за кошмаров, то наверное что-то идёт не так :)


    1. pagin
      25.07.2019 14:10

      Согласен. Под вопросом. Потенциально такая жизнь приводит к профессиональному выгоранию


    1. astenix
      25.07.2019 16:21

      Я так находил возможности прохождения миссий в «Commandos» :)

      Просто просыпался с ИДЕЕЙ, которая пришла невесть откуда. И обычно это срабатывало.


  1. IgorKh
    24.07.2019 15:30

    Когда вы соберетесь это сделать, выполните четыре шага:


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


  1. Free_ze
    24.07.2019 17:16
    +1

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

    Автор еще о проблемах с «с» и «с» не слыхал.


    1. Phoenix-lib
      25.07.2019 01:04

      Можно сюда же отнести «x» и «х».


      1. Zoolander
        25.07.2019 07:59
        +2

        а греческие программисты могут добавить ? и;

        первая — греческий символ вопроса.


        1. Sau
          25.07.2019 11:26
          +2

          Столкнулся как-то с китайской запятой:, и , (попробуйте выделить и увидите что символы разной ширины)


          1. i86com
            25.07.2019 11:35

            А ещё существует японский пробел (ideographic space).
            Но чаще всего спотыкаются о различие ` и ' в MySQL.


        1. namikiri
          25.07.2019 12:18

          В Rust на эту тему сделали сначала issue, а потом, по его результатам, целую проверку на такие вот хитрые совпадения. Мелочь, а приятно.


    1. ozonar
      25.07.2019 13:39
      +2

      Наш тестировщик в ответ на запрос к АПИ отправлял «ОК», и проверял пришло или нет. Я потратил два полных дня чтобы понять что проверял он «OK» в латинской раскладке, а отправлял в русской.


    1. Shiftuia
      26.07.2019 16:58

      Недавно при внедрении пайплайнов не собрался проект. Причина — русская «с» в середине(!) названия класса. Причем на машине разработчика все собиралось отлично.
      Java 1.8, gradle 5.5


    1. syrslava
      27.07.2019 13:24

      А еще между «O» и «0».


  1. sbnur
    24.07.2019 17:47

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


  1. deitry
    24.07.2019 18:23

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

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


    1. DMGarikk
      24.07.2019 20:30
      +4

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

      (хотя я не понимаю зачем так страдать)


      1. uvelichitel
        24.07.2019 21:55
        +1

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


        1. DnV
          24.07.2019 22:00

          Программирование по большей части происходит в голове. Да и невозможно одновременно смотреть в несколько мониторов.


          1. 0xd34df00d
            24.07.2019 22:53
            +3

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


            1. unclejocker
              25.07.2019 17:05

              У меня как раз так — большой монитор для кода и рядом маленький «как у пользователя» чтобы смотреть а как UI будет выглядеть на типовом мониторе в компании.


          1. flancer
            25.07.2019 21:07
            +2

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


            1. Kanut
              26.07.2019 08:31
              +2

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

              Но ясное дело что это всё зависит от задач и привычек конкретного человека :)


              1. pprometey
                26.07.2019 09:02

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


            1. KvanTTT
              26.07.2019 13:36

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


      1. myrrc
        24.07.2019 22:05
        +1

        У меня ноутбук 13', проблем не наблюдается (хотя он с Full HD). Код, который в ширину больше 120-140 символов, наблюдать, имхо, уже сложно (если это не дикий уровень вложенности, а какой-нибудь вызов вроде
        mSuperLongVar = std::make_shared<project::subnamespace::SuperLongClass>(...)


        Бонусом оказывается не нужна мышь, так как тачпадом можно быстро ткнуть куда угодно.


        1. AllexIn
          24.07.2019 22:55
          +2

          А где документацию смотрите? Не раздражает альтабаться постоянно?


          1. altai2013
            25.07.2019 08:40

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


            1. deitry
              25.07.2019 11:04
              +1

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


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


              1. MTyrz
                25.07.2019 12:43
                +2

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

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


                1. deitry
                  25.07.2019 13:02

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


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


                  1. MTyrz
                    25.07.2019 13:26

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


                    1. VADemon
                      25.07.2019 17:38

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


          1. myrrc
            25.07.2019 09:29

            Так у меня qtile (думаю переползти на i3, но пока не решился), переход между двумя окнами занимает меньше секунды.


            1. AllexIn
              25.07.2019 09:57

              На 13" монике да еще и с разделением… Ну такое себе.


          1. deitry
            25.07.2019 11:08

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


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


          1. SpiXRayt
            27.07.2019 13:25

            Тайловые оконные менеджеры решают проблемы альттаба, да и вообще ускоряют работу с окнами.


            1. AllexIn
              27.07.2019 13:26

              Только при условии достаточного размера рабочего пространства.
              Это либо super wide монитор, либо несколько мониторов.


      1. trueMoRoZ
        25.07.2019 10:59

        мечтаю о третьем мониторе. и в общем-то пофиг, кто что скажет)


        1. dimatsourkan
          26.07.2019 17:11

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


        1. Warlodya
          27.07.2019 13:25

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


    1. andreishe
      25.07.2019 00:36

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


      1. deitry
        25.07.2019 09:53

        VGA-выход


      1. s_suhanov
        26.07.2019 04:23

        Есть же еще USB-видеокарты.


  1. VolCh
    24.07.2019 18:58
    +5

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

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


    1. trueMoRoZ
      25.07.2019 11:00

      хороший рецепт напакостить девелоперам на винде)


      1. VADemon
        25.07.2019 17:41

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


    1. alex_zzzz
      25.07.2019 12:01

      А что бы было на macOS?


      1. s_suhanov
        26.07.2019 04:23

        А на макОС с этим как раз все в порядке. :)


        1. alex_zzzz
          26.07.2019 19:31

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


    1. alex_zzzz
      26.07.2019 19:37

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

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


  1. maximsukharenko
    24.07.2019 19:28
    +1

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

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

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


    1. MTyrz
      25.07.2019 12:47

      Ценность заключается в укрощении синдрома самозванца. Как минимум.


  1. KvanTTT
    24.07.2019 19:54
    +4

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

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


    1. Dolios
      24.07.2019 21:51
      +1

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


      1. AllexIn
        24.07.2019 22:58

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


        1. Dolios
          24.07.2019 23:54
          +1

          2560x1080 (21:9)


      1. dipsy
        25.07.2019 05:08

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


        1. Dolios
          25.07.2019 09:37

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


          1. ScreamPassion
            25.07.2019 10:53

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


            1. Dolios
              25.07.2019 10:58

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


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


              1. ScreamPassion
                25.07.2019 11:01

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


                1. Dolios
                  25.07.2019 11:06

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


                  1. ScreamPassion
                    25.07.2019 11:07

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


                    1. Dolios
                      25.07.2019 11:13

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


                      1. ScreamPassion
                        25.07.2019 11:15

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


                        1. Dolios
                          25.07.2019 11:19

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


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


                          1. ScreamPassion
                            25.07.2019 11:24

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


                            1. Dolios
                              25.07.2019 11:27

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


    1. AllexIn
      24.07.2019 22:57

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


      1. alsii
        25.07.2019 21:10
        +1

        у меня 2 27"-монитора. На левом — винда, На правом — debian full-screen под virtual box. При этом винде оба монитора доступны. Так вот над всем этим у меня нависает еще один небольшой 19" монитор, где обычно развернут putty с консолью сервера. И там в tmux живет несколько окон. Ну и иногда туда окошки от Firefox улетают с какой-нибудь докой. Или акробат… Третий монитор подключил пару лет назад, просто понял что нужно.


  1. sergeevaira
    24.07.2019 21:19
    +1

    19. Готовьтесь просыпаться утром, думая о коде
    И когда так происходит, это действительно чертовски круто.


    А еще дебажить код во сне и утром править найденные ошибки. Жаль не часто случается:)


    1. MTyrz
      25.07.2019 13:08

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

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


      1. 0xd34df00d
        26.07.2019 02:03
        -1

        Мне в юношестве, лет в 13-15, когда как раз началось это всё, часто снилось что-то про код, либо что я компилятор и компилирую темплейты, либо что я пишу темплейты, либо что я Александреску и рассказываю про темплейты.


        Брат жив.


        1. MTyrz
          26.07.2019 02:28

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


  1. fndrey357
    24.07.2019 22:45
    +1

    1. Учитесь на практике
    Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
    2. Программирование не похоже на подготовку к тесту
    Запоминание всплошную не имеет существенного значения.
    3. Махинации совершенно приемлемы
    Я использую Google для решения большинства своих проблем, как и многие из ....

    Эти пункты подходят практически для любого технического творчества.


  1. AlexZaharow
    25.07.2019 00:20
    +1

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


  1. Roman_Kor
    25.07.2019 10:44
    -1

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

    Действительно, создайте AI, а еще лучше AGI /s


  1. ScreamPassion
    25.07.2019 10:50

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

    А вот лично мне кажется, что это плохая идея… нужно заставлять себя думать как компьютер.


    1. Kanut
      25.07.2019 12:23

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

      А если конечно пишешь код для «машин», то тогда надо самому думать как компьютер :)


      1. ScreamPassion
        25.07.2019 15:36

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


        1. Kanut
          25.07.2019 15:42

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

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


          1. ScreamPassion
            25.07.2019 15:58

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


            1. Kanut
              25.07.2019 16:01

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


    1. simik2
      25.07.2019 15:18

      Да вообще странная формулировка с претензией на глубину и неоднозначной интерпретацией.
      Компьютер в любом случае не думает. И заставить его невозможно.


      1. ScreamPassion
        25.07.2019 15:34

        Я бы все таки сказал что любой процесс вычислений это думать)


  1. mayorovp
    25.07.2019 10:52

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

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


    1. deitry
      25.07.2019 11:14

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


      1. mayorovp
        25.07.2019 11:40

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


  1. roscomtheend
    25.07.2019 11:14

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

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


    zolern


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

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


    KongEnGe


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

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


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


    1. KongEnGe
      25.07.2019 14:24

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


  1. cerberus13
    25.07.2019 11:29

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


    1. EgDude
      27.07.2019 13:26

      Но в #13 сказано именно «гением». Зачем изменять смысл, а потом самому спорить с этим? :)


  1. AndreySitaev
    25.07.2019 12:17

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


  1. astenix
    25.07.2019 16:22

    Перефразируем

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

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


    1. s_suhanov
      26.07.2019 04:27

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


      1. astenix
        26.07.2019 12:19

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

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


  1. muhaa
    25.07.2019 17:06

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


    1. s_suhanov
      26.07.2019 04:31

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

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


  1. eteh
    25.07.2019 22:03
    -1

    Мне одному кажется, что это пост вредных советов?)


  1. echo_mont
    25.07.2019 22:46
    +1

    где-то тут была статья про «плато» или «долину отчаяния». Она помогла мне больше.


  1. Alcpp
    26.07.2019 01:24
    +1

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


    Задумчиво вспоминает Ариан-5 падающую в океан.


  1. pprometey
    26.07.2019 04:51

    3. Махинации совершенно приемлемы

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


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


    1. f_s_b_37
      26.07.2019 10:34

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


  1. FlyingDutchman2
    27.07.2019 13:28

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


    Дейкстра когда-то сказал (не ручаюсь за точность цитаты): «Использование антропоморфной терминологии по отношению к компьютерам является признаком профессиональной незрелости».


  1. Mixbap
    27.07.2019 13:28

    Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.

    Синдром самозванца как по мне один из лучших мотиваторов для программиста, а вот самоуверенность это точно враг


  1. Victor_D
    27.07.2019 13:28

    Для программистов с постсоветского пространства важно ещё одно правило: учите английский.


  1. MechaDuragon
    27.07.2019 13:29

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

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


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


  1. yolf
    27.07.2019 13:30

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

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

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