Skip to main content

Three things I learnt from "The Nature of Software Development"

Recently I read a book called The Nature of Software Development by Ron Jeffries. As a newbie developer, I had little knowledge of what it meant to be "agile" at work, and I assumed most coders weren't performing cartwheels in their lunch breaks.

I was lucky, this book was simply written by a man with a vast amount of experience in the topic. I really enjoyed reading it, and found it surprisingly relatable, given I don't have industry experience. Here are the three main things I learnt from my read:

1.  Why do we need agile? In life, deadlines will never be met with a perfect product with everything you want. Ever. This is no fun for anyone.

2. So, what would happen if we ship a basic model of a product as soon as possible? Firstly, the product user will have something that they may like a little long before they expected it - yay for them. Secondly, they might have feedback on the product - perhaps it already does everything they need, so no more unnecessary work for us. Maybe the product is totally wrong, so we rethink the entire project. Either way, we reduce time spent on work that wasn't wanted, which we wouldn't have known if we didn't produce a product until the final deadline. Yay for everyone.

3. This agile thing sounds great, but how do we do it? Well once you can persuade management of the benefits (see point 2) it's easy! Split your work into 'sprints' e.g. every two weeks you will have a finished product to deploy. Every sprint your team decide on the features that provide the most added benefit and prioritise those (if they're feasible). We no longer need to provide all the foundations for an entire product first - we just build them for the feature we're working on, refactoring as we go. We can also TDD each feature as we build it to future proof the code. This should ultimately leave us with cleaner code and a robust test suite that we can rely on. Wins all around! Not to mention the huge satisfaction of completing a task every sprint.

This book taught me that agile development means happy team and happy product users. What's not to love?

Comments

  1. It is tough to stipulate a strategy for successful massive at Roulette, end result of|as a outcome of} the house advantage is so robust and no strategy can overcome the built-in home percentage. The recreation begins with the player placing a wager of the player’s choice on the Roulette format. Inside Bets Players can place selection of|quite lots of|a big selection of} "inside" bets 클레오카지노 by choosing the variety of the pocket the ball will land in, or a range of pockets based on their place. Chi Square is the process of “squaring” or multiplying every pocket’s normal deviation by its plus or minus quantity.

    ReplyDelete
  2. Players can rest assured that they are taking part in} on a site that can deal with them pretty. To get a crypto welcome bonus from Wild Casino, use the code CRYPTO300 to get a beneficiant 300% first deposit bonus 메리트카지노 of as much as} $3,000. This is where Wild Casino actually stands out because it accepts a wide variety|all kinds} of cryptocurrencies.

    ReplyDelete

Post a Comment

Popular posts from this blog

Three things I learnt from The Pragmatic Programmer - Chapter 2

  Chapter 1 link here I'm currently reading  a book called  The Pragmatic Programmer  by David Thomas and Andrew Hunt. The first chapter is an easy read, all common sense. The second chapter starts introducing code and is a little more technical. Here are three things I learnt from the second chapter: 1. Every design principle is there to make your code easier to change (ETC). If you're not sure what code design principles to follow and when, use ETC as a guide. 2. Eliminate effects between unrelated things. (Increase orthogonality - parts of code that don't rely on each other). Keep code decoupled, avoid global variables, avoid similar functions, be careful of third part toolkits. 3. Get good at estimating. Every time you have a task, estimate how long it will take. Think about each little step in the task before you provide an answer. When you finish the task write down how long it took, and if you can, why your estimate was wrong. You'll learn to spot patterns....

Three things I learnt from Animal Crossing

Like many people during lockdown, I ordered a copy of Animal Crossing New Horizons. I also want to escape my real life chores by ... performing daily chores in cuter format? Several months later, I'm no longer playing daily, but each time I do return my experience is a calm, joyful one. Here are the three things I learnt from the game: 1. Don't compare yourself to others. Yes some people have the most gorgeous islands. Some people also have far more free time. Some are more talented. Copy ideas you like, because why not? It's just for you and your friends to enjoy. 2. There's such joy in creativity - try out a little bit, don't jump in attempting to make everything exactly how you planned it from day 1. Perfectionism is the enemy of creativity. 3. If you're playing a game and feel stress more than enjoyment - it's time to take a break. Remember it's only a game, rotten turnips have no negative impact on your real life. This game in particular rewards...

Three things I learnt from The Pragmatic Programmer - Chapters 5 and 6

Link to previous chapter here. Here are the three things I learnt from these chapters: 1. I'm at the start of my journey and it's totally okay not to understand everything. I do not have to force myself to read things that make no sense to me yet. At some point I'd love to come back to this book and see what I can learn here as I'm sure its good.  2. Elixr, a functional language, has a pipeline operator that takes the value on its left and insert it as the first parameter of the function on the right. It's a more readable way of transforming data. Thinking of code as a series of nested transformations helps make functions shorter. 3. Be careful with inheritance. It can get messy if not all of a parent's methods are suitable for the child, or if the parent's code will ever be edited. Try things like traits/mixins/delegation/interfaces instead.