C++ 开发人员

加入我们成为 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 用户亲自执行的布局任务而言,这些幻灯片具有极大的自动化潜力。难题有很多:从对于良好布局构成要素和手动布局执行者所遵循准则的透彻理解,到能凭借足以进行交互式幻灯片设计的高速度而产生可接受输出的算法,乃至以易于理解而不唐突的方式对我们新的原始幻灯片布局方法提供支持的图形用户界面、能执行自动 Bug 报告和自动更新的强大技术解决方案,以及在五十万用户的计算机上与第三方软件的兼容性。

我们已实现的一些亮点如下。

语言

  • 我们采用的唯一编码语言是 C++。就连我们的客户门户也是以 C++ 编写的。在需要的位置有一些汇编程序粘附代码,我们的内部版本脚本使用 Python 编写,除此之外 think-cell 仅使用 C++。
  • 当然,我们会在代码库中使用诸如 lambdas 和右值引用等 C++ 功能,并在编译程序支持时切换为 C++17。
  • 我们为德国标准化协会 (DIN) 的编程语言工作组提供资金。我们的部分员工是该协会的成员,并在 ISO/IEC C++ 的国际标准化流程中投票。
  • 我们为标准 C++ 基金会提供赞助,协助他们推进在所有编译程序和平台上对标准 C++ 的了解和使用。

  • 我们在所有代码中使用 Boost(例如 Boost.Spirit)进行分析。
  • 我们有自己的范围库,与 Boost.Range 或 Eric Niebler 的 range-v3 位于相同脚本中,但是更进一步(例如通过统一内部和外部迭代)。我们将讨论,大多数代码均公开
  • 我们开发了自己的跨平台库,以便使用单一代码库支持 Mac 和 Windows。
  • 我们拥有自己的引用计数库和暂留库,以保存和还原整个对象树。
  • 我们有广泛的 Bug 报告基础结构。判定和错误检查保留在版本代码中,我们的软件会向服务器自动报告 Bug。服务器分析 Bug,将其归类,并将其存档到所有开发人员都能访问的数据库中。若某更新可以修复该 Bug,则用户可以直接从 Bug 响应网页下载该更新。

算法

  • think-cell 的创立基于对自动幻灯片布局的算法进行打造的理念,如今我们仍然走在为了实现这一雄心勃勃的目标而激动人心的征程上。你可以查看我们最新的版本运行实践
  • 我们为自动点云标记开发了新算法,由此可将标签放置在离开实际点的位置。
  • 我们为自动柱形图标记开发了新算法。
  • 我们与线性求解器 CLP 的作者 John Forrest 合作,使他的单工码能更快对我们的问题类型求解。
  • 我们开发了 C++ 或 Boost 中不存在的许多泛型数据结构,例如分区。
  • 我们的软件不仅能制作图表,还能从文献中读回图表。对于我们的图表识别工具,我们依赖 OpenCVLeptonica Image Processing Library

逆向工程

  • 为了实现通过记录的 Microsoft Office API 所无法实现的功能,我们使用反汇编程序 IDA from Hex-Rays 执行了许多逆向工程操作。
  • 我们编写了可能是最佳的函数挂钩引擎。每次启动我们的软件时,我们都会修补内存中的 Microsoft Office 可执行文件。我们并非对补丁地址进行硬编码,而是针对可执行文件中的微小更改,搜索功能强大的小块汇编码。

关于此职位

我们正在寻找聪慧、有创意且具有扎实理论背景的开发人员。我们过去聘用的开发人员多数拥有计算机科学领域优秀的硕士学位甚至博士学位。你在很大程度上将独立工作,并在实现新功能时负责整个范围的活动。你应能从用户的视角看待问题,并与其他开发人员讨论抽象概念。我们希望每个开发人员都能执行架构、设计、实施、了解客户反馈和修复 Bug,而不是由多人分担这些活动。因此,我们要求所有人掌控自己的工作。

在 think-cell,没有最终期限,没有事先安排的会议。若你确信已实现了可能最佳的解决方案,即可发布功能。我们将在需要时开会,与会对象仅限需要出席的实际参与者。公司内任何人在任何时候提出的处理、想法、建议和批评都会受到欢迎和认真的考虑。欢迎你提出想法,即使这意味着我们必须更改大量代码以进行优化,也是如此。

