Unique Deck Flashcards
Why is it important to not lock in a specific vendor or technology or anything else?
Because requirements, users, and hardware change faster than we can get the software developed.
What is tracing bullets?
The code is very simple and lean but is complete. Helps developers and stake holders to adjust the aim throughout the project.
What is the main difference between tracing bullets and prototypes?
Prototypes are thrown away after is completed and tracing bullets is the lean but complete piece of software.
What can be prototyped?
Things you haven’t tried before, or that is absolute critical to the final system. Anything unproven, experimental or doubtful. Examples:
Architecture;
New functionality in an existing system
Third party tools or components
User interface design.
What is the real value behind the prototype itself?
The value is not in the code itself, but in the lessons learned.
What is a domain language and why is it important to match the terms in the code?
Domain language is the terms used in the field your software fits in. It is important to have similar terms and names so that all people in the project can speak the same language.
What is the most important part of a good estimation?
You need to understand the problem first.
How to express estimates?
Better express in bigger levels of magnitude. E.g two weeks is better than 130 hours.
How to achieve better levels of confidence when estimating?
By creating high level models of the solution and further decomposed.
How to get better at estimating?
By analyzing what went wrong exactly with the model, or the decomposition.
What is a common paradox on project estimation?
We need to get experience in this project to estimate this project.
How to deal with the uncertainties of the project estimation?
By iterative development: Check requirements; Analyze risk (and prioritize riskiest items first) Design, implement and integrate Validate with users
What is a common answer when asked for an estimation?
I’ll get back to you :)
What are the main tips that we need to follow when debugging?
Don’t blame others, won’t help.
Don’t panic.
THINK what could cause the symptoms.
Always find the root cause of the problem.
The bug that just happened is impossible! What to do now.
Don’t waste time saying that. It is clearly possible.
What is very useful and maintainable way of fixing a bug?
Write tests that make it fail before fixing it.
What to do when an exception or any error message appears in the screen?
Read the god damm message.
Where tracing logs are more valuable?
In concurrent systems, real-time systems and event-based systems.
What is rubber ducking?
The technique where you explain a problem to the bathtub duck just like you would explain to someone else in order to identify the problem by yourself.
What means “select is broken”?
It’s a metaphor that happened when a software engineer blamed unix’s select command instead of his own software when debugging.
What is process of elimination?
Your software is the one likely to be broken. If not, then you can look at the third party softwares or the os itself.
What assumptions can do to a debugging session?
It can mislead you to a total useless path.
Notes:
1 - DON’T ASSUME IT - PROVE IT
2 - Prove it in THIS context, with THIS data, with THESE boundary conditions.
What are the items of a debugging checklist?
1 - is the problem reported a mere symptom or the root cause?
2 - is the bug really in the third party software or on YOUR code?
3 - if you explained in detail to a co-worker, what would you say?
4 - do these conditions that caused the bug spread somewhere else in the software?
What is text manipulation and why it is important?
Text manipulation allows all sorts of text aggregation and joins. Text manipulation can save the developer a lot of time. Recommended to learn one text manipulation language.