Have you had any experience as a mediocre programmer where you coded mostly hit and miss style and then you did some project, read some book(s) or took some courses and you started to program like a scientific process and a mental model was formed and eventually became a good then a better programmer?<p>You started understanding programming languages much easier and better and were able to structure solutions in more elegantly and efficiently in code.
Not fully programming related, but one book that made a massive impact on my abilities as a full stack dev was “Refactoring UI” by Adam Wathan & Steve Schoger.<p>From my experience, a lot of devs who work in a full stack roles are stronger as backend devs but they have some basic understanding of how to build a frontend in one of the popular frameworks, such as React. If we are working with a good designer this is usually enough, but having a simple mental modal for how to make something look good really goes a long way. The way that this book was written gave me a good grasp of this by explaining it in a way similar to how I’d think about software (as opposed to being more vague and abstract, which a lot of design books aimed at designers tend to be).
Intro to Database Systems by Andy Pavlo - <a href="https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi">https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZX...</a><p>MIT 6.824 Distributed Systems by Robert Morris - <a href="https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB">https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39...</a><p>Designing Data-Intensive Applications (DDIA) - <a href="https://dataintensive.net/" rel="nofollow noreferrer">https://dataintensive.net/</a><p>Crafting Interpreters - <a href="https://craftinginterpreters.com/" rel="nofollow noreferrer">https://craftinginterpreters.com/</a>
For programming, books like "Clean Code" by Robert C. Martin and online courses like Codecademy's interactive lessons have been game-changers. Working on open-source projects and collaborating on platforms like GitHub has also turbocharged my learning. Remember, it's not just about quantity but finding quality resources that resonate with your learning style.<p>Not programming skills related, but sometimes I read this blog in order to be more up-to-date: <a href="https://www.ratherlabs.com/blog" rel="nofollow noreferrer">https://www.ratherlabs.com/blog</a>
In my career books have paled in comparison to real world experience, and finding myself far outside of my comfort zone. The two major advances I've gained in skill were a) completing a college diploma b) being thrown into the deep-end at a fortune 500. You can read all the books in the world, but challenging work experience will have far more impact.<p>The 'mental model and scientific process' has less to do with code alone, and more to do with the holistic act of working for a business. Development is just a part of it. Books will teach you best practices (and you should know best practices), but they won't teach you how to be an effective team-member, or cog in the business.
It depends on what are you vision of the "programming skills" and how you define a "better programmer". There is so much area of expertise to master them all..<p>You seems to have a certain inclinaison for scientific programming. I suppose it's in this area that you want to have better programming skill.
The book that I heard a lot about is the following one (it's on my shelf) :<p><pre><code> - The Art of Computer Programming, Volumes 1-4, by Donald E. Knuth
</code></pre>
Some books are more generals and provide insightfull tips that I found quite helpfull :<p><pre><code> - 97 things every programmer should know, by a lots of people
- The pragmatics programmer, by Andy Hunt and Dave Thomas
- Clean code, by Robert C. Martin
</code></pre>
If you want improve you skill about a particular programm language, the best is learn every kog and what happend under the hood of you language. Books, Video, any things that will help in that direction, it depends of your choice . Usually it takes time to improve.<p>There is many type of language and big difference inside those type : Scripting languages (python,bash,js...), compiled languages (c,c++,java,c#,...),...
If you know different tools you are more likely to be able to use the right tools for the right jobs.<p>But the real advise is to be doing some real stuff : face real world problem<p>Take care !
The F# for Fun and Profit[1] site by Scott Wlaschin is phenomenal as a general programming education site, not just for F# specific things (though there's plenty of that as well). The "Designing with types" series[2] is a good starting point.<p>[1] <a href="https://fsharpforfunandprofit.com/" rel="nofollow noreferrer">https://fsharpforfunandprofit.com/</a><p>[2] <a href="https://fsharpforfunandprofit.com/series/designing-with-types/" rel="nofollow noreferrer">https://fsharpforfunandprofit.com/series/designing-with-type...</a>
For Javascript this book is really helpful: <a href="https://eloquentjavascript.net/" rel="nofollow noreferrer">https://eloquentjavascript.net/</a><p>Free Udacity course by Peter Norvigs: <a href="https://www.udacity.com/course/design-of-computer-programs--cs212" rel="nofollow noreferrer">https://www.udacity.com/course/design-of-computer-programs--...</a><p>Introduction to Algorithms (Thomas H. Cormen) : <a href="https://en.wikipedia.org/wiki/Introduction_to_Algorithms" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Introduction_to_Algorithms</a>
I'm probably still a mediocre programmer, but I've never hit any limitations, or read any books or courses, the only improvements I've noticed in myself have come from discussion with colleagues and deep thought about my values, and, least and most importantly, from programming a lot, and always seeking out ways to avoid becoming a plumber. I don't want to write code which is just data in hiding, I want to make machines which creates behavior out of data, and let someone else deal with providing the data whenever I can.
I enjoyed reading the book "Building Microservices" available at <a href="https://www.oreilly.com/library/view/building-microservices-2nd/9781492034018/" rel="nofollow noreferrer">https://www.oreilly.com/library/view/building-microservices-...</a>. The book covers various aspects modern software development, such as observability and resiliency. Despite its title, the book is not exclusively focused on microservices, and the author does not unequivocally assert that microservices are the ultimate solution.
We have this strange paradigm where we’re expected to do the learning on our own time with our own money. If companies don’t let us learn while working, everything should switch to co-ops.