Responsibilities
- Design and write with the Go language to improve the availability, scalability, latency, and efficiency of company's range of services
- Work with the engineering team to explore and create new design/architectures geared toward scale and performance
- Participate in code and design reviews to maintain our high development standards
- Engage in service capacity and demand planning, software performance analysis, tuning, and optimization
- Collaborate with product and experience teams to define and prototype feature specifications
- Work closely with the infrastructure team in building and scaling back-end services as well as performing root cause analysis investigations
- Design, build, analyze, and fix large-scale systems
- Pro-actively debug and solve production incidents during your on-call shift
- Participate in interview loops to help Grab continue hiring top industry talent
- Provide technical guidance, mentorship, and knowledge sharing to peers
Qualifications
- A degree in Computer Science, Software Engineering, Information Technology or related fields
- 5+ years of experience in software engineering in a distributed systems environment
- Experience with Golang, including an understanding of its core syntax and semantics, familiarity with its standard library, its concurrency primitives, and experience in developing and optimizing Golang applications.
- Proficiency in maintaining operational excellence and site reliability, including familiarity with monitoring system performance, ensuring system health, and managing service capacity planning.
- Strong Computer Science fundamentals in algorithms and data structures
- Familiarity with running large-scale web services; understanding of systems internals and networking are a plus
- Experience in developing distributed systems with high throughput and scalability, including a deep understanding of streaming systems and queuing models and their respective integration into these systems.
- Possess excellent communication, sharp analytical abilities with proven design skills, and the ability to think critically of the current system in terms of growth and stability
- You can be a good coder in any language (C++, C, Java, Scala, Rust, Haskell, OCaml, Erlang, Python, Ruby, PHP, Node.JS, C#, etc.), but willing to work on Golang
- Expert knowledge in databases, including relational databases such as MySQL and NoSQL databases like AWS DynamoDB, Scylla, and others, accompanied by a distinct understanding of various design decision implications. Capable of architecting highly scalable solutions while keeping cost-effectiveness in mind
- Experience in coaching and mentoring junior developers, providing guidance on coding standards, and promoting a collaborative learning environment within the team
- Demonstrate a keen sense of product thinking, being able to align technical strategies with product goals, and understanding how development decisions can directly impact end-users