Home
Categories
EXPLORE
True Crime
Comedy
Society & Culture
Business
Sports
History
Fiction
About Us
Contact Us
Copyright
© 2024 PodJoint
00:00 / 00:00
Sign in

or

Don't have an account?
Sign up
Forgot password
https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/07/85/33/078533b5-bd05-6aa4-d93c-c87e26081cfc/mza_9604738249533254209.jpg/600x600bb.jpg
NO SILVER BULLET
Three Dots Labs
10 episodes
5 days ago
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.
Show more...
Technology
RSS
All content for NO SILVER BULLET is the property of Three Dots Labs and is served directly from their servers with no modification, redirects, or rehosting. The podcast is not affiliated with or endorsed by Podjoint in any way.
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.
Show more...
Technology
https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/43392592/43392592-1744901791382-4acfb7879abd4.jpg
Unpopular opinions about Go
NO SILVER BULLET
1 hour 33 minutes 47 seconds
6 months ago
Unpopular opinions about Go

Full episode notes: https://threedots.tech/episode/unpopular-opinions-about-go/


Quick takeaways

  • Simplicity isn’t enough for complex applications - while Go’s syntax is simple, complex applications still need proper design patterns; primitive code easily becomes spaghetti code in large projects.
  • Reading the standard library isn’t the best way to learn Go - it’s optimized for different goals than typical applications and might be confusing for beginners.
  • Router libraries are better than the standard HTTP package - libraries like Chi or Echo come with a nice high-level API.
  • Struct-based configuration is better than the “optional pattern” - structs are easier to document, discover, and maintain than the popular With-options approach.
  • There’s no one best project structure - starting small and evolving your structure as needed is better than following a dogmatic approach like the unofficial “Go project layout.”
  • Writing stubs by hand is better than using mocking libraries - manually written stubs are easier to debug and encourage better interfaces than reflection-based mocking libraries.
  • Code generation is better than reflect - for ORMs or dependency injection, it gives you compile-time checks and better performance.
  • Generics are mostly useful for libraries, not application code - while everyone waited for them, they’re rarely needed in typical service-level code.
  • Channels and goroutines can be overused - they add complexity and should only be used when concurrency is actually needed, not as a default approach.
  • Go’s error handling is fine for most projects - explicit checks make code easier to read, though built-in stack traces would be helpful.
  • Memory optimizations are often premature - micro-optimizations waste time for typical API services where network latency is the bottleneck.


In this episode of No Silver Bullet, we share some of our unpopular takes on the Go programming language. After working with Go for eight years on all kinds of projects, we’ve seen many discussions about what idiomatic Go means. We talk about what worked for us, but we keep in mind that different projects have different needs. We question some common Go beliefs and share tips we’ve picked up along the way.


Links:

  • Wild Workouts - Our example Go project that shows a more complex application structure
  • Watermill - Our Event-driven application library for Go
  • HTTP Routers we recommend: Chi and Echo
  • Go in One Evening - Our hands-on Training for learning Go quickly
  • Clean Architecture episode - Previous episode that goes deeper into project organization
  • Go Developer Survey Results - Shows that ~75% of Go developers build API/RPC services
  • Google’s Go Style Guide - Many useful ideas, but be careful about being too dogmatic about it


NO SILVER BULLET
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.