Skip to main content
182votes

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 ...
jwenting's user avatar
181votes

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 ...
Philip Kendall's user avatar
140votes
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 ...
Robert Harvey's user avatar
108votes

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....
Bob Jarvis - Слава Україні's user avatar
101votes

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 ...
Jörg W Mittag's user avatar
100votes
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 ...
Andreas Kammerloher's user avatar
98votes

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 ...
Berin Loritsch's user avatar
94votes

Should developers fix bugs in their own code?

This seems more a failure of your code review process than who is fixing the bugs. If the anti-patterns in the code and faulty assumptions that don’t get reworked aren't getting called out and ...
Philip Kendall's user avatar
87votes

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 ...
Jörg W Mittag's user avatar
87votes
Accepted

What are the benefits of tracking solved bugs?

In addition to Thomas' answer, a bug report that leads to a code change is just as much a part of your code's history as the requirements specifications, architecture documents, customer change ...
Ben Cottrell's user avatar
81votes

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 ...
user949300's user avatar
77votes

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 ...
Thomas Owens's user avatar
  • 85.1k
73votes
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 &...
FrustratedWithFormsDesigner's user avatar
70votes

How is Agile model more flexible than the Waterfall model?

While it's been massively subverted over the years, the idea behind agile isn't that you deliver the same set of features faster. It's that you get things out to your users for feedback quicker and ...
Philip Kendall's user avatar
56votes

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. ...
MattPutnam's user avatar
55votes

What is the most efficient way to continue developing a piece of software in the long-term?

Let me speed you up by slowing you down. Ever heard who the best person is to hire as a tutor? It’s not the teacher. It’s some student who just took the class. Who remembers the struggle. Therefor I ...
candied_orange's user avatar
53votes

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 ...
candied_orange's user avatar
52votes

What are the benefits of tracking solved bugs?

In addition to the other answers, the practicalities of software production process also influence this: Bug fixes are usually not immediately put into production. Often it can be weeks or months ...
jpa's user avatar
  • 1,398
51votes
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 ...
Berin Loritsch's user avatar
50votes

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

Whether one works clean or dirty is more a question of developer attitude and abilities, and the same holds for coding speed - this is rarely a deliberate decision people make. Of course, there are ...
Doc Brown's user avatar
45votes

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

Learn refactoring - the art of gradually improving code. We all learn all the time, so it is very common to realize that the code you have written yourself could be written in a better way. But you ...
JacquesB's user avatar
43votes

Using #ifdef to switch between different types of behavior during development

When you're holding a hammer, everything looks like a nail. It's tempting once you know how #ifdef works to use it as a sort of means to obtaining custom behavior in your program. I know because I ...
Neil's user avatar
  • 22.8k
42votes

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

Yes but with a lot of care! Let me clarify that. You should strive to improve the habitability of the software. If you look at the code/team/business/project/management and your first response is to ...
Kain0_0's user avatar
  • 16.5k
42votes

How is Agile model more flexible than the Waterfall model?

I think experts generally accept that "Waterfall" is a stereotype of certain ineffectual development practices. From the 60s into the 90s, I dare say the vast majority of software ...
Steve's user avatar
  • 12.2k
40votes

Should developers fix bugs in their own code?

For recent bugs, I agree with the other answers. Most of those are sorted out in the pull request process and it's a matter of pride and familiarity to fix your own bugs. However, there are scaling ...
Karl Bielefeldt's user avatar
38votes

How can I defend reducing the strength of code reviews?

How do the company's stakeholders feel about the productivity of their developers? My previous boss told me a story once about this kind of zealotry. The developer team was using that zealotry as an ...
Robert Harvey's user avatar
37votes
Accepted

What is "premature abstraction"?

At least in my opinion, premature abstraction is fairly common, and was especially so early in the history of OOP. At least from what I saw, the major problem that arose was that people read through ...
Jerry Coffin's user avatar
36votes
Accepted

Robustness vs Correctness Competition

There are many situations in which these two might be in conflict. For instance, robustness can involve resilience under heavy load. If an approximate (i.e., incorrect) response to a request can be ...
Kilian Foth's user avatar
36votes

What are the benefits of tracking solved bugs?

It depends on what you're going to do with the data. There are plenty of things that you can do if you keep track of resolved issues. From a product quality perspective, you can keep track of ...
Thomas Owens's user avatar
  • 85.1k
33votes

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

The situation that you describe, where management requires that the team works overtime to complete all planned stories, is one of the reasons why the Scrum literature has stopped using the term "...
Bart van Ingen Schenau's user avatar

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

close