SRP не говорит о том, что модуль должен делать одну задачу.
Сам Мартин написал об этом в своей книге Clean Architecture:
Of all the SOLID principles, the Single Responsibility Principle (SRP) might be the least well understood. That’s likely because it has a particularly inappropriate name. It is too easy for programmers to hear the name and then assume that it means that every module should do just one thing.
дальше пишет
Make no mistake, there is a principle like that. A function should do one, and only one, thing. We use that principle when we are refactoring large functions into smaller functions; we use it at the lowest levels. But it is not one of the SOLID principles—it is not the SRP.
Вот что-то такое я и хотел бы видеть в статье. Ну то есть, если ты хочешь зарабатывать деньги программированием, то на каком-то этапе надо представлять, как именно это делается и какие есть особенности. Да хотя бы в языках программирования.
Уже лет пять использую Java для промышленной backebd разработки. Мой выбор скорее всего был бы предвзятым. Я скажу, что работы на Java много, проекты интересные и тд. Я этого не хочу. Я лучше предложу минимум, чтобы можно было потом самостоятельно выбрать.
Питон. Мне вот сложно сказать, насколько он подходит для первого языка, у меня был Паскаль. Но интуитивно это хороший язык для обучения. Не вижу проблемы в магии. Да, нет типов, зато мультипарадигменный, на нём можно много разных концепций учить - удобно. Плюс синтаксис прост и понятен. Соглашуть разве что в том, что программу обучения надо выбирать аккуратно.
Да и не Питоном единым, есть специализированные языки обучения. АВС вроде как называется.
В общем, не надо так уж сильно полагаться на типы данных и подкапотную работу, не в ней дело.
Каждый по разному начинал. У меня был путь через С++/С/Java и естественно я буду проталкивать его как проверенный. Многим Python становится интуитвно понятным после другого С-подобного языка и им кажется, что Python идеально подходит для новичков т.к. он простой. Он простой для вас, потому что вы понимаете как внутри устроены циклы, что такое типизация данных, как работает синтаксических сахар и тд. На Pascal тоже многие научились программировать, вроде как этот язык специально созавался для этого. Мне кажется, что изучение через Си не хуже.
Как раз таки на Python этого делать не рекомендую. Много всего язык скрывает под капотом. Эта магия вредит при изучении основ программирования.
На Си как раз-таки лучше всего можно показать как работать с типами данных, памятью. Книги предложенные мною ограждают читателей от трудностей с которыми сталкиваются профессиональные программисты, но в то же время дают достаточно знаний и понимания того как устроены многие вещи.
Выше есть большой топик на тему того, что С++ нужно выбросить, что там куча неопределенного поведения, нужно разбираться как работает компилятор и тд. Я скажу, что нет не нужно. Книга расчитана на новичков, она просто не дает материал такой, упражнения ограничены этим материалом.
Чего не увидел, так это то, специализации: фронт, бек, ембед, мобайл и т.д. Для выбора провессии это важно и будет влиять на то, что учить дальше.
Это выходит за рамки того, что я хотел. Я старался дать материал для изучения фундаментальных вещей, знаний, которые будут применимы во всех областях.
фронт - фреймворки рождаются и умирают каждый день. Это лишь забьет голову ненужными вещами. Курс CS50 дает достаточно знаний JS/HTML/CSS. Чтобы понять что такое front
back - тоже много всего. java, c#, php, go, python + нужно изучать разные фреймворки. Курс CS50 дает возможность поработать на уровне бэка через python и flask. Дается возможность понять что такое back.
embed - я им не занимался и не могу чего-либо предложить. Мне кажется, что это не для новичков т.к. скорее всего нужно будет изучать больше чем обычно
mobile - придется поискать материал самостоятельно. благо тут выбор не велик. iOS - swift, objective c. Android - kotlin/java. Есть еще flutter и react native. Но опять же я не занимался этими вещами достаточно, чтобы дать материал в котором я буду уверен.
При выборе направлений и стека лучше отталкиваться от доступных вакансий. Где-то может преобладать Java, где-то C++ и тд. Поэтому дать что-то одно, чтобы всем заехало трудно
Смотря на отзывы об онлайн курсах, я склоняюсь к мнению, что они были созданы исключительно для заработка на людях. Возможно единицы как-то вывозят курсы, кому-то помогает какой-то бэкграунд из прошлого, у кого-то есть знакомые, которые им как-то могут помочь. Остальные просто отсеиваются.
Не сразу это как?
Это пройти собес на позицию junior разработчика. В рекламе курсов ведь так пишут. А про цель нынешних курсов я уже писал.
Для Джуна много знаний не надо, на курсах их можно получить при желании. Вся разница что в вузе дают базу с которой легче прогрессировать.
Много не надо. Вот я и сделал roadmap(очень похож на ВУЗовскую программу) для этого. Считаю это необходимым минимум для джуниора.
Ну они и не ходили на онлайн курсы, а изучали все сами, что я и предлагаю делать. В то время было куча инструкций на разных форумах. Просто нужно было уметь пользоваться поиском и мозгами.
Я вспомнил как давным-давно локально поднимал денвер и dle). У моего интернет провайдера была локальная сеть по городу. Люди поднимали свои сервера для разных вещей, даже был свой торрент трекер
Возможно. Но многое всегда зависит от человека и его бэкграунда. Многие истории успеха не показывают важные ключевые моменты.
Те же алгоритмы невозможно запомнить, они забудутся
Их нужно понимать. Любая программа - алгоритм.
на работе мало где требуется
Это имеет место быть. Все зависит от сферы деятельности. Мне лично пригождались пару раз. Но это не значит, что их не нужно изучать. Придет момент, когда для решения задачи будет полезно воспользоваться хотя бы классическим алгоритмом. Человек, который изучал его, увидиет, что его можно здесь применить. Это как с математикой - не знаешь, когда она пригодится
для собесов достаточно просто освежить знания либо просто мелком прочитать про бинарные деревья.
Это смотря в какую компанию собеседование проходит
И далеко не везде они нужны. Опять же в библиотеках всё реализовано.
Чтобы уметь пользоваться, нужно понимать как они работают. Взгляните на веб, который задыхается от тонный фреймворков. У меня есть пример из жизни, когда один разработчик затащил в проект целую библиотеку для решения одной проблемы. Пришел другой разработчик, удалил библиотеку и решил проблему в пару строчек кода. Первый разработчик не знал алгоритмов для работы с изображениями, второй знал. Это все было в мобильной разработке при работе с QR кодами. Кстати в той же мобильной разработке полезно знать алгоритмы и структуры данных, добиваться производительности кода, чтобы не разряжать батарейку пользователю.
Я обычный разработчик. Статья - мое видение того как можно стать разработчиком. Я взял материал из своего личного пути, потому что советовать то чего я не знаю, не собираюсь. Постарался взять некий минимум, который позволит войти в IT. Я рекомендую фундаментальные вещи, которые не изменелись с годами, чтобы потом было проще пойти в любое направление в IT. В чем-то даже есть пересечение с основными дисциплинами, которые изучают в ВУЗе на первых курсах. Просто в ВУЗе это может быть расстянуто по времени т.к. есть другие дисциплины.
Я читал много отзывов об образовательных платформах. У меня сложилось мнение, что людям как раз-таки не хватает фундаментальных знаний компьютерных наук, навыкох программирования и алгоритмического мышления, чтобы успешно закончить курс, за который они заплатили деньги. На курсе их бросают изучать фреймворки, которые рождаются и умирают быстрее чем ты их успеешь освоить.
В моем окружении есть люди, которые хотели попробовать себя в IT. Некоторые во время прохождения курса CS50 поняли: понравится им это или нет. Тем кому понравилось пошли дальше, кстати не только в back/front/mobile, но и в data science.
А что вы подразумеваете под изучением языка? Навыки программирования начинают развиваться с амого начала курса CS50. В книгах есть лекционный материал с упражнениями, выполнение которых также развивает навыки программирования. Задачи по программирования развивают алгоритмическое мышление. Остальное это теоретический computer science, либо необходимые навыки, которые пригодятся после.
Тормозная страничка может раздражать тысячи людей каждый день. Например, они вынуждены заходить на нее по разным причинам. Можно отнести это к приченению массового вреда здоровью. Может даже есть исследования на эту тему.
Тормозная страничка может привести к тому, что клиент уйдет пользоваться другим продуктом. продажи компании упадут, в итоге может произойти сокращение целой команды
Сейчас автоматизируют практически всё к чему притрагиваются. Фронт страничка на форме заполнения платжного поручения может подвиснуть в ненужный момент и отправить не те данные для денежного перевода
А страничка стала тормозной не сразу, а постепенно. В итоге чтобы исправить ошибку придется переделывать все с нуля. А это может в итоге вылиться в еще большие траты, чем если бы сразу нанять хорошего специалиста
Наверное никому не хочется работать в одной команде с человеком за которым нужно переделывать работу. Да и самому человеку скорее всего будет неприятно.
Выпускники вуза если все 100% пойдут в программирование не покроют и 10% потребности в программистах.
Предположим, что про 10% это правда. Считаете причиной этому является появление большое количество онлайн плафторм с курсами, которые смогут закрыть нехватку кадров? Я вот считаю, что они созданы инфоцыганями, чтобы высосать как можно больше денег из людей.
И не всем нужны уберпрограммисты, кому то надо и формы шлепать и прочее.
Выпускники меда тоже не покрывают все потребности. Ко многим узким специалистам очень большая очередь. Я бы не хотел, чтобы кто-то закончил онлайн курс терапевт_за_6_месяцев и потом лечил меня, даже поставить банально укол или взять анализы крови. Я бы не хотел жить в доме, который проектировал человек с курсов архитектор_за_6_месяцев. Люди сами понимают, что это сложные и ответственные профессии и никому в голову не придет(я очень надеюсь) идти на такие курсы. Почему тогда можно создать поток неквалифицированных IT-специалистов? Вы считаете, что в этой профессии меньше ответственности?
Откуда такое пренебрежение к работе связанное с фронтедом? Вы считаете, что они не должны быть квалифицированными специалистами? Потом мы жалуемся, что веб тормозит
Я старался выбрать то, что уже давно как-то устоялось. Чтобы было уже много ресурсов для изучения. Си, С++, Java подходят идеально. Я считаю, что С++ отлично закрывает пробел между Си и Java в обучении. Никакой другой язык на его месте в этом списке я не хотел бы видеть.
Про SmalTalk я мало что знаю, ничего по нему посоветовать не могу, и наверное это было бы неправильно с моей стороны.
С чего автор решил, что кроме тяжелейших вузов спб и мск, которые выпускают очень ограниченное количество студентов, в остальных учат хотя бы 1/10 того, что он себе выдумал?
Я учился в УрФУ, по специальности информатика и вычислительная техника и у меня было это всё в программе.
А вот лишний мусор и излишек знаний, - ни к чему. База, потом кодить и узнавать уже по мере недостатка знаний нужное, - быстрейший путь. Слишком быстро устаревают знания, чтобы изучать их впрок без надобности
А что устарело из того, что я предложил? Си, С++, Java, алгоритмы, архитектура ЭВМ, паттерны проектирования, техники чистого кода? Я старался дать список того, что даст фундаментальные знания для того, чтобы можно было уверенно войти в IT
WHAT? В одном соглашусь, что ООП подход можно и в т.н. процедурных язвах использовать. Я хотел про это написать, но застремался, что придут фанаты крестов и наставят минусов.
Да, тут где-то на хабре статья была про ООП на Си. Есть также книга Экстремальный Си, там вроде как показывают как добиться ООП.
Я не заставляю людей сидеть над С++ вечно. Это одна книга с лекционным материалом и упражнениями по ООП. Упражнения больше заточены под ООП, а не под особенности С++, про которые читатель даже не узнает т.к. цель книги не про них
Да, выпускников не хватает. Специалисты уезжает за границу. Я считаю, что курсы еще не достигли того уровня, чтобы готовить специалистов, которые смогут сразу войти в промышленную разработку. Конечно, если у них есть такая цель, сейчас я вижу, что просто происходит высасывание денег
Халявщики в ВУЗе будут всегда. Однако есть и не халявщики, которые каждый год все-таки занимают рабочие места. Каждый год их должно становиться больше, учитывая отток из специалиство из стран СНГ
SRP не говорит о том, что модуль должен делать одну задачу.
Сам Мартин написал об этом в своей книге Clean Architecture:
дальше пишет
Кажется, что код, написанный на Java 21 не эквивалентен коду на старой версии
в старой версии есть обработка исключения при вызове
parseDouble
в отрефакторенной версии этого нет
Попробуйте почитать "Математика в огне"
https://www.litres.ru/jason-wilkes/matematika-v-ogne-neskuchnyy-neuchebnik-58155368/
to be determined
что-то мне подсказывает, что это не такие уж и редко используемые возможности языка. про них я узнал всего лишь из одной книги https://www.ozon.ru/product/yazyk-programmirovaniya-c-lektsii-i-uprazhneniya-147927650/?sh=Lrd_YwAAAA, которая рассчитана на начинающих.
Уже лет пять использую Java для промышленной backebd разработки. Мой выбор скорее всего был бы предвзятым. Я скажу, что работы на Java много, проекты интересные и тд. Я этого не хочу. Я лучше предложу минимум, чтобы можно было потом самостоятельно выбрать.
Каждый по разному начинал. У меня был путь через С++/С/Java и естественно я буду проталкивать его как проверенный. Многим Python становится интуитвно понятным после другого С-подобного языка и им кажется, что Python идеально подходит для новичков т.к. он простой. Он простой для вас, потому что вы понимаете как внутри устроены циклы, что такое типизация данных, как работает синтаксических сахар и тд. На Pascal тоже многие научились программировать, вроде как этот язык специально созавался для этого. Мне кажется, что изучение через Си не хуже.
Как раз таки на Python этого делать не рекомендую. Много всего язык скрывает под капотом. Эта магия вредит при изучении основ программирования.
На Си как раз-таки лучше всего можно показать как работать с типами данных, памятью. Книги предложенные мною ограждают читателей от трудностей с которыми сталкиваются профессиональные программисты, но в то же время дают достаточно знаний и понимания того как устроены многие вещи.
Выше есть большой топик на тему того, что С++ нужно выбросить, что там куча неопределенного поведения, нужно разбираться как работает компилятор и тд. Я скажу, что нет не нужно. Книга расчитана на новичков, она просто не дает материал такой, упражнения ограничены этим материалом.
Это выходит за рамки того, что я хотел. Я старался дать материал для изучения фундаментальных вещей, знаний, которые будут применимы во всех областях.
фронт - фреймворки рождаются и умирают каждый день. Это лишь забьет голову ненужными вещами. Курс CS50 дает достаточно знаний JS/HTML/CSS. Чтобы понять что такое front
back - тоже много всего. java, c#, php, go, python + нужно изучать разные фреймворки. Курс CS50 дает возможность поработать на уровне бэка через python и flask. Дается возможность понять что такое back.
embed - я им не занимался и не могу чего-либо предложить. Мне кажется, что это не для новичков т.к. скорее всего нужно будет изучать больше чем обычно
mobile - придется поискать материал самостоятельно. благо тут выбор не велик. iOS - swift, objective c. Android - kotlin/java. Есть еще flutter и react native. Но опять же я не занимался этими вещами достаточно, чтобы дать материал в котором я буду уверен.
При выборе направлений и стека лучше отталкиваться от доступных вакансий. Где-то может преобладать Java, где-то C++ и тд. Поэтому дать что-то одно, чтобы всем заехало трудно
Смотря на отзывы об онлайн курсах, я склоняюсь к мнению, что они были созданы исключительно для заработка на людях. Возможно единицы как-то вывозят курсы, кому-то помогает какой-то бэкграунд из прошлого, у кого-то есть знакомые, которые им как-то могут помочь. Остальные просто отсеиваются.
Это пройти собес на позицию junior разработчика. В рекламе курсов ведь так пишут. А про цель нынешних курсов я уже писал.
Много не надо. Вот я и сделал roadmap(очень похож на ВУЗовскую программу) для этого. Считаю это необходимым минимум для джуниора.
Ну они и не ходили на онлайн курсы, а изучали все сами, что я и предлагаю делать. В то время было куча инструкций на разных форумах. Просто нужно было уметь пользоваться поиском и мозгами.
Я вспомнил как давным-давно локально поднимал денвер и dle). У моего интернет провайдера была локальная сеть по городу. Люди поднимали свои сервера для разных вещей, даже был свой торрент трекер
Я бы сказал, что есть проверенные пути. Многое зависит от самого человека
Возможно. Но многое всегда зависит от человека и его бэкграунда. Многие истории успеха не показывают важные ключевые моменты.
Их нужно понимать. Любая программа - алгоритм.
Это имеет место быть. Все зависит от сферы деятельности. Мне лично пригождались пару раз. Но это не значит, что их не нужно изучать. Придет момент, когда для решения задачи будет полезно воспользоваться хотя бы классическим алгоритмом. Человек, который изучал его, увидиет, что его можно здесь применить. Это как с математикой - не знаешь, когда она пригодится
Это смотря в какую компанию собеседование проходит
Чтобы уметь пользоваться, нужно понимать как они работают. Взгляните на веб, который задыхается от тонный фреймворков. У меня есть пример из жизни, когда один разработчик затащил в проект целую библиотеку для решения одной проблемы. Пришел другой разработчик, удалил библиотеку и решил проблему в пару строчек кода. Первый разработчик не знал алгоритмов для работы с изображениями, второй знал. Это все было в мобильной разработке при работе с QR кодами. Кстати в той же мобильной разработке полезно знать алгоритмы и структуры данных, добиваться производительности кода, чтобы не разряжать батарейку пользователю.
Я обычный разработчик. Статья - мое видение того как можно стать разработчиком. Я взял материал из своего личного пути, потому что советовать то чего я не знаю, не собираюсь. Постарался взять некий минимум, который позволит войти в IT. Я рекомендую фундаментальные вещи, которые не изменелись с годами, чтобы потом было проще пойти в любое направление в IT. В чем-то даже есть пересечение с основными дисциплинами, которые изучают в ВУЗе на первых курсах. Просто в ВУЗе это может быть расстянуто по времени т.к. есть другие дисциплины.
Я читал много отзывов об образовательных платформах. У меня сложилось мнение, что людям как раз-таки не хватает фундаментальных знаний компьютерных наук, навыкох программирования и алгоритмического мышления, чтобы успешно закончить курс, за который они заплатили деньги. На курсе их бросают изучать фреймворки, которые рождаются и умирают быстрее чем ты их успеешь освоить.
В моем окружении есть люди, которые хотели попробовать себя в IT. Некоторые во время прохождения курса CS50 поняли: понравится им это или нет. Тем кому понравилось пошли дальше, кстати не только в back/front/mobile, но и в data science.
А что вы подразумеваете под изучением языка? Навыки программирования начинают развиваться с амого начала курса CS50. В книгах есть лекционный материал с упражнениями, выполнение которых также развивает навыки программирования. Задачи по программирования развивают алгоритмическое мышление. Остальное это теоретический computer science, либо необходимые навыки, которые пригодятся после.
Тормозная страничка может раздражать тысячи людей каждый день. Например, они вынуждены заходить на нее по разным причинам. Можно отнести это к приченению массового вреда здоровью. Может даже есть исследования на эту тему.
Тормозная страничка может привести к тому, что клиент уйдет пользоваться другим продуктом. продажи компании упадут, в итоге может произойти сокращение целой команды
Сейчас автоматизируют практически всё к чему притрагиваются. Фронт страничка на форме заполнения платжного поручения может подвиснуть в ненужный момент и отправить не те данные для денежного перевода
А страничка стала тормозной не сразу, а постепенно. В итоге чтобы исправить ошибку придется переделывать все с нуля. А это может в итоге вылиться в еще большие траты, чем если бы сразу нанять хорошего специалиста
Наверное никому не хочется работать в одной команде с человеком за которым нужно переделывать работу. Да и самому человеку скорее всего будет неприятно.
Да, так и есть сейчас
Предположим, что про 10% это правда. Считаете причиной этому является появление большое количество онлайн плафторм с курсами, которые смогут закрыть нехватку кадров? Я вот считаю, что они созданы инфоцыганями, чтобы высосать как можно больше денег из людей.
Выпускники меда тоже не покрывают все потребности. Ко многим узким специалистам очень большая очередь. Я бы не хотел, чтобы кто-то закончил онлайн курс терапевт_за_6_месяцев и потом лечил меня, даже поставить банально укол или взять анализы крови. Я бы не хотел жить в доме, который проектировал человек с курсов архитектор_за_6_месяцев. Люди сами понимают, что это сложные и ответственные профессии и никому в голову не придет(я очень надеюсь) идти на такие курсы. Почему тогда можно создать поток неквалифицированных IT-специалистов? Вы считаете, что в этой профессии меньше ответственности?
Откуда такое пренебрежение к работе связанное с фронтедом? Вы считаете, что они не должны быть квалифицированными специалистами? Потом мы жалуемся, что веб тормозит
Я старался выбрать то, что уже давно как-то устоялось. Чтобы было уже много ресурсов для изучения. Си, С++, Java подходят идеально. Я считаю, что С++ отлично закрывает пробел между Си и Java в обучении. Никакой другой язык на его месте в этом списке я не хотел бы видеть.
Про SmalTalk я мало что знаю, ничего по нему посоветовать не могу, и наверное это было бы неправильно с моей стороны.
Я учился в УрФУ, по специальности информатика и вычислительная техника и у меня было это всё в программе.
А что устарело из того, что я предложил? Си, С++, Java, алгоритмы, архитектура ЭВМ, паттерны проектирования, техники чистого кода? Я старался дать список того, что даст фундаментальные знания для того, чтобы можно было уверенно войти в IT
Да, тут где-то на хабре статья была про ООП на Си. Есть также книга Экстремальный Си, там вроде как показывают как добиться ООП.
Я не заставляю людей сидеть над С++ вечно. Это одна книга с лекционным материалом и упражнениями по ООП. Упражнения больше заточены под ООП, а не под особенности С++, про которые читатель даже не узнает т.к. цель книги не про них
Да, выпускников не хватает. Специалисты уезжает за границу. Я считаю, что курсы еще не достигли того уровня, чтобы готовить специалистов, которые смогут сразу войти в промышленную разработку. Конечно, если у них есть такая цель, сейчас я вижу, что просто происходит высасывание денег
Халявщики в ВУЗе будут всегда. Однако есть и не халявщики, которые каждый год все-таки занимают рабочие места. Каждый год их должно становиться больше, учитывая отток из специалиство из стран СНГ