Scrum is the new waterfall (REVISED)

Over the last few months, I’ve gotten a TON of feedback from my post in November, “Scrum is the new waterfall”. Some of the feedback was good and others really thought my perspective is extremely negative.

After reading all the feedback and considering it, my arguments were not concrete enough to make a strong case for my strong opinion. One of the things I learned is that scrum is done very differently across different companies.

Lets revise my post.

What are the main problems with adopting any new processes? 

  1. No buy in from leadership. I’ve worked on several projects in the last 2 years at my company now where the “business” or leadership team don’t buy into the belief that doing things iterative in an organized fashion will produce better software. Buy in & support from whoever is paying you is the first key to being successful in implementing whatever new process you’re adopting.
  2. There is no buy in from the team. Recently I worked with a team that didn’t want to change. They were used to the crazy and old way, the mid night deploys and code constantly breaking. Without team member and leader buy in, there will be no progress in making forward change.
  3. The perceived need isn’t there. Things work well, we ship code and make money, why are people complaining? Sure it might not be ideal, but hey, nothing is ever ideal.

What is scrum? 

Scrum is a process. It’s a way to get work done. There are iterations to deliver software to the customer very quickly. From my perspective the value of scrum to the business and leadership is predictability. Within a reasonable perspective, we can estimate that we can deliver x software in y amount of time. While that sounds great and reasonable, often that is not the case.

What is the motivation of scrum?

From the Scrum Alliance we get the following definition of scrum:

Scrum is a simple yet incredibly powerful set of principles and practices that help teams deliver products in short cycles, enabling fast feedback, continual improvement, and rapid adaptation to change.

How can scrum become waterfall? 

Scrum can become watefall-y in certain situations. Such as:

  1. The ceremonies are more important then the work getting done. This is especially important when Standup serves as a status meeting to notify and justify management that the developer team is getting work done. Standups aren’t for management to get a status update, thats what the Kanban is for, the standup is to help move the team along.
    1. Other ceremonies such as planning and grooming, while important, if it drags to many engineers away it can make the process burdensome.
    2. There should be a natural balance between how many meetings and the effectiveness of those meetings and the ability to move the team forward.
  2. “It’s just a small change”. This is really important, Scrum is about delivering working software on a schedule. When someone comes to you asking you to deliver work outside of the scope of the sprint, you need to push back to your scrum master and team. Small changes can quickly become big headaches for teams.

The core problem I have with Scrum is it feels “Anti Agile” but in the cloak and dagger of actually being Agile. The key parts of this argument come from the Agile manifesto itself:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

The key points are, can you prioritize people and the interactions instead of the processes? Can you respond to change really fast? Can you deliver real working software?

How do I actually be Agile?

It’s my belief that there are several components both technical and philosophical to actually being Agile.

  1. Philosophical:
    1. Ensure that the leadership and team have by into delivering software that’s high quality really fast. It’s better to keep delivering software small chunks at time so that you can quickly get feedback.
    2. Focus on communicating the needs that are changing and prioritize the team to work smart and solve the most important “Minimum Viable Produce” path first, then iterate on the second things that need to change.
    3. Get the client onboard, get them to be apart of the feedback cycle, and deliver real software on a continual basis.
  2. Technical:
    1. Write clean, testable code.
    2. Configure your build process to catch bugs by running tests, automate deployments to QA / STAGE and create an approval process that automates the deployment to production.
    3. Create automated “Black Box” style tests that utilize the behavior of the code you’re testing. Think about the public contracts it must enforce, test strictly those. Unit tests are worthless, test the contracts.

Photo by Tony Fischer

Live and die by the keyboard: How to be more productive!

I live and die by the keyboard. The keyboard is my friend and it’s way faster to use an application using a keyboard then it is to use a mouse. In fact there are many studies that show that for non-complex key combinations keyboard shortcuts and aliases are much faster then using the mouse. Continue reading Live and die by the keyboard: How to be more productive!

Improve professional communication

