Software Engineer
Actalent · Ames, IA · 1 wk ago
HybridEngineering$45–$60/hrContract
About the role
This role leads the design, implementation, and testing of innovative software solutions that exceed customer needs, with a strong focus on Linux-based embedded systems and modern C++ development. You will act as a technical leader, mentoring less experienced engineers, championing continuous improvement and agile practices, and modeling best practices in software design, architecture, and code quality.
Responsibilities
- Lead the design, implementation, and testing of robust software solutions that meet and exceed customer requirements.
- Mentor and guide less experienced team members, providing technical assistance, constructive feedback, and ongoing support across teams.
- Serve as a technical leader in discussions and initiatives to improve software solutions, development processes, and engineering practices.
- Champion continuous improvement, agile practices, and change initiatives by identifying issues and resolving them using root cause analysis or similar methods.
- Model best practices in code quality and actively lead code reviews to foster a culture of clean, maintainable, and well-documented code.
- Create, update, and maintain technical documentation, development processes, and coding standards to ensure clarity and consistency.
- Deliver high-quality, working code and effectively demonstrate product features to stakeholders and broader internal audiences.
- Facilitate cross-team collaboration, including organizing and leading meetings, aligning priorities, and helping resolve conflicts to maintain progress.
- Show openness to feedback and a commitment to continuous team and personal growth.
- Develop and maintain a comprehensive understanding of the products and their impact in the field to inform design and implementation decisions.
- Employ debugging and profiling tools to diagnose complex issues and drive them to resolution.
- Utilize continuous integration tools and workflows to maintain a high level of build and release quality.
Requirements
- Bachelor’s degree or higher in Computer Science, Software Engineering, or a related engineering discipline.
- 5+ years of product development experience focused on software products.
- 5+ years of professional experience and strong understanding of C++.
- Strong professional experience with Linux and embedded systems.
- Hands-on experience with embedded C in real-time and embedded environments.
- Strong software engineering fundamentals, including requirements analysis, design, implementation, testing, and maintenance.
- Experience with software design and architecture, including applying design principles such as SOLID and clean or pragmatic architecture.
- Proficiency with test-driven development and design, continuous integration, and Scrum or Agile development methods.
- Experience with clean coding practices, refactoring, and writing clear code specifications.
- Practical experience with Git-based workflows and tools such as GitLab.
- Experience with build and integration tools such as CMake and Jenkins.
- Familiarity with containerization and build systems such as Docker and Yocto.
- Experience with package and artifact management tools such as Conan and Artifactory.
- Experience with automated testing frameworks, for example gtest and QML testing frameworks.
- Proficiency in debugging with tools such as gdb or lldb and using profiling tools to optimize performance.
- Ability to perform structured root cause analysis to identify and resolve complex issues.
- Scripting experience with Bash and configuration using YAML.
Essential Skills
- Experience with Qt Designer and QML for user interface development.
- Understanding of UI/UX design fundamentals, including visual design, interaction design, prototyping, and usability testing.
- Exposure to or experience with vision processing and machine learning concepts or applications.
- Experience with robotics and robotic path planning.
- Familiarity with geospatial functions and concepts.
- Ability to read and interpret electrical schematics and pinouts.
- Strong foundations in mathematical concepts relevant to software engineering, algorithms, and problem solving.
- Experience with Perforce as an additional version control system.
- Comfort working in cross-functional, collaborative teams and presenting technical topics to varied audiences.