izhersky_roman
@izhersky_roman
Я изучаю математику и программирование

Знания, которые не устаревают. С чего начать?

Привет

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

В связи с этим параллельно проходя онайлн курс, я планирую изучать следующие дисциплины и области знаний (далее идет перечисление):
Математика

Умение решать логические задачки
Абстрактное мышление
Физика
Логические и интеллектуальные игры - шашки, шахматы, преферанс

Математическая подготовка:
Теория множеств
Логика
Дискретная математика
Лямбда-исчисление

Информатика:
Системы счисления
Структуры данных
Алгоритмы

Парадигмы:
Императивное программирование
Функциональное программирование
Логическое программирование

Железо:
Архитектура компьютера

Софт:
Операционные системы
Сети и протоколы
Базы данных
Компиляторы интерпретаторы

Разное:
Владение командной строкой
Системы контроля версий
Автоматизированное тестирование
Управление конфигурацией

Мне 30 лет. В школе математика нравилась, но после 9 класса вектор моего развития пошел другим путем. Хочу вернуться к истокам. Программирование манит меня уже 12 лет (!). Делал попытки начать учиться самостоятельно, и эти попытки разбивались в пух и прах. Сейчас есть четкое убеждение, что это реально, главное делать маленькие шаги каждый день для достижения цели.

Прошу помочь структурировать от важного к второстепенному данные разделы знаний, как понять, что мне может пригодиться в ближайшие пол года, год для освоения профессии Back-end разработчика (node.js) с нуля.
  • Вопрос задан
  • 6963 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Прям совсем с нуля, или вы за эти 12 лет какие-то успешные шаги сделали?

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

Самое важное: начните писать код прямо сейчас. Пусть это будет простенький hello world, или тупые и неэффективные решения задачки про 99 бутылок, пусть хоть самый ужасный говнокод, но это бесконечно лучше, чем вообще никакого.

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

Может Мартин Гарднер зайдет, попробуйте. Не стоит даже пытаться глубоко погружаться в каждую тему которую он описывает, но у него довольно много интересного и по математике и по логике.

Пусть это будет как "фоновое" чтение, может даже получится читать эти книги для развлечения. Никаких мгновенных преимуществ в программировании они не дадут, но однажды вы можете заметить, что понимаете ПОЧЕМУ одни алгоритмы работают быстрее других.

Для быстрого погружения в кодинг попробуйте пройти colobot, например. Он довольно легкий, ориентирован для детей. С интернете полно подсказок и готовых решений, но не стоит ими злоупортеблять и копировать код без понимания его работы.

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

Вот вам еще один список: Карта развития веб-разработчика
Здесь уже не только неустаревающие знания, но неплохо бы потратить на каждую из этих тем хоть по 10 минут, чтоб понимать о чем речь. Конечно, для нормальной работы на многие из этих тем придется потратит намного больше времени.
Ответ написан
Пригласить эксперта
Ответы на вопрос 17
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Зачем тут этот длинный список? Просто выберите язык, возьмите по нему учебник для начинающих и изучите. Потом учебник посложнее, потом учебники по стандартной библиотеке, популярным фреймворкам, прикладным применениям изученного языка и т.д. и т.п. И конечно же, постоянная практика. Большая часть пунктов из списка придут сами в процессе профессионального роста, а с некоторыми можно так никогда и не столкнутся за 18 лет работы, будучи при этом востребованным и высокооплачиваемым специалистом.
Ответ написан
Griboks
@Griboks
С таким списком вы закончите учится в 50 лет. Впрочем, до пенсии теперь время есть.
Предлагаю такой вариант:
Проходите самоучитель по js
С оставляете список тренировочных проектов (сервер, прокси, бд и т. п.)
Делаете первый проект и записывает все недостающие знания
Учите все это
Повторяете со следующим проектом.

