55

The 2 years of experience me was you, but more extreme. I'd always create interfaces for every class, I'd apply any design pattern where I was able to, I'd never inject any concrete implementation, trying to write code that could adapt to anything ever. "You're using a database ? Create a repository, and don't forget the interface !!" I'd say. Now ...


53

TL;DR - You need Unit Testing Unit Testing is a phrase which I haven't seen mentioned anywhere else in this thread so far. (At least, from reading the original post I'd have been willing to bet that you aren't writing unit tests because it sounds like your codebase is virtually untestable.) As others have pointed out, Uncle Bob's advice, along with SOLID ...


9

My coworkers do a great job of adding new features, creating a cool product and so on. I just feel that there is no second refactoring and cleaning step, just the initial “making it work”. After a while on this site, I came to the conclusion that I was not alone. This is something that transcends our teams. But don't get me wrong, I feel you. I'm a ...


8

This is a very common conversation happening in most if not all dev teams. And in the end, it all boils down to this: The coworkers find that adding these patterns to the code explicitly makes it more complicated. What is very important to realize here is that both options are complicated, but for entirely different reasons. To summarize the below ...


6

Sell the benefits to the business, not the programming approach. Do users find bugs? Does this impact the business? Clean code reduces bugs. Is making changes hard? Is is slow and cumbersome? Clean code reduces this burden. Do tests fail a lot intermittently? Quality tests reduces that. Do tests take a huge amount of time to run? Good application of the ...


2

Some amazing well thought out answers here. As has been stated, start with small suggestions. You really will need to work on your soft skills to be persuasive. Coming in all guns blazing as a newly converted "Uncle Bob Disciple" isn't going to make any friends! Consider making notes of bugs that have found their way onto live systems, note the ...


2

First of all, it is important to understand that software is worth only as much as it captures quality knowledge about the problem domain it is being built to be solution to. No amount of patterns or clean code can be a substitute for that. I guess, your codebase is growing and your understanding of the problem and solution grows as well. Is it well-captured?...


1

Formally, this is a fixed-scope, fixed-time project, which is not where agile development methods are best suited for. But it is the kind of project that contracting houses like, because they can build something, deliver it at the deadline and wait for the inevitable change-requests. Those will then be charged at a premium. I am saying that it is formally ...


1

You say… I see abstractions and patterns which are implicitly present. And I would like to make them explicit. Yeah, I remember having that experience. Now, listen, you are better of reaching an understanding with your coworkers. And that is likely to be a middle ground. They say that increasing the number of classes only increases the complexity. I say ...


Only top voted, non community-wiki answers of a minimum length are eligible