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 ...
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 ...
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 ...
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....
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 &...
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 ...
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. ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 "...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
development-process × 742project-management × 79
agile × 74
design × 52
testing × 44
web-development × 42
programming-practices × 38
scrum × 36
version-control × 35
architecture × 24
code-quality × 24
teamwork × 24
git × 23
tdd × 21
documentation × 19
code-reviews × 18
sdlc × 18
requirements × 16
productivity × 16
team × 16
unit-testing × 15
management × 15
development-methodologies × 15
development-environment × 14
c# × 13