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

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

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


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


Без вуза, или если вуз так себе, придется самому руководить этим процессом. А для этого придется немного разобраться что это вообще такое. Потому я и пишу эти посты.


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


1. Верстальщик.

Для верстки требуется знание HTML, CSS и немного JavaScript. Первые два вообще не языки программирования, а последнего требуется не так уж много. Конечно нужно разобраться и в паре инструментов, но это не сложно. А сама область работы весьма наглядна. Так что мощь тех самых абстракций позволяет практически ничего не знать о программировании и всем вот этом, чтобы быть верстальщиком.


2. Front или Back -end разработчик.

Все свободное время от работы верстальщиком вы тратите на изучение JavaScript или PHP, тем более у вас перед носом проходит разработка и вы уже начинаете немного понимать что там вообще к чему. Сама суть абстракций позволяет объяснить на пальцах не вдаваясь в подробности, как работает web. Вы изучите ходовой инструмент и сможете его применять.


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


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


Отвлечемся на старый добрый срачь с чего нужно начинать учиться с C или Python(или какой другой высокоуровневый язык).


C проще Python или Python проще С. На самом деле оба варианты верны.


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


А С гораздо проще Python, в нем нет такого количества абстракций. Это маленький язык. Прославленная книжка Кернигана и Ритчи имеет всего 253 страницы. Вы не сможете с той же легкостью сделать веб-сайт. И может показаться что изучение C не принесет вам никаких достижений, но это не так. Можно ли на C сделать свой «объект» как в ООП и сборщик мусора для таких «объектов»? Можно, если не ставить перед собой задачу сделать что-то идеальное, то еще и не так уж сложно. Такие достижения не смахивают на те что вам понадобятся в реальной жизни, но они дают вам разобраться в принципиальных и важных вещах. Дают прощупать вам те самые абстракции, которые вы заберете с собой и сможете использовать не только с C.


Тут можно остановиться и сказать какие такие ООП, сборщики мусора, эй, мужик, я вообще таких слов не знаю. Откуда копать то скажи!


Ответ будет простой откуда можете. Если вы нигде не учитесь на программиста, попробуйте сделать свой блог. Через пару недель у вас мало чего получится, но узнаете много нового. Вы сможете остановиться и более осмысленно определить что делать дальше. Вы сможете задать себе, интернету и книжкам более конкретный вопрос. Если вы студент и вам преподают только «голимый» C, то задайтесь вопросом, а можно сделать свой бложик на C, ну или хотя бы чтобы какой-то текст в браузере появился?


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


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


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


Откуда можно начать:


https://www.codecademy.com/ - очень простое начало.


https://compscicenter.ru/ - заведение из СПб, с серьезной программой, по которой можно сориентироваться в том что вроде должен знать программист. Есть записи лекций.


https://stepic.org – русскоязычные курсы, есть курсы и от товарищей указанных выше.


https://www.coursera.org – множество англоязычных курсов и серий курсов.


Даже книжка C++ за 21 день неплохое начало, если вы не остановитесь на ней.

2
Автор поста оценил этот комментарий
Как стать программистом? Уот так уот. Проф юмор ;)
Иллюстрация к комментарию
1
Автор поста оценил этот комментарий

На фото снизу двоичный код

0100100001100101011011000110110110001101111

Шо-нить значит?

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

Бложик на C. А месье знает толк)

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

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

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

Имхо - работа с астракциями нужна именно в ООП-программировании.

По поводу выбора языка для обучения: лучше ориентироваться на максимальное количество вакансий в вашем городе.

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

раскрыть ветку