Define, design and implement complex, multi-tier distributed software systems throughout all phases of the software development life cycle.
Work on new and existing product initiatives and be a driver in the definition of product direction.
Review code to proactively identify and mitigate potential issues and defects and helps to identify sources of defects as well as troubleshoots various forms of code.
Use design tools to frequently share and communicate design ideas on larger systems.
Use patterns frequently, contributing to best practice and process enhancements.
Required Skills
Excellent understanding of distributed systems and service oriented architecture along with web services and related standards like REST/JSON.
Must be very strong backend Java Development.
Must have deep technical understanding of Java or Go, and willing to work with both.
Must have a strong handle on concurrency challenges and design solutions Heavy emphasis on code testing and designing for testability.
Nice to have skills to understand large scale data and ability to build machine learning models for forecast and prediction.
Self-motivated and fast learner.
Excellent communication, presentation, interpersonal and analytical skills.
Strong organizational and problem solving skills.
Required Experience
7+ years of software design and development experience, solid foundation in computer science with strong competencies in data structures, algorithms and software design.
Experience in object-oriented design methodology and large scale application development in Java (or any other object oriented languages).
Strong experience with Core Java and Spring.
Experience building applications that deals with big data.
3+ years of hands-on experience in an RDBMS (mongo, MySQL, PGSQL, etc).
Experience working within a lightweight agile project structure.
Relational database and SQL development experience.
Agile development experience.
Education Requirements
Bachelor’s Degree in Computer Science, Computer Engineering or a closely related field