Powered by RND
PodcastsTecnologíaNO SILVER BULLET

NO SILVER BULLET

Three Dots Labs
NO SILVER BULLET
Último episodio

Episodios disponibles

5 de 6
  • Watermill: from a hobby project to 8k stars on GitHub
    Episode notes: http://threedots.tech/episode/history-of-watermill/Quick takeawaysSolve real problems first - successful open source projects start by addressing actual needs, not by looking for problems to fit a solutionKeep breaking changes minimal - Watermill stayed on v1 for 6 years with no breaking changes in the core library, building trust with usersExamples and documentation are crucial - provide real-world examples with automated tests, not just simple “hello world” demosPromotion matters - creating a great library isn’t enough; you need to actively share it through conferences, blog posts, and communitiesBe patient with growth - Watermill took 7 years to reach 8,000 stars; overnight success in open source is rareIn this episode, we share the story of how Watermill, our event-driven library for Go, grew from a side project to a popular open source library with over 8,000 GitHub stars and 100+ contributors.We discuss the key decisions and strategies that helped make Watermill successful, from focusing on solving real problems to maintaining backward compatibility and building a community around the project.Watermill documentation — our open-source event-driven architecture library for GoWatermill repositoryGo Event-Driven training that complements WatermillReal World Examples
    --------  
    1:03:56
  • Unpopular opinions about Go
    Full episode notes: https://threedots.tech/episode/unpopular-opinions-about-go/Quick takeawaysSimplicity 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 structureWatermill - Our Event-driven application library for GoHTTP Routers we recommend: Chi and EchoGo in One Evening - Our hands-on Training for learning Go quicklyClean Architecture episode - Previous episode that goes deeper into project organizationGo Developer Survey Results - Shows that ~75% of Go developers build API/RPC servicesGoogle’s Go Style Guide - Many useful ideas, but be careful about being too dogmatic about it
    --------  
    1:33:47
  • Learning Software Skills fast: what worked for us best in the last 15 years
    In this episode, we discuss how to learn effectively as a software engineer. Why some people seem to learn faster than others? What are some practical ways to speed up your learning? Instead of promising magical shortcuts to becoming a principal engineer in months, we focus on a more balanced approach that helps you build skills by mixing theory with practice.Quick takeawaysFocus on applying what you learn - reading books or watching videos isn’t enough without practiceBuild real projects that challenge you - trivial examples don’t expose you to the hidden complexities you’ll face in actual workExpect and embrace frustration - feeling stuck often means you’re learning something valuableLearn timeless concepts over framework-specific details - aim for universal software skills like modularizationMix theory with practice in small chunks - read a bit and code a bit, rather than consuming large amounts of content at onceNotesWe mentioned our learning platformDomain-Driven Design was referenced throughout - check “Implementing Domain-Driven Design” by Vaughn VernonWatermill - our open-source library mentioned as an example of a project that taught us while helping others: github.com/ThreeDotsLabs/watermillEvent-Driven Architecture traces back to 1950s, but was formalized about 20 years agoThe Repository pattern blog postFull episode notes and transcript: http://threedots.tech/episode/learning-software-skills-fast/
    --------  
    1:26:47
  • Is Clean Architecture Overengineering?
    In this episode of the No Silver Bullet podcast, we discuss Clean Architecture and whether it's overengineering or a best practice for organizing code.We talk about why the pattern is often controversial, when it makes sense to use it, and how to implement it effectively.We share our experiences using Clean Architecture across different projects and teams, including the common concerns developers have when first seeing it.Quick takeaways:Clean Architecture is most beneficial for complex projects with larger teams - for small teams or simple projects, it can become overengineering.Separation of concerns is the core benefit - keeping domain logic separate from implementation details makes code more maintainable.It's easy to go too far - using too many interfaces or too many layers without a clear reason creates unnecessary complexity.Start simple and evolve your architecture - don't force Clean Architecture from the start if your project doesn't need it yet.Understanding the "why" behind the pattern is crucial - blindly following it without understanding leads to poor implementations.Notes:Related patterns:The Dependency Inversion Principle: one of SOLID principles.Blog post: Introducing Clean Architecture: https://threedots.tech/post/introducing-clean-architecture/Blog post: Microservices test architecture: https://threedots.tech/post/microservices-test-architecture/Blog post: Repository Pattern in Go: https://threedots.tech/post/repository-pattern-in-go/Blog post: Combining DDD, CQRS, and Clean Architecture in Go: https://threedots.tech/post/ddd-cqrs-clean-architecture-combined/ (Mentioned as available)Example Go Project: Wild Workouts: https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-examplego-cleanarch Linter: https://github.com/roblaszczak/go-cleanarchFull episode notes: https://threedots.tech/episode/is-clean-architecture-overengineering/
    --------  
    2:02:20
  • When you shouldn’t use frameworks in Go
    Quick takeawaysFrameworks promise productivity but often lead to issues as projects get larger and more complex.The Go community prefers small, focused libraries over frameworks due to Go's design philosophy influenced by Unix principles.Watch out for risks using frameworks like vendor lock-in, deprecation, and costly migrations that can take months.Explicit code is more maintainable than magic framework abstractions.Choose your approach based on project size and maturity - frameworks might work for prototypes, while modular libraries are better for long-term projects.IntroductionIn this episode of the No Silver Bullet podcast, we discuss frameworks in Go and when they're useful or problematic.We talk about why the Go community generally avoids frameworks compared to other languages, and how small, modular libraries are often preferred in Go development.We share our experiences with frameworks across different projects, including tradeoffs between productivity and long-term maintenance.NotesModel-View-Controller (MVC): Pattern first described in the 1970s for Smalltalk, still widely used today.Unix Philosophy: https://en.wikipedia.org/wiki/Unix_philosophy: design concept created by Ken Thompson (also a Go creator) promoting small programs that do one thing well and work together.When to avoid DRY in Go: https://threedots.tech/post/things-to-know-about-dry/Watermill: https://watermill.io: Our event-driven library for Go designed to not be a framework.Repository Pattern: https://threedots.tech/post/repository-pattern-in-go/: Our blog post that is still relevant and frequently referenced.tdl: https://github.com/ThreeDotsLabs/cli and pq: https://github.com/ThreeDotsLabs/watermill/tree/master/tools/pq - the CLI tools we mentioned.Clean Architecture: https://threedots.tech/post/introducing-clean-architecture/: The topic of our next podcast episode, a design approach that helps maintain separation of concerns.Wild Workouts: https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example : Our example Go codebase demonstrating clean architecture.   The Best Go framework: no framework?: https://threedots.tech/post/best-go-framework/QuotesThe happy path is easy enough, but the happy path is usually not the hard part of software. We often overvalue how much effort the boilerplate requires. - MiłoszFramework knowledge tends to become out of date. You can spend days or weeks learning something about a framework, but it can be outdated. And if you switch to another programming language or company, a lot of effort that you spent to learn stuff will be just wasted. - RobertIt's more important to learn even-driven architecture because you learn the theory behind it and how it works in general - it transfers better to whatever you will do later. Focus on timeless skills like how to split modules in your application, how to make it decoupled, how to write business logic so it's easy to read and modify. - MiłoszThe Go language is heavily influenced by Unix philosophy - write programs that do one thing and do it well, write programs that work together. It's visible in Go's standard library. This is why Go promotes building independent components that you can connect together. - RobertYou need to be careful not to go too far with foundations. It's better to start with some modular libraries, have some reasonable setup in place, but don't go too crazy with it. Most of the time you'll need to refactor the project anyway, whatever you do, because it can change drastically. - MiłoszOne big decision at the beginning may cost you six months of work later. Understanding if something is tightly coupled to your application is simple - just think about how easy it would be to remove it. - RobertFull episode notes: https://threedots.tech/episode/when-you-should-not-use-frameworks/
    --------  
    1:37:42

Más podcasts de Tecnología

Acerca de 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.
Sitio web del podcast

Escucha NO SILVER BULLET, The Backend Engineering Show with Hussein Nasser y muchos más podcasts de todo el mundo con la aplicación de radio.net

Descarga la app gratuita: radio.net

  • Añadir radios y podcasts a favoritos
  • Transmisión por Wi-Fi y Bluetooth
  • Carplay & Android Auto compatible
  • Muchas otras funciones de la app
Aplicaciones
Redes sociales
v7.18.2 | © 2007-2025 radio.de GmbH
Generated: 5/25/2025 - 12:19:50 PM