Язык программирования

Рассказывай сказки. Нужны и те и эти. Серьезно.

обожаю подобную аргументацию : “серьезно” ))))

Распинаться лень, уж извини )

ладно, и я тогда не будут распинаться… останемся при своих мнениях и встретимся через 5-7 лет))))

а еще лучше, спросим у ТС, как ему удалось устроиться мануальщиком)))) по H1B :lol:

Вот это верное решение. Ты сказал коротко и емко, я так же возразил. Идеально!
Нечего понимаешь, хайпить на ночь глядя )

я ответил ТС в контексте его вопроса, там было 2 пункта

  1. отложенная ситуация 5-7 лет
  2. возможность перебраться в США с помощью полученных навыков.

оба этих пункта делают мануальщиков бесперспективными

п.с. у меня полдень)))

На самом деле это очень сложный вопрос, на который не дать однозначного ответа. В области программирования есть много факторов, влияющих на выбор.
Основные это - уровень входа, востребованность на рынке, возможность подработки и аутсорса.
По уровню входа примерно такая картина: Тестирование - Web - Основные Языки (C, Java, Python)
И тут надо хорошо понимать, что чем ниже порог входа, тем больше конкуренция, особенно у новичков. Но и чем выше порог входа, тем выше средняя зарплата.
Востребованность на рынке нужно смотреть индивидуально, но вполне может быстро меняться
Возможность подработки - самое хлебное это Web - сайтов много всяких разных, большинство вещей делается единолично. Тестирование так же дает возможность подрабатывать удаленно. А вот та же самая Java накладывает ограничения, т.к. почти все разработки командные, но и это постепенно перестает быть проблемой.

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

Как вы уже написали (а в начале я вас хотел поправить) HTML это разметка и ни в коем случае не ЯП :slight_smile: Рад, что вы это понимаете. Мое мнение - Java. Все таки столько лет держаться в верхушке рейтинга это чего-то да стоит. И даже если тенденция резко уйдет на тот же ДжС не так то просто сразу отказаться от языка, который так много лет было в окололидирующих позициях. Плюс Джава это ООП, а это все ж таки важно к пониманию как минимум. Люди, которые чисто пишут на ООП Джавы - имею высокие шансы выйти в дамки. Выберете себе один язык и не распыляйтесь даже на несколько, основы других языков - да, это плюс, но конкретизируясь на Джаве, вы обеспечиваете ей больше внимания а = больше пользы и полученных знаний. Плюс Джава это кроссплатформенность и некоторая похожесть. Скажут вам пересесть на С# или С++ - проблема не велика и быстро решаема.

На С# да, а вот плюсы - нет, другая вселенная, хоть и язык похож. Ну и помимо собственно языка и ООП - алгоритмы и структуры данных - маст хэв, без этого можно и не подходить к собеседованиям.

Три раза нашел работу не зная ни алгоритмов ни структур данных :pardon: и на интервью ни разу не спрашивали о них

На Java пишете??

Вы знаете, все таки кому как повезет)) И уточните пожалуйста, на какую вакансию вы собеседовались? Да и я надеюсь вы согласитесь, что лучше прийти более подготовленным, чем менее подготовленным :whats_up:

Набрасайте книги, которые самые оно, по алгоритмам и структурам данным. Типа классика по этой теме. Спасибо.

начинал с С#, сейчас Java + Kotlin.

ну первая была джуниор три года назад, теперь SDI I. Я не утверждаю, что это НЕ нужно знать. Я о том ,что фраза “не знаешь алгоритмов - нет смысла ходить на собеседования” некорректна

Не хочу никого обидеть, но фразу

я бы сформулировал так: “не знаешь алгоритмов - не надо писать код, пожааалуйста”. А то смотришь потом, как LinkedList через for (i = 0…) итерируют, и плачешь кровавыми слезами. Там не так много для новичка надо-то.

Классика по этой теме - это Кнут “Искусство программирования”, но это серьезное чтиво надолго. Jump start книжек, к сожалению, не знаю, но базу можно и в википедии почитать для быстрого старта. Собственно минимальная база будет Lists, Vector(Array), Queue, Stack, Trees (Binary, BST, balanced; Red-black tree просто чтобы знать, что такое есть), Hash Table, Heap; из алгоритмов - сортировки (Bubble, QuickSort, Merge, HeapSort, достаточно понимать основной идеи, как они работают и чем отличаются), обход в глубину и ширину, бинарный поиск (ну и поиск во всех тех структурах данных, ну да это одна из основных операций); оценка сложности алгоритмов (big O достаточно). Если этого показалось мало - графы, Дейкстра, топологическая сортировка, связность.

Прямо перечислили главы из

Cracking the Coding Interview: 189 Programming Questions and Solutions
Книга, Гейл Лакманн Макдауэлл

