Senior Back-end Java Engineer
Role details
Job location
Tech stack
Requirements
RoleSenior Back-end Java EngineerLocationRemote (Mexico)Must HavesExcellent JavaGood experience with MySQL, SQL & AWS or any other cloudMicroservices understandingNice to haveAI-indexing systemJob expectationsDoes the right thing with little or no direction. Has good judgement, is proactive, and writes high-quality codeUnderstands the underlying implementations of OS/language/library abstractions (e.g. data structures, exception handling, memory management, threading/synchronization) and how to use those abstractions to create efficient, stable (no resource leaks) codeAble to methodically break down complex problems and write solutions that are correct and use appropriate levels of class and method abstractions that make the code easy to understand and as simple as possible.Able to understand complex code and enhance and modify it correctly.Understands and can implement a full flow involving asynchronous code correctly.Is comfortable and successful with the complexity of the design and implementation of an entire stack (deployable unit) comprised of several classes.Has independently developed many well designed and implemented stacks.Independently (without help from other engineers or customers) verifies that functionality meets customer requirements.Writes effective automated unit, regression, and integration tests that verify correct implementation.Significantly faster than mid-level engineers with improved quality.Can correctly diagnose the root cause of complex problems involving a single stack and its dependencies and can propose an appropriate solution.Able to analyze logs using CloudWatch, NewRelic, etc. Able to diagnose race condition issues.Understands SOLID and other design principles and patterns and how they improve code and how to correctly apply them consistently.Writes code that is testable.Can design a stack that meets company and team standards.Can design algorithms that solve complex problems.Can design a stack based on customer requirements and elicit/clarify additional requirements (understands business value or impact).Can implement stable code that solves complex problems that uses system resources efficiently and meets reliability, maintainability, security, scalability, and other system quality goals.Can implement a stack that meets company and team standards.Learns independently using code, documentation, diagnostic tools, and experimentation. Is passionate about software development and continuously and independently seeks to improve and learn better ways of doing things.Using good judgement, thinks through challenges and determines several possible solutions, tries different things, reaches out for help, doesn't wait for manager to solve problems, but also gets verification of approach before carrying it out. Verifies requirements, identifies missing or conflicting requirements, and actively works to clarify those requirements.Raises concerns of possible defects and ways code could be improved as they notice things in