我们已经在人工智能和计算机图形领域发表多篇科学论文,我们鼓励你也这样做。我们对参加讨论会提供赞助,与美国和德国的多所大学和研究机构具有紧密关系。

think-cell 鼓励在工作与生活之间实现健康的平衡。我们不在夜间或周末工作,并提供全职陪伴保姆为员工的家人提供支持。在孩子不舒服或你希望在晚间外出时,我们可以免费提供保姆。

我们支付极具竞争力的薪资,在聘用满一年后,将为开发人员每年提供 120,000 欧元。若需要,我们将努力协助你迁居到柏林,并在力所能及的范围内努力协助你获取工作许可。你应能以英语进行有效的交流,不要求懂德语。若需要,我们可以安排德文课程。

立即通过电子邮件申请

我们的 DevOps 上提供更多详细信息

你们使用哪种 IDE 和编译程序?

我们使用 Visual Studio,在 Windows 上采用 MSVC 编译程序,在 Mac 上采用 Xcode(含 Clang)。如上所述,我们针对两个平台对相同的源代码进行编译。

你们对 UI 使用哪种工具套件?

我们使用 OpenGL(在 Mac 上)和 DirectX(在 Windows 上),在 PowerPoint 和 Excel 窗口内容的基础上呈现我们自己的用户界面。

你们使用哪项工具执行问题跟踪?

我们多年来一直使用 Request Tracker (RT),但是现在正在寻找替代方案。

你们使用哪个版本控制系统?

我们依赖 Subversion 进行版本控制,因为除了明码之外,我们还要处理许多二进制文件。这样一来,我们的开发人员就可以根据自己的喜好,自由选择 svn 或 git 客户端。

你们是否进行单元测试?

我们已经实施了一个工具套件,可借此直接在我们的代码库中轻松定义单元测试。每次编译运行过程中将执行单元测试。

你们是否使用构建服务器?

专门的机器运行 Jenkins 用于持续构建项目,并在出现故障时自动向上次成功构建以来提交代码的开发人员发送电子邮件。

你们采用编码惯例吗?

我们使用一组已编写的编码惯例,包含对其中每个单一惯例采用的强大参数。若发现新的或更好的参数,我们将立即更新编码惯例。

你们对静态代码分析持什么看法?

我们尝试过一些工具,但它们几乎不能提供任何有价值的见解。显然,我们非常成功地运用编码惯例和代码评审避开了典型的陷阱。避开代码评审的更复杂的问题通常在静态代码分析期间也不受人注意。在识别隐含 Bug 方面,能够直接联系开发人员的人才济济的测试团队和保持警惕的支持团队比使用静态代码分析更有帮助。即便如此,我们也始终在寻找能协助测试人员和开发人员更快找到更多 Bug 的工具。

你们对作为软件开发方法的 Agile 持什么看法?

我们注意到了围绕 Agile 活动发展的现代软件开发方法,并运用了有助于我们的项目且不会产生障碍的一切方法。这些方法包括同行审核、高度的自我组织和问责、走廊可用性测试、实际用户的更正式测试、在开发流程的任何阶段准备考虑新的要求或发现结果、频繁的自动更新、基于活跃用户反馈和软件自动报告的用户紧密反馈环节、使用可以通过资金购买的最佳工具(例如 SSD RAID 和供每个开发人员使用的数量庞大的 RAM)、花时间确保实现的每个细节都获得应有的注意、花时间去除不必要的代码。

以上信息令你心动了吗?

若你是我们团队缺少的人才,请向我们发送你的电子申请。

立即通过电子邮件申请

希望了解更多?

若你对 think-cell 的工作、职位空缺或活动有任何疑问,请随时联系我们的同事 Marisa Freese。

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

think-cell 人力资源代表 Marisa Freese

think-cell 使用 Cookie 来改进本网站的功能、性能和安全性。如果您想使用本网站的全部功能,则需要您的同意。可在我们的隐私权政策中找到有关 think-cell 如何使用 Cookie、您的同意和您的隐私权的更多信息。