C++開発者
C++開発者
勤務地:ベルリン(ドイツ)
プログラミングでは美しさを重視していますか? エレガントなアルゴリズムに強い興味がありますか? C++を習熟していますか? 該当する場合は、ぜひthink-cellまでご連絡ください。職務内容/条件は以下のとおりです。
- 難易度の高い広範なC++開発タスク
- 優秀なメンバーが集う国際色豊かなチーム
- チームが継続的に成長し続けられる職場環境
- 完璧なソリューションを追求するための十分な時間を確保
- フラットな組織構造と、アイデアを生かせる十分な環境
- 定例ミーティングなし
- 家族にやさしい就労時間、締め切りなし、残業なし
- 勤務地の移転をサポート
- 初年度から魅力のある給与体系、わずか1年で年収130,000EURに昇給
会社概要
Thank you, think-cell, for sponsoring the Standard C++ Foundation and challenging our Microsoft compiler team with complex C++ code.
think-cellはドイツ、ベルリンに拠点を置く急成長中のソフトウェア企業で、他社とは一線を画すグラフィックス製品の開発に注力しています。世界中で1,000,000人以上のユーザーが日々think-cellのソフトウェアを活用しています。優れたグラフィックスを用いたプレゼンテーションを容易に、素早く、そして楽しく作成できます。think-cellの顧客には、著名なコンサルティング会社や世界大手企業が含まれています。
think-cellは収益性が高いため、コードの品質と見た目に妥協する必要がありません。洗練されたアルゴリズムを開発し、ユーザーインターフェイスを向上させるために努力を重ねており、多くのお客様にご満足いただいています。think-cellは経験豊かなコンピューターサイエンティストが所有、経営しているため、優秀な開発者が気持ちよく仕事できる職場環境が整っています。
think-cellのソフトウェア
(より芸術的なアプリケーションではなく)think-cellがビジネススライドに着目したのは、PowerPointのユーザーが従来行っていたレイアウト作業の自動化に大きな可能性を見いだしたからです。課題は山積みです。例えば、良いレイアウトとは何か、手動でレイアウトを行う人間はどのガイドラインに従うのか、あるいはインタラクティブなスライドデザインに十分耐えうるアウトプットを高速に生成するアルゴリズム、スライドレイアウトに対する新しい独自のアプローチを分かりやすくかつ控えめな方法でサポートするグラフィックユーザーインターフェース、自動バグ報告や自動更新のための確かな技術ソリューション、50万のユーザーのコンピューター上のサードパーティー製ソフトウェアとの互換性、などが挙げられます。
以下にthink-cellのこれまでにの主な成果をご紹介します。
言語
- think-cellはC++を全面的に使用しており、顧客ポータルもC++で書かれています。必要な場合はアセンブラグルーコードを用いており、ビルドスクリプトはPythonで書かれていますが、それ以外のものはC++です。
- think-cellでは、コンパイラ、Visual C++、Xcodeの最新バージョンを細かくチェックしているため、最新のC++標準機能が利用可能になり次第、いつでも利用することができます。
- think-cellはドイツ標準化機関(DIN)のプログラミング言語作業グループに出資しています。一部の社員はこの委員会のメンバーであり、ISO/IEC C++の国際的な標準化プロセスで投票権を持っています。
- think-cellでは標準C++財団のスポンサーとして、あらゆるコンパイラーとプラットフォームで最先端の標準C++の理解および利用を促進できるようにお手伝いしています。
ライブラリ
- think-cellではコード全体で解析向けにBoostを使用します。(Boost.Spiritなど)
- think-cellには独自のレンジライブラリがあります。Boost.RangeやEric Nieblerのrange-v3と考え方は同じですが、内部および外部のイテレーション統一などで、さらに進化させています。これに関しては講演を行っており、ほとんどのコードは公表されています。
- think-cellでは、単一のコードベースでMacおよびWindowsをサポートするために独自のクロスプラットフォームライブラリを開発しています。
- また、オブジェクトツリーを保存して復元できるよう、独自の参照カウントおよび永続化ライブラリも備えています。
- 広範なバグ報告インフラが整っています。アサーションとエラーチェックはリリースコードに残り、think-cellのソフトウェアが自動的にバグをサーバーに知らせます。サーバーがバグを分析して分類し、開発者全員がアクセスできるデータベースにファイリングします。更新によってバグが修正される場合、ユーザーはバグ応答Webページから直接更新をダウンロードできます。
アルゴリズム
- think-cellは、自動スライドレイアウトのアルゴリズムというアイデアに基づいて創設されました。現在でも意欲的なビジョンに向かって前進しています。think-cellの最新リリースがこちらでご覧いただけます!
- think-cellでは、実際のポイントから離れた場所にラベルを配置できる自動ポイントクラウドラベリング向けの新しいアルゴリズムを開発しました。
- think-cellは、自動列チャートラベリング向けの新しいアルゴリズムを開発しました。
- リニアソルバーCLPを作成したJohn Forrest氏と協力し、think-cellで抱える問題に対処すべく、同氏のシンプレックスコードをよりすばやく作成できるよう尽力しています。
- think-cellでは、例えばパーティションなど、C++またはBoostにはない多くの一般的なデータ構造を開発しました。
- think-cellのソフトウェアはチャートを作成するだけでなく、紙から読み取ることもできます。チャート認識ツールでは、OpenCVとLeptonica画像処理ライブラリを活用しています。
リバースエンジニアリング
- think-cellでは、文書化されたMicrosoft Office APIでは不可能なことに対応するため、Hex-RaysからIDAの逆アセンブラーを使用してリバースエンジニアリングを頻繁に行っています。
- think-cellでは、おそらく最高レベルの関数フックエンジンを備えています。ソフトウェアを起動するたびに、メモリ上のMicrosoft Office実行ファイルにパッチを適用しています。パッチのアドレスをハードコーディングするではなく、アセンブリコードの小さなチャンクを探し、実行ファイルのマイナーな変更に対応できるようにしています。
Watch our CTO Arno answering FAQs
Arno Schoedl (think-cell founder & CTO) and Volker Schöch (Senior Software Developer) answer frequently asked questions about applying and working at think-cell as a C++ developer.
In this video you may learn about:
- What does think-cell do?
- What are some technologies in use at think-cell?
- What is your relationship with Microsoft?
- What kind of tasks can C++ developers expect when they start at think-cell?
- Why is think-cell constantly looking for more C++ developers?
- What kind of C++ developers is think-cell looking for?
- Why is there no phone interview before the programming test at think-cell?
- Why do I have to set aside so many hours for the programming test?
- Is there a limit to the number of applications that think-cell accepts?
- Will think-cell help me relocate to Berlin, Germany?
職務概要
think-cellでは、きちんと理論を把握しているスマートでクリエイティブな開発者を求めています。think-cellの開発者チームは、さまざまな分野において15年以上の営業実績を持つスタッフから、コンピューターサイエンス、物理、数学を専攻した新卒まで、異なる経歴のスタッフで構成されています。この職種には、大学の学位またはC++を使ったことがある経験に加えて、クリエイティブな方法で問題解決に取り組むことができる能力が求められます。think-cellの採用プロセスは、すべてタスクベースであり、選考はテスト中に発揮していただくスキルに基づいて行われます。
この職務では主に独立して仕事をこなし、新しい機能を実装する際の活動全般に責任を負います。ユーザーの視点から問題を把握し、仲間の開発者と抽象的なコンセプトについて話し合う必要があります。think-cellでは複数の人間に任務を割り振るのではなく、各開発者にアーキテクチャ、設計、実装、顧客フィードバック、バグ修正を行ってもらい、各自で業務を管理します。
think-cellでは締切はなく、定期的なミーティングを開催することもありません。開発者が最高レベルのソリューションを実装できたと確信した場合にのみ新機能がリリースされます。ミーティングは必要に応じて開かれ、実際に出席する必要のある人のみが参加します。プロセスのどの時点でも、階層内に属する人間からのアイデアや提案、批判は歓迎され、慎重に考慮されます。品質の向上を図るために、コードの大幅な変更が必要になるようなアイデアでも歓迎されます。
think-cellは人工知能とコンピューターグラフィックスの分野で複数の科学論文を発表しており、社員にも奨励しています。カンファレンスへの出席を後援し、米国とドイツの大学や研究所とは密接な関係を築いています。
think-cellでは、健全な仕事と生活のバランスが奨励されています。夜間や週末の勤務はありません。また、フルタイムのベビーシッターを社内に配置してスタッフの家族をサポートしています。お子様が病気のとき、あるいは夜に出かけたいといった場合にはベビーシッターを無償で利用できます。
think-cellの給与は水準が高く、開発者には雇用1年後に年間EUR 130,000の年収が用意されています。必要であれば、ベルリンへの移転をサポートし、労働許可証の取得もできる限り支援します。英語でコミュニケーションする必要がありますが、ドイツ語は必須ではありません。希望があればドイツ語の授業を受けることもできます。
DevOpsの詳細
どのIDEとコンパイラーを使用していますか?
think-cellでは、WindowsではMSVCコンパイラーでVisual Studio、MacではClangでXcodeを使用しています。どちらのプラットフォームでも同じソースコードからコンパイルします。
UIではどのツールキットを使用していますか?
MacではOpenGL、WindowsではDirectXを採用し、PowerPointとExcelのウィンドウコンテンツの上に独自のユーザーインターフェイスをレンダリングしています。
問題のトラッキングでは何を使っていますか?
長年にわたりリクエストトラッカー(RT)を使用していますが、代わりになるものを探しています。
どのバージョンコントロールシステムを使用していますか?
バージョンコントロールではSubversionを使っています。プレーンコードというだけでなく、多くのバイナリファイルを処理する必要があるためです。これにより開発者は自由にsvnまたはgitクライアントから好きな方を選べます。
ユニットテストは行いますか?
コードベースで直接、ユニットテストを容易に定義できるツールキットを実装しています。ユニットテストは各コンパイルの実行の一部として実行されます。
ビルドサーバーはありますか?
専用のマシンがJenkinsを実行し、継続的にプロジェクトを構築しています。障害が発生した場合は、最後に成功したビルド以降にコードをコミットした開発者にメールが自動的に送られます。
コーディング規則はありますか?
think-cellでは、コーディング規約を文書化し、その一つひとつに非常に確かな論拠を持っています。また、新しい、あるいはより良い論拠を見つけたときには、躊躇なくコーディング規約を更新します。
静的コード解析についてはどう思いますか?
いくつかのツールを試しましたが、最適なものはありませんでした。think-cellでは、コーディング規則とコードのレビューによって、典型的な落とし穴を首尾よく回避しています。コードのレビューで見つからない、より複雑な問題は、静的コード解析では見逃される傾向があります。十分なスタッフを擁するテストチームと、開発者に直接コンタクトできる緻密なサポートチームがあれば、見逃しやすいバグを識別する際に、静的コード解析よりもはるかに役立つことがわかっています。また、テスターと開発者がより多くのバグをよりすばやく見つけられるツールを継続的に探しています。
ソフトウェアの開発方法としてのAgileについてはどう考えていますか?
think-cellはアジャイルの動向を中心に発展してきた最新のソフトウェア開発手法を意識し、プロジェクトに役立つものであれば、邪魔にならない程度に採用しています。例えば、ピアレビュー、高度な自己組織化と説明責任、ホールウェイユーザビリティテスト、実際のユーザーによるより正式なテスト、および開発プロセスのどの段階でも新しい要件や発見を考慮する準備ができていること、頻繁な自動更新、ソフトウェアからの自動レポートだけでなく、アクティブなユーザーフィードバックに基づくユーザーとの緊密フィードバックループ、SSD RAIDや開発者全員への膨大な量のRAMなど購入できる最高のツールを使用、我々の実装のすべての細部がそれに値する注意を受けるように時間をかける、そして無駄なコードを書かない時間をかけること、などです。
いかがですか?
think-cellのチームに参加されたい場合は、電子版応募用紙をお送りください。
詳細な情報をご希望ですか?
think-cellでの仕事、求人情報、イベントについてご質問がある場合は、お気軽にマリサ・フリーズ(Julia Zhachuk)までお問い合わせください。
hr@think-cell.com
+49 30 6664731-81