Considerable knowledge of data architecture, software architecture, common software design patterns, development and testing practices Considerable knowledge of programming languages and software development tool suites