QA Fest — конференция №1 по тестированию и автоматизации. Финальная программа уже на сайте >>
×Закрыть

Какой язык улучшать дальше?

Всем привет!
Я знаю на твердом уровне джуна языки Java, PHP, Javascript. И размышляю в следующем порядке, если выбираю:
1) Java => то улучшаю Spring
2) Javascript => учу React + Redux
3) PHP => учу Laravel.
Мне интересен вэб, и все три стези, хоть они и совершенно разные.
Поделитесь, пожалуйста, своим мнением какой язык мне из вышеперечисленных улучшать и почему. На дворе 2019 год.. Прошу приводить аргументы из размышлений, а не из «мне нравится, по-этому пускай учит это».
Спасибо!

P.S. англ знаю на upp-int+ уровне, пожалуйста, не пишите о изучении англ :)

LinkedIn

Лучшие комментарии пропустить

Не читая топик — английский

Ну а если вчитаться внимательно то либо

2) Javascript => учу React + Redux

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

Какой язык улучшать дальше?

однозначно, английский.

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Владислав, если вам интересен full-stack разработка, советую рассмотреть наши тренинги IT-Discovery. У нас есть и Java Backend, и Front-end(Angular), и NoSQL, и DevOps (Docker, Kubernetes)

Спасибо за предложение, но я уже работаю фул стэк девом.

Це ж топчик тема на якій можна безкінечно ловити перегляди. Цим засмічений весь інет.

Хочешь 100/час в эльфии — учи английский, немецкий и жабу.

Хочешь 500/мес в африке и после 40 сплав по Днепру — учи веб-хипстерщину.

В нашій африці 500 і більше вже має Вася строітель. Ви там в Ельфії трохи не в курсі теперішньої економічної ситуації в Африках.

В нашій африці 500 і більше вже має Вася строітель.

Ах, до чего злобный «кондитер-мародёр» страну довёл.

Ну да, это ненадолго. Сейчас клоун начнёт, всё в порядок приведёт — и станут синьор-кодерки по 500. :)

Хз скільки заслуги тут Пороха. Основа це заробітчанство. Влив купи бабла в економіку, дефіцит робочої сили.

Хочешь 100/час в эльфии — учи английский, немецкий и жабу.

и немножко само программирование еще

Какой язык улучшать дальше?

однозначно, английский.

Учи как писать плагины для WordPress — и голодным не будешь

Надо плагин написать?

Кому-то в данный момент — очень надо. Но не мне.

Прошу приводить аргументы из размышлений, а не из «мне нравится, по-этому пускай учит это».

так из входных данных есть только что нравятся и изучены джава, джаваскрипт и пхп. Плюс предполагаю, что что интересует веб. Или может интересует не только веб? Или может интересуют не только перечисленные языки, но и смежные с ними? Поэтому предлагаю ниже разные варианты для разных языков — вдруг какой-то из этих вариантов заинтересует хотя бы для хобби-проектов)

Мне интересны все три стези, хоть они и совершенно разные.

Что имееется ввиду под тремя стезями? Разные сферы применения одного языка/платформы? Разные сферы применения перечисленных трех языков? Или применение трех выбранных языков для одной сферы?
В общем могу предложить так (на выбор):

--- Если Java/JVM:
— Kotlin (мобилки, но можно и для веба, и для десктопа заюзать)
— Groovy on Grails (для веба), Groovy + Griffon (для десктопа)
— LibGDX или LWJGL (для геймдева)

--- Если JavaScript:
— Node.js + Express.js (для сервера)
— Electron или NW.js (для десктопа)
— на выбор Vue.js, React, Angular (для фронтэнда)
— Phaser.js (для геймдева)
— TypeScript + выбранный js-фреймворк.
— Ну или что-то типа Elm, ClojureScript или подобное)

--- Если PHP:
— если не Laravel, то можно Phalcon, либо что-то в таком духе.
— изучать связки PHP с Nginx, PostgreSQL, MongoDB, Redis)

--- Если сугубо веб-бэкэнд вне зависимости от языка:
— попробовать посмотреть в сторону Python+Django/Flask, Ruby on Rails или ASP.NET Core (или вообще Elixir + Phoenix) — вдруг понравится, и захочется копать именно что-то из этого (ну мало ли). :-)

