Purpose of the role:
We are seeking a highly skilled Software Engineer to join a small agile team of highly motivated professionals dedicated to improving current production software and developing new features, using the most efficient design patterns and technologies available on the market.
You must be able to integrate into a team with individuals who are seeking for challenges on a daily basis, thus pushing them to be top notch developers. You are expected to be able to identify the value and long term benefits of the code standards established and follow them to cope with the underlying requirement of this team: deliver solutions with high code quality standards, highly scalable, easily testable, maintainable and extensible.
You are also expected to be an individual who drives yourself out of your comfort zone on a daily basis trying to improve skills and knowledge. You should feel highly uncomfortable when you don’t understand a variable that affects your systems. You need the ability to communicate and articulate your ideas clearly, preferably supporting your arguments with diagrams (using the following subset of UML: Class/Object and Sequence diagrams).
Key Responsibilities / Duties:
Design and develop multi-component software systems, including hardware and infrastructural aspects of design;
Understand and communicate technical strategy within the team;
Question other team elements designs and commits;
Deliver developments with unit test coverage above 75% mark;
Produce technical approach documentation to form the basis of project implementations;
Provide, detailed estimates and report on progress;
Commitment to maintain systems operations 24/7 (both UAT and LIVE environments);
Person Specification, Skills, Experience & Qualifications:
Experience in Java middleware architectures:
Experience in web technologies:
HTML and DOM creation
CSS and Responsive Design
REST or WebService design.
Knowledge in architectural patterns and software design patterns.
Knowledge in the basic Gang-Of-Four patterns is a must
Experience with large-scale, highly-concurrent and transactional web-based systems with highly-available and disaster-recovery
Experience with DevOps methodology
Experience with micro service architecture
Experience with distributed and cloud computing
Computer Science degree or equivalent required
Key Skills / Attributes
3 - 5 years commercial experience
NoSQL databases AND/OR In-Memory Data Grid experience
JQuery and JQueryUI
Spring (Core, MVC, Security, Integration)
Messaging (JMS, ActiveMQ)
Testing frameworks: (JUnit, Mockito – or equivalent)
Logging frameworks: SL4J, Logback, Log4J
Push technologies experience (WebSockets)
Jasmine, jsTestDriver Vertx or NodeJS