As software engineers we communicate far more then most people expect. We constantly communicate wether we write code, talk at standups or respond to emails. Professional communication is essential. Something that I have been working on for myself is improving my professional communication.

In general here are some specific areas as engineers that we can improve in the way we communicate:

Continue reading Improve professional communication

How to launch Sublime 3 from the command line (Mac OS X)

I’m an avid Sublime user. It’s the VIM of the 21st centry. I also constantly use the command line. The two can be one, even though Sublime is a GUI driven application and not a CLI application. One of the most helpful things when working with the command line and needing to open up an editor is to call Sublime from the command line followed by the file or folder name.

To do this, if you’re on a mac use the following link:

ln -s “/Applications/Sublime” /usr/local/bin/subl

Then from the command line you can do the following to open something in Sublime.

subl test.html

I tested this in Sublime 3 using both Bash and ZSH.

Photo by Matthew Simantov via Flickr

URLs and the browser

I love working with the web, there is so much to know and learn about web development. Have you ever thought about the URL? I recently learned quite a bit about the URL. The URL is composed primarily of a few things:

  1. The Scheme, which is followed by the “://”. This is typically http, https or ftp. Others such as file:// are also valid.
  2. You can also supply user name and password “user:password@”
  3. There is the host:port, which could be something like localhost:3000
  4. Then we have the path, such as /api/v1/news_feed
  5. Finally we have the query parameter, such as ?id=5&name=”adam”.
  6. The fragment identifier is the “#” in the URL. This is client side only and is not sent to the server. The fragment can be used for client routing or for client specific behavior or specifically to link to a certain location in a document.
  7. All of 1 – 5 are sent to the server. List item 6 is not sent to the server.

#6 is really interesting and new to me. I’ve never thought about a URL having two componets, client side and server side. It’s really cleaver and genius. What this raises is issues with a SPA framework however. The whole issue comes down to client vs server behavior, the “clean”, “marketing friendly” urls that don’t rely on the hash tag are always sent to the server. This is why you need mod-rewrite rules in apache. Everytime you navigate in a SPA, all of the url before the fragment identifier is sent to the server. The server has to ignore all the of these client specific urls. This adds a lot of complexitity and unneeded overhead in dealing with your SPA application. A better approach is for server invoked behavior, use the part of the URI before the fragement identifier, and for the client specific behavior, use the space after the fragment identifier.


Photo by ~My aim is true~ via Flickr

Start a blog!

While I don’t blog the most consistently, certainly the holidays didn’t help. I have recently discovered that I really like writing, getting to express myself in the written form has been liberating. Listening to a guy like the Simple Programmer has inspired me to think of what I could do with my career through my blog. I could start my own training program for new programmers, I could tutor more and I could even speak at a conference. Honing my skills and grammar will allow me to write a book “some day soon”.

I encourage everyone to start a blog, even if your writing sucks. Blogging is fun, its engaging and challenging. You have to express your ideas clearly and articulate yourself. Give it a try today!

Photo by Joel Montes de Oca via Flickr

Where do you get these great photos?

I am a big fan of the photos that are the “featured” image on my blog. They’re really great. I’ve found a ton of photos from Flickr, they have professional photos that are high quality. The search engine I use to find these is the Creative Commons Search. Its really cool because it allows you to search for free photos for commercial use and readapt. I give credit to the creator of each photo I use.

Photo by Adam Bourg, Screen Shot via his Macbook pro.

Be a professional mentor!

A few months ago I decided I wanted to make a little bit of extra money on the side of my main job. I thought it would be nice to have a source of income that I could use to buy things like skis or bikes or other cool gear for my hobbies. I decided to start tutoring, teaching people about software engineering and how to build applications. Man did I meet a LOT of different people, from startup execs to doctors transitioning into the field to people who haven’t used a computer beyond facebook.

It has really helped influence my perspective to tutor these people. I have to constantly change my perspective, look at things differently and evaluate where the person is coming from and how can I explain this technical thing in a way that helps them understand.

