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

“Any application that can be written in JavaScript, will eventually be written in JavaScript.” - Jeff Atwood.
Есть в этом доля правды, сейчас на JavaScript можно написать практически все что угодно. Серверные приложения (вышеупомянутые NodeJS), Веб, мобильные приложения (react native, phonegap, ionic), десктоп, дальше больше.

Мануальные тестировщики УЖЕ не очень нужны, а через 5 лет ВООБЩЕ не нужны будут. Нужны автоматизаторы тестирования, а это Java || Python )))

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

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

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

ладно, и я тогда не будут распинаться… останемся при своих мнениях и встретимся через 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% соответствовать почти всем требованиям.

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