Skip to content

Commit 7f13eb5

Browse files
Merge pull request #8 from craicoverflow/software-idioms-you-should-know
Add new blog post
2 parents 69e04d9 + e63dfe7 commit 7f13eb5

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

content/posts/post1.md

Whitespace-only changes.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
title: "Software Idioms You Should Know"
3+
date: 2021-12-15T11:30:03+00:00
4+
weight: 1
5+
---
6+
7+
I have been working as a software engineer for just over five years. Every now and then I encounter an idiom during a meeting which I don't understand at all and it is not explained because it is assumed that everyone already understands its meaning. Either everyone else _does_ know what it means or there are a number of people like me, confused but hesitant to ask what it means as it is hard to gauge whether you are the only dumb-dumb who does not know.
8+
9+
After asking some software engineering friends, I found that many had never heard some of these phrases. So I think it is likely there are many more of you out there yet to hear them, or have already heard them but do not know what they mean.
10+
11+
I decided to collect all of the idioms that I have come across so that hopefully you will be prepared when you encounter one and you won't be like I was, confused and wondering what the hell these people are talking about.
12+
13+
Have I missed any? Let me know in the comments below.
14+
15+
## Bikeshedding
16+
17+
Bikeshedding, or the **Law of Triviality**, describes our tendency to devote a disproportionate amount of our time to trivial topics. For example, a team might devote more time than is all of their time debating what colour a button on their website should be, rather than discussing what front-end framework best fits their needs.
18+
19+
## Dogfooding
20+
21+
Dogfooding, or **Eating your own dog food** is the practice of using your own products and projects internally. This is a good practice if you are able to do it as it means you are able to continuously validate that the product is functioning is correctly and it can help to identify usability or feature gaps, and bugs.
22+
23+
## Boil the ocean
24+
25+
To "boil the ocean" is when someone tries to undertake a project or task which would be almost impossible to complete.
26+
27+
## Rubber duck debugging
28+
29+
Rubber duck debugging is an analog method of code debugging, where an engineer would articulate a problem using natural human language, either spoken or written. Using an inanimate object such as a rubber duck can help with this method by providing an imaginary listener of the problem.
30+
31+
## Drinking the Kool-Aid
32+
33+
When someone "drinks the Kool-Aid", it means that they have heavily bought into something, sometimes ignoring the arguments against the thing. The "thing" is often a company or its leader, but is sometimes used when referring to software languages or frameworks, or methodologies.
34+
35+
## Skunkworks
36+
37+
Skunkworks refers to a project that involves a specialist team working autonomously on an advanced or secret project, primarily for the sake of rapid innovation.
38+
39+
## Yak Shaving
40+
41+
Yak shaving is when you start a task but end up having to complete a number of other tasks before you are able to complete the original task.
42+
43+
## Technical debt
44+
45+
Technical debt is bad code which is the result of when a development team takes shortcuts in their code delivery in order to meet deadlines, and the bad code causes issues down the line leading it to need to be refactored.
46+
47+
## Bus factor
48+
49+
The bus factor of a project is the number equal to the number of team members who, if run over by a bus, would put the project in jeopardy. If a project relies heavily on one member in any way, then you could say that the project's bus factor is one.
50+
51+
## Code smell
52+
53+
A code smell is when any characteristic of a piece of code may be caused by a deeper problem within the system or architecture. A common code smell is a **bloater**, where a piece of code, which could be a component, class or method has increased to an undesirable size.

0 commit comments

Comments
 (0)