ProSites is looking for a Senior Software Developer with experience in building high-performing, scalable, enterprise-grade SaaS applications. You will be part of a talented software team that works on mission-critical applications. Java developer roles and responsibilities include managing Java/Java EE application development while providing expertise in the full software development lifecycle, from concept and design to testing.
Responsibilities:
- Translate application requirements and use cases into functional applications
- Design, build, and maintain efficient, reusable, and reliable Java code
- Ensure the best possible performance, quality, and responsiveness of the applications
- Identify bottlenecks and bugs, and devise solutions to these problems
- Help maintain code quality, organization, and automatization
Skills:
Specific proficiency in:
- Java, SQL, JavaScript Git, Maven, Eclipse IDE
- ORM (WebObjects)
- Front End (ReactJS, WebObjects)
- Solid understanding of object-oriented programming
- PostgreSQL DB experience a PLUS
- Skill for writing reusable Java libraries
- Strong code debugging skills
- Ability to work with static code analysis (SonarQube, FindBugs, PMD)
- Experience in unit testing and code coverage
- Good understanding of code profiling (visualVM and OQL)
- Linux command line skills (SSH, grep, psql, etc on CentOS)
The best candidate will also experience with:
- JDBC and JOOQ
- PostgreSQL
- AWS
- Microservices
- Standalone web server (Apache)
- Embedded java web servers (Jetty, undertow, or vert.x)
- Server-side Javascript (NodeJS) GraphQL HTML5, CSS3 WebSockets
Requirements:
- BS degree in Computer Science, Engineering or a related subject
- 5 years of experience in an enterprise environment
- Proven hands-on Software Development experience including a working experience in Java development
- Object Oriented analysis and design using common design patterns.
Personal Qualities:
- Team Player - able to provide input into a multifunctional team
- Adaptable. The role requires a willingness to take on tasks outside of a narrowly defined role.
- Self-motivated, capable of working with limited supervision, pro-actively reporting on status and tasks.
- Good communicator at multiple levels and across multiple disciplines.
- Capable of working to both tactical and strategic timescales.