Senior Software Engineer
Bitflip engineering is an engineering company designing solutions for connecting devices anywhere in the world, including hardware, software to run on that hardware, wireless / wired connectivity, back-end server connection solutions, cellular device solutions, custom / proprietary protocols, and everything in between. Our solutions run on everything from Android/IoS devices, guided parachute systems, gps tracking solutions, to connected cars. We do it all and are looking for embedded software engineers at various skill levels to join the team. The ideal candidate is a self-motivated multi-tasker and team-player with a passion for embedded system development and hardware/software co-design with multiple cutting edge wireless technologies, and connecting those devices to people via cloud technologies. You will be part of a small but growing company and a tight knit team, using a wide variety of advanced technologies working with industry leaders in telecommunications developing advanced system for the IoT, automotive, and defense industries. If you like to work hard and play hard and are smart and get things done, we'd like to talk to you. You will be a key developer responsible for the development of new software products and enhancements to existing products. You will be working on a broad range of technologies ranging from embedded platform to server technologies such backend services in C#, COAP, LWM2M, and front-end technologies. For guys that like to touch everything, this is THE job. You should excel in developing solutions for difficult embedded problems quickly, have curiosity and desire to dive in a figure out how things work,and have outstanding communication and debugging skills. You must be comfortable working in fast-paced, dynamic environment and be able to adapt to changing requirements and demands. You will develop proof-of-concepts that will eventually go to productions, as well as maintain and support production devices. You will be responsible for bring-up, test, and development of small embedded devices and developing drivers to interface with devices over various interfaces such as USB, SDIO, I2C, etc. for both real-time operating systems such as ThreadX and FreeRTOS as well as embedded Linux. Asa senior engineer, you should have a thorough understanding of what it takes to write drivers, tasks/threads, interrupt service routines, etc. in an embedded environment and be comfortable debugging with both JTAG debuggers as well as various pieces of hardware test equipment. The ideal candidate will demonstrate a thorough understanding of these skills and also show a passion for software and hardware development, code quality, and getting things done. If you're a junior engineer, we can teach you if you have the desire. ResponsibilitiesWriting clean, high-quality, high-performance, maintainable code in C and Go for embedded systems as well as serversDevelop and support software including applications, database integration, interfaces, and new functionality enhancements for end-to-end connectivity of embedded devices to back-end servers over wireless connections including 3G/4G/5G, 802.11, 802.15, and proprietary radios and protocolsSupport test and deployment of new products and featuresParticipate in code reviews and schematic reviewsPerform hardware and software device bring-upCreate device drivers for peripherals such as Bluetooth sensors, flash devices, accelerometers and other peripheralsCreate applications for mobile devices (Android, IOS) as well as windows and LinuxDebug and test network data connections and transfers QualificationsThe ideal candidate will have 1-4 or more of the following qualificationsBachelor's degree in Computer Science, Computer Engineer, Electrical Engineering (or related field)2+ years of relevant work experience in embedded systemsAbility to multi-task, organize, and prioritize workAble to debug hardware and drivers with Oscilloscope's, logic analyzers, and other test equipmentExperience with bare-metal software development, Real Time Operating Systems or Embedded LinuxUse of JTAG/SWD debuggersUnderstanding of networking and network protocols, and be able to debug open ended problems with various tools such as wireshark'Able to work with multiple operating systems comfortablyBack end development language support using golang, protobufs, and understanding of microservice architecturesC Programming experienceFamiliarity with basic tools such as Perl, bash, make, etcPreferred Qualifications2-5 years in the following areas:Design and development of Linux user/Kernel space components,Middleware/Software Development Kit development/creation (SDK)Experience with ARM processors and assembly programmingStrong communication skills (written and verbal), working with teams across multiple time zonesWireless experience with cellular, wifi, Bluetooth, GPS, or otherExperience or exposure to automotive technologies such as CAN bus, etcWorking experience on the ARM based processors, JTAG based debugging etc.Exposure to backend services, including TCP / UDP communications, database technologiesSalary:$100K - $200K depending on experience