Проекты должны быть учебные и включать все необходимые особенности языка и требуемых знаний. Они должны постепенно усложняться и увеличиваться в размерах.
Ответ написан
@kuftachev
Этот список можно назвать "переспать с одноклассницей". Или даже со всеми из них.

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

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

Вам нужно максимально быстро начать. Шаги:

0. Выбрать что учить. Объективно нужно учить web, так как это проще и порог входа на много ниже, в тот же геймдев математика реально нужна. А вот со стеком технологий главный критерий выбора - это там, где есть знакомые (мы сейчас говорим о человеке 30 лет, а не о вчерашнем студенте, который знает все из вашего списка и компании в принципе готовы в него вложиться на перспективу).
Именно то, что Ваш знакомый сможет привести Вас на первое место работы может сыграть решающую роль, а потом уже можно переходить имея стаж в промышленной разработке.

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

2. По сути, список книг может выглядеть где-то так:
2.1. "Язык программирования {название языка}", или learn.javascript.ru по... понятно по какому языку.
2.2. Книга по основной технологии (по Java - Spring, C# - ASP.NET, Python - Django, PHP - что скажет знакомый, так как имя им Легион). На этой стадии начинаете активно кодить, чтобы разобраться с тем, как это базово работает.
2.3. Я бы посоветовал прочитать "Практика программирования" Кернигана и Пайка, там больше на Си, но не нужно особо вчитываться в код, а читать, пока понимаете, потом откладываете и начинаете читать через время. Там есть базовая информация об алгоритмах и структурах данных, от стажёра/джуниора никто не будет требовать владения алгоритмами полноценно, но знаю что такое О и какие-то базовые алгоритмы хотя бы покажет, что человек чем-то интересуется. Это вместо того, чтобы на этом этапе штудировать алгоритмы и структуры данных полноценно.
2.4. Вот для пхпешников есть классная книжка Метта Зандстра (может в буквах чуть ошибся, но Гугл исправит), вот там есть базовые паттерны как обычные, так и архитектурные. Можно почитать, чтобы не залазить в дебри паттернов на этой стадии.

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

Успехов!!!
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Упс. Я бы понял, если бы такой вопрос задавал студент.... В наших вузах "умение учится" постигают практически как строевую в царской армии - "сено-солома-сено-солома...". В итоге, конечно, получается, но воспоминания оставляет незабываемые :)

Зачем Вам все это? (если вышка уже есть, конечно)

Для того, чтобы программировать, не нужно пожалуй и десятой доли этого. Нужно... программировать :) Выбираешь язык, начитываешь минимальный уровень, чтобы написать что-то типа "привет-мир-программирование-это-кайф" - и вперед.

Далее по ходу станет понятно, какие нужны знания. Знание ради знания - годится только для игроков в что-где-когда и прочую туфту...
Ответ написан
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Не устаревает логика. А математика, физика, программирование - это лишь набор инструментов для реализации Вашей задачи.
Правильно говорят, что нужно учиться не php (например), а нужно учиться программировать...
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Вы забыли добавить таблицу умножения.

А серьезно - если за 12 лет вы не решились из этого списка ничего не узнать, то зачем эти вопросы на тостере? Чтобы выяснить как можно учить поменьше чтобы изучить что-то?

Нужно просто делать.
Ответ написан
Вам однозначно на hexlet.io.
Сам такой (мне 31), только математического бэкграунда нет.
Вот эту кучу всего изучать - точно не надо, психическое расстройство можно заработать в худшем случае, в лучшем просто заколебётесь и потеряете интерес.
Вообще, во всей этой нашей истории изучение "в стол" - это худший путь, который только можно себе запланировать.
И нафига вообще такое жёсткое планирование и категоризация вещей в природе?
Ответ написан
@red-barbarian
Не устаревает:
1.1. умение понимать и создавать алгоритмы. (попробуйте порешать олимпиадные задачи на тренажере)
1.2. умение делать систему из сложной простую. Т.е. умение делать из системы существующей в реале некую модель, выделять абстракции, разбивать их. Делать эту модель легко дополняемой и изменяемой. т.е. то что называют архитектура.
1.3. умение писать код который будет понятен через полгода. или другим людям. Это называют чистым кодом.

