💡 TIL: Today I learned that there is nothing special about
pkg/ inside of Go projects. It is just like any other sub-package structure you might otherwise define in your project. It just adds an extra part to your imports. I think it’s actually confusing at best and just unnecessary typing and an unnecessary sub-structure. Just keep your packages in the top-level and be done with it 👌
@prologic I think many projects largely started using it because of “the standard go project layout” which is not actually endorsed by the go core dev team. I generally advise against it for similar reasons.
@prologic Sometimes it feels like a cultural import from the Java world. I work a lot with Kubernetes code and it feels a bit like a bunch of Java devs wrote it. Good Java devs, but Java devs nonetheless.
@brasshopper I HATE Standard Go Project Layout, I have always prefered to structure my program by bounded context.
@prologic. The issue is that (I don’t know why) programmers (often backends) are full of protocol, and they forget the basis of clean code, to pursue their protocol.
@prologic I sometimes wonder if this is a breadth of experience problem. I know I did this a lot when I was first starting out. As I’ve learned more programming languages, I have noticed that I’ve gotten better at following each language’s idioms.
@prologic @brasshopper @tkanos Exactly, you just know what you know. You simply can’t follow a pattern which you haven’t heard of, so you just stick to what you’ve been doing in the past. From my own experience and what I’ve seen from others, it’s getting much better with more experience.
@prologic I’m bad with terminology, sorry. But I think, we’re basically on the same page. The only thing I wanted to say is, that I fully agree with @brasshopper’s theory here and tried to elaborate a bit.
Even if you have a very deep knowledge of one language, you typically won’t know about all the styles, patterns, spirits, etc. when starting to pick up a new one. Some ideomatics are just different. So when tackling something, you naturally do it like you’ve been doing it before in other language(s). In the beginning it just doesn’t occur to you, that something might be done (entirely) differently in this new language. It takes time to pick up and sometimes even more to wrap your head around it. Open-mindedness certainly also helps, I found. The more you’ve really worked with different languages, the more your little knowledge base grows. Hence, you know that things can be solved in lots of different ways. And that will basically bring you awareness, that you might want to look out for the specific procedures of doing something in that other language you’re using.