Senior Software Engineer - Developer Experience

Careers at Bloomberg

New York

Posted Mar 8, 2018 - Requisition No. 65482

Bloomberg's developer experience team empowers 5000 engineers globally to reach their maximum productivity. The work we do helps engineers deliver software that underpins the entire financial industry. Bloomberg leverages more tools and open source technologies every year, and our team is expanding to ensure engineers here are well-equipped to take advantage of those tools. That’s where you come in.

You are passionate about build systems that can manage a large-scale, multi-language codebase. You are interested in building tools that can prevent complex bugs and keep our code clean. You are ready to help build the next generation of intelligent analysis tools to perform bug detection and smart code refactoring. You want to provide an end-to-end build and deployment platform where pull requests are streamlined into a modern and dynamic integration.

Read on to learn more about our teams and what we're looking for. You can express interest in particular teams in your application.

1. Build System

Our team develops and maintains the system that Bloomberg engineers use to build the terminal software used by over 300 thousand clients every day. This system comprises proprietary components as well as off-the-shelf tooling for a diverse set of platforms. C/C++ are continuously integrated and deployed daily alongside Python, Haskell, and other third party tooling integrated into Bloomberg.

We'll trust you to:

  • Design and improve protocols that help our engineers build and test code
  • Collaborate with engineers to debug and diagnose compiler or operating system bugs and issues
  • Research and prototype new build platforms as well as operating systems and compiler options
  • Work with a wide range of technologies, ranging from source control (git, subversion) all the way to databases (postgres, sqlite)

You will need to have:

  • An interest in a wide variety of languages (Python, Javascript, Kotlin, Scala, Haskell etc.) including an intimate knowledge of a compiled language (C++/C)
  • Strong development skills with at least one scripting language, preferably Python
  • Understanding and familiarity with compiler toolchains such as gcc or clang
  • Familiarity with build systems such as autotools, CMake, Bazel, or Pants is a plus

2. Deployment Platform

You’ll be part of the team who leads the transition from a manual deployment model to introducing CI/CD to the company. You can balance a long term vision of where we want to go with the short term goals of delivering incremental solutions to challenges users are facing today. You’ll also act as an incubator for technologies that go on to be used by the rest of the company, giving you the opportunity to try and work with new open source technologies.

We’ll trust you to:

  • Develop and maintain deployment functionality for our engineers
  • Continue advancing technical quality by researching and leveraging industry-standard solutions and open-source projects
  • Provide guidance on best practices for a CI/CD workflow.
  • Listen to our users

You will need to have:

  • Experience with Unix/Linux with strong problem solving skills
  • Experience with Go and container technologies
  • Any experience with microservices and distributed systems is a plus

3. Development Workflow

We are a team of technologists, engineers, evangelists, and trainers helping our engineers deliver their best work. We are not afraid to make large investments to build our own continuous integration and development solutions, covering all stages of development. We work with Phabricator, Jenkins, Debian Package, GitHub Enterprise, Coverity, Jira, Confluence and anything that fills gaps and joins them together. You will not only help thousands of developers inside the company, but you’ll also join a global community of engineers leveraging open source technologies.

We'll trust you to:

  • Develop software which will help standardize development workflow across the entire organization
  • Research the latest methodologies in CI/CD
  • Engage with Developers across the firm to design & develop CI/CD tools ?

You will need to have:

  • Development experience in Unix/Linux
  • Experience with technologies like Java 8, Kafka, Node, REST, Python and platforms including GitHub Enterprise, Jenkins, SonarQube
  • Familiarity with technologies such as Postgres, Hibernate, Vue.JS, GraphQL ?

4. Automated Refactoring and Analysis

We are working with our diverse developer community in improving the overall state of the quality of the code. This is done via the adoption of off-the-shelf Static Analysis tools as well as the development of customized tools based on Clang and Camfort. We not only report on issues for the developers to fix, but whenever the fix is a formulaic code change we also produce a tool to automate that change.

We'll trust you to:

  • Evaluate and implement off-the-shelf static analysis tools, by working directly with our application teams
  • Write tools that will automatically perform changes in C and C++ code by using the Clang Libtooling AP
  • Write tools that will automatically perform changes in Fortran code by using the Camfort API
  • Work with our developer community on adopting Best Practices in terms of code design and general architecture guidelines

You will need to have:

  • Experience in C/C++ as well as some interpreted language, such as Python
  • Understanding of build tools, such as CMake
  • We'd love to see experience with Haskell or other functional languages, clang libtooling API, or writing grammars and parsers
Similar jobs