Error handling in Go is simple and verbose at the same time. Working in it alongside Python and JavaScript makes me rethink a lot of patterns I’m accustomed to - it’s a nice exercise. Though of course the use cases often vary significantly between the 3 languages so it is tough to even compare.
If you aim for this point alone you're headed in the right direction:
Think like an adversary, but be nice about it. Try to “catch” authors taking shortcuts or missing cases by coming up with problematic configurations/input data that breaks their code.
The article is a great overview and goes into just enough detail - here are a couple more good points:
- Comments: concise, friendly, actionable
- Think about how you would have solved the problem. If it’s different, why is that? Does your code handle more (edge) cases? Is it shorter/easier/cleaner/faster/safer yet functionally equivalent? Is there some underlying pattern you spotted that isn’t captured by the current code?
Agree on the storage point, I used their Redis and Postgres options for a few years with no real issues. Everything was seamless, even maintenance. The only complaint I could have would be cost, but that is expected.
Also, using S3 is simple and shouldn't incur much cost due to running in the same AWS region.
Heroku CI, Pipelines, and Review Apps made for an awesome continuous deployment setup for me in the past.
Easy promotion of builds to staging/production after your tests pass and apps created automatically per pull request for testing in an environment just like all of your other environments.