Благодарю за столь подробный ответ! Мне действительно нравится направление вэб. Пробовал андроид программирование на джаве, не зашло :( И понял, что вэб — моё.

--- Если JavaScript:
— Node.js + Express.js (для сервера)

Вычеркиваем Express.js, вписываем Koa2. Потому что это почти тот же экспресс (от тех же разработчиков), но новее.

Так вроде Koa на Экспрессе и основан, хотя могу и ошибаться.

Вон в ленте соседней топик, пхп-шник хай лоад видеосервис лидит, я думаю он не учил все языки подряд, а больше алгоритмы, структуры данных и прочий CS осваивал. Так что лучше устрой марафон собесов и поищи проект который будет технически сложным, если не возьмут попроси фидбэк что надо знать/уметь чтобы у них работать.
Хотя конечно фидбэки и собеседования у нас в большинстве оставляют желать лучшего.

sql — в raw виде, почти на всех собеседованиях будут спрашивать про left join и group by. можно нырнуть глубже, тот же bill karwin sql antipatterns
linux — хотя бы уметь простые bash скрипты, ну и core utils — sed/less/tail/grep
docker, kubernetes — сейчас вроде стали де-факто системой деплоев , там есть свои особенности, к которым надо привыкнуть
для развития мозков и кругозора — haskel, rust, haxe

п.с. laravel/js можно (нужно) в связке с vue учить

Если цель комфортно за большие деньги протирать штаны, то наверное Java-backend самое то.
От того что будешь фуллстеком богаче и здоровее врядли станешь.

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

фуллстек это обычно когда на миддла-бекендщика вешают фронтенд и говорят «ну ты же выкрутишься как-то». при этом самому программисту от этого денег добавляется аж 0.

а миддла-бекендщика вешают фронтенд и говорят «ну ты же выкрутишься как-то»

вообще не вижу проблем, наоборот хорошо — человек узнает весь стек по вертикали , ну и повторюсь — изучать что-то новое интересно

Ну фулстеком быть интересно. Можно склепать средней сложности проект в одиночку, например. И даже если работаешь фронтом/бэком, но знаешь обе части — это помогает в работе.

Я только за, что бекендщик знает js (вебдевелопер обязан знать) и умеет делать фронт. Но фуллстек дает менеджменту пространство для манипуляций мидлами для воплощения своих/заказчика фантазий. Обычно если попросить синиор-бекенд сделать немалый объем работы по фронту, то можно и на увольнение напороться — расценивается как неуважение.

расценивается как неуважение.

уважение измеряется деньгами

Спасибо за ответ! На данный момент мне нравится направление фул стэк :)

Як на мене, TypeScript full stack developer — один із найперспективніших напрямків розвитку.

Благодарю за совет! Пробовал, не зашел :(

Это Вы его в команде не пробовали. Если попадется проект целиком на TS, мнение изменится. У нас, например, весь проект на TS, но потребовалось написать часть «для неподготовленных клиентов» на чистом ES6 на 3500 строк кода. Я очень хорошо представляю недостатки JS по сравнению с TS. Рекомендую сделать еще один подход.
Ну, и да: хоть Redux требуется в 80% случаев, попробуйте MobX. На крайний случай — redux-symbiote. А то так и утонете в бойлерплейте, боясь ввести еще один action, лепя костыли на state.

Хм, вы правы, пробовал сам, без команды кодить. интересная мысль, спасибо учту!

О, есть у меня вопрос про TS. Вот если есть класс, у него метод описан как async и я его вызову (в другом модуле) без await — TS как-то спасет от этой ошибки? Потому что eslint такое ловить не умеет и это очень досадная ошибка, если её не заметить.

Сейчас проверил — нет, не спасет. RxJS FTW :)
С другой стороны, в тайпскрипте вы укажете, что этот async метод возвращает Promise<>, это будет видно там, где вы его используете и это даст чуть больше шансов не провтыкать.

Именно. Он и не должен спасать от блокировки вызова. Потому что компилятор не знает, как Вы собираетесь использовать результат дальше. Вот если этот промис дальше использовать «не так», то — конечно.

в тайпскрипте вы укажете, что этот async метод возвращает Promise

На то он и есть TS, что дает преимущества. Но только тогда, когда не злоупотребляется с any

