The role of the solution architect is to ensure that systems meet both their functional requirements and expected service qualities (performance, scalability, extensibility, stability, …). Review and improve on existing systems, making use of new technologies and methodologies to seek continual improvement. Provide high-level guidance and direction on project work, making sure that new projects fit in with an overall strategic vision.
Work closely with Project Managers and Business Analysts to provide high level estimates for new functionality, and then develop the corresponding architectural approach and deployment diagrams.
Create and drive architectural presentations to stakeholders.
Assist in enforcement of good coding standards by assisting in the review of developer code.
Participate in architectural board meetings and ensure alignment of channel architecture to overall company architectural roadmap.
Drive improvements to the existing products.
Assist in the evaluation of new technology.
Develop well-documented prototypes and proof-of-concept applications.
Oversee software design for various product teams.
Assist in diagnosing difficult software problems (throughput bottlenecks, deadlocks).
And anything else that is thrown on your desk!
- Significant years of experience doing hands-on software development.
- Excellent knowledge of Java.
- In-depth knowledge and experience of EAI including EAI Patterns.
- Extensive Experience with integration frameworks such as Fuse, Mule, Spring Integration or Camel.
- Experience with Message Oriented Middleware.
- Experience with Message Brokers such as Tibco, AMQP or JMS.
- Knowledge and experience of Data Grid technologies such as Terracotta, Coherence, Gigaspaces or Similar.
- Demonstrated experience building significant systems with various pieces of J2EE.
- Demonstrated experience in integration environments, high availability and ESB.
- Demonstrated ability to think in both a grand scale (e.g., how a system will be broken down in a wide area environment) and in a not-so-grand scale (e.g., how a particular object will perform under high concurrency).
- Ability to read a thread dump.
- Ability to build scalable , highly concurrent fault tolerant systems.
- Demonstrated knowledge of design patterns.
- Experience with web services (REST, SOAP or XML-RPC).
- Experience with concurrent programming and threading
- Experience working with Enterprise Architect application a Must.
- Familiar with Agile/XP/Scrum.
- Inability of live without unit testing and continuous integration.
- Familiar with frameworks such as Spring and Struts.
- Thorough understanding of physical and logical database design.
- Thorough understanding of web-tier concerns (from presentation to transport).
- Stellar written and verbal communication skills (English language).
- Familiarity with application web servers (JBoss, Tomcat, Jetty, Glassfish etc.).
- Undergraduate or Graduate Degree in Computer Science (or a very closely related field).
- Ability to inspire team members.
- Ability to learn quickly, work independently and in a team setting.
- Proven abilities in priority setting and planning.
- Ability to manage multiple projects at any one time without losing your cool.
- Ability to deliver results within set deadlines.