Programming experience with Java, C#, C++, and Visual Basic in the implementation of standalone and distributed applications. Experience with software-engineering techniques, object-oriented analysis and design, the Unified Modeling Language (UML), design patterns, and component-based software.