А как все же стать программистом? Часть 1.
Не раз встречал посты и комментарии с этим вопросом, исходящим от людей желающий изменить свою жизнь или же тех кто уже учиться на программиста.
Disclaimer: все ниже написанное, естественно, ИМХО.
Для начала стоит разобраться чем же орудуют эти самые программисты.
Языками программирования? Да. Средами разработки? Конечно. Тетрадками для записей и белыми досками? Точно.
Но мы все сведем к абстракциям. Мир программирования это вообще волшебная страна кровосмесительного союза различных абстракций, что-то вроде «Игры Престолов».
Наше определение абстракции — это некоторая идея, модель, в которой выражены все нужные нам свойства и отброшено все лишнее.
Как работает компьютер? Есть два различимых состояния, один из которых ноль, а другой единица — это простенькая абстракция. А та высокотехнологичная штука, в экран которой вы сейчас пялитесь — нечто иное как конкретная реализация этой абстракции, и кстати многих других.
Абстракции выстраиваются в непостижимую пирамиду, когда на основе базовых абстракций строятся более сложные, а из них еще более и так далее, пока вы не сможете насладиться гифкой с мимимишным котиком. В этом и есть сила и мощь, позволяющая сосредоточиться только на необходимом, не требуя досконального знания реализаций всех абстракций от начала и до конца.
Кодер vs Программист
Это не общепринятая градация, а способ показать некоторую разницу между уровнем знаний и навыков. Затратив год вы можете найти работу в IT, но вы станете кодером. Другой человек потратив 4 года станет программистом, но в начале своего пути зачастую получает те же деньги. Из-за этого вспыхивают холивары на тему нужно ли вообще программисту образование. Отвечу заранее — нужно, корочка зачастую не обязательна, а вот знания нужны.
И так кто такой кодер? Кодер это человек знающий конкретную реализацию каких-то абстракций. Выучил HTML, CSS, PHP и JavaScript за год и пошел работать. Он знает конкретный инструмент, он может решать конкретные задачи. Чем не работник? Такой многим нужен.
Программист же потратил 4 года, в его резюме написаны те же HTML, CSS, PHP и JavaScript. Но в чем же разница? А в том, что программист изучал (ну мы считаем что он действительно изучал) абстракции лежащие в основе этих инструментов. Он лучше понимает свой инструмент, он лучше понимает решаемые проблемы. Соответственно и качество его работы лучше и способен он на большее. Ну это помимо того, что он знает много умных слов, конечно. Но начальную позицию он может получить такую же как и кодер.
Эта градация в первую очередь нужна самому себе, чтобы понимать на каком уровне развития ты находишься. Твой уровень не зависит от количество потраченного времени, а от качества знаний. Из наших вузов часто выходят замечательные кодеры, потратившие на это 4 и более лет.
Выйдут новые версии PHP, инструменты устареют, роботы покорят человечество, а абстракции будут жить вечно.
P.S. Это небольшое вступление, написанное на пробу. Дальше планирую написать о том какие навыки нужны, что такое предметная область и конечно же ссылки на конкретные материалы.