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, React (web), C++ (traffic handling), Cassandra (data), Kafka (data)
- Build & Deploy: Git, Jenkins, Docker, Kubernetes, Helm
Come join us!
Web Services Lead
The Web Services Lead will be responsible for designing and building the back-end services that make up Carnegie’s Wireless Mobility Core. This includes web services for policy management, network analytics, licensing and certificate management, authentication/authorization, system administration, and more. You will be working closely with the leads building our traffic-handling network services, as well as the developers building the mobile clients that use your back-end web services to ensure our products are efficient, robust, and secure.
Our product roadmap contains a larger focus on web services, and so we are seeking an individual with broad experience in this area to assemble and lead a focused, innovative web services team that can quickly add capabilities to our platform. Specific skills include:
- Experience with a number of different web services frameworks, with specific industry experience with node.js (in which we have many services already) or Go (where we have a few services)
- Serious coding skills, in multiple languages – a Unix focus is OK, but some experience with Windows would be useful
- Deep knowledge of web service architecture, including REST vs RPC, web application performance, caching, reverse proxies, and distributed system design
- Wide knowledge of the web ecosystem, including CDNs, geo DNS, HTTP, web sockets, SQL and NoSQL databases, AWS and the cloud, and what the leaders in this space are doing
- Experience with web service security, including SSL/TLS, OAuth, and CORS
- Experience with developing for quality & reliability, and how it relates to web services in particular – automated testing, performance benchmarking, load-balancing, multi-site availability, and “Chaos Monkey”-style approaches
- Some experience with front-end development – enough to put together a rough first pass UI for simple administrative tasks
- Some experience with operations and deployment – enough to set up your own web services server and work with our operations team to deploy, scale, and monitor service availability
- Experience hiring and leading a development team that is great at shipping products
This is a development lead role, so your days will consist largely of coding and code reviews – though you’ll also be spending some time each week building your team, architecting new components, refactoring old ones, releasing code to production, mentoring junior developers, and planning new features with our product team.