Roles and responsibilities
- Develop engineering solutions leveraging Golang
- 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
-
1. 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.
-
2. 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.
-
3. 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.
-
4. 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.
-
5. 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.
-
6. 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
1. 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.
2. 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.
3. 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.
4. 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.
5. 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.
6. 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.