2. Английский язык. )))
3. Умение учиться.
4. Желание вникать. (на самом деле это тоже умение)
остальное добавится.
Ответ написан
@vism
Программирование зачастую = логичное мышление и инженерное видение

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

Лучше попробуйте устроиться на работу джуном. Лучше сразу понять что это не ваше, чем потратить 10 лет готовясь стать программистом, ага?
Ответ написан
mindtester
@mindtester
http://iczin.su/hexagram_48
тут чел сообщал (на подобный вопрос), что начал кодить после 50, и встал на ноги (до это был комерсом, одно время успешным, но потом фортуна .. мягко говоря отвернулась)... если память не изменяет - ему сейчас 60, и он с удовольствием, и успешно кодит бек на php

во всей этой истории, ключевое слова - начать
Ответ написан
MisterN
@MisterN
Ниче не понял. Че там конкретно сказано про знания, которые не устраивают? Кого не устраивают, он бы вас иначе на работу взял? В каком контексте и как вас упрекнули в отсутствии подготовки?
Вы через год хотите получить стажеровку, чем вы до этого времени питаться планируете? Вопрос риторический и это не мое дело. Я просто хочу сказать, что план должен быть реальным, а не абстрактным и отвечающим вашим финансовым запросам. Вы ведь зарабатывать тоже планируете. На энтузеазме далеко не уйдешь. Опять же, зарплатные ожидания - очень существенная корректирующая инфа, чтобы ориентироваться на конкретику. Хотя от региона зависит. Следовательно, нужно посмотреть на вакансии в вашем городе. Что-то мне подсказывает, что вакансий на php случайно может оказаться существенно больше, чем на ноду. Да, холиварный вопрос конечно, но вы конкретно у себя по вакансиям посмотрите. Html и js в вебе знать нужно определенно, вопрос на каком уровне. Опять же, вопрос к вакансиям, что в них требуется. Надо понимать конечно, что в вакансии описан кандидат мечты и возможно даже описание составлено левым человеком. Но процентов на 70 наверное нужно соответствовать. Процент конечно на глазок, по ощущению. И это тоже от региона зависит.
Непонятно, что вы уже знаете, от какой точки отсчета начать советовать, какие курсы проходите. Полному нулю по js в частности и проганью вообще подайдет книга Выразительный javascript. И неплохо подтянуть к ней es6. Я плохо помню, кажется там нет стрелочных функций и прочих новых плюшек. Тем не менее, это книга, которую я бы смело рекомендовал абсолютно зеленому новичку в программировании, не смотря на всю свою неприязнь к js. Следующий шаг после прочтения с решением задач - изучение вакансий, подтягивание под вакансии. Может у вас ангулар популярен, надо доосвоить. Или правда вздохнуть и пойти учить пыху, требования покажут.
По ос, я сижу на линуксе. Не могу сказать про винду. Но вам надо уметь установить ноду, то, что еще надо для развертывания ваших проектов (от вакансии отталкиваемся. У меня это постгрис, ngnix, апач, джанга с вытекающими, у вас не знаю), устанавливать ide любимую и все. Я к тому что не надо прям глубоко знать все. Я читал книги по линукс, но честно позабывал все и помню только то, что постоянно юзаю. Вам выше давали ссылку на карту развития разраба. Там была книга Пецольда. Код, тайный язык информатики. По архитектуре компа збс. Но для того, чтобы получить стажировку оно вам не надо. На то, что у вас в плане куча лишнего вам уже сказали
Начал прогать в 28 или может чуть раньше, сейчас 33, прогаю, зарплатой доволен, скучать не приходится, иньересно, рабочий день тьфу-тьфу нормированный, без стаханства.
Я конечно море ошибок наделал. Извиняюсь
У нас ночь и пишу с телефона
Ответ написан
@potan
Функциональный программист
Теория множеств и логика очень полезны. Остальное может подождать.
Если время есть и быстрое нахождение работы не обязательно, лучше начинать со статически типизированных языком. Фронтенд хорошо пишется на Elm. Для бекенда на ноде можно использовать Purescript.
Ответ написан
fred55rus
@fred55rus
Математика точно не нужна, только если вы не собираетесь программировать графику. Максимум понадобится арифметика. Да и вместо того, чтобы играть в шахматы, лучше продумывать архитектуру очередной программы.
Ответ написан
@SimasikS
Я есть
Начните с html, попробуете прочуствуете среду, как оно быть девелопером, дальше попробуйте какой-то скриптовый язык, по мере этого всего вы будете находить решения с областей(логики, математики и прочего). Если будете смотреть курсы и сейчас откроете учебник за 10 класс по геометрии - далеко не уедете(ИМХО). Просто нужно сделать первый шаг "туда". Со временем будет костяк, поймете, что огромная часть времени разработчика - это не писать код и даже не продумывать алгоритмы, а просто поиск решений, которые уже кто-то создал. Из практики в игровой индустрии(к 20 году жизни, успел поработать игроделом), могу сказать, что в дискретную математику или геометрию не очень силён был, но из-за среды кучи готовых решений и материалов, темы которые нужны мне были прямо в тот момент разбирались за вечер. А вот если бы я сидел и досконально вызубривал бы всё что нужно и не нужно, время бы уходило, я бы ничего не делал бы и всё было бы зря. Поэтому если цель стать программистом то нужно идти в эту сторону, пробовать, ошибаться и ещё пробовать.
Ответ написан
lukoie
@lukoie
Бесполезное занятие, изучать всё это.
Это нужно для низкоуровнего, для сложных задач.
Вы же еще не знаете вообще зайдет ли.
Потому для начала хтмл+цсс. Потом пхп жээс и эскюэль. Потом гит, ларавель, паг, лесс/сасс, блэйд, вебпак, .
Ну и примерно тогда Вы поймете нужно ли Вам что-то типа сиплюсплюс, жава, котлин, гоу и прочие штуки.
И вот если тогда поймете что жить без них не можете - учите то что надо(тогда будете понимать что именно из этого надо), и параллельно уже свой список подтягивать.
А то что Вы написали пока это ни о чем. Оно Вам точно не нужно, зуб даю.