Хм, як ви перевіряли? Ви хотіли щоб ось в такому разі компілятор лаявся?

class A {
  async method() {}
}

const a = new A;
const result = a.method();

У змінній result буде проміс. Де тут треба кидатись помилкою?

метод описан как async и я его вызову (в другом модуле) без await — TS как-то спасет от этой ошибки?

Проміс-то буде, питання було про те, чи буде помилка, якщо функція, яка повертає проміс, викликається без await.
На кшталт помилки, яку TS викидує, якщо написати await не в async function.

Так, питання недосвідченого користувача TS було саме таким, але ви так відповіли, начебто там справді десь є місце, де треба кидатись помилкою... Як на мене, в даному випадку усе очевидно і логічно, на відміну від, наприклад, не зовсім зрозумілої проблеми із типом даних, що повертає конструктор класу (розробники TS чомусь вперто не хочуть щоб було так: T.constructor returns T).

Навіщо конструктору повертати дані? Не бачив такого ні в пхп, ні в джава ні в шарпі. Конструктор має повертати референс на створений обєкт, а не щось незрозуміле закодоване всередині класу без жодних ознак для клієнта класу.

Конструктор має повертати референс на створений обєкт, а не щось незрозуміле закодоване всередині класу без жодних ознак для клієнта класу.

Де ви прочитали про «щось незрозуміле закодоване всередині класу»? В тому issue, що я навів вище, користувачі якраз і хочуть щоб конструктор класу «A» містив тип даних «typeof A»:

class A { }
A.constructor // typeof A

Тобто фактично конструктор — це статичний метод класу, що посилається на сам клас. В такому разі можна було б посилатись на статичні методи класу, використовуючи this.constructor.staticMethodName уникаючи вказування імені класу, що є зручним способом при наслідуванні...

Ой, тут я трохи стратив, бо підзабув суть issue. Насправді A.constructor посилається на функцію, що створює інстанс класа, а вже конструктор інстанса посилається на сам клас:

class A {
  static methodName(){}
}
A.constructor // Function
const a = new A;
a.constructor // typeof A
a.constructor.methodName(); // call a static method of class A

В шарпі теж якщо не написати await в виклику асинк метода то помилки не вкаже, лише нотис в айді.

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

собственно из-за этой схожести, у меня и возникает чувство с чего начать :)

Учи джаву. Ошибки в ней ловить намного проще чем в двух других. Это ускорит обучение да и платят больше (мидлам и синиора)
Плюс есть джава для мини днвайсов, андроид, сменить направление даже внутри джавы легко. А вот с джава скриптом сложнее

А что бы вы посоветовали для джавы учить? Типо spring boot, spring security или другие ответвления?

Spring core. Spring Boot, Spring Data. Но тут действует 80 на 20. 20% материала будет использоватся 80% времени. Так что... ну например вот: www.youtube.com/...​iew=50&sort=dd&shelf_id=2
хз как сейчас, но с этим раньше могли взять на джуна, не считая основ, вроде алгоритмов и прочего.
ну и понимать что вот это:
docs.spring.io/...​mages/spring-overview.png
docs.spring.io/...​ork-reference/htmlsingle

Это как основа, надо будет еще 1-2 технологии «под проект» изучить. Какие именно надо читать в вакансии. Они обычно не дольше пары дней учатся

Андрей, благодарю за тщательное описание!

Начни с просто спринга (Core он же IoC Container) потом уже поймешь, что все остальные спринги (Boot, Data, Security, etc) это его подпроекты и, зная основу, с остальным управишься быстрее / легче. Можешь заодно посмотреть в сторону SOLID принципов — они хороши для разработки на любом языке.

Это так кажется, различия между языками огромны, даже если они внешне выглядят одинаково.

Кому ты это рассказываешь?
Различия мёжду языками сводятся к фичам которые в них реализованы. 90%, если не совпадёт, то будет в похожей форме. Остальное доучить легче чем учить с нуля.

це дивлячись які мови брати. Якщо взяти Java і C#, так, дуже схожі ( хоча насправді коли копаєш глибше то розумієш що є моменти в яких вони кардинально відрізняються). Але є мови які по парадигмі відрізняються, підходом до програмування. Сказати що F# і Java відрізняються тільки синтаксисом, буде не дуже точно. І так багато з якими мовами. Той же Go на мою думку суттєво відрізняється від C#.

