Software Engineer
Summary
The Software Engineer will develop applications for energy optimization and control logic on the Capture Controller, bridging operational technology with cloud infrastructure. The role primarily uses Go and Python to manage data exchange between PLC systems and cloud services.
About the job
At Capture Energy, we’re transforming our automation architecture and are looking for a Software Engineer – Operational Technology & Cloud Integration to build core services on our Capture Controller while ensuring seamless data flow to our cloud infrastructure.
You’ll create lean, maintainable applications and clean interfaces between our operational technology and cloud systems.
We primarily develop in Go, but we’re equally interested in strong Python engineers with BESS or energy experience who are willing to transition to Go. The right domain expertise, learning ability and hunger matter more than years on a resume.
In this role, you’ll be a critical integration point between our automation systems and cloud platform, working closely with both our Senior TwinCAT Engineer and Cloud team to evolve our architecture.
You Will
- Develop applications running on the Capture Controller to handle energy optimization, state management and control logic
- Communicate with TwinCAT via ADS (Automation Device Specification) to coordinate PLC operations and sensor data
- Design and implement data schemas and APIs for reliable, bidirectional data exchange between the controller and cloud services
- Architect a clean separation between real-time PLC functions and business logic in the controller application
- Work closely with both the TwinCAT engineer on the OT side and the Cloud team on the IT side to define data contracts and integration points
- Build robust error handling, logging and monitoring for production control systems
We Expect You To
- Have solid production experience in Go or Python. You’ve shipped code that matters and understand what can go wrong in production
- Have strong systems-level thinking across state management, concurrency, real-time data handling and distributed systems
- Have hands‑on experience with energy systems, BESS or battery management. This is critical and the hard part to teach
- Have experience with industrial protocols or hardware integration, even if not ADS specifically
- Be comfortable working across both operational technology (OT) and IT infrastructure layers
- Have a genuine curiosity about how things work and the drive to learn and ship in a fast‑moving environment
- If Python is your primary language, have a demonstrated ability to learn new languages and a genuine interest in transitioning to Go as your primary development language
- Be fluent in English, both written and spoken
Nice To Have
- Existing Go experience
- Familiarity with Beckhoff TwinCAT or other PLC ecosystems
- Experience with ADS, OPC UA, Modbus, MQTT or similar industrial communication protocols
- Background in embedded systems, IoT or software running close to physical equipment
- Knowledge of battery energy storage, grid services, energy optimization or similar domains
- Experience with data pipelines, message queues or time‑series databases
This is a permanent full‑time position based in Stockholm (Sweden) or Fredrikstad (Norway), with an on‑site setup and flexibility to work from home several days per week.
For Python applicants transitioning to Go, you can expect structured onboarding with pair programming, mentoring and clear Go adoption milestones. We’ll invest in your ramp‑up. In return, we ask that you commit to the transition.
We offer competitive salary and benefits based on experience and location and are prepared to offer market rates for the right candidate in either Stockholm or Fredrikstad.