Senior Software Engineer


San Diego, CA

Industry: Professional, Scientific & Technical Services


11 - 15 years

Posted 165 days ago

  by    Ashley Kaapuni

This job is no longer available.

{Senior C++ Software Engineer / Architect}


Every day, more than three billion people around the globe rely on our technologies in a wide range of applications in multiple verticals ? from Telecom and Automotive, to Medical and Avionics. We are behind the most extensively deployed embedded operating system in the communication market, our solutions are deployed in more than half of the world's cellular base stations and a majority of the world's satellite base stations. Listed on NASDAQ OMX Nordic Exchange Stockholm AB, Enea is an open-company ready for the open-source ecosystem, a company that understand, support and promote the daily needs and aspirations of its team members.

Why make it boring? Join us!


  • Embedded Software development
  • Design and implement a new medical infusion pump product
  • Design and implement prototypes
  • Decide on hardware and software architecture issues
  • Documentation


  • C++ Software development ? library and SDK level
  • Custom, specific user interface design and implementation
  • Documentation
  • Architecture level design


  • Together with your team colleagues, you are working closely with the project manager (PJM) which is providing you support for the daily technical jobs, and with the delivery director (DD) which is empowering your skills and expertise by providing the needed knowledge, information and resources.
  • You will take part in the development of a new product.
  • You will work directly with key stakeholders and help decide on software architecture and hardware integration.


  • College graduated in Computer Science, Telecommunications or equivalent.
  • Minimum 10 yrs of software development experience, 5 years of C++.


  • Embedded C
  • C++ Software development ? library and SDK level
  • Embedded and standard C++, design patterns
  • Custom user interface classes design
  • Realtime systems, event driven systems
  • Great attention to quality
  • Excellent written and verbal communication abilities
  • Follow process in a highly regulated industry

Make sure that you know the basics well.

-Have a good grasp on algorithms and data structures, multithreading issues (deadlocks, events, interrupts), standard library containers, also know state machines conceptually as well as Model-View-Controller.

Data Structures ? Linked Lists ( Single vs. Double), Heaps, Queues, Stacks, Binary Trees, Hash Tables

Algorithms ? Binary Search, Deferent Sours ( Quick Sort), we will not ask you for Recursion, Dynamic Programming, please understand the big-O(n) analysis

Multithreading ? Concurrency Issues, Dead locks, Events vs. Interrupts. Pooling vs. Interrupts, Timers

OS vs RTOS ( Events vs. Preemption)

-  General topics about Linux

?       How would you make Linux a RT?

?       How would you optimize the boot up time of the RT Linux?

?       How would set up exception handling of the Linux?

Mission Critical SW Design

?       How and what would you do to use STL Containers in Mission Critical SW

?       Malloc overwrite? Best Fit vs. First Found?

?       Memory Pools (SLOT, SLAT for what?)

?       Singleton???? What is it?

State Machines?

State Charts?

Design Patterns:

?       Behavior ????

?       Creational ???..

?       Structural ??..

- **What is an Interface? Abstract Class? HAS A vs. IS A!

- ** What does it mean to Program to interface and not to a problem?


  • Linux kernel space development experience
  • Experience and/or knowledge of system integration
  • Previous automotive or medical products development experience
  • NXP hardware such as i.MX series
  • Graphics programming (OpenGL but also direct framebuffer access)
  • C++ standard library inner workings, containers, memory pools

Additional Details regarding the challenges that engineers in this industry face:

?Paramount here is the need to be deterministic.

?This is why Real Time Operating Systems (RTOS, or Linux with RT patch) are a MUST. This is also why there should be no dynamic memory allocation.  To learn more you should look at how to override operator new in C++, memory pools, and writing your own STL.

?Also, as a med device engineer, we are never that far from the hardware. Drivers will need to be written (in C), code will need to be ported, and assembly and ELF inspection is not off the table, and so on.

?During this year we will need to finalize the architecture of the next gen device, from hardware and software perspective, and yes TDD is also a concern.

?The challenge here is to be able to foresee as much as possible the impact of every design choice. Measure 30 times and cut once, if you will.

?Once the product is "in the field" there is not much room for updates or bugfixes, much less for redesigning from scratch.    

?Any prototyping and trial-and-error will be done before the design is completed. Once it's established, it will literally be set in stone?

$90K - $120K