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. ...
Jacob Robbins's user avatar
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 ...
Viktor Toth's user avatar
  • 1,000
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 ...
Ivan Anatolievich's user avatar
98 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 ...
Rowan's user avatar
  • 1,079
63 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 ...
Christophe's user avatar
  • 75.9k
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; ...
Robert Harvey's user avatar
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 ...
gnasher729's user avatar
  • 43.6k
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 ...
8bittree's user avatar
  • 5,656
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 ...
Marc.2377's user avatar
  • 375
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 ...
Greg Burghardt's user avatar
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 ...
whatsisname's user avatar
  • 27.7k
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 ...
Thomas Owens's user avatar
  • 80.4k
15 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, ...
Sebastian Redl's user avatar
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 ...
Arseni Mourzenko's user avatar
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 ...
usr-local-ΕΨΗΕΛΩΝ's user avatar
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 ...
Greg Burghardt's user avatar
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 ...
Bart van Ingen Schenau's user avatar
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,...
Arseni Mourzenko's user avatar
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 ...
Kain0_0's user avatar
  • 16.1k
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 ...
Robert Harvey's user avatar
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 ...
Arseni Mourzenko's user avatar
11 votes

What are the differences between software interrupts/exceptions

Allow me to expand on @Tymski's nice answer. Let's start with a review of hardware interrupts. These can occur at any time (assuming they are enabled) and are thus asynchronous to the current ...
Erik Eidt's user avatar
  • 33.6k
11 votes

What is meant by the phrase “Software can replace hardware”?

Another field in which this is true is synthesisers. Early synthesizers were 100% analog hardware that generated waveforms directly then modified them via circuitry (filters, amplifiers, etc.). It ...
Joe McMahon's user avatar
11 votes

Why bother gathering requirements when we know they will change?

Why do we spend so much time gathering detailed requirements at the beginning if we know that they will be invalidated and change in the not so distant future? It's time to stop gathering ...
candied_orange's user avatar
11 votes

What is the technical term for the modifiers that come after a command?

What is the technical term for the "-m" ? The "technical term" for command line options is command line options1. There general usage is to specify parameters for the program, either of boolean (flag/...
πάντα ῥεῖ's user avatar
11 votes

How should I handle software requirements as a developer?

I'm also not sure whether this is the right place, but it's certainly a common situation that you encounter as a software engineer. The key is communication. Don't view this as a one way street where ...
Hans-Martin Mosner's user avatar
10 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 ...
FrustratedWithFormsDesigner's user avatar
10 votes
Accepted

Should the Software Architect think in non-functional requirements in the first days of the project?

Yes. Performance and scalability requirements may have a big impact on the overall architecture so should definitely be taken into consideration. But be careful. Architectural decision for the sake ...
JacquesB's user avatar
  • 57.8k
10 votes
Accepted

software disaster recovery when an engineer is suddenly unavailable

It depends on the foreseeable duration of the unavailability, the remaining duration of the project, the way the tasks are distributed and the consequences of missing the deadlines. Software ...
Christophe's user avatar
  • 75.9k

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