View all jobs

Software Architect

Farmington, MI
The Application Architect will be responsible for designing software technology products based on a deep understanding of business requirements and technology strategy, and leading a software development team through implementation of those designs. The architect will work in a highly collaborative, cross-functional agile team and will take a lead role on various software components. Additionally, the architect will stay current in emerging technologies and mentor less-senior team members.


  • Understand components, information flow, efficiency, reliability, and threading models. Apply these principles during solution design process. Ensure that requirements are achievable with the architecture. Review acceptance criteria for clarity and ensure they are complete and achievable.
  • Understand implications and constraints of hardware, networking, virtualization on system performance, throughput, maintenance, reliability, and failure modes.
  • Identify and implement architecture with appropriate domain models and division of responsibility. Understand use of information model as it crosses multiple systems.
  • Identify and implement architecture with appropriate API and services support to maintain appropriate division of responsibility. Document interface details and design tradeoffs.
  • Pragmatically protect backward and forward compatibility as necessary as interfaces evolve.
  • Follow best practices in software development methodology. Provide disciplined leadership to development teams on these practices. Facilitate change when practices evolve.
  • Review change requests to provide guidance to team and ensure development is proceeding according to best practices.
  • Define and implement appropriate build/test automation for efficient promotion through environments (Development/QA/Production).
  • Document the architecture, both up-front design and post-release as-built, including design rationale, constraints, and discarded solutions.
  • Communicate clearly and consistently. Follow through on commitments with confidence and courage.  Motivate others on team to accomplish goals.
  • Organize and lead team meetings when necessary to drive architectural alignment. Escalate decisions through chain of command when needed.
  • Work collaboratively with cross-functional groups.  Skillfully negotiate conflicting requirements and constraints in pursuit of architectural goals.
  • Follow best practices in security policies, privacy practices, development patterns, and coding practices.
  • Analyze sets of features and constraints, logically grouping features in order for delivery. Assess unnamed dependencies. Identify weak, vague, or incomplete criteria or stated requirements. Identify domain boundaries (Single Responsibility Principle).
  • Identify, document, and prioritize technical debt.
  • Identify trends in technology and where application of new technology has merit.


  • Bachelor's degree in Computer Science or related field, or equivalent combination of education and recent, relevant work experience.
  • Minimum 7 years of software development experience.
  • Minimum 4 years of web-based software development.
  • Minimum 2 years of experience in an architect or tech lead role.
  • Proven experience designing and delivering modern web applications using a common open application platform (particularly JavaScript/MEAN, Perl/LAMP, and Java/Karaf). 
  • Proven experience with software-as-a-service applications is preferred.
  • Knowledge of and desire to work in an agile software development environment.
  • Strong familiarity with object-oriented systems and enterprise design patterns.
  • Experience with development of service-oriented applications.
  • Familiarity with wide portfolio of software development applications, environments, and languages.
  • Experience with reflection, inversion of control, and dependency injection frameworks.
  • Knowledge of Java, JavaScript, Perl, HTML, and web components.
  • Strong understanding of HTTP/REST/API architecture.
  • Experience using source code control systems such as Git or Stash.
  • Knowledge of XML parsing, JSON parsing, and/or DOM traversal.
  • Excellent verbal and written communication skills.
  • Creative problem solving skills and the ability to effectively communicate and translate feedback, needs and solutions.
  • Strong teamwork orientation and the ability to foster collaboration within and across teams.
  • Good work ethic and strong sense of ownership of end results.
  • Comfortable working in an open, highly collaborative team environment.
  • Experience with both relational (Oracle, MySQL) and non-relational (Cassandra, MongoDB) database technology.
  • Experience with static code analysis tools (PMD, FindBugs, Checkstyle, etc).
Powered by