PRINCIPAL SOFTWARE ENGINEER
PRINCIPAL SOFTWARE ENGINEER
This position is in the CALIFORNIA based Common Assets SW group, with the important role to create components using a common architecture that refactors legacy code from multiple product lines. The common asset group also spearheads the introduction of new tools, promotes automated test frameworks, and identifies common functionality in the different product lines to promote reduction in the number of software platforms and to enhance product line synergies.
The position requires a senior or principal level software engineer with:
Expert level software development skills
Strong emphasis on software architecture
Design using OBJECT ORIENTED DESIGN PATTERNS to effectively refactor legacy code to transition to a component and service based architecture.
SUMMARY OF RESPONSIBILITES:
1.Estimate effort to write assigned requirements
2.Gather requirements, and write either system level or software level requirement documents and drive peer review and approval
3.Develop work breakdown and give accurate effort estimates
4.Document design and architecture and explain rationale for decisions, and drive and participate in design reviews. Help maintain architecture and design excellence
5.Analyze common asset source code and legacy source code for functionality and design, which will be used to both integrate new functionality and to fix defects
6.Provide technical leadership for a feature set
7.Code software and perform code inspections in a team environment
8.Develop automated unit tests and demonstrate components meet requirements
9.Support and perform integration of components into legacy code
10.Support software quality control with testing requirements of modules written by other developers as needed
11.Troubleshoot system, find and fix assigned defects
12.Exchange ideas verbally and in writing with software, hardware and application engineers on a continual basis to help achieve best of class software
REQUIREMENTS
THE SUCCESSFUL SW CANDIDATE WILL HAVE:
•Expert skill level: C++, MFC, Windows XP, design patterns, OOD/OOA using UML diagrams, software architecture, refactoring software efficiently and integrating new components into legacy code, written and verbal communication skills
•High proficient skill level: COM / DCOM, technical leadership, instrumentation software, user interfaces, data structures and storage, multi-threading, designing and using component based and service oriented architectures, software engineering using a software process and lifecycle
•Knowledge needed: Perl, Python, Perforce, TeamTrack, CruiseControl
•Knowledge helpful: C#, data analysis GUIs, data analysis math algorithms, AFM or optical profiler applications used in the research, medical, data storage or semiconductor industries, knowledge of DSP controllers, stages, serial and network drivers, systems knowledge and troubleshooting skills with metrology instruments, worked in Capability Maturity Model (CMM) L2 or better organization
EDUCATIONAL/EXPERIENCE REQUIREMENTS:
•Bachelors in Computer Science or equivalent. Masters in Computer Science or equivalent is preferred.
•10+ years in software development with strong design and development skills in C++, Windows is required
•Demonstrated experience with design and implementation of a software architecture and component design using object oriented design patterns is required
•Strong communication skills and ability to work with cross-functional teams is required
•Experience with software process, requirements management, task estimation and software configuration management systems is required
•Ability to write system level or software level requirements and design documentation, and the ability to fully unit test software is required
•Strong motivation to succeed, with track record of going the extra mile to achieve a successful product is required
•
Experience with significant code refactoring using architecture, design patterns and OOD/OOA concepts is required
•Experience with code refactoring of instrumentation systems is very helpful
•Experience with C#, .NET, XML, SOAP, scripting, Perl, Python, automated build systems (e.g.: CruiseControl), automated unit and system tests is helpful
|