Какой язык учить 1с нику
Прошло достаточно большое количество времени, получилось ли найти работу? В попытках сменить сферу деятельности тоже прошел через это все, но я все проходил через 1С. Сейчас работаю на хорошей работе, где платят и времени свободного много, но эта работа никак не связана с IT, но в начале лета сам взвалил на себя обязанность внедрить один типовой продукт 1С в свою организацию, чем сейчас и занимаюсь. На этом фоне решил посмотреть количество вакансий 1С и Python (смотрел в Питере) и что-то все совсем не радужно для ребят которые хотят в python разработчики, ну нет вакансий для начинающих, то есть вообще 2 вакансии на весь Питер, а для 1С их море ( ну точно не 2). И задаюсь вполне закономерным вопросом, а нужны ли питонисты в России? Сам я очень хочу стать python разработчиком, и уже вроде бы даже взялся за свой первый проект (решил просто повторить то 1С решение, которое внедряю, но на python)
Можно поискать web developer, а не python developer. В описании вакансии на джуна может быть большой список ЯП, включая python, и требуется умение писАть хотя бы на одном из них.
Вакансий достаточно, но нужно определиться в каком направлении хочется работать, например выучить Django/flask и искать уже front end developer.
Если есть знания математики, статистики, это уже data analyst, ML/AI engineer и тп.
В облачные технологии типа AWS cloud architect можно войти с Python без особых проблем.
Список неполный, язык достаточно универсальный, работу найти реально. В отличие от 1C работать можно не только в России. В связи с карантином, многие организации перешли на дистанционку, поэтому не обязательно сужать поиск до Санкт-Петербурга.
Не заметил подвоха
Сообщество не токсичное, токсичны языки
Когда зашел в комменты под любым постом про IT:
Как показывать, что много работал на удалёнке
Team leader & Junior
Первый день джуном (и последний)
Всем привет, хочу поделиться своим первым опытом на позиции Junior программиста.
Пишет на днях HR: "Мы заинтересовались в вашем резюме, приходите на собеседование". Ну ок, заинтересовались и хорошо. Пришел. Вопросы были общие, немного по технологиям которые я использовал, по ЯП и что делал или умею делать, к слову опыта и пэт-проектов у меня нету. На собеседованиях, до этого, я был от силы пару раз. Длилось оно 45 минут, и оказалось это не так страшно как я думал. Удивительно то что в вакансии было указано только знание алгоритмов, структур данных и ЯП. Ну да ладно. Через пару дней пришел фидбэк и пообщавшись с работодателем я согласился на стажировку/испытательный срок (trainee), которые должны длиться 2-4 недели. А теперь собственно то что меня сподвигло написать данный пост.
На бэкенд проекта меня поставили одного. Проект - в будущем парсинг кучи сайтов, но на данный момент парсится только 2. Это всё дело разворачивается на AWS, используется Kafka (что это и зачем я так и не понял), для парсинга некоторых элементов используется Selenium, хранится все в Docker контейнерах, микросервисы (5 штук) на gRPC, БД - mongodb и около 4 сторонних библиотек. Задача состоит в том что б можно было запустить приложение локально или хотя бы минимизировать затраты на AWS путём выпиливания ненужных технологий и замены нужных, на всё одна неделя.
Человек который писал проект до меня (а писал это точно не джун) уволен, проект, на сколько я понял, никто кроме него не знает. И весь мой первый день состоял в том что я сидел, читал документацию и читал про эти технологии. К слову документации на весь проект 100 строк и примерно столько же строк комментов в коде, всего кода в проекте 14000 строк. Возможно мне не показалось бы это таким сложным при наличии менторства, но его не было.
Я имею представление о 30% от стэка технологий (который естественно на собеседование никто мне не сообщил). Так что вечером, после этого всего, подумал и решил, что больше туда не вернусь. Действительно ли джуны и стажеры должны заниматься такими вещами или мне просто "повезло"?
Супер-недо Junior Python или история о переквалификации
Итак, доброго вам времени суток, усаживайтесь по удобнее, мы начинаем.
В посте будет описана попытка переквалификации из одной сферы в другую, разобрано что сделано, что находится в работе и какие сложности лично я испытываю в таких условиях.
Сначала будет минутка истории. Представьте самого обычного среднестатистического человека. У него нет высшего образования (бросил/выгнали/нет денег/не сложилось), работает на работе, приходит домой, кормит кошку.
Пьёт пиво по вечерам, ну и потихонечку деградирует как может.
Однако всё таки нечто упавшее сверху (то ли яблоко, то ли осознание недостатка пищи для мозгов) сказало мне, что так больше продолжаться не может. Одним чудным декабрьским днём, было принято решение о том, что пора что-то делать. Опуская подробности - я переехал из Сибири в чудный город Ленинград (в котором жил прежде много лет) и начал таки думать как дальше жить. Переезд произошёл в июне 2018 года.
Программирование меня никогда особо не притягивало. Из школьного/университетского курса, в голове отложилось только то, что там есть куча непонятного бесполезного синтаксиса, который бесит чуть более чем полностью. Однако зная мою любовь к математике, кто-то из друзей предложил попробовать себя в программировании, но на языке Python, мол не будет там у тебя этих проблем. "Почему бы не попробовать?" - подумал я и собственно началось.
Сначала я пошёл в интернеты и узнал, что такой язык программирования есть (уже маленький успех). Нашёл гайды, мануалы и начал читать. И сразу стоп.
ОШИБКА НОМЕР 1. На попытки читать не систематизированную информацию пытаясь переквалифицироваться я убил месяц, а то и больше. Если вы собираетесь менять сферу - НЕ ПОВТОРЯЙТЕ ЭТОЙ ОШИБКИ. Информация плохо усваивалась и закреплялась, долго до меня доходило, что надо не так, но всё таки дошло. Были найдены курсы на образовательном портале по данному языку программирования. Думаю ссылки оставлять было бы не корректно, кому нужно найдут сами - их бесчисленное множество.
Я начал проходить курс, решать задачи поставленные в нём и иногда проводил супер много времени за этим занятием.
Это была моя ОШИБКА НОМЕР 2. Не нужно сидеть по 18 часов пытаясь что-то сделать. Во первых вы рискуете утратить интерес к вопросу который изучаете, во вторых, после первых 10 часов вы скорее всего будете соображать хуже и плодотворность вашей работы будет катастрофически уменьшаться. В третьих - вы не получите удовлетворения от победы над задачей просидев над ней слишком большое время подряд. (Как пример мне попадалось несколько подобных задач в курсах или в заданиях на собеседования. Были те которые я решал "пока не решится", а были те которые я делал день за днём, с перерывами и отдыхом. Результат от вторых приносил мне искреннюю радость, от первых лишь один глубокий выдох)
Так как я люблю математику, то попутно, для разгрузки я так же начал проходить курсы по теории вероятности (дабы обновить память, изучал её для себя), мат статистике и линейной алгебре. Старался как то использовать их в том, что пишу. Будем честными - получалось не очень успешно.
Пройдя первый из курсов мне пришлось взять перерыв. Средства заканчивались, работа которая была найдена отнимала неимоверно много времени, но использовать полученный навыки там было никак нельзя.
Это была моя ОШИБКА НОМЕР 3. Готовясь к смене рабочего профиля, позаботьтесь о том, чтобы у вас была работа, на которой вам хватает денег для того чтобы жить и которая предоставляет достаточное количество свободного времени для изучения нового. Работать 6/1 по 14-16 часов в день явно не то, что вам нужно для самообразования.
Было заработано достаточно средств и я продолжил проходить курсы, приступил к более углублённому курсу в язык, более сложные задачи. Материал начал восприниматься тяжелее. Мозг который уже отвык думать воспринимал всё в штыки. Но "русские не сдаются", так что если не получается, слушаем/читаем/делаем ещё раз. Попутно узнаём, что часто проще найти информацию на английском и перевести, чем шерстить в поисках инфы на русском. Заводим гит и учимся с ним работать.
Сейчас я подхожу к концу изучения второго курса и так как средства скопленные на последней временной работе начинают петь самые грустные, снова пришлось искать работу. Тут было принято решение, что нужно искать оплачиваемые стажировки. И тут началась эпопея с поисками первой стажировки. (Которая продолжается и по сей час). Выбор языка мне приглянулся, но теперь я обратил внимание и на требования рынка.
И тут я думал, что всё. Ну как бы, где человеку входящему в сферу взять столько и сразу. На собеседования меня никто не приглашал. Потом начал шерстить знакомых, может у кого-то что-то есть связанное с вакансиями. Следующей ошибки я не совершил, но был близок.
ОШИБКА НОМЕР 5. Не пренебрегайте знакомствами при поиске работы. Даже если вам неудобно/стыдно, лучше воспользуйтесь возможностью. Так я попал на своё первое интервью.
В следующий раз перед интервью я обязательно выпью валерьяночки, потому-что трясло меня примерно как школьницу при виде Джареда Лето, и тёк я примерно так же (но не там).
На собеседовании я узнал в каких местах у меня есть информационные дыры, чего недодали мне курсы, что нужно залатать. Естественно меня не взяли, но опыт был полезным, за что компании я благодарен.
Наступило сегодня. Завтра собеседование на должность связанную с IT очень косвенно, потому что ждать неделями или месяцами у меня пока нет средств.
Что делать дальше? Пока планируется придумать какой нибудь полезный в быту проект и реализовать его, выложить на гит, закончить текущий курс и начать новый. Ознакомиться с математикой и её использовании в machine learning, пройти курсы по алгоритмизации и искать собеседования в удобное для меня время.
Я решил написать этот пост изначально для себя, чтобы было куда тыкнуть себя носом, но раз у нас есть интернет, то почему бы не опубликовать это дело. Ведь если хотя бы один человек, не попадёт на мои грабли, благодаря этому посту - он написан не зря. Когда я найду первую профильную работу, я напишу следующий пост о своих граблях. Спасибо за внимание.
Моя история начинается с того, что на 3 курсе обучения на геолога-бакалавра я увлекся программированием.
Мне стало ясно, что я нашел дело своей жизни. После 4 курса, как только диплом был на руках, я тут же подал его в другой институт на программиста-магистра. Поступил и теперь учусь на первом курсе.
Здесь я немного разочаровался в преподавании, часов мало и учат очень поверхностно. Сам в свободное время изучаю Python. Еще я хотел бы параллельно работать по профессии, чтобы набить руку и получить опыт.
Но, к сожалению, у нас в Казани я пока не могу найти работу программистом с моим уровнем знаний. Только стажером-1С. Хотел бы узнать ваше мнение, господа, что для меня будет полезней?
1) Работать программистом-1С, хотя в будущем я хочу быть питонистом?
2) Или же не работать и посвящать свободное время изучению питона? Но без опыта же никто не хочет брать на работу!
Замечательный по уровню провокативности вопрос для 1С-холиваров :)
Экзистенциальный кризис автора понятен, но его не решить вопросами в интернете.
Тут у меня не будет "серебренной пули", а просто немного здравого смысла.
1) Работать программистом-1С, хотя в будущем я хочу быть питонистом?
Мне даже браузер подчеркивает слово "питонистом" - видимо хочет заменить его на более значимое "пианистом". Быть питонистом - это ни о чем! Это отсутствие профессии и борьба с индусами за дешевые заказы на апворке по решению домашек для школяров-недоучек. На самом деле люди стремятся стать научными сотрудниками, которые используют Python в научных расчетах. А еще люди становятся крутыми админами, которые пишут обслуживающие скрипты на Python или правят результаты работы криворуких контрибуторов ихнего ПО. Еще люди могут становится веб-разработчиками и пилить проекты на Django. Куда мысль веду понятно?
2) Или же не работать и посвящать свободное время изучению питона? Но без опыта же никто не хочет брать на работу!
А с опытом эникейного мальчика-на-побегушках возьмут?
Не знаю какие у автора увлечения, но если экономика и теория управления предприятием не входит в их число, то заниматься 1С будет крайне скучно! А вот если вам нравится генетика и биоинформатика в целом, то могу порекомендовать обратить внимание на проект Rosalind, где даются базовые знания по Python и далее с его помощью решаются довольно увлекательные задачи. Я на этом проекте немного прокачался (после своего решения объязательно в обсуждении задач смотреть опыт других участников) и далее с легкостью писал свои скрипты под Ubuntu.
1с - отдельная сфера, не связанная с другими областями программирования.Лично я (мое сугубо субъективное мнение) 1с'ников вообще за программистов не считаю.
Если хотите программировать, учите питон. Недостаток опыта можно клмпенсировать собственными проектами. Начните с самых простых. Поделитесь ими на github. В it компаниях ценятся кандидаты, у которых есть собственный репозиторий на github. Да, вам придется изучить систему контроля версий git. Очень полезный инструмент в разработке. Освоить можно за пару-тройку дней.
Есть на ютубе полезный канал для новичков, называется SHIFU.
Посвящен развитию программиста как специалиста. Выпал мне в рекомендациях этот shifu. честно, канал ни-о-чем. Лично я бы посоветовал новичкам вообще не тратить время на просмотр этого контента. Автор, отвечая на вопросы, просто жуёт воду, да ещё и нередко со своей «однобокой» колокольни.
Ну или Продвинутый бухгалтер, который умеет писать макросы
dableproger, если смотреть с этой точки зрения смотреть, то питонисты - это циркачи, которые работают со змеями. Точно, циркачи из летающего цирка Монти Пайтона - инфа из Википедии. Верняк!
То о чем вы говорите - это 1С Бухгалтерия 6 из 90-х. И тогда "программистами 1С" действительно были продвинутые бухгалтера, которые умели писать макросы. Но уже в 90-х появились более полноценные 7.5/7.7, а в нулевых началась линейка платформы 8.х
Если не хотите смешить людей, то пора попрощаться с ракушкой и выйти в реальный мир. Не знаю, посмотрите что ли ролики на Ютубе как там в мире 1С сейчас все устроено.
Любой опыт всегда пригодится.
И чем он ближе к желаемому - тем больше и пригодится, априори.
------
1С - это очень и очень разная квалификация.
"Программистами 1С" называют и реальных программистов,
и мальчиков-на-побегушках-настрой-принтер-установи-картридж.
Ну исторически так сложилось.
Если вы реально будете программировать - а программирование там вполне себе серьезное: есть где развернуться и с оптимизацией запросов к базам данных и пр.
Те кто пишут иное:
Идиоты или просто не в теме
Ну например, они встречались только с одним аспектом по обслуживанию 1С, не относящимся к программированию - с ребятами которые бегают обновляют штатные конфигурации, а не занимаются программированием.
Никаких таких сверхумных экономических или бухгалатерских знаний не требуется. Весь учет построен на здравом смысле. Было 3 яблока, купили 2 яблока, продали 4 яблока, осталось 1 яблоко.
Спец. термины типа дебет, кредит, сальдо, проводка - программисту 1С нужны даже не каждый месяц, не то что каждый день. Да и учатся они за 15 минут. Бояться этого не стоит.
Отлично развивает навыки общения с заказчиком, постановку задачи.
Отлично развивает навыки оптимизации запросов, работы с типовыми алгоритмами.
Принципиальное отличие в 1С следующее:
Все эти так называемые "настоящие программисты" вместо того, чтобы решать конкретную прикладную проблему - тратят свое время в том числе и на общеупотребимую обвязку: логи, БД, GUI. В 1С это все уже реализовано и жестко зашито. Тебе не нужно тратить время на это.
Ты будешь тратить время на решение программным путем конкретной проблемы клиента.
Очень способствует развитию навыков системного анализа.
Зачем это надо ? - Самые большие зарплаты программистов на Java и JavaScript.
На 1С зарплата сеньора 150 тысяч руб. в месяц (максимум 200), я на яве уже 250 тысяч руб. (максимум 300). Разработка на ява похожа по смыслу на 1С, поэтому 1С-нику лучше туда.
JavaScript предназначен в основном для рисования форм в веб-браузере, что для 1С-ника вообще не является работой, т.к. в 1С формы рисуются автоматически сами собой. Есть ещё много других языков программирования редких и специализированных, имеющие мало вакансий, поэтому неинтересные.
Что можно сделать на яве:
- backend для корпоративных сайтов, например аналогично как в 1С после нажатие на кнопку "Записать" куда-то что-то записывается, или отправляется емайл или т.п., это и есть бакенд. Для обычных небольших сайтов больше подходит язык php, на котором легче делать то же самое, но он не подходит для крупных сайтов т.к. не имеющий строгой типизации язык быстро превращается в «говнокод», а также там нет масштабируемости, мнгопоточности и др.
- frontend совместно с JavaScript – рисование вебформ, с кнопками и др., изменение их размеров, скрытие и др. Редко используется т.к. легче на JavaScript без Java
- приложения для десктопных компьютеров – редко используется т.к. самый современный фреймворк для этого JavaFX отстаёт по возможностям от 1С и от очень старого Delphi6, т.е. лет на 20. Чтобы создать 1 кнопочку на форме с простым действием уходит 1 час вместо одной минуты на 1С, т.к. кроме долгих настроек надо ещё конфигурировать .xml файл и др.
- приложения для смартфона – редко используется т.к. на андроиде теперь официальный язык Kotlin, а на iOS – Swift
- приложения для специализированных устройств – редко используется т.к. нет вакансий
Работа 1С-ника итак состоит в создание бакенда на 80%, 10% - рисование форм frontend, 10% - общение с пользователями, т.е. работа по смыслу совсем не изменится. Вместо пользователей будут аналитики, вместо создания форм будет общение с фронтендерами, добавится только создание автоматических юнит-тестов, которые 1С-ники не делают вообще никогда, а может и не добавится, если это сделают отдельные тестировщики, в общем ничего не изменится в режиме работы.
В 1С все программируют на русском языке, можно и на английском, но никто этого делать не будет, поэтому казалось бы нет ничего общего с явой, совсем не похоже, и знания из 1С не пригодятся уже, но достаточно просто сделать «перевод» терминов из 1С в ява, тогда всё будет намного проще – что я и попытаюсь сделать.
- IDE - как конфигуратор в 1С, IntelliJ IDEA или NetBeans
- Java core - синтаксис языка, он простой, совместно с фреймворками становится всё сложно, а сам язык легкий для изучения.
- Работа с коллекциями - аналогичные коллекции как в 1С: "Массив", "Список значений", "Структура", "Соответствие" и др., точно такие же коллекции есть в java, достаточно написать таблицу соответствий как они называются тут и там.
- Maven - для собирания всех файлов разных компонент, фреймворков в одну папку, нужной структуры, а также их обновления, выполнения скриптов. В 1С версии 8 обычно не нужно, там редко бывают внешние файлы, а в 1С 7.7 много внешних файлов, но всё равно нет ничего аналогичного.
- Spring boot, Spring BOM - в основном контролирует чтоб версии разных компонент (старые и новые) не конфликтовали друг с другом, т.е. где-то в интернете хранится таблица совместимости разных версий компонент друг с другом.
- Работа с базами данных - аналогично как в 1С "Внешние источники данных". Можно просто запросами вытягивать оттуда данные, а лучше сделать маппинг ORM т.е. превращение реляционных таблиц в объекты java - 1С это делает полностью автоматически, незаметно для программиста, в яве тоже полуавтоматически создаются классы типа "@Entity"
- Запросы к базе данных - знание обычных TSQL запросов пригодится, но будет ещё язык HQL - специализированный язык запросов для превращения реляционных таблиц в объекты java, как и в 1С есть свой особый язык запросов.
- Spring core - в основном для Dependency Injection - как бы для хранения глобальных переменных, которых нет в 1С версии 8, но есть в версии 7.7
- Spring MVC - как веб сервисы в 1С. Например аннотация "@GetMapping("/page1")" означает что функция которая ниже выполнится когда откроется веб страница "page1"
- XML и JSON - они итак есть в 1С, в яве ещё легче сериализовать объект т.е. превратить в строку.
- RestFull, микросервисы - то же что в 1С галочка "Публиковать стандартный интерфейс Odata", который для всех объектов конфигурации автоматически создает интерфейс RestFull, в яве делают то же самое только для нужных объектов.
- Тестирование - вручную как в 1С, и написание автоматических юнит-тестов.
- Git - как хранилище конфигурации в 1С, для совместной работы нескольких программистов.
- Deploy - обновление конфигурации, в яве это обычно просто скопировать куда-то файл, специально подготовленный.
По каждому пункту напишу отдельную статью, кратко, для общего понимания и сравнения как одно и то же делать на разных языках, и где легче.
Сегодня каждый, кто стремится попасть в IT, задается вопросом — какой язык программирования изучить? Все ищут универсальный ответ, который предопределит головокружительную карьеру. Да, до изобретения интернета и появления мобильных платформ можно было освоить один язык, написать на нем программу и быть востребованным разработчиком. Сегодня реалии таковы, что даже джуниорам предъявляется огромный список требований, среди которых — знание нескольких языков.
Python
Python — пожалуй, самый простой язык программирования из нашего списка. Здесь минимум служебных символов, динамическая типизация, максимально понятный синтаксис. И если вы мало что поняли из прошлого предложения — это повод начать обучение именно с Python.
Несмотря на визуальную простоту, этот язык — один из мощнейших. С его помощью с одинаковой легкостью можно и работать с текстом, и строить нейронные сети. Посмотрите:
В этом коде мы создали собственную функцию для вычисления последовательности Фибоначчи, а потом вывели ее на экран. Всего 6 строк потребовалось, чтобы описать достаточно сложное математическое действие.
Стоит упомянуть, что на данный момент актуальны две версии: Python 2 и Python 3. Вам за основу лучше брать последнюю, так как поддержка Python 2, а значит — и активная разработка на ней, прекратится совсем скоро.
Кстати, для тех, кто решился изучать Python, мы подготовили список полезных и практичных советов.
JavaScript
Следующий must have среди языков — JavaScript, для работы с ним хватит браузера. Синтаксис здесь на порядок сложнее: появляются служебные символы и конструкции с разношерстными скобками, названия функций далеко не всегда раскрывают суть действия, и даже простейший код имеет структурированный вид. Взглянем на переписанный код с функцией Фибоначчи:
Объем кода практически не изменился, зато снизилась читаемость. После изучения Python вы без проблем разберетесь, как работает структура return, и оцените удобство именно такого способа записи.
Кроме того, экосистема JavaScript богаче, чем Python. Она предлагает обилие сред разработки, редакторов кода, фреймворков, библиотек. Это еще один шаг к пониманию, как работает «взрослое» программирование.
В целом, JavaScript незначительно уступает Python по спектру решаемых задач, но его возможности «глубже». Знание этого языка пригодится при разработке программ на любых платформах.
Код вновь незначительно усложнился — это связано с использованием ключевого слова static. На этом этапе вы познакомитесь с грамотным использованием памяти, областями видимости данных и полностью погрузитесь в ООП. Ну, если не успели при знакомстве с JavaScript.
Swift
Подходим к самому интересному — языкам, безупречное владение которыми поможет вам попасть в сферу мобильной разработки. Swift не вполне универсален: он еще не полностью вытеснил Objective-C из приложений для Apple, но перспективы у него блестящие.
Четвертая версия Swift вышла в 2017 году: она содержит множество улучшений для работы со строками, коллекциями; возросла надежность и многое другое. Это уже не «сырой» язык, а классический представитель верхушки рейтинга TIOBE с планомерным развитием. С помощью Swift вы можете создавать приложения для всех продуктов Apple: macOS, watchOS, iOS и любой новой системы, если она появится.
Посмотрим на код последовательности Фибоначчи:
Более двух десятков лет этот язык находится в списке самых востребованных, а это уже что-то значит. Сегодня он в основном ассоциируется с разработкой приложений для Android — но это лишь малая часть его возможностей. При помощи Java вы можете создавать графические виджеты для веба или писать десктопные приложения — принцип независимости от платформы и устройства в Java живет и процветает.
Кроме того, Java — великолепный язык, чтобы полноценно понять программирование: здесь реализованы все принципы ООП, организована работа с памятью и периферией, можно поупражняться с функциональным программированием.
А вот так выглядит Java-код нашей последовательности в простейшем императивном случае:
Объем может показаться чрезмерным, но в действительности это не более чем базовые конструкции, обеспечивающие понятность кода и его надежность.
Для тех, кто хочет начать быстрое освоение Java, наш педагог Сергей Ирюпин подготовил цикл вводных статей, которые мы постепенно публикуем в блоге:
Заключение
К списку можно было бы добавить ряд полезных языков вроде PHP, C++ или Ruby. Или несколько функциональных для общего развития: Lisp, Haskell, Clojure. Впрочем, до этого вы обязательно дойдете. Но сперва выбирайте специализацию, записывайтесь на курсы GeekBrains и осваивайте пять описанных must know языков.
UPD. Если вы хотите знать, как изменилась ситуация с языками программирования во второй половине 2019 года, мы подготовили об этом отдельный материал.
Читайте также: