C++ディベロッパー
C++ディベロッパー
勤務場所:ベルリン(ドイツ)
プログラミングでは美しさを重視していますか? エレガントなアルゴリズムに強い興味がありますか? C++を習熟していますか? 該当する場合は、ぜひ弊社までご連絡ください。職務内容は以下のとおりです。
- 非常に難しい広範なC++開発タスク
- 優秀なメンバーが集まった国際色豊かなチーム
- チームが長らく成長を続けられる職場環境
- ソリューションのあらゆる詳細が完璧であることを確認できる十分な時間
- フラットな組織構造と、アイデアを生かせる十分な余裕
- スケジュールされたミーティングはなし
- 家族にやさしい就労時間、締め切りなし、残業なし
- 移転をサポート
- 初年度から競争力のある給与、わずか1年で年間120,000EURに昇給
会社概要
Thank you, think-cell, for sponsoring the Standard C++ Foundation
and challenging our Microsoft compiler team with complex C++ code.
think-cell はドイツ、ベルリンに拠点を置く急成長中のソフトウェア企業です。他社とは一線を画すグラフィックス製品の開発に注力しています。世界中で800,000人以上のユーザーが毎日の仕事で弊社のソフトウェアに依存しています。グラフィックなプレゼンテーションを容易に、素早く、楽しく作成できます。弊社の顧客には、著名なコンサルティング会社や世界大手企業が含まれています。
think-cell は収益性が高く、社外投資家もいないため、コードの品質と自社の美学を妥協する必要はありません。洗練されたアルゴリズムを開発し、ユーザーインターフェイスを洗練させるために弊社は努力を重ねており、多くのお客様にご満足いただいています。弊社は経験豊かなコンピューター サイエンティストが所有、経営しているため、優秀なディベロッパーが居座りたくなるような職場環境が整っています。
弊社のソフトウェア
弊社では芸術性よりも、ビジネス向けのスライドに焦点を当てています。従来、PowerPointユーザーが自ら行っていたレイアウト作業を自動化できる可能性が大きいためです。課題は数多くあります。優れたレイアウトとは何なのか、また手動レイアウトを行う人はどのガイドラインに従うのかをしっかり理解すること、インタラクティブなスライドのデザインで十分すばやく許容可能なアウトプットを出せるアルゴリズム、スライドのレイアウトをわかりやすく目立たないようにできる弊社の新しいオリジナルなアプローチをサポートするグラフィックユーザーインターフェイス、自動バグ報告および自動更新向けの確固たる技術的なソリューション、50万人のユーザーのコンピューターでのサードパーティーソフトウェアとの互換性などです。
これまでに弊社が達成してきたことを以下に要約します。
言語
- すべてC++で行います。顧客ポータルもC++で書かれています。必要な場合はアセンブラグルーコードがあり、ビルドスクリプトはPythonで書かれていますが、それ以外のものはthink-cellではすべてC++です。
- 当然のことながら、弊社ではラムダや rvalue 参照のような C++ の機能をコードベース全体で使用しており、コンパイラーが対応している場合は C++17 に切り替えています。
- 弊社はドイツ標準化機関(DIN)のプログラミング言語作業グループに出資しています。一部の社員はこの委員会のメンバーで、ISO/IEC C++の国際的な標準化プロセスで投票権があります。
- 弊社では標準C++財団のスポンサーとして、あらゆるコンパイラーとプラットフォームでモダンな標準C++の理解および使用を促進できるようお手伝いしています。
ライブラリ
- 弊社ではコード全体で解析向けにBoostを使用します。(Boost.Spiritなど)
- 弊社には独自のレンジライブラリがあります。Boost.RangeやEric Nieblerのrange-v3と考え方は同じですが、内部および外部のイテレーション統一などで、さらに進化させています。これに関しては講演を行っており、ほとんどのコードは公表されています。
- 弊社では、単一のコードベースでMacおよびWindowsをサポートするために独自のクロスプラットフォームライブラリを開発しています。
- また、オブジェクトツリーを保存して復元できるよう、独自の参照カウントおよび永続化ライブラリもあります。
- 広範なバグ報告インフラストラクチャーが整っています。アサーションとエラーチェックはリリースコードに残り、弊社のソフトウェアが自動的にバグをサーバーに知らせます。サーバーがバグを分析して分類し、ディベロッパー全員がアクセスできるデータベースにファイルします。更新によってバグが修正される場合、ユーザーはバグ応答ウェブ ページから直接更新をダウンロードできます。
アルゴリズム
- think-cellは、自動スライドレイアウトのアルゴリズムというアイデアに基づいて創設されました。現在でも意欲的なビジョンに向かってワクワクしながら前進しています。弊社の最も直近のリリースが機能している様子をご覧いただけます!
- 弊社では、実際のポイントから離れた場所にラベルを配置できる自動ポイントクラウドラベリング向けの新しいアルゴリズムを開発しました。
- 自動列チャートラベリング向けの新しいアルゴリズムを開発しました。
- リニアソルバーCLPの著者であるJohn Forrestと協力し、弊社で直面しているような問題で同氏のシンプレックスコードをよりすばやく作れるよう尽力しています。
- C++またはBoostにはない多くの一般的なデータ構造を開発しました。(たとえば、パーティション)
- 弊社のソフトウェアはチャートを作成するだけでなく、紙面で読み返すこともできます。チャート認識ツールでは、OpenCVとLeptonica画像処理ライブラリに依存しています。
リバース エンジニアリング
- 弊社では、文書化されたMicrosoft Office APIでは不可能なことを達成するため、Hex-RaysからIDA逆アセンブラーを使用してリバース エンジニアリングを頻繁に行っています。
- おそらく現存する最高の関数フック エンジンを作成しています。ソフトウェアを起動するたびにメモリーでMicrosoft Officeの実行ファイルのパッチを適用しています。パッチ アドレスのハード コードではなく、実行ファイルでマイナーな変更に対して堅牢なアセンブリ コードの小さいかたまりを検索します。
職務概要
弊社では、きちんと理論を把握しているスマートでクリエイティブなディベロッパーを探しています。これまでに採用してきたほとんどのディベロッパーは成績優秀で、コンピューター サイエンスの修士号または博士号を取得しています。この職務では主に独立して仕事をこなし、新しい機能を実装する際の活動全体に責任を負います。ユーザーの観点から問題を見て、同僚のディベロッパーと抽象的なコンセプトについて話し合うことができなくてはなりません。弊社では複数の人に任務を割り振るのではなく、各ディベロッパーにアーキテクチャ、デザイン、実装、顧客フィードバック、バグ修正を行ってもらいます。このため、誰もが自分の仕事を管理できます。
think-cellでは、締切はなく、ミーティングが予定されることもありません。ディベロッパーが可能な限り最高のソリューションを実装したと確信できた場合にのみ機能がリリースされます。ミーティングは必要に応じて開かれます。実際に出席する必要のある人のみが参加します。プロセスのどの時点でも、階層内に属する人からのアイデアや提案、批判は歓迎され、慎重に考慮に入れられます。向上させるために多大なコードの変更が必要になるようなアイデアでも歓迎されます。
弊社は人工知能とコンピューター グラフィックスの分野で複数の科学論文を発表しており、社員にもそうするよう奨励しています。カンファレンスへの出席を後援し、米国とドイツの大学や研究所とは密接な関係を築いています。
think-cellでは、健全な仕事と生活のバランスが奨励されています。夜間や週末の勤務はありません。また、フルタイムのベビーシッターを社内に配置してスタッフの家族をサポートしています。お子様が病気のとき、あるいは夜に出かけたいといった場合にはベビーシッターを無料で利用できます。
弊社の給与は競争力が高く、ディベロッパーには雇用1年後に年間EUR 120,000を提供しています。必要であれば、ベルリンへの移転をお手伝いします。また、労働許可証の取得をできる限り支援します。英語で効果的にコミュニケーションを行う能力は必要ですが、ドイツ語を知っている必要はありません。ご希望であればドイツ語の授業をご用意できます。
メールで今すぐ応募DevOpsの詳細
どのIDEとコンパイラーを使用していますか?
弊社では、WindowsではMSVCコンパイラーでVisual Studio、MacではClangでXcodeを使用しています。上記のように弊社では、どちらのプラットフォームでも同じソース コードからコンパイルします。
UIではどのツールキットを使用していますか?
MacではOpenGL、WindowsではDirectXを採用し、PowerPointとExcelのウィンドウ コンテンツの上に独自のユーザーインターフェイスをレンダリングしています。
問題のトラッキングでは何を使っていますか?
長年にわたりリクエストトラッカー(RT)を使用していますが、代わりになるものを探しています。
どのバージョンコントロールシステムを使用していますか?
バージョンコントロールではSubversionを使っています。プレーンコードというだけでなく、多くのバイナリファイルを処理する必要があるためです。これによりディベロッパーは自由にsvnまたはgitクライアントの好きな方を選べます。
ユニットテストは行いますか?
コードベースで直接、ユニットテストを容易に定義できるツールキットを実装しています。ユニットテストは各コンパイルの実行の一部として実行されます。
ビルドサーバーはありますか?
専用のマシンがJenkinsを実行し、継続的にプロジェクトを構築しています。障害が発生した場合は、最後に成功したビルド以降にコードをコミットしたディベロッパーにメールが自動的に送られます。
コーディング規則はありますか?
書面にされた一式のコーディング規則があり、それぞれに堅実な引数があります。また、新しい引数やよりよい引数が見つかれば、躊躇なくコーディング規則を変更しています。
静的コード解析についてはどう思いますか?
いくつかのツールを試しましたが、貴重な情報が含まれているものはありませんでした。明らかに、弊社はコーディング規則とコードのレビューによって典型的な落とし穴を首尾よく避けています。コードのレビューで見つからない、より複雑な問題は、静的コード解析で見逃される傾向があります。十分なスタッフをそろえたテストチームと、ディベロッパーに直接アクセスできる用心深いサポートチームがあれば、見逃しやすいバグを識別する際に静的コード解析よりもはるかに役立つことがわかっています。弊社ではまだ、テスターとディベロッパーがより多くのバグをよりすばやく見つけられるツールを継続的に探しています。
ソフトウェア開発方法としてのAgileについてはどう考えていますか?
弊社ではAgileに基づいて進展したモダンなソフトウェア開発方法を認識しており、邪魔にならず、プロジェクトの役に立つものは何でも採用しています。この中には、査読、高度な自己組織とアカウンタビリティ、ホールウェイユーザビリティーテスト、実際のユーザーが関与するより正式なテスト、どの段階の開発プロセスでも新しい要件や結果を考慮に入れる柔軟性、頻繁な自動更新、アクティブなユーザーフィードバックとソフトウェアからの自動報告に基づくユーザーを伴うタイトなフィードバックループ、各ディベロッパーのためにSSD RAIDや途方もない量のRAMといった最高のツールを用意すること、時間をかけて実装のあらゆる詳細に必要な注意を払うこと、不要なコードを描かないよう時間をかけることが含まれます。
いかがですか?
私たちのチームに参加なさりたい場合は、電子版応募用紙をお送りください。
メールで今すぐ応募詳細な情報をご希望ですか?
think-cellでの仕事、求人情報、イベントについてご質問がある場合は、お気軽にマリサ・フリーズ(Marisa Freese)までお問い合わせください。
hr@think-cell.com
+49 30 666473-10