Разработчик C++

Приходи работать к нам в think-cell на должность разработчика C++
Местонахождение: Берлин, Германия

Веришь в красоту в программировании? Живо интересуешься элегантными алгоритмами? Хорошо пишешь на C++? Если это так, мы хотим с тобой встретиться. Вот что мы предлагаем:

  • широкий спектр сложных и интересных задач по разработке на C++;
  • международную команду талантливых специалистов;
  • условия работы, способствующие удержанию и росту персонала;
  • достаточно времени на совершенствование каждой детали решения;
  • плоскую организационную структуру и достаточно места для идей;
  • отсутствие совещаний по графику;
  • удобные часы работы (у тебя будет время на личную жизнь), никаких жестких сроков и работы во внеурочное время;
  • поддержку при переезде;
  • конкурентоспособную заработную плату с самого начала и до 120 000 евро в год уже через год работы.
Подай заявку по электронной почте прямо сейчас

О нас

Thank you, think-cell, for sponsoring the Standard C++ Foundation and challenging our Microsoft compiler team with complex C++ code.

Herb Sutter, President of the Standard C++ Foundation

think-cell — динамичная компания-разработчик программного обеспечения в Берлине (Германия), основное внимание в которой уделяется разработке графической продукции, которая выделяется на фоне остальных. Более 750 000 пользователей по всему миру полагаются на наше программное обеспечение в повседневной работе, так как оно намного упрощает, ускоряет и делает приятнее процесс создание графических презентаций. Среди наших клиентов много известных консалтинговых фирм и крупных международных компаний.

Нам не приходится жертвовать качеством и красотой, потому что think-cell — прибыльная компания без сторонних инвесторов. Мы хотим шагнуть дальше остальных, разрабатывая сложные алгоритмы и дорабатывая пользовательский интерфейс. Мы гордимся тем, что у нас много довольных клиентов. Тот факт, что компания принадлежит опытным специалистам в области компьютерных технологий и находится под их управлением способствует созданию привлекательных условий, к нам приходят и остаются работать исключительные разработчики.

О нашем программном обеспечении

Мы уделяем особое внимание бизнес-слайдам (в противовес более профессиональным приложениям), потому что в них есть большой потенциал автоматизации задач по созданию макетов, которые традиционно пользователи PowerPoint делают сами. Задач множество: необходимо точно понимать, как получить хороший макет и чем руководствуются люди, которые создают макеты вручную, а также алгоритмы, из которых быстро получается приемлемый результат для получения интерактивного дизайна слайда, графический пользовательский интерфейс, который поддерживает наш новый, оригинальный подход к созданию простых для понимания и при этом ненавязчивых макетов слайдов, иметь надежные технические решения для автоматического сообщения об ошибках и обновлений и обеспечивать совместимость со сторонним программным обеспечением на компьютерах полумиллиона пользователей.

Вот что нам удалось сделать.

Язык

  • Мы пишем все на C++. Даже наш клиентский портал написан на C++. При необходимости есть связующий код ассемблера, а скрипты мы пишем в Python, но все остальное в think-cell на C++.
  • Естественно, во всей наше базе кодов мы используем такие функции C++, как анонимные фракции и ссылки на r-значения, а во всех случаях, кода компиляторы это поддерживают, перешли на C++17.
  • Мы финансируем рабочую группу по языкам программирования при Немецком институте стандартизации (DIN). Некоторые наши сотрудники являются членами этого комитета и имеют голос в процессе международной стандартизации ISO/IEC C++.
  • Мы являемся спонсором Фонда стандартизации C++ и помогаем ему продвигать идею применения современного стандарта C++ на всех компиляторах и платформах.

Библиотека

  • В нашем коде для анализа мы всегда используем Boost, например, Boost.Spirit.
  • У нас есть собственная библиотека диапазонов, аналогичная Boost.Range или диапазону-v3 Эрика Ниблера, но мы идем дальше, например, унифицируя внутреннюю и внешнюю библиотеки. Мы прочитали по этой теме Диапазоны, а большая часть кода является общедоступной.
  • Мы разрабатываем кроссплатформенную библиотеку для поддержки Mac и Windows с единой базой кодов.
  • У нас есть собственные библиотеки подсчета ссылок и сохраняемости для сохранения и восстановления целых объектовых деревьев,
  • а также обширная инфраструктура создания отчетов об ошибках. Утверждения и проверки ошибок остаются в коде выпуска, а наше программное обеспечение автоматически сообщает об ошибках на сервер. Сервер анализирует, классифицирует и регистрирует ошибку в базе данных, доступ к которой имеют все разработчики. Если обновление устраняет ошибку, пользователь может скачать его непосредственно с веб-страницы патчей ошибок.

Алгоритмы

  • В основе работы компании think-cell лежит идея о разработке алгоритма автоматического создания слайдов, и мы все еще трудимся не покладая рук, продвигаясь на пути к этой амбициозной цели. Можешь посмотреть наши последние релизы в действии!
  • Мы разработали новый алгоритм автоматической расстановки меток облака точек, благодаря которому можно размещать метки на удалении от самих точек.
  • Мы разработали новый алгоритм автоматической расстановки меток гистограмм.
  • Мы сотрудничаем с Джоном Форрестом, автором линейного решателя CLP, чтобы этот симплексный код быстрее решал поставленные нами задачи.
  • Мы разработали много общих структур данных не в C++ или Boost, например разделы.
  • Наше программное обеспечение позволяет не только создавать диаграммы, но и читать их с листа. В качестве инструмента распознавания диаграмм мы используем OpenCV и Leptonica Image Processing Library.

