DEV Community

Cover image for What are your software development principles?

What are your software development principles?

Sherry Day on June 06, 2023

Anything you live by?

Collapse
 
ryencode profile image
Ryan Brown

"Always check your assumptions"
This comes into play best when debugging. Assuming an input has a specific value (or even a value at all), assuming a method is being called, assuming a library works as you think it does, assuming that your deployed code and configuration is as you expected it to be, assuming debug and release will behave the same in all circumstances...

Collapse
 
phlash profile image
Phil Ashby

for me:

  • Use a Decision Log (probably a pool of ADRs in version control + associated tests - you've got tests right?)
  • Keep It Simple Stupid ('cause simple code is maintainable code eg: interfaces only where implementations will change, consider monolith before microservices, etc.)
  • You Ain't Gonna Need It (just enough code to pass the tests.. you've got tests right?)
  • Refactoring Is Always Valuable (tidy code is simple code, simple code is maintainable..)
  • Feedback is King (as change is inevitable!)
Collapse
 
citronbrick profile image
CitronBrick • Edited
  1. Follow code conventions: Indentation, Case
  2. Name variables/functions/classes appropriately.
  3. Use small private helper functions.
  4. Don't let error cases/ exceptions slide off quietly. Just log them.
Collapse
 
anuragvohraec profile image
Anurag Vohra • Edited

"If I had eight hours to chop down a tree, I'd spend six sharpening my axe".

Always write agorithm before, you start coding. When you write, many problems becomes evident, which you can remove right there. Once it become satisfactory, it become too easy to code.

Collapse
 
ben profile image
Ben Halpern

I find myself coming back to this one

In computer programming and software engineering, the ninety-ninety rule is a humorous aphorism that states:

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

Collapse
 
landoc profile image
lando calrissian

The Debugging Paradox: The harder you push to find a bug, the more elusive it becomes. The moment you step away from the keyboard, the solution suddenly becomes clear.

Collapse
 
phlash profile image
Phil Ashby

"Use the duck Luke" 😁

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

It's not really a paradox than a developer can think more clearly when she is relaxed under the shower than when she is stressed and glued behind a computer screen.

Collapse
 
nutch profile image
Nicholas Hutchind

It's very small and simple, but:

"Continuous Improvement: Feeling dissatisfied with your past code is natural and appropriate. It shows an understanding of your evolving skills."

Collapse
 
jannisdev profile image
Jannis

Great!

Collapse
 
kurealnum profile image
Oscar

Keep it simple, but also follow basic workflows. I have a whole list of them, like what to do for incorrect function returns.

It's not rigid at all, but I often find myself doing the completely wrong thing, so basic workflows (or problem flows, if you will) tend to be helpful!

Collapse
 
tandrieu profile image
Thibaut Andrieu

KISS - YAGNI

I cannot count the number of time I've heard "This interface will be useful next quarter when we will address this requirement".
Finally, priorities change, and your beautiful useless abstraction just become yet another over-designed layer developers have to deal with every day of their life...

If your abstraction have a single implementation, you didn't built and abstraction. You just built a pass-through layer over your specific case.

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Programming is very simple: you learn all the best practices, and then you forget about them and focus on what your colleagues and your customers need.

Collapse
Collapse
 
bias profile image
Tobias Nickel

use small dedicated solutions over all included frameworks

Collapse
 
eecolor profile image
EECOLOR

"It is software, not hardware"

Collapse
 
netdjw profile image
Balázs Winkler

TDD
DDD
SOLID
KISS
DRY
Clean Code
Use design patterns if it's possible. Refactor if not.

Collapse
 
efpage profile image
Eckehard

Keep is simple...