Софт:
...
Компиляторы интерпретаторы

пока рукалицо
потом поймете почему это выглядит немного неуклюже. пока можете просто убрать этот пункт из списка.
Ответ написан
@Vlad_fox
вижу в списке
Физика
. А где, позвольте, астрономия, химия, геометрия, основы жизнедеятельности и труд (тоже наверное полезный предмет)?

правильный вопрос
что мне может пригодиться в ближайшие пол года, год для освоения профессии Back-end разработчика (node.js) с нуля.

как правильно тут заметили начните с поиска чего-то вроде javascript для чайников, или сайт-учебник языка - их немало в сети. читайте, выполняйте уроки.
теория Вам пока особо не нужна, теория систематизирует и организовывает практику, а Вам еще нечего систематизировать. На базовых примерах наработаете базовые навыки, выучите термины, усвоите понятия. а потом можно будет к этому цеплять понемногу теорию из книг потолще и посерьезнее.
Ответ написан
Andrey_Pletenev
@Andrey_Pletenev
Pletenev.com
1) В области знаний, который вы назвали "Софт" все устаревает.
2) Есть еще одна неустаревающая область знаний, которую вы упустили. Все перечисленные области можно отнести к технической сфере. Но софт пишется человеком во взаимодействии с другими людьми и для людей. Поэтому полезно понимать, как минимум, про такие вещи, как личная эффективность и работа в команде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы