Using Tools to Enable Deep Work

I read an interesting article about programming today, the author says that learning to program is easy, it’s working “Deep” for long periods of time that is difficult. I think this a really insightful way of looking at mastering skills. It’s really easy to jump to the next email or ping when you’re learning because you’re afraid to fail at learning. When learning becomes difficult, people have a more difficult time keeping focused – even if they have an incentive (Pay check or paying someone) to learn.

This can be exacerbate by not having a good environment to learn in or a good teacher. A bad teacher that isn’t willing to give you the examples that you’re able to learn from in a constructive environment is wasting everyone’s time. However, if you’re self learning, then you’re going to be using mostly Google searches or maybe a few books here and there. The best way to learn then is to give yourself an interesting project related to something you care immensely about. I’m not an expert at programming, but I know when I’ve learned most successfully it’s been when I have a clear objective with the right tools in front of me to dig into the problem I’m trying to solve.

There are tools out there that make doing this sort of work easier and others that make this work more difficult. Git and all it’s various version are tools that can, once you learn them, make deep work easier, because you eliminate the fear of mistakes. If you screw up too bad you can simply start over from where you were. Breaking your project into chunks becomes much more important so you can work on items without risking the entire project.

There are other tools like Slack, that apparently, can really be a detriment to deep work. There was a breakup letter about this topic that’s been getting some attention. I think it’s focusing on the incorrect problem. Slack isn’t the issue here, it’s the person doing the work and/or the work environment that has caused the problem “Breaking up” with Slack is like breaking up a hammer because you’re unsuccessfully screwing in screws. The tool is not at fault, it’s doing what it’s designed to do, hammer in things, you’re applying it wrong or using the tool incorrectly. Yes, in this case it is not the right tool for the job, but you’ve done a poor job defining the problem you’re trying to solve with the tool.

At my company, I think we’ve come up with a pretty good solution to this. We don’t use Slack, but it’s competitor HipChat, pretty similar overall, but with the right tools integrated together, you’re able to create rooms for specific features. These are tied together between Bitbucket, Jira, and HipChat (yea we went all in on Atlassian), which means you’re able to see all the information you need about the problem the feature you’re working on is trying to solve. We’ve started to use this to pull in the voice of the customer (me in this case I’m not a developer) earlier into the process so that I am able to give feedback quickly to what the developer needs. This allows the developer to meet my acceptance criteria by getting quick feedback and then getting back onto the deep work of really writing the software.

In some cases can it be disruptive? Yes, but that’s only if people aren’t using it correctly and we work with them to change their behavior before it becomes a problem. Slack, Jira, Bitbucket, et al are only tools that are designed to reduce the burden of working with remote team members to enable us to get down to the nuts and bolts of deep work for programming.

Take a look in the mirror if you’re struggling with learning programming or using a tool like Slack. You’re the problem, create a structure around how you work and how your team works. Use your hammer on nails not screws.

Starting from the Bottom, building an app

So, aside from blogging, watching (and playing some) video games, and obviously reading what else am I working on? Well, I’ve got a few things cooking. A friend and I are working on an app for smart phones as well as the web application version.

Who isn’t working on an app these days? Well that’s a seriously good question, it’s pretty easy to get started. I found that the idea was one of the easier things to come up with. Especially since the starting point wasn’t mine, it was Jesus‘s, a really good friend of mine from the Netherlands. The basic premise started with wanting to build a social networks to help kids find other kids to play with.

However, we’ve since evolved the concept into something that parents would want to use for their kids. We’re envisioning an app that will help kids deal with being diagnosed with Diabetes. Managing diabetes through an app isn’t a novel concept, the American Diabetes Association has one already as well as a support group with forums online. Hell they even have dietitians and RNs to help support the forums. We’d have none of that at launch.

Our goal is to enter a slightly different space, helping the adults learn how to teach their kids how to manage the disease. So this puts us in a different space. Furthermore, we don’t think that apps alone will help manage the disease as we believe that there needs to be something to continually engage the kid or parent to continue using the application.

To this end we plan to eventually extend to games and other things that would tie into our application. Those are still in the works and I think our key idea, an avatar, will help when we launch.

So where are we now? At the very beginning. My development skills are way out of date and not so relevant for this project, so I’m learning how to develop in Ruby on Rails right now. I’m using the book Agile Web Development with Rails 4 to do so. I’m  a big fan of this book. By the time I finish walking through the book I’ll have developed a Store Application (to sell the book no less).

Even beyond that though, I’ll learn how to manage a full application in Ruby along with all the database structures that go with it. It’s pretty much ideal for developing the back end as we determine how we want the front end to work. Furthermore, Ruby plays really nicely with JavaScript, CSS, and a few other languages. So, we’ll be able to continually evolve our front end well beyond the initial Rails application.

This will allow us, as developers, to build a fairly consistent application feeling across platforms. I’m not building this alone, as I mentioned Jesus is helping me and he’s doing more of the administration of our server, DB, and has started on a UI for the app version.

We have a long way ahead of us, but we’re using an application called Trello to manage our agile Kanban work items. This allows us to pull the amount of work we believe we can do in a week. Have a conversation about the work we’re planning on doing, and then demo the work that we’ve done so far (see image below).

Kanban Board

 

These tools have allows us to move forward at a modest but consistent pace. Jesus is currently pursuing both a PhD and an ice cream business, while I’m working, buying a house, writing blog posts, and kind of working on a fantasy novel. So we’re both busy guys but we’re making head way. It will take time, but I think no matter what happens, it’s going to be worth the effort invested into this project.

By the way, the app’s name is going to be Monster’s Versus Diabetes. I think it’s a pretty sweet name. I’ll post updates as we go through the process. Feel free to shoot me any questions about agile, kanban, or managing a project like this.