Без малого 4 года проработал 1С программистом, и эта сфера перестала меня удовлетворять по ряду причин:
1) Мои наработки привязаны к платформе, без которой они не запускаются.
2) Доминирующая часть задач однотипна.
3) Узкий спектр профессиональных возможностей.
4) Низкая скорость работы решений.
5) Рынок ограничен странами СНГ.
Если с первым пунктом всё ясно, остальные я хочу объяснить немного подробнее. Ещё полтора-два года назад при получении задачи от руководства мне приходилось искать, как это работает, сидеть и разбираться. Такая задача казалась интересной и сейчас таких уже нет. Вернее, они остались, но я уже знаю, как это реализуется и просто монотонно делаю то, что умею. Без необходимости расширить область знаний. Иногда (в последнее время всё чаще) мне хочется отвлечься от работы и занять себя чем-то принципиально новым. Поэтому я написал на 1С несколько примитивных игр, а также что-то вроде скринсейвера. Но они работают только внутри запущенной платформы и меня это расстраивает. Из спортивного интереса я написал бота для работы с криптобиржей, но столкнулся с тем, что http запросы отправляются до двух секунд, а это очень критично. Когда об этом узнал знакомый C# программист, он повторил этого бота на своём языке и всё работало значительно быстрее.
Я хочу сменить профессиональное направление, но за пределами 1С слишком много всего. Мне интересна и web-разработка, и мобильные приложения, и разработка игр. По личным наблюдениям эти сферы могут пересечься в Java. Сейчас я решил посвятить свободное время изучению этого языка, а в будущем уже определиться с конкретным направлением, где я смогу применить свои знания. Правильно ли я сделал выбор?
Сейчас я решил посвятить свободное время изучению этого языка, а в будущем уже определиться с конкретным направлением, где я смогу применить свои знания.
Ответ в вопросе) Идёте правильным путем экспериментов, ибо градаций от "делаю тупую работу и получаю оклад" до "готов работать в стартапе за идею" море и то, что подойдет именно вам - никто не подскажет.
В целом, вы судите обстановку здраво, совпадает с моей точкой зрения на индустрию.
Удачи!
1. программинг-это в основном рутина. особенно в начале карьеры. а у многих и до её окончания.
это к тому, что надеяться на "выучу Х и буду заниматься интересным" не стоит.
2. толковый программист не ограничивает себя единственным языком. поэтому особо нет никакой разницы какой именно язык учить именно сейчас. учите тот, который показался интересным.
что касается конкретно Java:
- мобильная разработка точно также зажата одной платформой. хотя эта платформа и гораздо шире 1с.
- в вебе практически не используется (в сравнении с другими языками), а там где используется-кровавый энтерпрайз, в который ещё нужно попасть.
язык добротный и развитый. но покрыть все сферы на нем-идея так себе.
Я хочу понять, правильно ли я выбрал инструмент, способный помочь значительно превзойти рамки 1С и определиться какая сфера является наиболее привлекательной для меня. Может есть что-то ещё более разностороннее и я об этом не знаю.
Мой текущий план таков: Java, затем SQL и постепенная разработка для десктопа. Потом Android SDK и мобильные приложения, игры. После вёрстка с HTML/CSS, изучение Spring и осознание того что такое работа с вебом. В конечном итоге я смогу выбрать наиболее привлекательную для себя ветку развития работать в конкретном направлении. Собственно, написал я затем чтобы понять, насколько это правильный выбор языка с учётом моих желаний. Может быть, есть лучшие альтернативные пути.
в вебе практически не используется (в сравнении с другими языками), а там где используется-кровавый энтерпрайз, в который ещё нужно попасть.
А как же Spring? Spring != Java EE и кровавого в нём не так много. Хоть, и рыночная доля web приложений на Spring не велика, спрос на специалистов, работающих со Spring, достаточно высок.
Денис, да так же как я и написал: "в вебе практически не используется (в сравнении с другими языками)".
"кровавый энтерпрайз" - это устойчивое выражение, а не java ee.
В целом верный выбор. Есть еще альтернативы: .NET и Objective-C. И еще миллион альтернатив. Язык - это инструмент, не более. Java подходит под Ваш круг интересов. Также, как и .Net и Objective-C. И еще миллион альтернатив. Но, как и у любого "мультитула", у Java есть недостаток: многие вещи из вашего круга интересов часто проще реализовывать более узконаправленным инструментарием.
Java отлично подходит для ведения больших проектов, она прощает ошибки за счет отсутствия ручного управления памятью, в Java8 наконец-то подвезли лямба выражения и некоторый синтаксический сахар. Метапрограммирование, тонны библиотек, инструменты вроде Maven и Gradle позволяют решать поставленные задачи, а не заниматься написанием очередных костылей. Но, опять же, повторюсь, для конкретной сферы более узкоспециализированный инструмент будет более уместным, чем пихание Java куда только можно.
В общем, ответ сумбурный, в общих чертах выбор правильный, но имеет равноправные альтернативы.
Кстати, подобное у меня спрашивал мой знакомый, тоже 1C-шник. w3bstr?
Это больше перекос в сторону мобильной разработки. Тем не менее, Objective-C помимо дверей в разработку под яблоко открывает более широкие возможности для последующей миграции в геймдев и разработку под декстоп. C - он и в африке C.