Дадада я хочу посмотреть как 23 летний Java сеньор будет программировать на С для ембеддед. А так же как 40 летний С хакер, начнет писать ентерпрайз код на Java. Не смешите мои тапочки.

А в чем проблема? Изучил синтаксис, стандарты и главные Различия и пишешь. Сравниться с синиором не получится, но вряд ли код будет хуже чем у джуна

*facepalm.jpg* вы очень, очень наивный программист. И судя по всему никогда не пытались действительно поменять сферу в программировании. Попробуйте, откроете для себя очень много нового. Например, пройдите курс в ru.coursera.org/specializations/scala

Пардон, что вмешиваюсь в вашу дисскусию :) Олег, мне интересно ваше мнение по изучению джавы. Что бы вы посоветовали учить?

во первых пробовал
во вторых курсы на курсере и настоящие проекты сравнивать — смешно
в третьих контр-аргумента на «90% похоже, остальное доучить» я так и не услышал («наивный нуб» не в счет, это не аргумент)

ps: =)

но вряд ли код будет хуже чем у джуна

ну разве что если к этому стремиться

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

1) я не всё понял, не хватает знаков препинания
2) я же сказал, что до синиора не дотянет такой перебежчик, но чаще будет лучше джуна

я же сказал, что до синиора не дотянет такой перебежчик, но чаще будет лучше джуна

но это не точно

[sarcasm]
пфф.. FetchType.EAGER везде и никаких ошибок )
[/sarcasm]

Vue.js

🍾💯🎉🥨🐴🐎🎂🥂☕🍺🎁🥃🥪🍰🥜🥞🍻🍵🍹🍷🐆🥤🦄😎

PHP — там конюшен больше, а значит и работы больше.

Учите алгоритмы, структуры данных, паттерны и так далее.
И анг. разумеется.

P.S.
Беда печаль, что люди к примеру Java ассоциируют только со Spring
Не надо так, пожалуйста.

Благодарю за ответ! Знаю всё вышеперечисленное, и спринг на базовом уровне по-этому, и возникает диссонанс в душе о пути развития

Потому, что если человек умеет хорошо «бегать, прыгать и плавать», у него возникает вопрос кем быть «плавцом, бегуном или прыгуном».

Если вы знаете

всё вышеперечисленное

тогда идете сразу в Амазон не партесь по мелоччам

Порада, безумовно, дуже правильна, але українська аутсорсингова реальність така, що якщо чувак буде ідеально знати всі типи дерев і як їх обійти, а також на папірцю зможе накидати робочий код хвильового алгоритму, але не буде знати фреймворк версії 6.1.123, то з великою вірогідністю його в контору не візьмуть, бо формошльоперам обходити дерева не треба.

але українська аутсорсингова реальність

Да, но зачем?.. :)

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

ML будет, но большой порог входа

Цель?
Ентерпрайз — учи и работай над spring
Уютная компания, маленькая команда — React + redux / PHP Lavarel
Субьективное мнение :
— выбери 1 направление и стать профи. Зачем на уровне джуна еще знать 3 языка, кому оно надо??
— javascript более прогрессивный , но и нужно постоянно доучиваться. Рынок оч быстро двигается. Потенциально самое современное направление, если тебе нравится — берись
— php lavarel , здесь меньше проектов и более специфические проекты ну и рейты тоже средние
— смотреть в сторону fullstack, но тогда нужно 1 язык вытянуть на уровень миддла . Из твоего стека это наверно Java

Не читая топик — английский

Ну а если вчитаться внимательно то либо

2) Javascript => учу React + Redux

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

Спасибо за совет! Уже работаю фул стек дев-ом второй год, и нахожусь в заблуждении какое направление выбирать :)

У как все запутанно, тогда джаву наверно.

А что из джавы именно? Spring boot, Security и тд или другое?

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

нахожусь в заблуждении какое направление выбирать

Не смог удержаться. www.youtube.com/watch?v=WMmKDz_Bn6Y
Серьезный вопрос. А какие дивиденды ты получаешь будучи фуллстеком? Я практически уверен, что возле тебя сидят коллеги чистые бекендщики с зп поболее твоей.

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

Вчи Go, він простий, легко розвернути в контейнері, є хороша спільнота в Україні

Подписаться на комментарии