И снова открытые вакансии SSP SOFT: ищем тех, кто готов создавать айти-будущее 🔥
Почему стоит присоединиться к SSP SOFT? ✨ У нас нет «скучных» проектов — только вызовы, от которых сначала удивляешься, потом делаешь, и в итоге растешь. ✨ Поддержка с первого дня: выдадут наставника, и он поможет влиться в работу без стресса. ✨ Настоящий рост: наш Проектный офис — ускоритель профессионального развития. ✨ Работай, как удобно: из дома, из офисов в Москве (ЦАО) или Томске, или в гибридном/удаленном формате. ✨ Жизнь ≠ только работа: мы ценим баланс и даем тебе время на все — и на проекты, и на личные цели.
А еще у нас: 🎁 ДМС (включая стоматологию) для штатных сотрудников 🎁 обучение за счет компании 🎁 бонусы 🎁 общие ивенты — от онлайн-квизов до выездных сборов
👉 Чувствуешь, что это про тебя? Тогда не теряй время — присылай резюме в ЛС нашему HR Lead Алине. Не забудь добавить сопроводительное письмо с ключевой фразой «Нашел(ла) вас на Хабре„.“»
Коллеги из OpenIDE предложили нам проверить их продукт статическим анализатором и написать об этом статью.
Мы отобрали самые интересные ошибки и странные моменты, которые нашёл анализатор в исходном коде используемой ими IntelliJ Platform. Если вам интересно посмотреть на ошибки в Java коде и освежить в памяти некоторые теоретические аспекты этого языка, крайне рекомендуем статью к прочтению.
P.S. Отдельная благодарность OpenIDE. Они рассмотрели приведённые в статье ошибки и поправили их.
Мой опыт в вайб-кодинге: AI-инструменты для создания приложений и первой игры-змейки! 🚀😂
Несколько месяцев назад я был на онлайн-мастерклассе по вайб-кодингу, где мы знакомились с разными AI-инструментами для создания приложений, игр и других задач через описательные промпты и автоматизированный кодинг. Это был крутой опыт, где мы не писали код вручную, а "вибили" идеи, и AI генерировал всё за нас.
В мастерклассе мы работали с такими инструментами:
Cursor: Сначала мы использовали его для базового редактирования кода с AI-подсказками. Мы создавали простые веб-страницы, описывая дизайн и функционал в чате, и Cursor генерировал HTML/CSS/JS, а потом помогал отлаживать баги. Этот инструмент больше всего используется в сочетании с моделями вроде Claude Sonnet для генерации и редактирования кода.
Harvi-pro и Harvi code: Этот инструмент мы применяли для интеграции GPT-моделей в кастомные приложения. Мы строили AI-ассистентов для обработки запросов, например, простого бота для рекомендаций, задавая промпты на русском, и Harvi-pro автоматизировал backend, а Harvi code помогал с генерацией и интеграцией кода в связке. Эти инструменты больше всего используются в сочетании с ChatGPT, VS Code и Cursor для создания GPT-ассистентов.
Lovable: Здесь фокус был на быстрой сборке мобильных приложений. Мы пробовали создавать чат-боты и простые утилиты, просто описывая UI и логику в естественном языке, и Lovable строил полноценный прототип с деплоем. Этот инструмент больше всего используется в сочетании с Cursor для прототипирования приложений и UI-дизайна.
Bolt: С Bolt мы экспериментировали с веб-разработкой в браузере. Мы создавали динамичные сайты, как лендинги или формы, просто загружая скриншоты или описывая "виб", и он генерировал код с мгновенным превью. Этот инструмент больше всего используется в сочетании с браузером и другими AI-инструментами вроде Cursor для быстрого создания прототипов веб-приложений.
KiloCode: В нём мы работали как в VS Code с AI-агентом. Мы автоматизировали задачи, такие как генерация скриптов для обработки данных, и KiloCode сам проверял код, запускал тесты и исправлял ошибки. Этот инструмент больше всего используется в сочетании с VS Code и JetBrains IDE для автономной разработки и автоматизации задач.
Мне больше всего понравилось создание игр — это был мой первый опыт в такой сфере (я впал в детство и создал всеми известную игру змейку, в которую добавил несколько персонажей с уровнями сложности с боссом Пэкмена и Марио 😂).
Чтобы ответить на этот вопрос, сначала нужно разобраться с терминологией и сутью процесса. Сейчас моками называют вообще все что связано с подменой реализации в тестах. Но подмена это просто техника, она может использоваться для совсем разных задач.
Представьте себе две ситуации. В одной мы подменяяем логер, который работает по http, чтобы он просто складывал данные в файл и не делал http запросов во время тестирования. В другой, в другой, мы проверяем что какой-то метод был вызван с определенными аргументами. И там и там работает подмена, но между этими ситуациями почти ничего общего с точки зрения решаемой задачи.
Последний случай, описывает процесс мокирования. То есть мок, это когда мы проверяем то, как код что-то делает, а не что он делает. Иногда говорят, что мы тестируем методом white-box, потому что мы знаем как конкретно написан тест и завязываемся на это, а не на результат работы этого кода, как в black-box тестировании.
Когда мы проверяем как код работает, мы связываем тест с внутренней реализацией. Любое изменение внутри функции (например, вызов другого метода или смена порядка действий) может поломать тест, даже если внешнее поведение программы остаётся тем же. В итоге тест перестает быть защитой от ошибок и превращается в тормоз для рефакторинга. В подкасте про спринг я услышал классный термин: "бетонирование кода", вот это оно и есть.
Когда же моки все таки нужны? Допустим мы пишем систему с поддержкой хуков, например фреймворк для тестирования. В тестах такого фреймворка вполне допустимо проверить что хуки setup, teardown, beforeSetup, afterSetup и так далее, вызываются в нужном порядке и с нужными аргументами.
Общее правило здесь такое, если код можно тестировать методом black-box, то лучше так и делать. White-box это вынужденная необходимость, когда по другому ни как. Правда будьте осторожны, нередко программисты только думают, что по другому никак, потому что они не знают других подходов или по каким-то причинам решили, что другие подходы не подходят по идеологическим причинам.
Гораздо чаще же в тестах нужны не моки, а стабы, которые позволяют изолировать код от внешних эффектов.
Например:
База данных, которая хранит данные в памяти.
Фейковые сервисы какого-нибудь облака, например AWS
Поддельный HTTP клиент, который возвращает заранее заготовленные ответы.
Заглушка почтового сервиса, которая записывает письма в список, а не отправляет их.
Все эти решения делают тесты быстрыми, предсказуемыми и независимыми от инфраструктуры, при этом вы все еще проверяете поведение системы снаружи, не нарушая принцип black-box.
Стабы часто формируются не в конкретном тесте, а на уровне всего приложения. Тот же логер из первого примера просто мешает тестировать наш код, поэтому мы можем поменять реализацию на этапе конфигурирования и на этом все, ни в одном тесте про этот логер мы не вспоминаем.
Итого
Моки используются тогда, когда вы хотите проверить как написан ваш код. Стабы используются тогда, когда вы хотите, чтобы внешние эффекты не мешали вам тестировать результат работы вашего кода.
«Там, где критична скорость, но не требуется оптимизация»: как и зачем МойОфис вышел в OpenSource
На Хабре опубликовано первое большое интервью нашего CTO Тамары Щепалкиной — и оно стоит прочтения, потому что это:
«Не форк с косметикой, а оригинальная инженерия»
Компилятор tsnative прошёл проверку на безопасность, получил документацию, Docker-образ и демо, чтобы любой разработчик мог сразу попробовать его в работе.
«...tsnative — это не «форк с косметическими изменениями», а продукт, в основе которого лежит оригинальная инженерная работа. Именно поэтому мы и приняли решение вывести его в open source: у проекта есть собственная ценность и потенциал для развития, который может быть интересен и полезен гораздо шире, чем внутри одной компании…»
2. Open source как часть стратегии.
Решение не ситуативное — это долгосрочный курс на технологическую независимость, партнёрство с сообществом и развитие совместных инженерных практик.
3. «Где критична скорость, но не требуется оптимизация».
tsnative создавался как инструмент, который помогает веб- и C++-разработчикам ускорять работу и выходить за рамки привычных сценариев. В основе компилятора — открытые библиотеки и собственная инженерия, без компромиссов по производительности.
4. От ядра к экосистеме.
Сначала — компилятор, но потенциально — UI-фреймворк и целая экосистема open source-проектов.
5. Сообщество в центре. Telegram-чат поддержки уже работает, а впереди — расширение комьюнити и совместное развитие открытых технологий.
«Ключевое для нас сейчас — подключить опенсорсное сообщество к развитию наших продуктов. Мы видим в этом не просто обмен кодом, а полноценное партнёрство: разработчики получают доступ к инструментам, которые можно использовать и дорабатывать под собственные задачи, а мы — обратную связь и новые идеи, которые помогают делать продукт лучше…»
В статье Тамара рассказывает, как и зачем МойОфис выходит на уровень open source-разработки, какие цели ставит и какие шаги уже сделаны.
Если вас интересует развитие стратегия открытого кода и сотрудничество с сообществом — обязательно загляните.
не существует банов за чатгпт статьи и комментарии
не существует способа забрать свой лайк или дизлайк с поста/комментария. Учитывая насколько на хабре оценки много «весят», промазать по кнопке и не иметь возможности забрать лайк — это абсурд
Вот такая вот «замечательная» статья: https://habr.com/ru/articles/963748/. Создана чатгпт, комментарии полностью чатгпт, код описанный в статье чатгпт, организация на гитхабе и её название — чатгпт. ВСЕ факты в статье — галлюцинация чатгпт
Есть окружность с центром O, а также N, множество вершин многоугольника, вписанного в фигуру. Каждая вершина может быть расположена на длине окружности случайным образом. Нужно определить вероятность, что при случайном наборе N центр O будет внутри этого образованного многоугольника.
Задача
Напишите модель симуляции, например, на Python, вычисляющую вероятность, что случайно сгенерированный вписанный в окружность многоугольник будет заключать в своей площади центр O.
Как подойдете к задаче? Напишите свое решение в комментариях и сверьтесь с алгоритмом в Академии Selectel.
Итак, поскольку бизнес, похоже, до сих пор не верит, что ему, по-прежнему, не обойтись без живых и толковых разработчиков, и предается влажным мечтам о тотальном вайб-кодинге лично потугами стейкхолдеров и продакт-оунеров (ахаха!), то я пока просто поделюсь несколькими реальными практиками, которые мне удалось применить в работе над пет‑проектами и которые я, как техлид, могу смело предложить для внедрения в небольших командах.
Затем, в следующих постах, я постараюсь объяснить доходчиво, почему Вам, уважаемые CEO и кофаундеры, глупо ждать очередного прорыва, -- лучше нанимайте хороших специалистов, пока хайп не сдулся (завтра ноябрь, але!). Без них "волшебный черный ящик" не заработает вам ничего.. ;)
Начну с банального рецепта, применимого моментально к любому индивидуальному разработчику в его повседневной деятельности (одной-двумя командами и без вложений!).
Первый шаг вроде бы очевиден, это конечно же установить плагин для IDE и привыкнуть к нему. Но загвоздка есть сразу -- придется прям выбирать и пробовать, ибо их слишком много, а единственная реально юзабильная их функция -- это автодополнение. Поэтому просто выберите такой, чтобы хорошо это делал в вашей любимой среде разработки и можно было переключаться между локальными и облачными API.
Но, когда привык и наигрался, то куда дальше? Где этот реальный буст в конце-то концов?
Будем искать! И вот что я пока нашел, однозначно полезного и перспективного:
Шаг второй: LLM CLI tool — это что‑то вроде, например, aichat, установленного локально для вашей консоли. Он приносит все возможности LLM прямо в командную строку, опираясь на мощь нативных Unix‑пайпов — вот где начинается настоящая магия. 😉
Например, вместо того чтобы тужится с shell-синтаксисом, ты можешь мгновенно зашорткатить себе быстрый запуск следующего шага:
$ aichat -e create bash script to launch docker container with qwen-code and current or specified folder mounted to workdir as volume
Шаг третий: Coding Agent — попробуйте, наконец, полноценного агента. Мне кажется очевидным, что агенты должны работать в изоляции, поэтому я настоятельно рекомендую подходить к снаряду сразу через контейнер. Мой текущий выбор — Qwen‑code в Docker, который я запускаю с любым локальным каталогом, смонтированным как volume, связанным с рабочей директорией.
Qwen‑code отлично работает в связке с открытой рядом IDE — позволяя плавно переключаться между ручным кодингом и LLM‑ассистированным процессом разработки.
2000 запросов в день бесплатно! ;)
Оба инструмента уже описаны на Хабре. Но, поскольку инструментов великое множество -- хотел бы обратить ваше внимание именно на эти. Спасибо.
В следующих постах, возможно, расскажу подробнее о часто возникающих кейсах и следующих шагах, вроде добавления MCP.
Сегодня мы решили обойтись без банальных страшилок про призраков и ведьм и придумать кое-что более пугающее. Герои наших историй столкнулись с настоящими цифровыми кошмарами — взломом и потерей данных.
Почитайте, чтобы немного пощекотать нервы, а затем пройдите небольшой тест. Благодаря нему сможете оценить, насколько хорошо вы разбираетесь в надежном хранении. Всем, кто не испугается, подарим промокод на 1 000 бонусов в панели Selectel.
Обсудили контуровцы: Антон Нечуговских, ведущий инженер-программист в 24 года, и Никита Хубаев, начинающий инженер-программист в 36 лет.
Сеньор в 25 лет вызывает недоверие у коллег из-за своего возраста
Сеньор в 24: Открытые и адекватные люди скорее делают вывод о тебе по тому, как ты с ними взаимодействуешь, а не по тому, сколько тебе лет. Но с недоверием да, иногда сталкиваюсь. Я поэтому и перестал брить бороду 😁 и это не шутка.
Джун в 36: Я раньше работал в продажах, и примерно в 23 года уже был директором магазинов. Старшие коллеги воспринимали это нормально. Важно то, как ты себя позиционируешь в команде, насколько развиты у тебя харды и софты. Если с этим всё в порядке, то и команда это чувствует.
Пользы для продукта или команды от 35-летнего джуна больше, чем от 25-летнего сеньора, из-за большего жизненного опыта у джуна
Джун в 36: Да, пользы чуточку больше, но это связано не с возрастом, а с тем, какой у тебя грейд. Если ты сеньор, то занимаешься внутри команды больше архитектурными задачами, и то время, которое мог бы потратить на разработку продукта, тратишь на наставничество, помощь в написании кода и код-ревью. А будучи джуном в 35 лет ты концентрируешься на том, чтобы писать код и в итоге приносить больший пользовательский опыт.
Сеньор в 24: Хм, ну работа же не заканчивается написанием кода. 😉 Какое-то видение появляется, и из-за того, что есть сеньорский опыт и технический бэкграунд, ты это видение применяешь в нужном направлении. Уже многое умеешь, но при этом есть альтернативный вижн по сравнению с коллегами, которые намного старше тебя. Можешь на их языке с ними общаться и доносить до них что-то новое.
Джун в 36: Некоторые люди в командах не могут занимать должность мидла, хотя с технической стороны они уже глубокие сеньоры. Считаю, лучший грейд — это мидл+.
Джуну в 35 сложнее найти работу, чем джуну в 25
Сеньор в 24: Думаю, что да. Увы, эйджизм никуда не делся. 🤷♂️ Скорее всего, эйчар отметит в тебе целеустремлённость, но поставит под сомнения перспективы.
Джун в 36: Я стал разработчиком после 30 лет, и самое сложное было впервые оказаться на собеседовании. Но отмечу то, что, вероятно, в этом возрасте у тебя будет всё хорошо с софтами, и это твоё преимущество. А для работодателя знак: если такой кандидат осмелился пойти в айти после тридцати, то, скорее всего, в нём есть настойчивость и ответственность, которая и в работе обязательно проявится.
Джуны сталкиваются с излишним контролем на работе, даже когда им 35
Сеньор в 24: Считаю, что джуна не надо сильно контролировать, пусть сам копается, выдаёт результат, а дальше можно будет подкорректировать.
Джун в 36: Согласен, но смотря какие задачи ты даёшь джуну. Если задача от бизнеса, то нужно будет разделить с ним ответственность. В целом, не надо контролировать, как джун пишет код, при этом всё-таки проводить код-ревью, чтобы помогать ему писать код правильно, и следить за сроками.
Не стоит начинать карьеру в IT после 30, лучше искать что-то другое
Сеньор в 24: Средний возраст ребят в IT меньше 30 лет, и когда ты находишься в обществе людей старше тебя, то и сам как будто бы быстрее взрослеешь. В другую сторону работает так же: если вокруг все младше тебя, ты молодеешь и наполняешься этой энергией.
Джун в 36: Поддерживаю! Если ты видишь в себе потенциал, тебе это интересно, обязательно попробуй. Но не требуй от себя много, например того, что добьёшься чего-то в короткий срок. Отнесись к этому, как к пути. Лучше уж после 30, чем после 40. Но даже если после 40 тебе это интересно — здорово! Я знаю людей, которые учились и в 60 лет, проходили стажировки. Да, не все из них трудоустроились, но это был вызов для них и новый опыт.
Сеньор в 24: Менять свой путь после 30 — сложно, я восхищаюсь теми, кто это делает. 👍
За последние месяцы в Практикуме появилось несколько новых курсов и дополнений в текущих программах. Делимся подборкой, чтобы вы точно ничего не пропустили.
Новые курсы
«Нейросети для бизнеса»— 10 недель о том, как применять нейросети для оптимизации процессов, сокращения расходов и роста прибыли. Курс подойдёт руководителям, предпринимателям и специалистам, которые хотят внедрять ИИ-решения в свои проекты и команды.
«Rust для действующих разработчиков»— программа для тех, кто хочет перейти на Rust или сделать его основным стеком. Разберём многопоточность, асинхронность, API, WebAssembly, принципы владения и заимствования, async/await и FFI. После курса сможете создавать надёжные и безопасные продакшн-решения.
«Обработка естественного языка (NLP)»— двухмесячный курс для специалистов по Data Science, ML и DL. Научим применять NLP для работы с большими данными, интегрировать технологии в приложения и сервисы — от чат-ботов до инструментов анализа текстов.
«Руководитель направления DevOps»— программа для тех, кто хочет совмещать техническую экспертизу и управление командой. Поможет стать «играющим тренером» — специалистом, который одинаково уверенно разбирается в технологиях и менеджменте.
Обновления в курсах
«Управление командой».Появился новый максимальный тариф. Помимо всех материалов расширенного формата, в него добавлен модуль по критическому мышлению и курс «Нейросети для работы». Формат для тех, кто хочет развиваться на стыке управленческих и технологических компетенций.
«Технический директор — CTO». Теперь с двумя новыми тарифами — расширенным и максимальным. Курс помогает структурировать опыт, освоить новые инструменты, научиться строить антихрупкие команды, проводить технический аудит и выстраивать IT-стратегию. А ещё — завести полезные знакомства с действующими СТО из крупных компаний.
«Системный администратор».В расширенном тарифе добавлены три дополнительных месяца обучения — это шесть новых тем по Windows и шесть практических проектов для портфолио. Курс охватывает востребованный стек технологий и реальные задачи системных администраторов.
Экс-инженер Nvidia Чип Хьюен (Chip Huyen, исследовательница ИИ, которая раньше работала над платформой NeMo в Nvidia и преподавала машинное обучение в Стэнфорде) считает, что неважно, что именно вы создаёте, главное — пройти путь от идеи до готового решения, которым сможет воспользоваться кто-то другой.
По словам Хьюен, строить что-то с нуля могут и должны не только инженеры. Например, даже начинающие пользователи без технического образования благодаря ИИ-ассистентам для кодинга могут создавать рабочие проекты. «После этого они становятся гораздо увереннее в себе и лучше понимают, как работает ИИ», — пояснила Хьюен.
Тем, кто не знает, с чего начать, Хюен предлагает простое упражнение: в течение недели записывать всё, что раздражает — от рутинных задач до медленных процессов. А потом выбрать одну проблему и попробовать её решить. При этом важно не ограничиваться только практикой. «Учиться только через проекты — всё равно что осваивать новый язык, просто разговаривая», — отмечает Хьюен. Чтобы разобраться в инструментах, стоит изучить теорию — выбрать учебный курс, книги или структурированную программу.
Хотите выяснить, где учиться IT? В экосистеме Хабра есть маркетплейс курсов на Хабр Карьере, на котором собраны сотни онлайн-обучений в самых разных специализациях: программировании, аналитике, дизайне, менеджменте и других. Чтобы пользователи могли проверить качество курсов, там показаны отзывы от тех, кто уже прошел обучение — изучайте и выбирайте лучшее для себя.
17 открытых репозитариев, чтобы выучить Python с нуля:
30-Days-Of-Python — пошаговый курс на 30 дней: синтаксис, типы, функции, ООП, файлы, модули, мини-проекты и задания с решениями;
Python Basics — вся база и примеры по основам для новичков;
Learn Python — конспект тем с наглядными примерами и ссылками; удобно как быстрый справочник и повторение;
Python Guide — лучшие практики: окружение, управление пакетами, стиль, тестирование, деплой, инструменты;
Learn Python 3 — понятные ноутбуки и упражнения по Python 3. Лучший репо для самостоятельной практики;
Python Programming Exercises — 100+ задачек по базовым темам с решениями; Coding Problems — алгоритмические задачи, разбитые по темам и сложности. Идеально для подготовки к собеседованиям;
Новое видео с нашей Конференции Luxms, теперь с технологической сессии. Илья Гурешидзе @IlyaGureshidze начальник отдела разработки Luxms BI рассказал о магии вне Хогвартса внутри движка.
Одна из сильных сторон Luxms BI – гибкость клиентской части. Связка JSON + React дает предсказуемое поведение, быструю сборку и легкую доработку интерфейсов – без необходимости лезть в «ядро» или переписывать все с нуля.
Для удобства разработчиков в системе есть специальный проект – bi-magic-resources (BMR). Это проект на React, где можно разрабатывать интерфейсы, хранить наработки в GIT, вести совместную разработку, кастомизировать сборку и запуск, подключать свои библиотеки и переиспользовать уже готовые компоненты заказчика. С ним удобно разрабатывать, тестировать и пробовать новый функционал, не мешая основной ветке разработки.
Нейросеть для обучения и выдачи информации появилась в Stack Overflow. ИИ чат-бота обучили на всех тредах платформы — бот обладает знаниями большинства реальных программистов, а не просто теоретическими выжимками и кучей готовых решений. Чат-бот умеет проектировать и рассуждать о коде, как команда живых разработчиков. Вы можете задать нейронке любой вопрос, и он предоставит полноценные рассуждения, развёрнутый ответ на базе вопросов форума.
Представлен симулятор тимлида, который управляет командой горе-программистов и должен успеть сдать проект в срок. Задача — сдать всё и не выгореть, когда полыхают дедлайны. Всё как в реальном офисе: бесполезные стендапы, куча созвонов с заказчиками, горы тасков и код-ревью. Нужно помогать команде сдать проект и при этом не поехать кукухой.