At Carnegie Technologies, we are a strong technical team that builds communications products for the multitude of networks available today. Whether that’s combining LTE and Wi-Fi together for better-quality VoIP calls that aren’t disrupted when you switch networks, aggregating networks together for smoother video streaming, giving your smartphone the ability to place calls over satellite from anywhere on the planet, or constructing end-to-end IoT systems that take advantage of the latest wireless protocols, we’re always looking for ways to get the best experience at the lowest operational cost.
We come from many different backgrounds and levels of expertise – but to all of us, craft and functionality are equally important. We constantly learn and hone our skills and incorporate those experiences into every line of code. We don’t ship “fast” solutions – we ship the right ones for our customers. We’re also leaders that create quiet time to solve hard problems and the space to focus on the best result.
Our software engineering team is spread across our offices in Kitchener-Waterloo, Canada; Austin, Texas; and Romsey, UK. You’ll have the opportunity to work with our super talented team of people, from experts in networking, machine learning, and applications to some of the pioneers of Wi-Fi itself. You might even get your name on a patent!
Our technology stack is carefully chosen to give our developers a great development experience – you’ll spend your time building quality software, not on repetitive tasks. We’ve built tools to ensure our code is consistently formatted, to release after commit, and to automate documentation; and we rely on a shared set of engineering principles when reviewing every line of code we write. Common technologies we use are:
- Mobile apps: Java (Android), Objective-C (iOS), Ionic/Cordova (cross-platform), C++ (cross-platform)
- Servers: node.js (with TypeScript), Go, Angular, React (web), C++ (traffic handling), Cassandra, Kafka, KQSL (data), RabbitMQ (messaging)
- Build & Deploy: Git, Jenkins, Docker, Kubernetes, Helm
Come join us!
Tools developers at Carnegie build the tools the engineering teams use to write our network convergence, satellite, and Internet of Things products. They are generalists - working in many languages across many tools and many teams. A blend of development and devops, this role is for people who like to work on infrastructure and write technical tools that make other developers extremely happy.
- You'll be coding in a wide range of languages - really any of the languages in use here at Carnegie
- You'll be writing command-line tools that automate steps in our development workflow
- You'll be helping developers write Jenkins scrips to automatically build, test, format, or otherwise automate their builds
- You'll be writing servers that make it easier for us to distribute apps, test results, or other build artifacts
- You'll be writing scripts that consistently format our code
- You'll be setting up the underlying infrastructure for build automation
- Nodes that can run scripts against real hardware
- Nodes that have a set of Android and iOS devices attached
- Containers that contain all the build dependencies for each project
- Kubernetes clusters that can auto-scale our build system
- You'll write or deploy integrations between our development tools
- Gerrit hooks that update JIRA throughout our code review process
- Slack bots that kick off builds or return their results
- Web services that allow our data science team to analyze build logs
- You'll participate in development, architecture, requirements, and design
- You'll work closely with our software, hardware, and embedded teams, as well as devops and project management
- You’ll be pushed by your colleagues to deliver quality results in a reasonable timeframe – and trusted to seek input from then take the best action
- The problems you get to solve will constantly be changing, making every day a new experience
- You have a wide knowledge of computer science/software engineering – through a related degree or diploma, but we also recognize practical experience
- You are formidable with programming, system administration, and/or devops, and have done so - professionally or personally - for years
- You are comfortable in Linux, and working on the command line is no big deal
- You have experience working with Jenkins or other build systems
- You have experience writing shell scripts
- You have experience debugging infrastructure problems, like misconfigured networks or missing environment variables
- You want to work in a small, fast-moving team with lots of responsibility (and few roadblocks to getting things done)