I'm Matthew J. Morrison.

A Passionate, professional software developer & hobbyist; Language nerd & regular user of Unix, Python, Ruby & JavaScript.

Fork me on GitHub

It has been over a year since I started working at my current employer. In my last blog post I published a large list of things that we had started doing in the past year. We are continuing to advance our technology choices and development process.

We’ve been playing with Fabric, which we will most likely use to automate our production deployment, we have also been messing around with mongo and mongoengine, which we hope will replace our use of the linux file system for document storage. We’ve also been discussing looking more into Celery to use to do some asynchronous processing. So there are a lot of exciting things on the horizon from a technology perspective.

We are still trying to figure out how to manage our workflow process. We’ve been writing story cards and using a white board to organize what is being worked on, but we haven’t done any sprints or retrospectives. I’m still trying to decide what we’re missing, if we’re missing anything at all. I like the idea of having sprints so we are able to lay out a number of stories that we plan on implementing within a period of time, but I also like the continuous development that we are currently doing. Currently, when we finish one story we write another and get started on that one. The problem that I see with our current process is there is a lot of room for interruption. Without a fixed roadmap, like one we would get with sprints, it seems easy to fall into working on tasks that may satisfy an immediate need but detract from our product’s long term goals.

Being able to satisfy immediate needs I think is a very desirable place to be in. If we could satisfy each customer’s immediate needs we would do very well, and our customers would always be happy. The problem is that every customer’s immediate needs are different. We have to be able to choose the tasks that make the most sense for our product and will benefit the largest number of customers. I feel like working in sprints gives us time to reflect on what our customers seem to be asking for collectively and decide what to deliver to them. Without sprints, I think that we focus more on greasing the squeaky wheel, which could easily result in adding features and customizations to our product that may only make sense for a single customer which may also cost more to implement than the value added to our product.

In other exciting news, our new floor plan has been completed and construction has begun. Our new area is going to be a large open room with plenty of wall space for white boards. I imagine we will have a table in the middle of the room with pairing stations, but we’ll just have to wait and see how exactly that turns out.

I can’t really express in words how proud I am of how far we’ve come in so little time. In my humble opinion, I couldn’t ask for a better employer or better co-workers who share my passion for software development and for constantly improving our development process. Stay tuned for more, we’re always trying to make things better in some way or another, so I’m sure there will be plenty more to write about.