[about] [index] [prev] [2022-09-05 17:57:26+03:00] [7ed8fae8ba93ee71c80dbe6378876977cb67b0a1]

Рекомендации wannabe программистам

За последний месяц меня двое друзей спрашивали на эту тему. Мол, хотят
переквалифицироваться в разработчиков ПО. И ведь я искренне и совершенно
не знаю что можно с чистой совестью рекомендовать им.

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

Во-вторых, мой путь существенно отличается от того что ожидали бы эти
люди: я где-то с 2000-го года активно сижу за компьютером целыми днями,
нигде не обучался этому делу, полностью самоучка, смотрящий в сторону
того что нравилось и интересовало, а не на то, что надо было по работе.
И я знаю не мало людей которые за считанные годы достигают точно такого
же уровня как и я. Хотя и не могу сказать что я был упорным и не
отвлекался на компьютерные игры.

У меня никакой базы по алгоритмам и структурам данных нету. Никогда в
жизни не реализовывал ни одного дерева. Первый, и пока единственный,
двусвязный список я использовал впервые в Си где-то пару лет назад,
чтобы иметь в памяти знание о выделенной памяти libgmp, чтобы при
какой-то нештатной ситуации, особенно при отсутствии памяти, программа
бы не падала с abort()-ом (что по умолчанию делает этот GMP), а штатно
шла по этому списку и подчищала информацию. Максимум до чего я сам
додумывался: сортировка пузырьком и двоичный поиск по отсортированным
данным. И по сути я до сих пор нахожусь на уровне сайтописак, возможно
потому что не читал нужные книжки. Кнута листал, но не более. Даже
"понимание" (чёрт его знает как это описать) указателей пришло спустя
многие годы (d026b3c3e20a717c7fd8aad8f5377c4fc4b90d0b).

Я много задрачиваюсь по инструментам: Vim, zsh и всё подобное.
Преобладающее большинство их знают значительно хуже меня, но это же не
делает меня как программиста хоть на йоту весомее.

Главная головная боль: хотеть обучиться программированию побыстрее, типа
курсов на пару недель, и после этого уже стать сайтописакой, или же
побывать на чём-то гораздо более внушительном типа двухгодичных курсов в
МГУ, после которых наверное уже будешь солидным разрабом из коробки. Но
это долго, не факт что выйдет, плюс время и деньги. И тут у меня
подобного опыта нет вообще, поэтому и какой-либо рекомендации дать не
могу. Видел/слышал и самоучек без профильного образования, которых можно
было бы обозвать übertopsenior-ами. И тех кто курсы какие-то заканчивал,
типа ШАДа Яндексового. И тех, кто только в институте вообще командную
строчку увидел, но после него тоже крутой достойный разраб. И тех кто
живёт в компьютерах, трудоголиках, не отвлекающихся месяцами больше ни
на что. И тех, для кого мир компьютеров заканчивается в 19:00 в будние
дни и у него в голове совершенно другие заботы и увлечения, а разработка
ПО это только работа. И все из них могут быть как крутыми, так и
отстойными профессионалами в итоге.

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

А книг то у меня не так уж и много было (не считая "Энциклопедии
профессора Фортрана" dae3f409bd6b7acd688d3e044aa5d411290d815f):

* Архитектура компьютера (Таненбаум)
* Компьютерные сети (Таненбаум)
* Современные операционные системы (Таненбаум)
* Распределённые системы (Таненбаум)
* UNIX инструментальные средства
* Системное программирование в UNIX
* Perl для системного администрирования
* какая-то книга про дизайн и устройство файловых систем, купленная в
  Евпатории на отдыхе
* тоненькая книжка-справочник по Си
* и так мною любимая A5-формата "Модемы", где был просто сборник статей
  про Фидо, модемы, перевод "Как стать хакером" и что-то про базы и
  основы Unix-ов
* древняя потрёпанная, купленная на развалах рядом с железнодорожной
  станцией, на русском языке, книга по программам Unix SVR4, если память
  не изменяет (какой-то SysV точно был). Где я узнал про roff систему, в
  которой свою первую курсовую в институте написал

Ну и, так сказать, общесемейная "Самоучитель работы на компьютере"
(9584c0476d4b55e6695a16800b663dbef0539cc4), но это вообще просто книжка
которую каждый пользователь обязан бы был знать на тот момент. Но именно
из неё я услышал про Unix и BeOS.

А ещё моё видение идеального мира отличается от принятого большинством.
Проприетарное ПО, systemd и прочее дерьмо я вообще не рассматриваю как
заслуживающее траты на него времени. И с языками программирования
аналогично. Вот знать или Emacs или Vim -- must-have. Git -- тоже. А
дальше уже и много вкусовщины и разные задачи и отрасли.

[leave comment]