I applied for one of DO's Software Engineer positions through their website earlier this year. HR got in touch with me a few days later. The preliminary HR screening was easy and friendly with a few "Tell me a bit about yourself", "Why are you considering DO?" questions. After that they sent me a coding exercise to work on.
The exercise itself isn't too difficult. I spent about two hours every evening on it, and got it completed within a week. I was very hopeful about it since I felt like my code satisfied all the given constrains, passed their test harness, demonstrated advance understanding of the Go programming language, provided good test coverage, and included the bonus features. The review process took a lot longer than expected. I did two follow-ups with HR after the second and third-and-half week marks. Another week passed after my last follow-up email (with no responses), then I was notified that they wouldn't move forward with me because although my code was good with good test coverage, the reviewers felt that I didn't show enough OO design and utilization of custom types. I was a bit disappointed for that being the only reason for the rejection of my application. While OO is a part of Go, it's not the only part. I demonstrated good understanding of key concepts like channels, wait group, signal handling, race detection, function closures, interfaces, composition and mocks (OO anyone?) in my code. From my experience with Go, unlike Java or Ruby, not everything needs to be a struct or a custom type. The builtin types of string, int, slices, map, channel and functions are usually sufficient for most coding, to avoid over-engineered code.