Closest thing I found recently is this: https://agner.org/optimize/optimizing_cpp.pdf
Ask HN: Programming Courses for Experienced Coders?
111–120 of 192 posts
Re: Ask HN: Programming Courses for Experienced Coders?
#112Re: Ask HN: Programming Courses for Experienced Coders?
#113There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
What books would you recommend? I find it hard to learn real world patterns and codebases.
Smaller patterns like inheritance, composition, traits, functional monads, async coroutines, RAII, MVVM, dependency injection, and semaphore synchronization, are easy to learn, but seemingly unhelpful in the grander scheme. Nobody seems to completely adhere to the rules. As a result, these small patterns never seem to lead to clean code.
I loved coding as a child and pursued CompSci in college. But having worked a few years in the industry, I really think I do not know how to solve anything. At one point I felt as if everyone is gaslighting me. But if multiple people from different companies say I need to learn, then I should.
Right now I want to read to know what exactly I am missing in my knowledge about how code works in large codebases
(Edit: Thanks for the reply!)
Re: Ask HN: Programming Courses for Experienced Coders?
#114There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
> There is a general lack of advanced materials in software engineering I wonder how much this is true in other areas (not counting academic papers). It's not exactly true in law due to the plethora of giant treatises in any specific subject of law, as far as I know that might be a one-off due to US law putting such an (insane?) emphasis on precedent. Basically need a professional lawyer+historian to compile all the…
I’m not sure there’s great content like this for lawyers either even with mandated continuing education requirements. They’re typically a bore and surface level. About the same quality as your average “What’s new in Elixir 1.15” blog post.
Re: Ask HN: Programming Courses for Experienced Coders?
#115There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
The problem with a $200 book is that it's hard to tell the difference between a book that contains $100k of knowledge and a book that contains $100 of knowledge.
But if anyone is like me and interested in taking a risk on those $80-150 tomes, CRC Press' books have been more hits than misses for me.
Re: Ask HN: Programming Courses for Experienced Coders?
#116There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
The problem with a $200 book is that it's hard to tell the difference between a book that contains $100k of knowledge and a book that contains $100 of knowledge.
Even if you found zero recipes, that does not mean you wasted time. Maybe if you think in terms of results for that particular cookbook investment, but it is pretty arbitrary way to look at it. What if you tried to measure your return for investment on a single page of a cookbook? For half a dozen coobkooks? For a shelf of cookbooks?
If you continue buying and studying cookbooks, you will find some good recipes in some cookbooks and what you need to look for is the total return on the total of investment. I spent a ton of money on cookbooks but my life is much better for it and I have zero regrets even if many of these cookbooks yielded zero results.
So now back to technical books.
Some of these books will yield new knowledge and some may yield very little or even none at all. You may not know before you buy a book whether it will pay for itself, but you know if the whole business of buying books and learning from them is worth it. I chose to buy and read books even if some of them yield little results because I think I am a better person and a better developer for it. I learned a lot of useful stuff even if I completely ignore majority of everything I read and then forget majority of everything I thought valuable.
Re: Ask HN: Programming Courses for Experienced Coders?
#117Re: Ask HN: Programming Courses for Experienced Coders?
#118It's not Elixir, but I'm working through Jeremy Koppel's "Advanced Software Design Course". I've been coding for 22 years and it is definitely growing me. https://www.mirdin.com/
Re: Ask HN: Programming Courses for Experienced Coders?
#119There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
> People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potential target drops off sharply and you would have to increase the price dramatically. I think, even aside from the incentives, its a matter of interest a…
Of course, I'm sure I don't need to explain the downsides of a talk, Especially one presented by very knowledgable people but not ones who are necessarily expert speakers. But at the same time, that lack of polish may be a light in the darkness that is false platitudes in every other ad.
Re: Ask HN: Programming Courses for Experienced Coders?
#120There is a general lack of advanced materials in software engineering. This is one area where market economy works against common good, unfortunately. People who have the knowledge and want to capitalise on it are highly incentivised to preparing beginner level materials and maybe a tiny bit to prepare the something for people who already have a bit of knowledge. After that, the number of people who are your potentia…
> Personally, I just read a lot. What books would you recommend? I find it hard to learn real world patterns and codebases. Smaller patterns like inheritance, composition, traits, functional monads, async coroutines, RAII, MVVM, dependency injection, and semaphore synchronization, are easy to learn, but seemingly unhelpful in the grander scheme. Nobody seems to completely adhere to the rules. As a result, these small…
Good. That is very useful state of mind to be in.
Because these things do not produce cleaner code. They are tools to solve problems.
Coders are like photographers. The ones who like talk the most shoot walls head on and then peep at pixels and mostly discuss hardware. The ones who know how to make good photos do not care about who uses what kind of camera. A camera is just a tool to capture light field.
Clean code is what happens in your mind and as a result of your mental process.
Patterns, composition, inheritance tricks, and so on -- these are things you add to your toolbelt to use it when it is needed. You should continue adding tools to your toolbelt to be able to solve wider variety of problems and have more alternative solutions. But on its own, more tools do not mean mastery and do not lead to clean code.
If anything, more tools without knowledge how to use them leads to less readable code. This happened to me for the first half of my career..
What get you to mastery is by building taste for simple code and ability to self reflect on your work. Taste for simple code means you know why code needs to be simple and you know how clean code looks like.
Self reflection is trying to be objective and judgy about your results. When you write the code, you keep refactoring until you like the results. You write a module, then you polish it until there is nothing else to remove and it does exactly what it is supposed to be doing. You do it long enough and you will have experience to start it closer to a clean result. You may never get to be able to write clean code on the first try but you might get better at having much cleaner first approximation.
Ideally, you also take some responsibility longer term for what you produced. You compare your initial ideas with how they fared over time. You learn some things you thought smart weren't so smart at all. You learn what works and what doesn't work in general.
There is one more way and this is mentoring. I do pair programming with people where we design and implement solutions to progress. Lets me get to know the person better and the person gets to observe the process which can be a huge shortcut in the process of learning to write clean code.