Job Description
Job Description
- We are looking for a highly skilled software engineer with experience in building web applications in Java.
- This role involves analyzing user requirements and business objectives, determining application features and functionality, implementing enterprise application logic, back-end services, web services, algorithms, database integration, among other duties.
- Ample experience working on open source software code is a preferable qualityfor the role.
- Proficiency with Springboot is a must.
Responsibilities
- Translate application requirements, use cases and user stories into functional applications
- Design, implement, and maintain efficient, reusable, and reliable Java based applications
- Develop efficient, well-tested and reusable Java codes and modules
- Ensure the best possible performance, quality, and responsiveness of the applications developed
- Integration with databases (SQL and NoSQL)
- Integration of user-facing elements developed by front-end and mobile app engineers
- Collaborate with other team members in brainstorming sessions to define, design, test and ship application features
- Identify, correct bottlenecks and fix bugs on new and existing applications
- Help maintain code quality and organization by doing code reviews.
Required Skills
- 3 years of working experience in a role using similar technologies
- Highly proficient in the Java programming language for solving complex algorithmic and information system problems
- Extensive experience developing with the Spring Boot Java web application framework
- Solid understanding of object-oriented programming and principles
- Familiarity with various design and architectural patterns such as MVC, REST, Observer, Factory pattern, etc.
- Familiarity with core Java and Springboot engineering concepts such as JPA, Dependency management, IoC,lambdas, optionals, among others
- Experience in using Springboot with both SQL and NoSQL databases especially while making use of an ORM technology e.g. Hibernate
- Comfortable with usage of data structures for solving algorithmic problems
- Knowledge of concurrency and multi-threading in Java
- Understanding of database migration and seeding in Java/Springboot
- Creating database schemas that represent and support complex business models
- Good understanding of programming conventions for writing secure, easily readable, and maintainable Java code
- Familiarity with automated testing libraries like Junit and Mockito
- Proficiency with code versioning with Git and build tools such as Maven and Gradle
- Intermediate understanding of front-end technologies, such as AngularJS, ReactJs or VueJS
- A good grasp of other languages such as PHP or Node.js is a distinct advantage.
You will stand out if you have:
- Experience with implementation, customization and extension of open source software
- Fullstack software development skills e.g. proficiency with Angular.js and/or React.