290
votes
New developer can't keep up with branch merges
I assume you're using git. If so, make use of git rebase -i (the -i means interactive). Make it a daily task (even more frequently, if necessary) to rebase your branch against the develop branch. ...
130
votes
What is meant by the phrase “Software can replace hardware”?
I am surprised nobody mentioned yet one of the most glaring examples: software-defined radio.
If you took a present-day smartphone back in time some 50 years and showed it to a competent engineer ...
130
votes
New developer can't keep up with branch merges
This might be a sign of bad software engineering on the company's part. Too many inter dependencies, different issues with overlapping features, attempting to tackle issues in the wrong order etc. can ...
99
votes
New developer can't keep up with branch merges
The accepted answers I think are more of a technical "how to use Git better" nature, I think this is more of a team problem than an engineering or tooling problem.
If you're encountering a lot of ...
70
votes
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 ...
64
votes
If software engineering means making software for other domains when are you supposed to get the knowledge about that other domain?
Software is a knowledge-intensive area. And a big part of the software engineer's work is to extract the domain knowledge from the users and domain expert, abstract it, and transform it into ...
42
votes
What is meant by the phrase “Software can replace hardware”?
Consider this circuit:
It is a Flip Flop, aka a Bistable Multivibrator. It can be replaced with this code:
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
...
42
votes
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 ...
32
votes
Is it possible to build a system to generate UUIDs where every UUID is guaranteed unique?
there is a finite number of ids which can fit into some structure
Correct. If you have n bits in your structure, after you have generated 2^n IDs, the next one must be a collision; this is the ...
30
votes
How is Agile model more flexible than the Waterfall model?
But Waterfall also lets you do the same thing (go back to the design
and then write the code for it)
Not really. Agile is a reaction to big project management. So the waterfall they are talking about ...
29
votes
New developer can't keep up with branch merges
The most important thing about merging is that the longer you wait, the more painful it gets. And the problem grows more than linear. Three times as many conflicts are nine times as much work. There ...
28
votes
What is meant by the phrase “Software can replace hardware”?
It means exactly what it sounds like.
A particularly famous example is the Disk II Drive designed by Steve Wozniak for the Apple II:
The chief innovation was making the controller compact by using ...
25
votes
Accepted
What is the best definition for Dependency Injection?
Dependency Injection is a horrible name (IMO) 1 for a rather straightforward concept. Here's an example:
You have a method (or class with methods) that does X (e.g. retrieve data from database)
As ...
24
votes
If software engineering means making software for other domains when are you supposed to get the knowledge about that other domain?
Same applies to journalists. They write stories about many domains. What about graphic artists, too? Any occupation that works with other occupations has the same problem. You need to work with people ...
20
votes
Is it possible to build a system to generate UUIDs where every UUID is guaranteed unique?
You want version 1 UUIDs. They don't collide but they leak the generating computer's MAC address and require a monotonic clock.
From RFC4122 we have this format
8 bytes time-low
2 bytes time-mid
2 ...
17
votes
Accepted
Why bother gathering requirements when we know they will change?
Because not all requirements do change, and not all requirements change in the same ways. You're not going to spend awhile working on software to manage a warehouse, only to suddenly decide to instead ...
17
votes
Accepted
Can creating a Software Design Document after development be justified?
In IEEE Std 1016 Section 3.1 Software design in context, you can find this paragraph:
An SDD can be prepared and used in a variety of design situations.
Typically, an SDD is prepared to support ...
16
votes
Accepted
Why use SDL and OpenGL instead of just OpenGL?
OpenGL only has functions to work with a graphics context, nothing else. You need at least a platform integration library to get such a context. But in reality you of course need more functionality, ...
15
votes
How do you add feature to a class that was originally designed wrong in the first place?
And refactor is not necessary, but in order to do this task right I need to refactor the whole class.
This is contradictory. You cannot claim that refactoring is not necessary while specifying that ...
15
votes
New developer can't keep up with branch merges
By the time I'm ready to merge my branch back into develop (emphasis mine)
Handling conflicts in git merge is often simpler than in git rebase. In Git merge you can see the whole list of files that ...
15
votes
Accepted
Changelog generation, manually or automatically? What is recommended?
A change log should tell end users why they should upgrade, not what changed in the code.
Stay focused on the features and bug fixes being delivered to the end users of your software, be they other ...
14
votes
Does this count as a user story for a basic Sudoku game?
Your examples can count as user stories, but they are missing a very important part: the goal that the user wants to achieve when the story is implemented.
This goal might be obvious to you, but you ...
14
votes
What part of development should a software designer do?
Preliminary notes about titles:
Sometimes, what you really do doesn't match at all your official title. As an example, years ago, I was hired as an “analyst-programmer in R&D department”; however,...
14
votes
If software engineering means making software for other domains when are you supposed to get the knowledge about that other domain?
How can you make software for lawyers if you're not familiar with the jargon?
By first making Bad software for Lawyers
Like any symphony, any sport, any activity at all, you always start by being bad ...
14
votes
Is it possible to build a system to generate UUIDs where every UUID is guaranteed unique?
Is it possible, when K different hosts are generating IDs? Yes.
And we can do it with readily available libraries.
ULIDs do a pretty good job already,
but they're not collision free.
It looks like the ...
14
votes
How is Agile model more flexible than the Waterfall model?
I think it's important to understand that the idea of the waterfall process, as most people understand it, was an error. I don't know exactly what went wrong but if you read the original waterfall ...
13
votes
Accepted
Why "simple" projects have so much code?
Libraries that are written to cater to a large, diverse group of users must be designed differently than project-specific code. You must make them more robust, handle a wider array of edge cases, and ...
13
votes
What is the benefit of short readable code if you only see functions and classes on the outside?
how exactly the methods and properties were written you do not care about, as long as they do what they promise to do.
Exactly. But as soon as they don't do what they promise to do, you have to go ...
12
votes
Accepted
Is separate QA team, redundant in development life cycle?
I would say that it depends on the system being developed and tested.
The developer might have the best understanding of the code, but that doesn't mean they fully understand all the business cases ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
software × 316design × 68
architecture × 36
design-patterns × 27
engineering × 20
licensing × 14
project-management × 13
testing × 11
agile × 11
c++ × 10
programming-practices × 10
development-process × 10
documentation × 10
requirements × 10
java × 9
terminology × 9
c# × 8
python × 7
object-oriented-design × 7
scrum × 7
hardware × 7
web-development × 6
open-source × 6
uml × 6
legal × 6