9

А как все же стать программистом? Часть 1.

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

Disclaimer: все ниже написанное, естественно, ИМХО.


Для начала стоит разобраться чем же орудуют эти самые программисты.


Языками программирования? Да. Средами разработки? Конечно. Тетрадками для записей и белыми досками? Точно.


Но мы все сведем к абстракциям. Мир программирования это вообще волшебная страна кровосмесительного союза различных абстракций, что-то вроде «Игры Престолов».

Наше определение абстракции — это некоторая идея, модель, в которой выражены все нужные нам свойства и отброшено все лишнее.


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


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


Кодер vs Программист


Это не общепринятая градация, а способ показать некоторую разницу между уровнем знаний и навыков. Затратив год вы можете найти работу в IT, но вы станете кодером. Другой человек потратив 4 года станет программистом, но в начале своего пути зачастую получает те же деньги. Из-за этого вспыхивают холивары на тему нужно ли вообще программисту образование. Отвечу заранее — нужно, корочка зачастую не обязательна, а вот знания нужны.


И так кто такой кодер? Кодер это человек знающий конкретную реализацию каких-то абстракций. Выучил HTML, CSS, PHP и JavaScript за год и пошел работать. Он знает конкретный инструмент, он может решать конкретные задачи. Чем не работник? Такой многим нужен.


Программист же потратил 4 года, в его резюме написаны те же HTML, CSS, PHP и JavaScript. Но в чем же разница? А в том, что программист изучал (ну мы считаем что он действительно изучал) абстракции лежащие в основе этих инструментов. Он лучше понимает свой инструмент, он лучше понимает решаемые проблемы. Соответственно и качество его работы лучше и способен он на большее. Ну это помимо того, что он знает много умных слов, конечно. Но начальную позицию он может получить такую же как и кодер.


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

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


P.S. Это небольшое вступление, написанное на пробу. Дальше планирую написать о том какие навыки нужны, что такое предметная область и конечно же ссылки на конкретные материалы.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

еще кое что:
- программист никогда не программирует программу. программист всегда решает задачу. из какой-либо области. и должет в этой области что-то понимать.
или кто-то должен четко поставить ему задачу - но тогда он не программист а говно.

задачи начиная от приема заказов пиццерии заканчивая софтом для МКС. или контроллером буровой станции.или бухгалтерской или какой другой системы. или...

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


на самом деле получается программист-микроэлектронщик, программист-нефтяник, программист-космонавт, программист-вэба, программист-бухгалтер, программист-движков-для-игр и никак иначе. 

охватит все темы невозможно.

но программист-программист в вакууме не существует.


программисты далеко не универсальны. научится новым трюкам можно - но...


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

в 99% вы будете хуячить формы для бухгалтерии или причесывать бизнес-процессы под изменение законодательства. интересных и оплачиваемых мест работы мало и на всех не хватает.


- многие спиваются или становятся социопатами. хорошие программисты. но странные люди.

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


- программирование унылых задач - унывно.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий
т.е. программист должен еще владеть прикладной областью на достаточно высоком уровне

Скорее всего кто-то просто не может в распределение обязанностей, бизнес-процессы и нихуя не знает про устройство крупных компаний. Если не знаешь наверняка, то просто молчи. Такую ахинею можно написать только в бреду. Доверить важные вычисления не штату математиков, физиков, химиков, а недопрограммист-недо(химику/физику/математику) - это пиздец проекту. А быть крутым в обоих областях ты просто физически не сможешь из-за объема знаний.


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

раскрыть ветку (2)
Автор поста оценил этот комментарий

девочки-наборщицы пост.


не путай программистов с ними.

а такие не далеко от клининг-менеджера ушли.

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

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


т.е. по твоему бухгалтер может корректно составить и описать ТЗ? да ты бредишь.


и да, для модемов/телеков/телефонов то железо и прошивки математики делают...

в общем, сидишь на своих сайтиках\формочках - и сиди, не высовывайся.

---------------------

ключевое отличие программиста от наборщика кода - то что он способен понять и корректно составить ТЗ. а без знания предметной области это не возможно.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Видишь ли, в сети есть открытые источники данных, а не мои собственные утверждения.

-----

Если посмотреть на биографию и книги Маргарет Гамильтон(https://ru.wikipedia.org/wiki/Гамильтон,_Маргарет_(учёный)), которая участвовала в программе Апполон и была ведущим руководителем, то узнаем много интересного. В частности то, что она не была высококлассным специалистом в области космических аппаратов и контактировала с другими группами через программную инженерию, т.е. промежуточный формальный язык.


Если посмотреть на программу "Буран" по запуску космического шаттла, то опять же мы утыкаемся в промежуточные языки моделирования типа ДРАКОН(https://ru.wikipedia.org/wiki/ДРАКОН) и CASE-технологии. Программисты, которые работали над этими проектами, не знали на высоком уровне предметной области. Они общались через промежуточный язык.


Опять же, если вы зайдете на сайты NASA или "Российские космические системы" и посмотрите вакансии, то вы не найдете в списке требований высокие знания математической базы и физики применительно к космическим полетам. Однако Вы найдете высокие требования как к программисту и знания программной инженерии. Еще можете найти очень много описаний того, как люди там работают.


Увы, но Ваши утверждения оказались ложными по поводу софта для МКС.

------

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

------

т.е. по твоему бухгалтер может корректно составить и описать ТЗ? да ты бредишь.

Для этого существует целое направление, которое называется "Системная инженерия". Она учит, как надо разрабатывать проекты, не будучи специалистом в области применения. Жизненный цикл системы, бизнес-моделирование и бизнес-процессы позволяют построить ТЗ на основе знаний специалистов и не требует от программиста глубокого погружения в область знаний.


Доводилось ли тебе когда-нибудь слышать о IDEF? CASE-методолгии(https://ru.wikipedia.org/wiki/CASE)? UML? Вообще о проектированнии программного обеспечения(https://ru.wikipedia.org/wiki/Проектирование_программного_об...), при котором ты просто строишь модель проектируемой системе в тесном контакте со специалистами?


Об этом писалось куча книг, об этом твердит каждый уважаемый специалист, но нет. Появляется такой человек как ты и утверждает, что они все идиоты и не лечатся. Надо быть специалистом в смежной области, что бы строить программное обеспечение.


Это не так.

------

Да и просто, в компании может быть до 3-4 разных подразделения, где каждый человек отработал по 10-20 лет на своей должности и знает все нюансы. Если ты утверждаешь, что программист с 10-летним стажем ДОЛЖЕН знать в смежных областях больше, чем все эти 3-4 специалисты с огромным стажем, то это откровенная ахинея. По другому я это назвать не могу. Даже в двух областях сложно обогнать того, кто является спецом в одной области.


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

------

и да, для модемов/телеков/телефонов то железо и прошивки математики делают...


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


И да, программирование прошивки не делает тебя экспертом в электротехнике.

------

Вот извини, но все, что ты говоришь просто расходится с реальностью. Я не знаю откуда ты вообще этот бред взял, но так работают разве что только программисты-1С обслуживая фирмы с бабками-бухгалтерами которые отстали от жизни еще 10 лет назад. И у меня от этого "экспертного заявления" вчера дико бомбануло.

ещё комментарий
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества