Provides leadership for development of large and complex Java EE applications on software platforms across all lines of businesses, by effectively applying software engineering principles, patterns and best practices. Collabrates with application teams across the organization to build consensus and to promote adoption of application architecture standards effectively. Additionally, provides technology insight and expertise on industry trends.
What you will be doing:
• Provides technical design and solutions for architectural and functional requirements so that software is written with consistent forethought and supports the following aspects:
• Run-time qualities (performance, security, availability, usability, etc.)
• Non-runtime qualities (maintainability, modifiability, portability, reusability, testability, etc.)
• Intrinsic qualities (fitness of purpose, conceptual integrity, correctness, robustness, traceability, buildability, etc.)
• Applies software engineering principles, patterns and best practices to arrive at design solutions and ensures that the design conforms to the enterprise standards for application design. Works with application teams to ensure that the principles, patterns and best practices are understood and applied during the development of the software.
• Develops prototype code as examples for newly designed components, refactoring efforts and core architectural frameworks and components to validate design and eliminate technical risks.
• Converts and communicates clearly a translation of requirements from business and technical sources into a technical design.
• Creates software architecture documentation and necessary design artifacts with application teams to secure design approval from IT management. • Provides technology insight and expertise by :
• acting as subject matter expert on systems and third-party interfaces when required
• assisting with vendor/software product evaluations
• actively researching on trends in technology and the industry
• working with SAE architects to define the use, governance and scope of adopted products.
• creating standards for the effective adoption of products by operation teams
• Examines the quality and consistency of requirements, design, code and test cases during reviews. Extract lessons that can be applied to improve subsequent phases and future projects. Champions refactoring and the related practices that enable the company to improve software design at code level after its construction.
• Creates and maintains technical application architecture standards for the companies Information Technology (IT) teams.
• Collaborates with various teams to build consensus on standards and collects feedbacks iteratively in order to evolve and better standards.
• Improves productivity within teams through tools, mentoring, coaching. Develops templates to ensure design consistency across the organization
• Helps with capacity planning, sizing and performance tuning exercises.
• Studies and develops a deep understanding of business requirements. Liaises with business analysts and subject matter experts to confirm understanding the business requirements and negotiates with them on complex requirements, if required in case of constraints.
• Provides support for project management and the software development lifecycle process and practices.
• Communicates effectively to IT management on impacts due to changes.
• Assesses risks proactively and sensitizes IT management, if needed.
• Operates independently with minimal supervision.
• Requires traveling domestically and internationally on occasions.
Skills and Experience:
• Bachelor’s degree.
• Any industry accredited certification will be a plus.
• Knowledge of financial industry is highly desirable.
• Minimum of ten years of IT experience.
• Five years or more of hands on Java development experience with proven track record.
• Two to three years of prior experience as technical team lead with technical supervisory responsibility for a team of at least five (middle to senior level) Java developers on two successful projects (delivered on-time, with high quality, performance and security).
• Two to three years of prior experience as a hands-on architect responsible for design and development (coding) of at least two successful development projects. (High performance, high availability and secure based OLTP Java EE applications).
• Must have an in-depth understanding of Java EE concepts and specifications (JMS, JAXB, Dependency Injection, Connectors, JMX, JDBC, JACC, JTA, EJB, Web Services (SOAP & REST), Servlets, JSF, Persistence, Security).
• Must have an in-depth understanding and applied knowledge of layered architecture design principles (for e.g. SOA) and patterns (for e.g. Java EE and Gang of Four).
• Must have hands on experience working with open-source frameworks & libraries (for e.g. spring, struts, log4j, junit, etc.), testing, performance tuning and productivity improvement tools.
• Must have hands on experience working with configuration management (for e.g. CVS, Subversion, Clearcase, etc.) and build & deployment tools (for e.g. Atlassian suite of products, cruise-control, ant, maven, etc.).
• Must have hands on experience working with Java EE servers (for e.g. Application - IBM WebSphere, Oracle Weblogic, RedHat JBoss; Web Containers – Tomcat; Web - Apache, IBM HTTP, etc.; Portal – IBM WebSphere, Oracle Weblogic, Liferay.
• Must have a very good understanding of EAI and ESB technologies. (For e.g. IBM WMQ, WMB, etc.).
• Must have a very good understanding of working with databases (for e.g. Relational – Oracle, SQL Server, Sybase, etc.). Must be hands on with SQL, query tuning and with atleast one ORM tool like Hibernate.
• Must be comfortable with software modeling using UML. • Must be comfortable working with IDEs (for e.g. RSA, RAD, Eclipse, etc.).
• Must show awareness of new open-source libraries, frameworks and technologies.
• Must be proficient to program and build proof of concepts with minimal guidance and support.
• Must have in-depth understanding of software development life-cycle and the methodologies (for e.g. RUP, Agile, Scrum, Waterfall, etc.).
• Must be familiar basic UNIX and LINUX administration (for e.g. Oracle Solaris, RedHat LINUX etc.).
• Experience with BPM and BRM systems is desirable.
• Must be an effective and assertive communicator. Should exhibit fluency in English (speech and writing).
• Must be comfortable working with Microsoft Office tools (Outlook, Excel, Word and Visio)."