I always recommend this book called 'Clean Code'
It details a collection of techniques to keep your code readable and maintainable.
In general use good variable and method names and use more, shorter methods where appropriate
Actually, start with some programming, then move on to "The Art of Exploitation" it's the best book on "hacking" I've ever used...
>What are your favorite resources out there that you turn to, that could be helpful in showing someone what a good review is?
Clean Code by Robert C. Martin.
This book covers all kinds of great stuff regarding correctness, maintainability, testability, etc.
I want to call your attention to something you wrote though.
>mid level engineers spending lot of time arguing about things that should not be the focus of the code reviews - e. g. variable names, code styles etc. In doing so, they are also not paying enough attention to the overall architecture, correctness, maintainability, testability etc. for the code they are reviewing.
This is a false dichotomy. Having code with well thought out names and formatting, enables having maintainable and testable code. It makes reasoning about correctness much easier. Same is true for the overall architecture. I would go so far as to say, you cannot have all of the attributes you desire, without having code that is easy to read.
Now, mid level devs are notorious for taking "Clean Code" too far, and inciting holy wars to purge the heathen sinners who dont conform 100%. Perhaps they just need their zealotry toned down. Names and formatting are definitely important, but not so important that they cant see the forest for the trees.
Clean Code taught me how to write clean code. Cannot recommend this book enough, every place I've worked I've brought a copy and at least one coworker will borrow it and find themselves really questioning a lot of their decisions. It's also a great book to refer back to every few years.
edit: Truthfully, some was experience, seeing other people's code early on. Discussing with peers. Thinking about single responsibility et cetera. I don't think there is one source but the book is something at the top of the list.
It's written in Java, but for the most part, it's very transferable to C#. When I was a junior dev transitioning to intermediate, it was pretty worth my while. It's a relatively easy read and doesn't require you to be writing code or sitting at a computer (at least it didn't for me).
Feel free though while reading it to critically question some ideas as to how applicable they are in the C#.NET ecosystem, current best practices, and your day-to-day work. (For example, IIRC, he argues that you shouldn't prefix interfaces with the capital I
. I still do that though and I find it worthwhile.)
Uncle Bob, 'Clean Architecture' is the book you want. Examples are in Java but you shouldn't have any problems understanding
This book is a must-read, imo.
Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series) https://www.amazon.com/dp/0134494164/ref=cm_sw_r_cp_apa_i_FyzqDbV9KJ25Y
Poorly written code generally doesn’t follow Best Practices, but includes issues like using inappropriate algorithms and data structures to manage data, and bad design decisions.
I recommend Clean Code by Robert Martin https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
He does a great job of highlighting what makes code readable, and maintainable, especially in the context of Java and OO Design and OO Programming.
I’ve heard some call it controversial. But after more than 20 years in the industry ( username relevant) I find him to be particularly on point and accurate. Personal preference aside, he knows what he is talking about and tells it like it is.
La filosofia descritta da te riassume la filosofia "all'italiana" : si massimizza il guadagno, minimizzando l'investimento. Questo non solo in termini di economia, ma anche di tempo e, talvolta, di istruzione.
Personalmente penso e ho trovato aziende (anche piccole) che hanno metodi molto più rigorosi per lo sviluppo (creazione di documentazione secondo un certo stile, ogni variabile deve essere assegnata con un nome preciso, ecc..). Poi, vabbè, ci sono anche aziende molto grosse con la metodologia AGILE , ma già creare una buona documentazione e seguire poche e semplici regole , fa la differenza fra il buon "programmatore" e il mitico cuggino.
Un buon libro per i colleghi Clean code , sempre che di inglese ce ne capiscano qualcosa.
The Jez Humble / David Farley book on Continuous Delivery is a must read from a standpoint of teams that deliver solutions in an automated way. More oriented towards software developers than operations / IT but really a must read for both types of folks for us to all come together as "DevOps".
edit: Amazon Link: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912
Write clean code that is easy to understand. Commenting is, at best, a necessary evil.
Take this for example:
if((employee.flags & HOURLY_FLAG_ && employee.age > 50) employee.GetBenefits()
vs.
if(employee.IsEligibleForFullBenefits()) employee.GetBenefits()
Code can be self documenting; but it takes good craftsmanship and a lot of experience to make it happen.
I totally stole this example from the book Clean Code and its chapter on commenting, but it really drove the point home for me. Worth a read for anyone who wants to craft well written applications.
CLR via C# for a better understanding of the runtime you're working with.
C# in Depth for a deep dive into the language and it's features and their details of implementation.
I'd consider those two to be the primary intermediate texts.
The problem is that to understand clean code they have to be able to differentiate between good and bad design. That insight usually only comes with the experience of having to modify badly written code. I can point them to Clean Code By Robert Martin. But most of it will go over their heads.
If there is one book to read about testing it is Working Effectively with Legacy Code. And if there is one thing to remember from it, it's
> Legacy code is untested code
So stop writing legacy code.
Powers you say? Who needs powers to defeat Yandere Dev when you already have access to the ultimate weapon...
Hacking the art of exploitation (Amazon) (No Starch) is good for learning the foundation stuff. Its getting a bit old but the foundations are still the same there are just more defenses for some of the techniques now
this book taught me a bit about it. It was interesting to say the least. It gives examples of exploits, like how pointers can totally ruin someone's day.
Warning, it'll make you peek at some assembly. You don't really need to understand it fully to get the jist tho.
Computerphile also has some good videos on this topic, and how people "attack". It may give you an idea.
I don't know a lot, but this is how I learned about it to some degree until I swapped to a different education path.
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
Please read this, I beg you. If I have to refactor one more python file written by a self-taught programmer that refuses to write classes I will grow a brain aneurism.
If you don't want to buy it, hypothetically someone on this site might be able to DM a pdf to you, but that probably violates some rule so they wouldn't tell you outright. Hard to find someone like that, unfortunately.
Other than the standard naming conventions I try to use the project standards when joining to an existing project. I also use the best practices from Clean Code by Robert C. Martin, I could definitely recommend that one. Not only it mentions good naming conventions, but also other best practices.
Clean Code and The Pragmatic Programmer are both really popular
> While we obsess with isolating tests from their dependencies, the "mock test" anti-pattern, he was talking about isolating tests from other tests so you can run three database-dependent tests in any order.
You can blame the English for that. What you are describing is mockist testing (the London school of TDD), a testing style that was most heavily popularized by Pryce and Freeman in Growing Object Oriented Software Guided By Tests.
Becks "traditional" unit testing still lives on in the testing style promoted by Martin Fowler (the Chicago school of TDD).
Martin Fowler summarized both approaches in his article Mocks aren't Stubs.
I don't think there is necessarily anything wrong with the London school, when properly understood. There's a reason why Pryce and Freeman heavily promote interfaces.
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=nodl_
Specifically… learn how to use unit testing to solve the problem one piece at a time so you don’t have to pre-plan how to break it into chunks.
The definitive book about this is "Working Effectively with Legacy Code" by Michael Feathers. My personal bias is: if you can improve the code, do it, there's no reason not to. It sounds like this is a personal project with no real deadline or consequences, is that correct?
I have this one Learn Ethical Hacking From Scratch.
I think its not bad but course content is a little bit poor and hacking methods old.
If you want to start hacking
this books very good. Also u dont have money you can also find it on Google..
​
I bet ADHDers face greater difficulties with this task. Medication will most likely help you. I also highly recommend a classic book by Michael Feathers, Working Effectively with Legacy Code.
According to Clean Architecture, core logic should not depend on I/O; I/O should depend on core logic. But it's your choice on whether to take this advice, as it is not easy to do at first.
Definitely Clean Code. And probably the Pragmatic Programmer (take a look at the books on the list, they are all good reads)
You can Google around for small tips here and there, but there's no substitute for sitting down and reading a few chapters of a great software engineering book.
The best book I have ever read on this topic is called Clean Code by Robert Martin. I bought this book for every new hire in my software department and trained them on the principles of it. All agreed that it was the best level up for writing modular, maintainable, easy-to-understand code.
I study computer science, 2nd year bacc degree, one more year to go. I have excellent grades, but I still wasnt able to study more subjects and finish two years in this year although I had right to do it by Uni's regulations. The rule says that excellent students have a right to listen more subjects and finish studies earlier. They said they havent met anyone who wants to have more subjects in one year and although its great thing I am motivated, they cant accept my request because they arent informed enough. The reason why I did made request in first place was that I am pregnant with my first baby and it will hard for me to study and take care of baby at the same time. I dont know if I will be able to finish my studies next year, but I will try my best. I would really like to have this book so I can improve my coding skills and move out from this country so my baby doesnt have to live and learn in environment that demotivates you.
Maybe The Pragmatic Programmer. I'm not really a fan of books about programming that don't involve any actual programming, but I would say this is a worth while read. However you should have a few years of experience before reading it.
The best way to get better at programming (in addition to actually programming) is by reading books specific to the technology you are working with.