Staff Engineer
Job Description
We are looking for a highly skilled, passionate, and experienced Senior Engineer with enough expertise in Java development, and scalable architecture in cloud environments (we work in both Amazon Web Services (AWS) and Google Cloud (GCP)). The successful candidate will play a crucial role in collaborating with cross-functional teams to drive technical excellence and contribute to the overall success of our projects. You will analyze and help build system requirements, design flowcharts, and document and write tooling to enable software development teams to produce features effectively.
This role reports to the VP of Engineering and works very closely with the Platform team.
In 1 Month
Get familiar with the company's product, its architecture, and its coding standards.
Understand the existing technology stack, learn the framework, our Caravelo library, and tools.
Get to know the product roadmap including the current technical roadmap for next quarter.
Analyze current architecture and detect possible bottlenecks when scaling 5x next year.
Start taking ownership of assigned tasks and deliver them promptly.
Analyze user and system requirements
Design flowcharts to illustrate software solutions
Write efficient code based on feature specifications
Develop user interfaces
Prioritize and execute tasks in the software development life cycle
Design database architecture
Test and debug Java applications
Validate software functionality and security
Design and document the evolution of the architecture of Caravelo systems towards scalability, reliability, and resiliency.
Write efficient code and fault tolerance.
Communicate with tech leads, and collaborate with them by understanding their current most important technical decisions and RFCs.
Collaborate with the backend developers, looking into their Merge Requests and actively contributing to ensure Best Practices in code are being done.
Develop clean code that is simple and efficient.
Observe the environments using Datadog, reinforcing Dashboards and monitors, and creating new metrics to ensure system reliability.
Follow and enforce others to follow best coding practices and design patterns thinking of efficiency, scalability, code readability, and maintainability.
Communicate technical decisions across the Engineering Department effectively, engaging other technical members to actively participate in those discussions and collaborate towards improving the Caravelo platform.
Increase development experience in Caravelo, contributing to making Caravelo a great Tech Hub where developers love to work with you and other tech members.
Gain strong knowledge and follow best practices on the T/BDD approach, ensuring quality is in everyone’s mindset.
Provide technical leadership and guidance to other developers in the company, ensuring adherence to coding standards and best practices.
Mentor more junior engineers and foster a collaborative and innovative team environment, where documentation and sharing knowledge are key.
Stay updated on industry trends, emerging technologies, and best practices related to Java and AWS/GCP.
Analyze the engineering department's current practices and ensure development teams have the right tooling, platform, and architecture to write code that evolves while the company grows.
Document technical solutions, create documentation, readme guides, and visual diagrams, and communicate them to the entire organization.
Know and enforce the testing pyramid, writing unit tests and integration tests.
Consume, design, build, and evolve both our public and internal API.
Good estimation of technical debt, detecting current debt, and alerting the team when we are generating more. Actively propose improvements to reduce technical debt.
Continuous refactoring of code from oneself and others, to simplify, modularize, improve performance, and have stable code.
Communicate clearly with other team members and report status to upper management.
Take and give feedback to other team members positively, having the opportunity to keep improving and learning from others in a challenging and cheerful team.
Extensive Experience: Demonstrated proficiency with over 5 years of hands-on development of Java applications.
Educational Background: Hold a Bachelor's degree in Computer Science, Software Engineering, or a related field.
Tool Mastery: Well-versed in build automation tools such as Maven or Gradle
Frameworks Expertise: Familiarity with DI/IoC frameworks like HK2 or Spring.
Testing Prowess: Proficient in utilizing unit testing tools like Junit or Spock.
OOP Multilingual: Comfortable with at least one additional object-oriented programming language.
End-to-end understanding: Comprehensive knowledge of the entire product development process, including design, development, testing, and deployment.
Version Control Maestro: Active experience with CVS systems like Git, GitLab, Bitbucket, or others, including opening and reviewing MRs/PRs, branching, rebasing, and merging.
Troubleshooting Guru: Ability to troubleshoot problems in Java code and confidence in using debugging tools in your IDE.
Database Mastery: Strong knowledge of relational or non-relational databases, including MySQL, MariaDB, SQL, CouchBase, DynamoDB, and MongoDB.
Coding Excellence: Understanding the importance of coherent code style for readability and being able to empower the rest of developers to follow good coding practices.
Cloud Proficiency: Some knowledge, certifications and/or hands on experience on AWS Cloud (ECS, Redshift, RDS, and S3) or GCP.
Tech Advocate: Enjoy exposing technical topics in public, such as participating in conferences or performing
Analytical Mindset: Analytical skills coupled with excellent time management.
Continuous Learner: An insatiable appetite for learning and improving both soft and technical skills.
Observability Expert: Ability to build basic observability into the code, including REST latencies, uptime, and key metrics, using tools like Datadog or similar.
Architectural Patterns Expert: Hands on experience with at least 2 of the most common architectural patterns, able to explain and document the most important technical decisions and trade-offs.
Frontend Familiarity: Basic knowledge of frontend technologies like HTML, JavaScript, CSS, and frameworks such as VueJs or ReactJs.
Concurrency Maestro: Proficient in asynchronous callbacks, multi-threaded environments, parallel computing, and locking mechanisms (hard/soft).
Tech Enthusiast: Curious about and excited to implement new technologies.
Salary & Benefits
•