Collaborate with colleagues on technical designs and code reviews
Deploy and operate services developed by the team
Depending on your seniority, coach, mentor, and offer career development feedback
Develop and evangelize great engineering and organizational practices
What we are looking for in you
Exceptional academic track record from both high school and university
Undergraduate degree in a technical subject or a compelling narrative about your alternative chosen path
Track record of going above-and-beyond expectations to achieve outstanding results
Experience with software development in Golang
Professional written and spoken English with excellent presentation skills
Result-oriented, with a personal drive to meet commitments
Ability to travel internationally twice a year, for company events up to two weeks long
Nice-to-have skills
Performance engineering and security experience
Experience with accounting, sales, sales operations, or other business roles
Application Development
Backend Development: Design and develop backend applications and microservices using Go. These applications may handle web requests, process data, or interact with databases.
API Development: Design and implement robust, scalable, and secure RESTful APIs or gRPC services using Go.
Concurrency: Leverage Go's concurrency model (goroutines and channels) to build highly scalable and performant applications that can handle multiple tasks concurrently.
Microservices: Build and maintain microservices-based architecture for scalable systems.
System Design and Architecture
Architecture Design: Participate in designing the overall architecture of applications, ensuring that the system is scalable, modular, and easy to maintain.
Performance Optimization: Use Go's features to optimize system performance, such as improving memory usage, load balancing, and response times.
Scalability: Design systems that can handle an increasing number of users or requests without significant performance degradation.
Testing and Quality Assurance
Unit Testing: Write unit and integration tests to ensure code quality and system functionality. Familiarity with Go's testing framework (e.g., testing, Testify) is essential.
Test-Driven Development (TDD): Follow TDD practices to write clean, tested code from the outset, improving long-term maintainability.
Code Quality: Review code for best practices, performance optimization, and adherence to Go's idioms.
Collaboration and Communication
Cross-functional Collaboration: Collaborate with product managers, designers, and other engineers to deliver software solutions that meet the project’s objectives and deadlines.
Code Reviews: Participate in code reviews to ensure high-quality code is written, mentor junior engineers, and provide constructive feedback.
Documentation: Write clear documentation for both developers and end-users, explaining how to use APIs and services, and documenting architectural decisions.
Deployment and Maintenance
CI/CD Pipelines: Implement and manage Continuous Integration/Continuous Deployment (CI/CD) pipelines for testing and deploying applications.
Cloud Platforms: Work with cloud platforms (e.g., AWS, GCP, Azure) for deploying and scaling Go applications.
Monitoring and Debugging: Use monitoring tools and debugging techniques to ensure the application performs optimally in production and address any issues or bugs.
Research and Innovation
Stay Updated: Keep up to date with the latest developments in Go and the software development industry, integrating best practices and new features as they emerge.
Optimize Systems: Continuously look for opportunities to optimize the application’s architecture, codebase, and performance.
Desired candidate profile
Proficiency in Go
Core Go Knowledge: Expertise in the Go programming language, including syntax, data structures, error handling, concurrency (goroutines, channels), and memory management.
Go Standard Library: Strong understanding of Go's rich standard library for tasks such as networking, file I/O, cryptography, and HTTP handling.
Concurrency Management: Ability to design and implement concurrent and parallel systems using Go’s concurrency model.
Backend Development Skills
Microservices and APIs: Experience in developing microservices and APIs with Go, including RESTful and gRPC services.
Database Integration: Experience working with databases (SQL and NoSQL) and integrating them into Go applications, using libraries like gorm or sqlx for database management.
Message Queues and Asynchronous Processing: Familiarity with message queues (e.g., Kafka, RabbitMQ) and processing data asynchronously.
DevOps and Cloud Skills
CI/CD Practices: Knowledge of setting up and managing CI/CD pipelines to automate testing, integration, and deployment of Go applications.
Cloud Platforms: Experience with cloud platforms (AWS, GCP, Azure) to deploy and scale applications, especially in containerized environments.
Containerization: Familiarity with Docker and Kubernetes for deploying and managing containerized applications.
Testing and Debugging Skills
Unit and Integration Testing: Proficiency in writing unit and integration tests, ensuring that code is thoroughly tested and reliable.
Profiling and Performance Tuning: Ability to profile Go applications for performance bottlenecks and optimize them.
Debugging: Strong debugging skills to identify issues in production systems and resolve them quickly.
Version Control and Collaboration Tools
Git: Proficiency in using Git for version control and collaboration in a distributed development environment.
Code Collaboration: Familiarity with code collaboration tools like GitHub, GitLab, or Bitbucket.
Soft Skills
Problem-Solving: Strong analytical and problem-solving skills, with the ability to quickly address challenges and bugs in the code.
Communication: Strong verbal and written communication skills to collaborate effectively with cross-functional teams and document code and architecture.
Collaboration: Team player who can work well in an agile development environment, collaborating with other developers, designers, and product managers.