Узнав о выигрыше в DV Lottery, я тоже решил сменить профессию (моя старая вообще не конвертируется). Выбрал программиста. На данный выполнил всего пару очень небольших и дешевых проектов, но наличие заказов даёт мне небольшую уверенность в том, что я могу советовать что-то и вам.

Во-первых, язык программирования - это инструмент. Если вы хотите стать программистом, то неправильно задаваться вопросом “какой язык выучить”.
Давайте сравним программиста с другой созидающей профессией - строителем. Если бы вы хотели стать строителем, то ваш вопрос звучал бы так: “Каким инструментом (мастерком, молотком, носилками, экскаватором) мне стоить овладеть, чтобы стать программистом?”. Да и само слово “программист” охватывает огромное количество специализаций и направлений, например, как и “врач”. А аббревиатуру “IT” можно сравнить со словом “медицина”. Есть анестезиологи, хирурги, нейрохирурги, фармацевты, педиатры… Так же и с программистом. И каждое направление программирования может требовать от программиста совершенно разных навыков. Поэтому самый первый шаг - определиться с направлением, которое будет вам интересно. Что вам нравится больше всего? Может, вы больше к графическому дизайну предрасположены, а может к алгоритмам и Big Data? Постарайтесь при этом максимально эффективно наложить свои навыки на будущий выбор. То есть вы сказали, что неплохо знаете математику - используйте это. Посмотрите развивающиеся направления вроде нейросетей - очень перспективно, как мне кажется, да и специалистов мало пока что, а математика там очень нужна. Вам будет очень сложно уделять время обучению, если вы выберите самый прибыльный вариант, но при этом нелюбимый. Помните: иногда маляр, который любит свое дело, получает больше профессионального художника, который рисует свои картины от безысходности.

Во-вторых, определившись с направлением, посмотрите на сайтах вроде github, stackoverflow и т. д. вакансии по вашему направлению. Увидите список инструментов (ЯП, фреймворки, библиотеки), которые вам понадобится изучить. И в любом случае изучить сам язык - не такая уж и сложная задача. Самое главное - знать паттерны разработки. Чтобы результат вашей работы сочетался с результатами работы других программистов, чтобы вы могли разговаривать с более опытными программистами на одном языке. То есть недостаточно знать, что есть такие вещи как классы, интерфейсы, объекты. Важно знать, когда нужно всё это использовать.

В-третьих, начните обучение с практики. В своё время я начал читать книги, сделав упор на теорию. Без практики это абсолютно бесполезно. Книги полезны при решении конкретных примеров и для общего развития, для понимания базовых принципов, но без практики это пустая трата времени. Если вам трудно придумать задачу для практической тренировки, то зайдите на сайт upwork, freelance и т. д. Посмотрите, какие проекты востребованы. И выполните их. Просто для обучения, не размещая ставки, не претендуя на вознаграждение. Так вы убьёте двух зайцев. Прежде всего, вы получите необходимые практически навыки. Ну и приятным бонусом вы получите портфолио, которое можно показать потенциальному работодателю / заказчику. Можете также принять участие в open source проектах на том же github. Это будет огромным плюсом на интервью.

Я не смог определиться с направлением, поэтому стал учить C++. Он считается одним из самых сложных языков, но фишка в том, что большинство современных языков написаны на С++. Зная С++, мне значительно проще понимать, как работают другие языки. Например, самое главное отличие Java от С++ это кросс-платформенность за счет JVM, автоматическое управление памятью, полная заточенность под ООП и наличие библиотек, облегчающих разработку программ для использования в веб-проектах, но в целом синтаксис очень похож на синтаксис C++, так же как и алгоритм его работы.

1 лайк

Как учить язык программирования? Легко и просто - минимальная теоретическая база и кодить, кодить, кодить. кодить, …, кодить. Я посмотрел пару интенсивов по созданию простейших игр и все понял. А вот когда решил сам написать - начал затыкаться на мелочах. И чем больше пишу, тем больше понимаю, что понимаю еще мало. Зато искать ошибки стало проще. Ну и хорошая IDE помогает писать быстро.
Я могу теорию знать мало, зато дописываю 3 простейших игры - сапер, тетрис и пятнашка. Может еще змейку напишу для практики (займет от силы пару вечеров). А потом займусь базами данных.

Я по всей стране нашел все джуниорские вакансии и выписал из них требования. Думаю еще месяц - полтора и я буду на 200% соответствовать почти всем требованиям.

Просто о чем хочу сказать - без практики все ваши знания пшик.

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

А сейчас на рынка востребованы разработчики приложений Android?
Я PHP-программист. Сейчас изучаю Andoid Studio, начал создавать свои приложения.