Заранее, прежде чем начинать программировать, хотелось бы узнать массу вещей, но вот 27 из них, которые приходят на ум. Самые важные я поставил под номерами 14 и 26, чтобы вам было интересно прочитать статью полностью.
1. Учитесь на практике
Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
2. Программирование не похоже на подготовку к тесту
Запоминание всплошную не имеет существенного значения.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из программистов.
4. Накапливать непроверенные наработки — плохая стратегия
Я делал беспорядочные изменения в своем коде и ожидал, что он сразу же заработает. Недостаток этого подхода в том, что проблемы собираются одна поверх другой, и выяснить, что пошло не так, становится затруднительно.
5. Самостоятельно учиться — очень сложно
Обсуждение кода и сотрудничество с другими начинающими разработчиками для большинства людей — лучший способ научиться.
6. Не грузитесь сожалениями
На пути к умению программировать вам встретятся сообщения об ошибках.
Чтобы расти в условиях, когда «наворотить» это неотъемлемая часть дела, вы должны встречать проколы устойчиво.
7. Вам не нужно 5 мониторов
Вопреки голливудскому клише, чтобы быть программистом, вам не нужен безумный каскад мониторов. Компьютер, которым вы владеете сейчас, вероятно, достаточно хорош, чтобы начать программировать. Не тратьте свои деньги.
8. Существует большая разница между заглавной и строчной буквой
Мне потребовалось некоторое время, чтобы привыкнуть к тонким различиям между похожими символами и начать замечать их. Пока вы не привыкнете к этому — может быть довольно неприятно.
9. Попытка понять все — безнадежное дело
Вначале я пытался найти причину каждой встреченной проблемы. Это не обязательно. Компьютеры сложны настолько, что вам всегда будет чему в них поучиться. Всё сразу вы никогда не поймете, и это нормально.
10. Участвуйте в парном программировании как можно больше
Нет более быстрого способа научиться писать код.
11. Изменение плохого кода является частью работы
Раньше я думал, что каждый кусок кода нужно делать идеальным. Но внесение улучшений в ваш код — это естественно. Вы пишете не книгу, чтобы нельзя было изменить её после публикации.
12. Обращайтесь за помощью правильно
Каждому в какой-то момент требуется обратиться за помощью. Когда вы соберетесь это сделать, выполните четыре шага:
- Обобщите детали, которые обнаружили.
- Отчетливо определитесь, что должно происходить по вашему мнению.
- Отчетливо проясните, что происходит на самом деле.
- Конкретизируйте, почему вы думаете, что работать должно по-другому.
Выполнив указанные шаги, очень вероятно, вы придете к решению, даже не обращаясь за помощью. Такой подход способствует целостному рассмотрению проблем.
13. Вам не нужно быть гением в математике
Если вы не «математик», это не значит, что вы не можете быть программистом.
14. Всегда отмечайте маленькие победы
Создавать полезности с помощью кода — по-настоящему круто. Я бы никогда не добрался туда, где нахожусь, если бы не оборачивался и не восхищался удивительными вещами, которые создал по пути.
15. Митапы невероятно ценны
В начале весьма пугало то, как выйти на уровень, на котором я почуствовал бы себя комфортно. Но как только я принял участие во встрече, то понял, что таких же разработчиков, как и я, было множество.
16. Избежание merge-конфликтов делает вас счастливее
Merge-конфликты раздражают. Поэтому, когда я понимал, что могу подобраться к какой-то функции до товарища по команде, чтобы вместо меня разбираться с ней оставалось ему (или ей), я приходил в чрезвычайный восторг.
17. Признавать, что вы чего-то не знаете — это нормально
При программировании первых задач вы можете быть склонны «прикидываться, пока не сделаете». Не надо так — никто не ожидает, что вы будете знать всё сразу.
18. Чтобы получить работу, не требуется 10000 часов
В действительности вам просто нужно быть в общем положительным, быть готовым исправляться и возобновлять деятельную траекторию при столкновении с проблемами. Это занимает гораздо меньше времени, чем 10000 часов.
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
20. Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США. В итоге я усвоил самый важный урок моей карьеры программиста: не бойтесь ситуаций, где вы можете допустить ошибку, если риск это оправдывает. Благодаря такому вы, как разработчик, станете лучше.
21. Алгоритм подобен поиску имени в телефонной книге
Алгоритмы представляют собой пошаговый подход, в котором есть только один правильный следующий шаг. Проще всего себе это представить на примере стратегии, с которой вы искали бы конкретное имя в телефонной книге. Я написал об этом процессе здесь (англ.), если вам интересно.
22. Вы никогда не почувствуете, что готовы программировать по-серьёзному
Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.
23. Программисты никогда не прекращают учиться
Новые технологии появляются постоянно, поэтому преуспевающие программисты — это те, кто продолжает учиться и развивать свое мастерство на постоянной основе.
24. Заставьте компьютер думать как человек
У слишком многих людей складывается впечатление, что нужно думать как компьютер. На самом деле всё наоборот.
25. Программирование — это использование подходящего инструмента для работы
В вашем распоряжении очень много различных открытых библиотек, инструментов и фреймворков. Поэтому вам нужно расширять свой инструментарий разработчика и понимать, какой инструмент больше подходит для решения встретившихся вам задач.
26. Прекратить прямо перед переменами к лучшему — распространенный поступок
Обучение программированию — это большая работа, особенно для уровня, когда вы сможете войти в профессию. Это требует времени и высокой дисциплины, но это осуществимо. Слишком много людей совершают ошибку — завершают массивную работу, едва едва не достигнув желаемого.
27. Научиться программировать нелегко
Но именно поэтому это дело стоящее.
Оглядываясь назад, на самом деле, я очень рад, что вначале был таким наивным. Слабые знания мотивировали меня критически разбираться во всем, что я узнал позднее.
Теперь я могу помогать другим людям в достижении их целей в направлении программирования. Что может быть лучше?
Комментарии (134)
JC_IIB
24.07.2019 15:10-119. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
Это что, правда круто?zolern
24.07.2019 15:53+2Я вам больше скажу — возможно проснутся в 3 часа ночи с офигенной идеей как решить проблему и это и правда очень круто
KongEnGe
24.07.2019 16:21но подавляющее большинство задач не предполагает наличия таких идей в принципе :)
Stalker_RED
25.07.2019 15:29Конечно, подавляющее большинство задач — рутина. Что не отменяет существование интересных задач, пусть не у всех, и не в каждый момент времени.
dimatsourkan
26.07.2019 16:57Ну когда у тебя большой опыт за плечами то да.
Но когда начинал бывало что не знал как решить какую-то задачу, засыпал с мыслью об этом, а на утро решение задачи приходило без особых усилий, и это реально было круто)
zeolant
25.07.2019 11:25В школе и в университете я частенько мог днями а то и неделями решать, так сказать, творческие задачи по физике в рамках подготовки ко всяким олимпиадам, конкурсам. И тогда я действительно мог среди ночи проснуться с готовым решением и броситься записывать. В задачах для бизнеса, я лично за 15 лет с таким не сталкивался. Некоторое время после университета меня это беспокоило, потом я решил что надо расслабится и получать удовольствие от того что есть ). А спустя какое то время вообще перестал дома писать программы, предпочитая активный отдых после работы: велосипед, каяки, бассейн прогулки на природе. Чего и другим советую )
m1khaylov
26.07.2019 16:57или проснуться с утра с решением проблемы, которая еще вчера казалось нереальной.
Kanut
25.07.2019 10:05+1Если иногда и из-за идеи, пришедшей во сне, то это круто. А вот если постоянно и/или из-за кошмаров, то наверное что-то идёт не так :)
pagin
25.07.2019 14:10Согласен. Под вопросом. Потенциально такая жизнь приводит к профессиональному выгоранию
astenix
25.07.2019 16:21Я так находил возможности прохождения миссий в «Commandos» :)
Просто просыпался с ИДЕЕЙ, которая пришла невесть откуда. И обычно это срабатывало.
IgorKh
24.07.2019 15:30Когда вы соберетесь это сделать, выполните четыре шага:
Шаги правильные, даже в плане того что следуя им не обязательно обращаться за помощью к живому человеку, метод утенка отлично работает, проверено многократно.
Free_ze
24.07.2019 17:16+18. Существует большая разница между заглавной и строчной буквой
Автор еще о проблемах с «с» и «с» не слыхал.Phoenix-lib
25.07.2019 01:04Можно сюда же отнести «x» и «х».
Zoolander
25.07.2019 07:59+2а греческие программисты могут добавить ? и;
первая — греческий символ вопроса.
ozonar
25.07.2019 13:39+2Наш тестировщик в ответ на запрос к АПИ отправлял «ОК», и проверял пришло или нет. Я потратил два полных дня чтобы понять что проверял он «OK» в латинской раскладке, а отправлял в русской.
Shiftuia
26.07.2019 16:58Недавно при внедрении пайплайнов не собрался проект. Причина — русская «с» в середине(!) названия класса. Причем на машине разработчика все собиралось отлично.
Java 1.8, gradle 5.5
sbnur
24.07.2019 17:47Сомнительные правила.
Например, 5 — только самостоятельно усвоенные знания могут эффективно применяться, 13 — математика и программирование разные специальности и требуют разного склада ума, 21 — алгоритм необязательно однозначен — путей достижения результата может быть много, и так далее…
Хотя наличие правил всегда лучше их отсутствия — главное помнить про исключения.
deitry
24.07.2019 18:237. Вам не нужно 5 мониторов
У меня на работе один монитор, потому что в материнской плате всего один видео-выход. А закупку новых компов согласовывают уже где-то год.DMGarikk
24.07.2019 20:30+4многие кодят на 15' ноутах и не считают это проблемой
Более того, каждый день на работе вижу 3-4 человек которые сидят перед двумя выключенными мониторами и кодят на ноуте
(хотя я не понимаю зачем так страдать)uvelichitel
24.07.2019 21:55+1Я привык работать за двумя мониторами, мне трудно за 15' ноутом. Любой работой удобней заниматься за большим рабочим столом, разве нет, разве программирование исключение?
DnV
24.07.2019 22:00Программирование по большей части происходит в голове. Да и невозможно одновременно смотреть в несколько мониторов.
0xd34df00d
24.07.2019 22:53+3У меня два монитора. Правый вертикально, на нём код (очень часто в сплите, с двумя-тремя видимыми файлами одновременно). На левом пополам два окна, с какой-нибудь там справкой и с каким-нибудь вспомогательным проектом, свободной консолью, и так далее. И это мне ещё не нужно мой код запускать и на результаты его работы смотреть в этаком графическом режиме (как всякие веб-девелоперы, я слышал, делают, код пошевелил — в браузер посмотрел).
unclejocker
25.07.2019 17:05У меня как раз так — большой монитор для кода и рядом маленький «как у пользователя» чтобы смотреть а как UI будет выглядеть на типовом мониторе в компании.
flancer
25.07.2019 21:07+2Можно очень быстро между ними переключаться просто переводя взгляд. Гораздо быстрее, чем между окнами на одном мониторе по Alt+Tab, проверено на себе. Меня долго уговаривали поставить второй монитор, а потом так понравилось, что поставил и третий. Затем перешёл с Windows на десктопе на Ubuntu на ноуте и стал пользоваться рабочими пространствами (workspaces) на одном мониторе. Их вообще 4 по-умолчанию. Так и отвык от множества мониторов. По большому счёту, удобство — вопрос привычки.
Kanut
26.07.2019 08:31+2Когда нужно дебажить/мониторить вещи, которые происходят параллельно/одновременно, то на мой взгляд на одном мониторе это делать однозначно менее удобно чем на нескольких.
Или скажем когда дизайнишь/правишь GUI, то делая изменения в xaml/css на одном мониторе можно сразу увидеть результат на другом. И это лично для меня гораздо удобнее чем каждый раз переключать десктопы.
Но ясное дело что это всё зависит от задач и привычек конкретного человека :)pprometey
26.07.2019 09:02Да конечно удобнее 2 монитора.
На одном идет разработка, на втором результаты работы. Особенно для фронтенда это актуально.
KvanTTT
26.07.2019 13:36Это не только быстрее, но и легче, так как не нужно тратить микроусилия на комбинацию клавиш и переключение контекста. Хоть и мелочь, но после большого количества начинает раздражать.
myrrc
24.07.2019 22:05+1У меня ноутбук 13', проблем не наблюдается (хотя он с Full HD). Код, который в ширину больше 120-140 символов, наблюдать, имхо, уже сложно (если это не дикий уровень вложенности, а какой-нибудь вызов вроде
mSuperLongVar = std::make_shared<project::subnamespace::SuperLongClass>(...)
Бонусом оказывается не нужна мышь, так как тачпадом можно быстро ткнуть куда угодно.
AllexIn
24.07.2019 22:55+2А где документацию смотрите? Не раздражает альтабаться постоянно?
altai2013
25.07.2019 08:40На днях смотрел видос бывшего гугловского программиста, где он рассказывал, почему для работы можно использовать только макбук (https://youtu.be/BnwB8Oh628Q) и у него задача переключения вкладок (Ctrl+Tab) была настолько востребованной, что он измерял ею производительность ноутбуков. Из забавного: он рекомендовал начинать обучение программированию с покупки макбука, аргументируя это тем, что если вам не нравится процесс работы, то вряд ли вы добьётесь результата.
deitry
25.07.2019 11:04+1А чем плох любой другой годный ноутбук? Три с половиной года пользуюсь одним асусом RoG-серии, с виндой и кубунтой на борту, более чем доволен...
(и сам себе отвечу:) А, ну хотя бы тем, что надо накатывать кубунту вместо того, чтобы взять и пользоваться. Действительно, для обучения может быть и так.
MTyrz
25.07.2019 12:43+2Вот уж у кого что болит…
Для меня накатка нужных ОС на новую машину воспринимается примерно наравне с подключением мышки и прочей периферии, включением в 220 и прочей регулировкой высоты нового стула. Часть необходимой настройки под себя.
Впрочем, у всех свои предпочтения, и мой опыт совершенно не повод всем делать так же. Я и не программер, в числе прочего.
Да, и начинать обучение сразу с покупки MBP… Наверное, отставной гугловский техлид может себе такое позволить, но ему начинать учиться как-то поздновато. А я просто процитирую седьмой пункт обсуждаемой статьи.
Не тратьте свои деньги.deitry
25.07.2019 13:02После ~10 лет общения с линуском для меня это тоже труда не составляет. Но изначальный совет предназначался тем, кто только собирается учиться программировать, и судя по остальным советам, только-только школу окончил.
Для меня самая первая установка убунты была настоящим
красноглазиемприключением — со своей борьбой с драйверами NVidia и сборкой каких-то пакетов из исходников, когда я даже apt-get не освоил, а про git только слышал.MTyrz
25.07.2019 13:26Мне (но с шансами, это тоже личное когнитивное искажение) немножко странно всегда бывает слышать, что человек, который собрался учиться программированию, по умолчанию находится на уровне человека, который умеет включать компьютер: и иногда, если повезет, еще и выключать. Хотя наверное, методологически это более правильный подход.
VADemon
25.07.2019 17:38Не бойтесь, в университете видел начинающих индивидуумов, которые окна с ошибками закрывали в миг, подобно бухгалтерам, а потом задавали вопрос: а почему не работает?
Нулёвый уровень, конечно, грустно видеть, но в учении другим профессиям не ожидают же от человека сразу какого-то стажа? Так что соглашусь, что методология должна исходить от нуля.
deitry
25.07.2019 11:08А ещё можно наклепать рабочих столов. С одной стороны — практически то же самое, с другой — когда на каждом "столе" по нескольку "правильно расставленных" окошек, альт-таб может нарушить
естественныйпорядок вещей.
И одна и та же консолька, выпадающая по f12, на каждом из столов, — спасибо, что ты есть.
trueMoRoZ
25.07.2019 10:59мечтаю о третьем мониторе. и в общем-то пофиг, кто что скажет)
dimatsourkan
26.07.2019 17:11Попробовал как то 3 моника, не зашло, возможно из-за растановки, все три были в ряд, к вечеру шея уже болела из-за перевода взгляда с к райнего левого на крайний правый) Сейча работаю на маке 15, и никакого дискомфорта
andreishe
25.07.2019 00:36Ну тут от видеовыхода зависит. DisplayPort 1.2 (если с версией не напутал) поддерживает daisy chaining (нужны мониторы с поддержкой MST). Я к ноуту подключал 2 внешних 1440p монитора через один разъем.
VolCh
24.07.2019 18:58+5Существует большая разница между заглавной и строчной буквой
Вспоминилось из недавнего: один из разработчиков решил сделать решение одной таски двумя способами, и сделал две ветки c именами, различающимися регистром одной буквы. У всех всё нормально, но у тестировщиков винда и гит (в гит баш) с ума сходил. Потому что винда.
alex_zzzz
26.07.2019 19:37У всех всё нормально, но у тестировщиков винда и гит (в гит баш) с ума сходил.
У тестировщиков работа такая.
maximsukharenko
24.07.2019 19:28+115. Митапы невероятно ценны
В начале весьма пугало то, как выйти на уровень, на котором я почуствовал бы себя комфортно. Но как только я принял участие во встрече, то понял, что таких же разработчиков, как и я, было множество.
Ценность заключается во встрече с такими же людьми, которым некомфортно от своего уровня знаний/умений?
KvanTTT
24.07.2019 19:54+4- Вам не нужно 5 мониторов
Ну и одного маловато.
Dolios
24.07.2019 21:51+1Перешел с 2 фуллхд на 1 широкоформатный. Стало гораздо удобнее.
dipsy
25.07.2019 05:08Тоже перешел некоторое время назад с 2?1К 24" на 4К 28", стало… не очень. Общая площадь меньше, шрифт сильно меньше сделать не получится, в итоге информации перед глазами меньше. Поставил рядом ещё один старый "квадратный" монитор 4:3 в вертикальной ориентации, стало лучше. В итоге советую ориентироваться на общую площадь поверхностей, возможно один 4К монитор диагональю дюйма 34 было бы норм.
Dolios
25.07.2019 09:37Так 4к от 2к ничем, кроме плотности пикселей не отличается же. Я формат монитора сменил.
ScreamPassion
25.07.2019 10:53Если разрешение одинаковое то да, а если на 2к будет 1080р а на 4к 2160р (что как правило и происходит) то разница в рабочем пространстве
нет, не в 4 разавесьма существенна.Dolios
25.07.2019 10:58Разница будет, только если физические размеры монитора пропорционально увеличатся. Если по высоте у вас понитор такой же останется, то пофиг, какое там вертикальное разрешение, хоть 8к.
Переход на широкоформатный монитор дает ощутимую разницу, т.к. такие мониторы физически гораздо шире.
ScreamPassion
25.07.2019 11:01Что???Речь шла о рабочем пространстве, которое практически не зависит от физического размера монитора, а зависит по большей части от разрешения.
Формат кстати, кроме угла обзора по большей части ничего не меняет, ведь рабочее пространство это кол-во пикселей а не их соотношение (если мы видим больше по ширине за счет уменьшения по высоте, рабочего пространства больше не станет).Dolios
25.07.2019 11:06Зависит напрямую и от разрешения и от физического размера. Потому что физический размер букв и элементов интерфейса у вас будет одинаковый, если вы не хотите убить себе глаза. Сравните 4к разрешение на 13" мониторе и на 30". На 30" вы без проблем 3-4 окна разместите, а на 13" только одно, и то будете страдать от того, что все очень мелко. А разрешение у вас будет одинаковое, при этом.
ScreamPassion
25.07.2019 11:07Мииинуточку, вы что издеваетесь?) Тут уже будет зависеть на сколько далеко мониторы будут от глаз.
И да, производители и пользователи мобильных телефонов с вами бы явно не согласились, ведь по вашей логике, телефону в 6 дюймов, вполне себе было бы достаточно 800*600Dolios
25.07.2019 11:13Это вы, похоже, издеваетесь. Все мои мониторы вот уже 25 лет находятся на одном и том же расстоянии от глаз.
ScreamPassion
25.07.2019 11:15Боюсь даже спрашивать, это только у вас или уже есть стандарт?)
В качестве примера — дома 28^4к и я сижу к нему довольно близко расстояние примерно 30-40см, при том что на работе 2*23^1080р от которых я часто сижу на расстоянии выше 60смDolios
25.07.2019 11:19Сколько людей не видел, работающих за компьютером, у всех всегда мониторы в 40-50 сантиметров стоят от лица, попробуйте посмотреть по сторонам.
Подумайте, почему для мобильных специальные мобильные версии сайтов делают, хотя они давно уже имеют разрешение 2к.
ScreamPassion
25.07.2019 11:24Вы правильно сказали, подумайте зачем мобильные имеют 2к
Надо все таки отделять зерна от плевел — на счет мобильных версий, так во первых у них формат другой, во вторых мобильные еще и на кликабельность ориентированны, так же там проблема с тем что их часто держат на большом расстоянии от глаз и даже люди с дальнозоркостью должны иметь возможность не прибегая к очкам быстро получить контент, при этом сохраняя функционал.
p.s. тема сильно поменялась, дальше спорить не вижу смысла.Dolios
25.07.2019 11:27Вы пытаетесь убедить меня и интдустрию в том, что размер монитора не важен и можно его просто поближе к носу пододвинуть, а все производитель и покупатели физически больших по размеру мониторов просто дураки? Давайте на этом закончим, ибо это уже банальный троллинг с вашей стороны.
AllexIn
24.07.2019 22:57Всё упирается не в количество мониторов, а в рабочее пространство.
Лично мне два 24" моника создают достаточно рабочего пространства. При этом даже если рядом третий запихать лучше не станет(пробовал), он просто за пределами активной рабочей зоны оказывается и простаивает.
При этом если взять просто один широкий монитор на полтора метр шириной и пол метра высотой — он тоже прекрасно заменит собой два монитора.
Не в количестве счастье.alsii
25.07.2019 21:10+1у меня 2 27"-монитора. На левом — винда, На правом — debian full-screen под virtual box. При этом винде оба монитора доступны. Так вот над всем этим у меня нависает еще один небольшой 19" монитор, где обычно развернут putty с консолью сервера. И там в tmux живет несколько окон. Ну и иногда туда окошки от Firefox улетают с какой-нибудь докой. Или акробат… Третий монитор подключил пару лет назад, просто понял что нужно.
sergeevaira
24.07.2019 21:19+119. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
А еще дебажить код во сне и утром править найденные ошибки. Жаль не часто случается:)MTyrz
25.07.2019 13:08дебажить код во сне… Жаль не часто случается:)
Не жаль.
Это довольно надежный признак чрезмерного зацикливания и начинающегося переутомления. Следующий шаг — отсутствие ощущения отдыха после сна, ну и дальше в очередь выстраиваются уже всякие спецэффекты.
То есть, сам по себе код во сне — это скорее хороший показатель. Примерно как высокая мгновенная скорость бега: прямо сейчас вы выкладываетесь на полную. Просто если это состояние будет продолжаться долго, больше нескольких дней… По моей личной статистике, три-четыре дня, и пора себя оттаскивать за уши.0xd34df00d
26.07.2019 02:03-1Мне в юношестве, лет в 13-15, когда как раз началось это всё, часто снилось что-то про код, либо что я компилятор и компилирую темплейты, либо что я пишу темплейты
, либо что я Александреску и рассказываю про темплейты.
Брат жив.
MTyrz
26.07.2019 02:28Вам везет.
В юности мне, конечно, снилась домашняя химлаборатория, и сон плохо отличался от яви. Но необходимость ходить в школу это все-таки поправляла, глубоко проваливался я только на мелких каникулах. А в более позднее время…
Последний эпизод был как раз с кодом, писал фигню себе по кайфу, учился чему-то. Дней пять код снился, потом пришел жестокий приступ нейродермита. Нифига не душегреющее ощущение, честное пионерское.
fndrey357
24.07.2019 22:45+11. Учитесь на практике
Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
2. Программирование не похоже на подготовку к тесту
Запоминание всплошную не имеет существенного значения.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из ....
Эти пункты подходят практически для любого технического творчества.
AlexZaharow
25.07.2019 00:20+1Я бы добавил пункт, что ещё придётся программировать себе инструменты для работы. Не все плагины и утилиты написаны.
Roman_Kor
25.07.2019 10:44-124. Заставьте компьютер думать как человек
Действительно, создайте AI, а еще лучше AGI /s
ScreamPassion
25.07.2019 10:5024. Заставьте компьютер думать как человек
А вот лично мне кажется, что это плохая идея… нужно заставлять себя думать как компьютер.Kanut
25.07.2019 12:23Проблематика такого подхода в том что в результате получаются процессы, которые ни один нормальный пользователь понять не может. То есть я бы сказал так: чем «ближе» наш код к процесам пользователей, тем больше нужно компьютер заставлять думать как человек.
А если конечно пишешь код для «машин», то тогда надо самому думать как компьютер :)ScreamPassion
25.07.2019 15:36Но… я не говорил что надо заставлять себя перестать думать как человек))
и да, про пользователей никто и не говорит, перевод все таки о том как лучше программировать, ну а про защиту от дурака, разумеется прописная истина, но это уже кажется немного о другом.Kanut
25.07.2019 15:42Ок, я попытаюсь обьяснить что я имею ввиду и что на мой взгляд имел ввиду автор. Допустим нам надо написать программку, которая будет оформлять какой-то заказ. При этом у нас есть два варианта «подхода» к написанию бизнес-логики: один из них это ориентироваться на нашу архитектуру, а другой на то как люди делают заказ «вживую» и без компьютера. Первый вариант для меня называется «думать как компьютер», а ворой «заставить компьютер думать как человек» :)
И проблема в том что многие программисты даже не пытаются использовать второй подход. Даже когда делают вещи для пользователей. И в результате часто получаются программы, которые у нормального человека вызывают головную боль и непонимание :)ScreamPassion
25.07.2019 15:58Ок, тогда и я попытаюсь объяснить.
Речь все таки идет о том как научиться программировать, и на этом этапе пытаться заставить думать компьютер как человек на самом деле еще рано. К тому же тут речь не о каком то конкретном языке а о программировании в целом.
Да и в принципе, хороший код и юзабилити это немного разные вещи.
А на счет вариантов — для меня думать как компьютер это понимать как выполняется твоя программа на всех уровнях. А думать как человек, это писать полностью абстрагированный код, закрываясь конкретными технологиями.Kanut
25.07.2019 16:01Ок, похоже мы всё-таки почти всё пониманием одинаково. За исключением того о чём сама статья :) Для меня это не об обучении программированию как таковом, а о том что автор до многих вещей дошёл с неким опозданием и по его мнению лучше понять их ещё до того как начать программировать :)
simik2
25.07.2019 15:18Да вообще странная формулировка с претензией на глубину и неоднозначной интерпретацией.
Компьютер в любом случае не думает. И заставить его невозможно.
mayorovp
25.07.2019 10:52Вначале я пытался найти причину каждой встреченной проблемы. Это не обязательно.
Да нет, обязательно. До тех пор, пока причина проблемы не выяснена — проблема не решена, а замаскирована. И только и ждет удобного случая чтобы возникнуть снова.
roscomtheend
25.07.2019 11:14Существует большая разница между заглавной и строчной буквой
В текстах тоже. Это понятно тем, кто кто учился читать-писать не с СМСок или сообщений соцсетей.
возможно проснутся в 3 часа
И понять, что функция, которую использовал в коде во сне не существует. Или что придуманная конструкция физически невозможно или жутко избыточна (это уже про инженерную конструкцию, не про код).
но подавляющее большинство задач не предполагает наличия таких идей в принципе :)
Подавляющее большинство != все и всегда, да и у кого-то их может быть чуть больше (а есть те, кому просто функций из фреймворка накидать для сайта-однодневки и все его задачи сделаны), но для старта, конечно, сложные задачи будут неверным выбором.
KvanTTT
Если совет по поводу мониторов начинающим, то достаточно одного (это как занятие фотографией не стоит начинать с покупки оборудования на многие килобаксы), потом, возможно, придётся потратиться.KongEnGe
25.07.2019 14:24> Подавляющее большинство != все и всегда
Это и есть 28-я вещь, которую нужно знать: ваша работа будет преимущественно унылым рефакторингом или кодингом по плохой спецификации.
cerberus13
25.07.2019 11:29# 13 — после этого читать дальше не стал — смотрел только названия пунктов. Гением — да, но знать надо. Вполне вероятно, что бОльшая часть высшей математики не пригодится, но не факт. Всё зависит от решаемых задач. В любом случае математика необходима.
# 20 — да, каждый может сделать ошибку. От этого никто не застрахован. Но для этого существуют тесты, для этого существует отладка. А создавать продукт с мыслью: «а, даже если где-то накосячу — не беда» ИМХО — в корне неправильно. Ну или полениться проверить до той степени, когда сам уверен в своем продукте.EgDude
27.07.2019 13:26Но в #13 сказано именно «гением». Зачем изменять смысл, а потом самому спорить с этим? :)
AndreySitaev
25.07.2019 12:17Необычайно полезная статья. Мое мировоззрение перевернулось. Вознаградил себя шоколадкой за написанный код и приготовился сделать следующий шаг в обучении, не останавливаясь на пороге новых свершений.
astenix
25.07.2019 16:22Перефразируем
Самостоятельно учиться — очень сложно
Обучение построено на обратной связи и продолжении попыток сделать, наконец-то, хорошо.
Нет фидбэка — нет обучения.s_suhanov
26.07.2019 04:27Ну фидбэк не обязательно должен быть от человека. Пишем приложение и пробуем разобраться с каким-то инструментом — наше приложение и даст нам фидбэк. Так что "самостоятельно" вполне себе учиться можно. Просто сложнее.
astenix
26.07.2019 12:19Точно так. Поэтому все игры обучающие (моментальный фидбэк), и возня с компьютером тоже обучающая (не всегда моментально).
Но программирование подразумевает врубание в абстрактные абстракции, до которых додуматься самостоятельно — невероятно, и продвижение без фидбэка с разъяснениями возможно только с определенного уровня «взрослости в теме». Вы указали как раз этот момент, когда самостоятельность ничуть не вредит, а только обеспечивает базу.
muhaa
25.07.2019 17:06Из личного:
1. Сразу после того как задача решена, пройдите дебаггером по каждой строке, посмотрите значение каждой переменной, подумайте что вы не учли и что может пойти не так. Это займет не много времени, но сильно сократит дальнейшие затраты на тестирование и исправление багов.
2. Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться. После того, как код написан этот комментарий можно удалить или распределить пояснения по коду.
3. Начав работать над новой задачей создайте новый документ и понятными только вам словами опишите концепцию — какова задача и как это будет работать. Без особой необходимости не правьте и не читайте этот документ. После завершения задачи документ можно удалять.
4. Допустим, вы начали писать код, но вас преследует неуверенность, как сделать, чтобы он правильно работал в каждой из возможных ситуаций. Для решения этой проблемы лучше выписать все возможные ситуации и придумать алгоритм решения для каждой из них независимо. Дальше можно подумать как объединить эти N алгоритмов в один универсальный (если это вообще необходимо).
5. Если ваш мозг взрывается от вопросов, какие классы нужно создавать, к какому классу относить конкретную функцию и каковы должны быть принципы взаимодействия этих классов, попробуйте для начала представить (или реализовать) задачу в виде данных, последовательно проходящих через преобразующие их функции. Для любого мозга это всегда проще.
6. Есть программисты, которые умеют создавать приложения с использованием множества фреймворков и шаблонных решений и при этом они совершенно не умеют писать сложные алгоритмы, изобретать и реализовывать сложные концепции. Есть программисты, которые напротив умеют писать алгоритмы и создавать сложные системы, но с большим трудом осваивают чужие фреймворки. На рынке труда себя находят и те и другие.s_suhanov
26.07.2019 04:31Начав реализовывать некую не совсем тривиальную функцию напишите в начале комментарий — что и как здесь будет делаться.
Золотые слова. Еще добавлю про копи-пасту: если копипастите кусок кода (из другого проекта, например), то перенаберите его снова. Ну то есть — закомментируйте то, что скопипастили и наберите этот же код руками (с автокомплитом). Помогает лучше понять, что именно этот код делает и избежать "тупых" ошибок (например, какая-нибудь переменная названа по другому).
echo_mont
25.07.2019 22:46+1где-то тут была статья про «плато» или «долину отчаяния». Она помогла мне больше.
Alcpp
26.07.2019 01:24+1Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США
Задумчиво вспоминает Ариан-5 падающую в океан.
FlyingDutchman2
27.07.2019 13:2824. Заставьте компьютер думать как человек
Дейкстра когда-то сказал (не ручаюсь за точность цитаты): «Использование антропоморфной терминологии по отношению к компьютерам является признаком профессиональной незрелости».
Mixbap
27.07.2019 13:28Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.
Синдром самозванца как по мне один из лучших мотиваторов для программиста, а вот самоуверенность это точно враг
Victor_D
27.07.2019 13:28Для программистов с постсоветского пространства важно ещё одно правило: учите английский.
MechaDuragon
27.07.2019 13:2924. Заставьте компьютер думать как человек
У слишком многих людей складывается впечатление, что нужно думать как компьютер. На самом деле всё наоборот.
Не, ну если быстродействие нас не интересует, то можно и так. Но это скорее относится к интерфейсу, «делайте интерфейс так, что бы пользователям было удобно общаться с ним почти как с человеком».
yolf
27.07.2019 13:30Перевод как будто Promt из детства.
Дальше замечания не к переводчику.
- 8 — Если регистр это проблема, то где же про [0]?
- 16 — Если знаешь о будущем конфликте — можно и предупредить товарищей ведь.
- 17 — Характерно для всех, не только начинающих.
- 20 — Это не ОК, а проблемы документации, проверки Pull Requests, QA.
- 24 — Зачем?
zxweed
10 тыс — это вообще не о чём, гораздо хуже, когда 10 млн
Almet
Ошибки — есть ошибки, какими бы они не были, самое главное — сделать вывод
halted
Программисты, которые писали софт для самолетов Boeing, сделали ошибку ценой в десятки человеческих жизней.
khim
В обоих известных случаях проблема была в том, что программы, действовавшие строго по спецификации, гробили самолёты из-за неправильного дизайна всей системы…
И какой из этого следует вывод, интересно?
CheMAX23
Не «дизайна», а архитектуры, строения или конструкции, в вашем комментарии подходит второе слово, в русском языке дизайн означает совсем другое
khim
Приборка, но, в целом, согласен.
Moskus
Самое смешное, что ваш код реально может сопровождать если не психопат, то человек с психопатическими чертами поведения, которому, по вполне естественному стечению обстоятельств, нравятся сложные структурированные виды деятельности, к которым относится программирование, а неструктурированные явления (к которым относится человеческий фактор, эмоции и т.п.) он будет считать не естественным обстоятельством, а назойливым «багом», который нужно искоренять всеми доступными средствами.
Samoglas
Это похоже на шизоида, которых в IT
всемного.Ни разу не шизофреник и не психопат, лишь акцент в характере.
lunavsegba
Редко, кто знает о шизоидности, приятно видеть такой комментарий)))
Samoglas
Скажем громкое «Нет!» стигматизации акцентуаций характера!
Шизоид скажет тихо, как бы сам себе, не поднимая глаз и уставившись в монитор.
Истероид, глядя на шизоида, скажет нарочито громко, принимая красивые позы.
Эпелептоид ничего не скажет, он пойдет бить тех, кто считает шизоидов психопатами.
:-)
saboteur_kiev
Многие сотрудники совершают ошибки, стоящие миллиарды долларов, и при этом даже не умеют программировать.
Если программист совершил ошибку, которая стоит 10 млн, то чаще всего виноват не только он, а в первую очередь вся цепочка руководителей, которая допустила создание процесса, где такой ущерб может нанести одна человеческая ошибка.