About software engineering


This blog post by Rob Pike, one of the fathers of the Go programming language, made me think in the shower so I wrote this list of things about building software:

  • as a software engineer you want to add value to your company building software solutions
  • software economy: you need to be agile to reduce time to market
  • devops is the culture where you build your solution AND ship it to production
  • also you are in charge of its maintenance - both infrastructure and code
  • since company requirements change fast, your code base must change to, and sometimes your infrastructure must too.
  • to adapt to these changes rapidly, you need to deliver those changes as fast as you can
  • if you want to be agile delivering those changes you need to automate as much as possible
  • Infrastructure-as-a-service providers (aka "The Cloud") automate building virtual infrastructure so use them
  • infrastructure-as-code tools automates defining the virtual infrastructure declaratively so use them
  • one of the best ways to improve and change the code is the red-green-refactor testing technique, therefore write good tests
  • Continuous Integration tools help you automating those tests
  • since you will probably work in a team, you want your solution to be as simplest as possible so it's understandable by the rest of the team
  • also the simpler the program, the easier is to test, refactor and change it.
  • making simple software solutions is hard, require years of practice and good tools
  • choosing the right programming language to build simple yet powerful tested software is key for success

I <3 Go