311 votes

What do you do when code review is just too hard?

The premise of the question is, frankly, astounding. We suppose that there is a large change to fragile, complex code, and that there is simply not enough time to review it properly. This is the very ...
user avatar
  • 45.2k
260 votes
Accepted

Why does Uncle Bob suggest that coding standards shouldn't be written down if you can avoid it?

There are a few reasons. Nobody reads documentation. Nobody follows the documentation even if they do read it. Nobody updates the documentation even if they do read it and follow it. Writing a list ...
user avatar
  • 8,640
245 votes
Accepted

My office wants infinite branch merges as policy; what other options do we have?

Even though I use Git on the command line – I have to agree with your colleagues. It is not sensible to squash large changes into a single commit. You are losing history that way, not just making it ...
user avatar
  • 124k
182 votes

Should a (junior) developer try to push for better processes and practices in their development/IT team?

Good answers so far, but they don't cover all the bases. In my experience, many people fresh out of college have fantastic theoretical knowledge - far better than me or many other seniors with ...
user avatar
  • 9,725
180 votes

How can I defend reducing the strength of code reviews?

How can I justify and defend the thesis that: The merge button should be enabled by default The code review should be a recommendation , but not mandatory The code author should have the right to ...
user avatar
166 votes
Accepted

When does bugfixing become overkill, if ever?

You have to be pragmatic. If the error is unlikely to be triggered in the real world and the cost to fix is high, I doubt many people would consider it a good use of resources to fix. On that basis ...
user avatar
  • 6,082
140 votes
Accepted

Why isn't TDD more popular in universities?

I am a part-time programming teacher at a local community college. The first course that is taught at this college is Java Programming and Algorithms. This is a course that starts with basic loops ...
user avatar
128 votes
Accepted

How do you develop software without acceptance criteria?

An iterative process will achieve this nicely, without detailed specifications. Simply create a sketchy prototype, ask for feedback from the customer, make changes based on the feedback, and repeat ...
user avatar
116 votes

Why does Uncle Bob suggest that coding standards shouldn't be written down if you can avoid it?

There's another interpretation. I don't believe it is what Uncle Bob meant, but it is worth considering. Don't capture coding standards in a document. Capture it in code, by having an automated ...
user avatar
  • 1,039
112 votes
Accepted

What are the advantages of build scripts?

Automation. When you are developing, only in the most simple projects will the default "build" button do everything you need it to do; you may need to create WS out of APIs, generate docs, link with ...
user avatar
  • 2,542
110 votes

My office wants infinite branch merges as policy; what other options do we have?

I like Amon's answer, but I felt one small part needed a lot more emphasis: You can easily simplify history while viewing logs to meet your needs, but others cannot add history while viewing logs to ...
user avatar
107 votes

What happened to the "Surgical Team" pattern from "The Mythical Man-Month"?

"The Mythical Man-Month" came out the year I started college and was, to use the current vernacular, UUUGE! :-) What you need to understand is the difference in how software was developed THEN vs. NOW....
user avatar
101 votes

Why isn't TDD more popular in universities?

First of all, we have to fundamentally distinguish between Computer Science and Software Engineering. (And maybe to a lesser extent between Software Engineering and Programming or "Coding".) As one ...
user avatar
100 votes

What do you do when code review is just too hard?

One of the primary goal of a code review is to increase quality and deliver robust code. Robust, because 4 eyes usually spot more problems than 2. And the reviewer who has not written the additional ...
user avatar
  • 67.8k
100 votes
Accepted

How can I avoid always feeling like if I completely rebuilt my program from scratch I'd do it much better?

This is a very common experience Most people I interact with, and I myself as well, feel like this. From what I can tell one reason for this is that you learn more about the domain and the tools you ...
user avatar
97 votes
Accepted

How do you transition a program from in-development to release?

So I don't waste much time on writing super clean code at that point because I never know how long something lasts. Not knowing how long something lasts should never be an excuse for sloppiness - ...
user avatar
  • 185k
97 votes

Do seasoned developers still have to deal with merge conflicts?

I think it's a little disingenuous to say that good developers never have merge conflicts, but they can surely reduce the number of times it happens. It's also very important to remember that ...
user avatar
91 votes

My coworker commits and pushes without testing

You need a proper Quality Assurance (QA) process. In a professional software development team, you don't push from development right to production. You have at least three separate environments: ...
user avatar
  • 22.8k
88 votes

What happened to the "Surgical Team" pattern from "The Mythical Man-Month"?

There are some aspects of that concept that are sometimes implemented today, there are other aspects that are avoided. Keeping teams small is one of the basic features of Agile Methods, but is also ...
user avatar
79 votes

When does bugfixing become overkill, if ever?

There was a similar bug in Windows 95 that caused computers to crash after 49.7 days. It was only noticed some years after release, since very few Win95 systems stayed up that long anyway. So there's ...
user avatar
  • 9,263
77 votes

My project manager does not accept carry-over in Scrum - is that normal?

A few things stand out to me. The idea that management has that the team commits to a set of work is inconsistent with the latest versions of the Scrum Guide. The word "commit" or "commitment" is ...
user avatar
  • 76k
76 votes

How can I favor quick (and dirty) over clean (and slow) in practice?

Use the 80:20 rule (Pareto Principle) And a "TODO" notation. Or, as given here, "80% of the task is completed by 20% coding". A large amount, ~80% of your code, can probably be ...
user avatar
  • 8,390
72 votes
Accepted

What is the best way to code review a work-in-progress?

GitHub allows for PR to be in a "draft" state. Your team can see the differences, and even comment on it, but it's still obviously a work-in-progress, and cannot be merged until you click a &...
user avatar
71 votes
Accepted

How can I get things right at the beginning of a software project?

The cycle you describe is normal. The way to improve things is not to avoid this cycle, but to streamline it. The first step is to accept that: It's near impossible to know everything on day one of a ...
user avatar
  • 2,285
70 votes

Why does Uncle Bob suggest that coding standards shouldn't be written down if you can avoid it?

People overlook the real purpose of a coding standards document, which is to settle disputes. Most of the decisions in the coding standard will have only a very minor effect on readability and ...
user avatar
  • 9,263
57 votes

My coworker commits and pushes without testing

You will probably want to get a dev server, and preferably a staging environment too. Nobody should ever be pushing from local to production except for their own personal website. Your deploy process ...
user avatar
  • 1,663
56 votes

How do you develop software without acceptance criteria?

If what you're saying is true and the spec is nowhere near good enough for you to even start (and you are being honest in this appraisal), I recommend this aproach: Read the sketches and the "sketchy"...
user avatar
  • 24.7k
56 votes

Why isn't TDD more popular in universities?

TDD is a nice process in "real-world" programming because problems often arrive on our desks underspecified. "Add a feature that does X", "fix the bug where it shows the wrong thing if you do Y", etc. ...
user avatar
53 votes

When is it better to optimize a software for better performance, at the beginning or at the end of the development?

The number one thing should always and forever be readability. If it's slow but readable, I can fix it. If it's broken but readable, I can fix it. If it's unreadable, I have to ask someone else what ...
user avatar
51 votes
Accepted

When designing a system, is it best practice to cater the design around the framework you will be using?

Your design should meet the clients needs as closely as they can. Remember that design includes little things like: User experience Functionality How pieces of your application communicate (either ...
user avatar

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