Software Engineer II
Role details
Job location
Tech stack
Job description
The Software Engineer II configures hardware and software for customers and contributes to new feature development, product enhancements, and customization projects. This role participates in maintenance and troubleshooting activities, including testing, reviewing, and analyzing processes for established toolsets and engine software packages. The engineer collaborates closely with cross-functional teams to deliver reliable data acquisition and control applications that meet functional, usability, and performance requirements.
Responsibilities
- Assist with the design, development, and testing of data acquisition and control applications.
- Write clean, efficient, and maintainable source code that meets functional, usability, and performance requirements.
- Prepare clear and comprehensive technical documentation that aligns with organizational standards.
- Complete assigned tasks under supervision while meeting schedule and budget expectations.
- Participate in design reviews to provide input on architecture, implementation approaches, and technical decisions.
- Take part in peer code reviews to ensure code quality, consistency, and adherence to best practices.
- Execute and support testing activities to validate software functionality and performance.
- Provide timely and constructive feedback to leadership on project deliverables, risks, and progress.
- Supply complete and accurate information to the QA team to enable thorough and efficient formal testing.
- Continuously acquire and apply new knowledge to improve technology, products, and development processes.
- Assist with product support activities, including design, implementation, installation, and commissioning for customer solutions.
- Configure hardware and software for customer environments to support successful deployment and operation.
- Support troubleshooting and maintenance efforts for existing toolsets and engine software packages., The Software Engineer II works in a technology-focused environment that involves close collaboration with development, QA, and product support teams. The role centers on building and supporting applications that run on Windows and Linux operating systems, interact with SQL databases, and communicate with LAN-based instrumentation over TCP/IP or UDP/IP. The position involves a mix of software development, testing, documentation, and support activities, often using C, C++, and C# in a client/server and data acquisition context. Work is typically performed in an office or lab setting with access to development workstations, networking equipment, and test instrumentation. Standard business hours generally apply, with flexibility as needed to meet project deadlines, support installations, or assist with commissioning activities.
Requirements
- Bachelor's degree in Computer Science, Computer Engineering, or a related field, or equivalent relevant experience in lieu of a degree.
- Structured programming background with 2-5 years of software design experience in one or more of the following languages: C, C++, or C#.
- Proficiency in programming with C, C++, and/or C#.
- Basic knowledge of Windows operating systems for application development and support.
- Basic knowledge of Linux operating systems for application development and support.
- Basic knowledge of SQL and working with SQL databases.
- Basic understanding of Internet and web technologies as they relate to application development.
- Basic understanding of client/server models and architectures in application development.
- Ability to write source code that meets defined functional, usability, and performance requirements.
- Ability to prepare technical documentation that conforms to organizational standards.
- Ability to collaborate effectively in design reviews, code reviews, and testing activities.
- Ability to work within defined schedules and budgets while following supervision and guidance.
Additional Skills & Qualifications
- Experience working with LAN-based instrumentation, including writing drivers for LAN-based devices using TCP/IP or UDP/IP, is preferred.
- Experience writing multi-threaded software is preferred.
- Experience with real-time data acquisition systems is preferred.
- Familiarity with TCP/IP networking concepts and their use in software development.
- Exposure to Linux environments for development, deployment, or troubleshooting.
- Strong analytical and problem-solving skills for diagnosing and resolving software issues.
- Willingness to continuously learn new tools, technologies, and processes to enhance product quality and efficiency.
Benefits & conditions
This is a Contract to Hire position based out of New Brighton, MN.
Pay and Benefits
The pay range for this position is $43.00 - $52.00/hr.
Eligibility requirements apply to some benefits and may depend on your job classification and length of employment. Benefits are subject to change and may be subject to specific elections, plan, or program terms. If eligible, the benefits available for this temporary role may include the following: - Medical, dental & vision - Critical Illness, Accident, and Hospital - 401(k) Retirement Plan - Pre-tax and Roth post-tax contributions available - Life Insurance (Voluntary Life & AD&D for the employee and dependents) - Short and long-term disability - Health Spending Account (HSA) - Transportation benefits - Employee Assistance Program - Time Off/Leave (PTO, Vacation or Sick Leave)
Workplace Type