- Analyze and improve application performance
- Participate in redesign and development of high-performance business application, from non-functional requirements analysis to production
- Constantly improve software quality (evaluate and incorporate new libraries, tools and technologies; code reviews; refactoring; testing; etc.)
- Search for clear and robust solutions
- Work in an agile methodology environment where innovation, teamwork and creativity are the key for success
- Collaborate with distributed team of developers, QA engineers
Required Skills and Experience:
- 5+ years in Software Development
- Education in Computer Science or similar theoretical knowledge in CS: algorithms and complexity estimation, data structures, operating systems, programming languages
- Excellent knowledge of Java platform (collections, concurrency, etc). Good understanding of JVM internals
- Understanding of development principles for Clouds
- Experience in enterprise applications development (J2EE, Spring Source, etc)
- Understanding of distributed architectures and scalability principles
- Understanding of SDLC and agile methodologies in particular
- Hands-on experience with developer daily basis tools such as IDE's, compilers, debuggers, profilers, version control systems, bug tracking systems, build systems (Gradle, Maven2, etc), code coverage and automated testing tools
- Experience with unit and integration testing (JUnit, TestNG, Mockito, etc.)
- DBMS experience (SQL, JDBC). Understanding of ORM frameworks internals is a plus
- Desire and ability to quickly learn new tools and technologies
- Ability to proactively identify and solve engineering problems
- Good interpersonal communication skills, both verbal and written. Good written English is a must