In this organisation Software Architects have a pivotal role within the Software Engineering team. The role offers a unique opportunity to contribute to meaningful learning solutions that will make a genuine difference to people's lives.
The Software Architect will be responsible for defining and delivering new software (sub-)systems and extending existing ones. The Software Architect will mentor and coach other developers as they carry out build work, ensuring they are provided with clear instructions of how to approach execution of build tasks and quality assuring work. The Software Architect will also personally carry out more complex development tasks.
The Software Architect will help to ensure proposals are technically robust and correctly estimated and will be expected to bring industry-wide best practice to all of their work while maintaining a broad range of technical knowledge.
-Manage the non-functional requirements
-Manage the architecture definition process introducing structure, guidelines, principles and leadership to the development aspects of all projects
-Manage technology selection by considering costs, licensing, vendor relationships, technology strategy, compatibility, interoperability, support, deployment, upgrade policies, and end-user environments. This is done successfully by reducing risk where there is high complexity or uncertainty, and introducing risk where there are benefits to be had
-Manage architecture evaluation by testing throughout the software development lifecycle to provide my client's customers confidence that the system they are delivering will work when rolled out
-Manage architecture collaboration. This ranges from the immediate development team who need to understand and buy in to the architecture, right through to other stakeholders who have an interest from a security, database, operations, maintenance, and support point of view.
For a development project to be successful, you need to collaborate closely with all of the system stakeholders to ensure that the architecture will successfully integrate with its environment.
Delivering software architectures:
-Managing the bigger picture by selling the vision throughout the entirety of the software development lifecycle, evolving it throughout the projects if necessary and taking responsibility for ensuring that it's delivered successfully
-Undertake leadership by taking responsibility, providing technical guidance, making technical decisions and having the authority to make those decisions
-Provide coaching and mentoring at times when individuals need assistance by providing team members with a way to enhance people's skills and to help them improve their own careers.
-Manage quality assurance by maintaining code standards, design principles and source code analysis tools through to the use of continuous integration, automated unit testing, deployment automation and code coverage tools
-Design, development and testing code by being a hands-on architect to continuously engage and participate in development projects, actively helping to shape and deliver them
Required Technologies and Processes:
Java8+, Spring, Springboot, Maven/Gradle, JUnit, Mockito, Cucumber, Git, Cloud Computing, UML, Jenkins, CI/CD, Sprint/Kanban, Relational and noSQL DB Knowledge.
- B.Sc. in any of the STEM fields
- Ten+ years of Java programming experience.
- Familiarity with concepts of MVC, JDBC, JPA, and RESTful.
- Basic understanding of JVM, its limitations, weaknesses, and workarounds.
- Creating database schemas that represent and support business processes.
- Creating messaging schemas that represent and support business processes.
- Experience of designing and working with Microservices architecture.
- Experience of using Domain Driven Design.
- Software Modelling and Design.
- Knowledge of Test and Behaviour Driven Development.
- Experience of Performance Testing.
- Eight+ years of experience with identifying issues and implement solutions to complex problems in medium to large scale backend infrastructure and preferably mobile platforms
- Demonstrable experience with analysing and solving difficult problems across the stack.
- Five+ years of experience with web development frameworks to ease the creation of complex, database-driven websites, that emphasises reusability and 'pluggability’ of components, rapid development, and the principle of 'don't repeat yourself’
- Demonstrable experience creating complex solutions using industry standards and best practice, excellent understanding across a wide range of technologies, processes, tools and systems.
- Able to understand enterprise-scale solutions and how they can be integrated.
- Excellent communication skills, both written and verbal
- Self-motivated, capable of learning quickly and reacting to a world of ever evolving technologies
- Have real enthusiasm and passion for development, and be proud of your work
- Comprehensive knowledge of version control and release management with Git, Github or
- Demonstrable experience with the SCRUM methodology