Skip to main content

Software Development Lessons (learned the hard way)


These are the exhaustive list of lessons Julia Biason learnt in 30 years working with software development.

Folks who have spent some time in software development can easily connect with them. 

Programming

  • Before you start writing code...
    • Spec First, Then Code
    • Write Steps as Comments
    • Gherkin Is Your Friend to Understand Expectations
    • Design Patters Are Used to Name Solution, Not Find Them
    • Thinking Data Flow Beats Patterns
    • The Magic Number Seven, Plus Or Minus Two
    • Cognitive Cost Is The Readability Killer
    • Learn The Basics of Functional Programming
    • Shortcuts Are Nice, But Only In The Short Run
    • Debuggers Are Overrated
    • Think About The Users
  • Testing Software
    • Unit Tests Are Good, Integration Tests Are Gooder
    • Testing Every Function Creates Dead Code
    • Tests Make Better APIs
    • Make Tests That You Know How To Run On The Command Line
    • Good Languages Come With Tests
  • Documenting your code
    • Documentation Is A Love Letter To Your Future Self
    • The Function Documentation Is Its Contract
    • If A Function Description Includes An "And", It's Wrong
    • Good Languages Come With Integrated Documentation
  • Source Control
    • Always Use A Version Control System
    • One Commit Per Change
  • Project Organization
    • Organize Your Code by Data/Type, Not Functionality
    • Create Libraries
  • Writing code
    • Be Ready To Throw Your Code Away
    • Future Thinking Is Future Trashing
    • Don't Use Booleans As Parameters
    • Beware of Interface Changes
    • It's Better To Let The Application Crash Than Do Nothing
    • If You Know How To Handle It, Handle It
    • Types Say What Your Data Is
    • If Your Data Has a Schema, Use a Structure
    • Don't Mess With Things Outside Your Project
    • Resist The Temptation Of Easy
    • Start Stupid
    • Always Use Timezones With Your Dates
    • Always Use UTF-8 For Your Strings
    • Optimization Is For Compilers
    • Units Makes Things Clear
    • If It Doesn't Run On Your Computer, You Have A Problem
  • Making Things Go
    • The Config File Is Friend
    • Command Line Options Are Weird, But Helpful
    • Not Just Function Composition, But Application Composition
    • Even for Application Composition, Start Stupid
    • Logs Are For Events, Not User Interface
    • Learn To Monitor

Community/Teams
  • A Language Is Much More Than A Language
  • Understand And Stay Away From Cargo Cult
  • "Right Tool For The Job" Is Just To Push An Agenda
  • The Right Tool Is More Obvious Than You Think
  • Code Reviews Are Not For Style
  • Code Formatting Tools Are Ok, But No Silver Bullet
  • Code Style: Follow It
Personal
  • Companies Look For Specialists But Keep Generalists Longer
  • Keep A List of Stupid Bugs That Took More Than 1 Hour To Solve
  • When It's Time to Stop, It's Time To Stop
  • Code of Conduct Protect YOU, Not THEM
  • Learn To Say No
  • Take Responsibility For The Use Of Your Code
  • Don't Tell It's Done When It's Not

Source: https://blog.juliobiason.net/books/things-i-learnt (Author has written elaborate explanation on each of the mentioned lessons)

An interesting discussion on the above subject can be found at Hacker News

Whats your take on Software Development? Feel free to share your thoughts in comments below.

Comments

Popular posts from this blog

Team Work

Ramo Vigrahavan Dharmah

A great verse from Ramayana: आहार निद्रा भय मैथुनं च  सामान्यमेतत् पशुभिर्नराणाम् । धर्मो हि तेषामधिको विशेष:  धर्मेण हीनाः पशुभिः समानाः ॥ AhAra-nidrA-bhaya-maithunam cha samAnam_etat_pashubhir_narANAm | dharmo hi teShAm adhiko visheSho dharmeNa hInAH pashubhiH samAnAH|| Eating, Sleep, Fear and Sex ; these habits are common between human beings and animals. It is the Dharma which is the special quality of the human beings. Without the Dharma, they are similar to the animals.  Rama is The Embodiment Of Dharma.  Maaricha, while speaking to Ravana- (Aranya Kandam 37-13): रामो विग्रहवान् धर्मः साधुः सत्य पराक्रमः | राजा सर्वस्य लोकस्य देवानाम् इव वासवः || ३-३७-१३|| raamo vigrahavaan dharmaH saadhuH satya paraakramaH | raajaa sarvasya lokasya devaanaam iva vaasavaH || 3-37-13 "Rama is the embodiment of righteousness, he is an equable person with truthfulness as his valour, and as with Indra to all gods he is the king of entire world. [3-37-13] Another great phra

Story about Samsara from Vidura in Maha Bharatha

From Sri Maha Bharatham - 11th Maha Parva (Stri Parva) - Jalapradanika Sub Parva - 5th Chapter "Dhritarashtra said, ‘Tell me in detail everything about the ways of that intelligence by which this wilderness of duties may be safely covered.’ "Vidura said, ‘Having bowed down to the Self-create, I will obey thy behest by telling thee how the great sages speak of the wilderness of life. A certain  brahmana,  living in the great world, found himself on one occasion in a large inaccessible forest teeming with beasts of prey. It abounded on every side with lions and other animals looking like elephants, all of which were engaged in roaring aloud. Such was the aspect of that forest that Yama himself would take fright at it. Beholding the forest, the heart of the  brahmana  became exceedingly agitated. His hair stood on end, and other signs of fear manifested themselves, O scorcher of foes! Entering it, he began to run hither and thither, casting his eyes on every point of