To be a good mentor, you need a few things:

  1. You have to have the expertise in the field. You need to understand how software works, how to design software and how to build things.
  2. You need to be comfortable to think on your feet and quickly explain things in many different ways.
  3. You need to listen, then communicate. You have to understand where the person is coming from, you need to understand how they learn and translate the complex concepts into concrete examples, being specific and guide them to the answer.

Being a tutor has really helped shape my own perspective and it has helped me to discover that I really love guiding people in this path. I think that professional training is really cool, its a lot of fun to help people learn and develop themselves.

Photo by Bro. Jeffrey Pioquinto, SJ

Books I read in 2015

In 2015 I read 31 books. I am totally amazed at the number of books that I read because the year before I’m pretty sure I only read about 5 books. Each book is put into a category, and I’ll review the category and call out specific books that I feel are really special.

How did I read so many books? In January 2015, I signed up for Audible. Audible is amazing, I love being able to listen to a book on my commute and on long drives. The other half of the answer is I have a Kindle Fire HD, I bought it in July on sale for $99 for our cruise to China. I was able to read about 8 books on the trip with Kindle Unlimited. Its a really awesome deal, basically you get 10 books out in the library for $10 a month. I can checkout about a million different books from big authors like J. R. R. Tolkien to Sam Sisavath.

The review

Tom Clancy is now one my favorite authors, I really enjoyed the Full Force and Effect series, it triggered me to read the very beginning of Tom’s career. This has spawned a new interest in Russian’s and the Soviet Union. The details in the books are really truly amazing, the stories are extremely well developed. When you read the story, you feel like you are apart of the story, that you are apart of Jack Ryan’s life and you understand the character. If you haven’t ready any of them, they are truly amazing.

The Passionate Programmer. I read this because I was feeling like this software industry might not be for me. I read this to rediscover my passion and it helped ignite a passion for writing quality software and craftsmanship. It triggered me to start the Pragamtic Programmer and start a blog.

The Automatic Customer. I read this to help our cookie business become a subscription business but have not yet applied the book to my small business.

The Purge of Babylon series. I love this series, I’m fully addicted. Its a series written by Sam Sisavath. It’s a really detailed series, not on the same par as Tom Clancy, but it is still a really great read. I enjoyed the series and on my cruise in China this summer, I read the first 7 books in the series–I could not put this book down.

Atlantis series. These are written by another independent author. This is a series about Atlantis and deeply explores our religions, our history and the concept of Atlantis by evolved humans or other species. This is truly a mind bending series. Highly recommened scifi series.

Last Stand Series. A story about the invasion of America by Russia and China. It has a politically conservative bend to the story, while it was a good story it was extremely political. I liked it, 3 out of 5.

The Lord of the rings. I started with the hobbit and absolutely loved Billbo and I then picked up the Lord of the Rings. It was a book on audible, it was a truly mind bending, detailed account of the hobbit’s journey. I recommend the hobbit and the lord of the rings for anyone looking for a long, detailed, joyful read.

The List

Tom Clancy:
Full Force and Effect: A Jack Ryan Novel
The Hunt for Red October
Patriot Games
Red Rabbit

Business books:
The Automatic Customer: Creating a Subscription Business in Any Industry
The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)

Religious non-fiction:
The Christian Atheist
Soul Detox

The Purge of Babylon Series
The Spears of Laconia
he Fields of Lemuria
The Walls of Lemuria
The Isles of Elysium
The Ashes of Pompeii
The Fires of Atlantis
The Stones of Angkor
The Gates of Byzantium
The Purge of Babylon

Last Stand Series:
Last Stand: Turning the Tide
Last Stand: Warlords
Last Stand: Patriots

The Lord of the rings
The Two Towers: Being the Seco
The Return of the King: Being
The Fellowship of the Ring: Be
The Hobbit

The Atlantis Series:
The Atlantis World
The Atlantis Gene
The Atlantis Plague

Misc books / series:
The Silver Ships
Dawn: Xenogenesis, Book 1
World After
Laughing at My Nightmare (non-fiction)

Photo by Michael D Beckwith via Flickr