Реконструирование

  • Для выполнения многих невыполнимых в Microsoft Office API задач мы выполняем реконструирование с дизассемблером IDA от Hex-Rays.
  • Для этого мы написали, вероятно, самый лучший механизм обработчика функций. При каждом запуске нашего программного обеспечения в памяти восстанавливаются исполняемые файлы Microsoft Office. Мы не создаем жестко запрограммированные адреса патчей, для устойчивости к незначительным изменениям в исполняемых файлах нам нужны небольшие блоки ассемблерного кода.

Об этой вакансии

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

В компании think-cell нет предельных сроков и запланированных совещаний. Функция готова к выпуску, когда ты будешь уверен в реализации оптимального решения. Совещания проводятся по мере необходимости, и на них присутствуют только те, кто участвует в конкретной разработке. Идеи, предложения и критика любого сотрудника всегда важны и серьезно рассматриваются. Делись идеями, даже если при этом для оптимизации придется изменить большую часть кода.

Мы опубликовали несколько научных статей по теме искусственного интеллекта и компьютерной графики и призываем тебя к тому же. Мы финансируем посещение конференций и поддерживаем тесные связи с вузами и исследовательскими институтами в США и Германии.

Руководство think-cell призывает соблюдать баланс между работой и личной жизнью. Мы не работаем по ночам и по выходным, поддерживаем семьи сотрудников, предлагая услуги няни на целый день. Няня бесплатно посидит с детьми, если они заболели, или вы просто решили куда-то сходить вечером.

Мы платим конкурентоспособную заработную плату, предлагая нашим разработчикам 120 000 евро в год уже через год после приема на работу. При необходимости мы приложим все усилия, чтобы помочь тебе с переездом в Берлин и получением разрешения на работу. Ты должен свободно говорить на английском языке, знание немецкого не обязательно. При желании можно посещать курсы немецкого языка.

Подай заявку по электронной почте прямо сейчас

Еще немного о DevOps

Какой интерфейс IDE и компилятор вы используете?

Мы используем Visual Studio с компилятором MSVC на Windows и Xcode с Clang на Mac. Как говорилось выше, мы компилируем из одинакового исходного кода на обеих платформах.

Какой набор средств вы используете для пользовательского интерфейса?

Для отрисовки собственного пользовательского интерфейса, помимо контента окон PowerPoint и Excel, мы используем OpenGL на Mac и DirectX на Windows.

Что вы используете для отслеживания проблем?

Уже много лет мы используем Request Tracker (RT), но ищем альтернативы.

Какую систему управления версиями вы используете?

Для управления версиями мы используем Subversion, потому что помимо простого кода нам приходится работать с большим количеством двоичных файлов. Благодаря этому наши разработчики могут по своему усмотрению выбирать клиент svn или git.

Вы проводите модульное тестирование?

Мы внедрили набор средств для простого определения модульных тестов непосредственно в нашей базе кодов. Модульные тесты выполняются в рамках каждого цикла компиляции.

У вас есть сервер построения приложений?

Специально выделенная машина запускает Jenkins для непрерывного построения проекта и в случае отказа автоматически уведомляет об этом по электронной почте разработчиков, направивших код с последнего успешного построения.

У вас есть стандарты оформления кода?

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

Что вы думаете по поводу статического анализа кода?

Мы испробовали несколько инструментов, но они не слишком помогли. Очевидно, нам везет и удается избегать типичных ошибок, применяя собственные стандарты кодирования и проверяя коды. Более серьезные проблемы, не выявленные при проверке кода, как правило, остаются незамеченными и при статическом анализе кода. Гораздо более удачным решением для определения неуловимых ошибок по сравнению со статическим анализом кода стало привлечение хорошо укомплектованной группы тестирования и строгой группы поддержки, которая напрямую общается с разработчиками. Тем не менее, мы ищем инструменты, которые помогут тест-инженерам и разработчикам находить еще больше ошибок еще быстрее.

Что вы думаете по поводу Agile в качестве методологии разработки программного обеспечения?

Мы в курсе современных методологий разработки программного обеспечения, сложившихся на базе движения Agile, и используем все полезные для нашего проекта элементы, не принимая активного участия. Это экспертные оценки; высокая степень самоорганизации и ответственности; проходные тестирования на практичность; более официальные тесты с участием пользователей; готовность учитывать новые требования или выводы на любом этапе процесса разработки; частые автоматические обновления; тесная связь с пользователями с обратной связью на основании активных отзывов пользователей и автоматических отчетов от программного обеспечения; применение лучших доступных средств, например SSD RAID и колоссальные объемы ОЗУ для каждого разработчика; время на тщательную проработку каждой детали и отказ от написания ненужного кода.

Нравится?

Если ты именно тот, кто нам нужен, направь нам заявление на вакансию в электронном виде.

Подай заявку по электронной почте прямо сейчас

Хочешь знать больше?

Есть вопросы о работе в think-cell, открытых вакансиях или мероприятиях? Обращайся к Марисе Фреесе.

hr@think-cell.com
+49 30 666473-10

Мариса Фреесе, сотрудник отдела по работе с персоналом в think-cell

think-cell использует файлы cookie для улучшения функциональности, эффективности и безопасности этого веб-сайта. Если вы хотите пользоваться всеми функциями этого сайта, требуется ваше согласие. С более подробной информацией об использовании файлов cookie компанией think-cell, вашем согласии и правах на конфиденциальность данных можно ознакомиться в нашей Политике конфиденциальности.