Position: Middle/Senior Java Developer (Java/Big Data Unit)
Company: Sigma Software
Category: Java
Experience required: 3y
English level: intermediate

PROJECT
We are not limited to a single project and consider you for several ones. Our department has variety of assignments and key clients operating in different domains which you can choose for yourself. A big advantage of this position is that in Sigma Software you don’t need to pick a single direction of growth once and for all. You will be able to choose whether to work in commercial or internal projects, create the products with startups or work with big enterprises/companies, lead the team or even drive development of the whole Java Unit. You can choose any way of professional growth: be the project Developer, or become the Team Lead, or Architect, or combine them all.

As a part of our team, you will be able to work with various state-of-the art technologies and approaches:

Database engines (Cassandra, MongoDB, MariaDB, PostgreSQL, Elasticsearch, Redis, Memcached)
Cloud services (AWS, GCP, MS Azure)
Messaging/Streaming services (Kafka, ActiveMQ, RabbitMQ, SQS, SNS)
Microservice architecture (Kubernetes, Helm)
Work on highload projects
We have many people with expertise in different technologies and domains, who are happy to consult the teammates with any issues. Sigma Software highly supports help and growth in both: inside the team and with our customers.

REQUIREMENTS
Solid understanding of the software development process (Code ownership, desire to follow generally accepted processes and practices)
At least 4 years of experience in commercial software development
Strong knowledge of the mainstream frameworks and libraries
Deep understanding of various architecture styles
Strong understanding of different programming language paradigms: procedural, OO, functional, declarative (Ability or desire to choose the programming languages and styles depending on the tasks and practicability. We don’t push the particular style, but encourage to use the right tool for the right task.)
An understanding of various estimation techniques.
(PERT, three-point estimation, etc.)
Strong understanding of developer testing approaches.
(Proven practice and desire to write tests, test driven development is welcomed as well as AAA tests.)
Solid understanding of data storages both SQL and NoSQL
Broad understanding of security concepts
Upper-Intermediate level of English

WOULD BE A PLUS:
Experience in front-end development using mainstream frameworks and libraries
Experience in programming using Python/Kotlin/Scala languages
Ability or desire to lead a team

RESPONSIBILITIES
Make technical decisions for projects or products in such a way that they continue being maintainable and extensible; participate in technology audits
Share technical knowledge, take ownership, drive initiatives forward, suggest and incorporate improvements into all areas, review and optimize existing solutions
Get involved into projects & RnD groups with the possibility to learn new technologies, select the appropriate latest modern technology stack, establish and maintain a sustainable and effective software development process
Promote good design principles such as code reuse, modularity, and extensibility and mentor others in these principles
Analyze product requirements, design complex features architecture from scratch, select technologies that ideally fit the project needs, implement and test Java applications
Perform technical analysis and document the results, initiate quality improvement in coordination with a QA team
For Senior position: Play a lead/supervision role for existing Java projects in various domains, designing and building large-scale systems
For Senior position: Engage new clients, run discovery phases, support sales activities