A Novel MVC

Ben Rady has a new metaphor for the MVC pattern, the command line. It’s interesting how as you become more familiar with a particular pattern or technology, you begin to see it in other places. Oftentimes, this is helpful in beginning to understand things more deeply. Occasionally, it gets you in trouble when you begin to see patterns in everything not unlike when I first learned the factory pattern and then thought everything was a factory.

In this case, I think he’s right that the command line can be thought of as an implementation of MVC. The part he doesn’t address is a persistent data storage layer and the model’s interaction with it. With Ruby on Rails, our interaction with the data goes through the model in the form of ActiveRecord. With the command line example, your interaction between the model and the data all depends on what model you’re using, an interesting twist. For example, with grep, your interaction becomes the search strings and regular expressions you feed it to determine what data you want to see. With wget, you determine your model-data interaction by specifying URLs or specific resources that you want your model to load.

Thinking of the command line as an implementation of MVC gets you thinking about other common applications or tools that might also be MVC in nature. Any come to mind?

Why I Quit Twitter

I joined Twitter in August of this year without a great deal of thought and after long decrying the effect I was sure it had on attention. I did it mostly because there are usually 5-10 times a day when I have a thought or see a link that don’t warrant a full blog post but that I find interesting enough to want to share it with people. I tried Facebook originally but that didn’t really feel like what Facebook is about. Twitter on the other hand seemed to be perfectly designed for that sort of activity. So I joined up and started updating pretty regularly.

For my purposes, Twitter was excellent. A majority of my updates were links to something that seemed interesting enough to share. Other times, I’d have a thought that seemed Twitter worthy and based on the responses I got from people who followed me, about 25% of them actually were. Over the course of my time on Twitter, I updated 373 times or about 4 times a day. I got 159 replies to my updates. I was following 37 people and being followed by 47. I was happy with Twitter and Twitter seemed happy with me.

The Pale Facsimile Of Fullfillment

Unfortunately, there was a darker side. I already have issues with attention and focus. I LOVE anything that gives me a dopamine fix. Twitter was rapidly becoming a dopamine fix. My real writing completely dropped off the map. I wrote 9 posts total in 2 months on my tech blog and this one. Several of the posts on my tech blog were almost Twitter-like in their brevity. I was doing no fiction writing and no journal writing. I began to notice that I was checking Twitter 5-10 times a day, even on days when I left TweetDeck turned off. When I updated and didn’t get a response, there was a distinct mental reaction in that I didn’t get any feedback. This caused me to update more.

My focus at home on projects was nil and I had trouble getting into anything. Whenever I got stuck on something, off I went to check Twitter updates. Twitter taught me that I don’t have the discipline necessary to turn off Twitter when I needed to be working on something else.

On top of all that, I started thinking about what the result was of all this *effort* I was putting into Twitter. There was nothing meaningful going on. In 2 months, I had 1 conversation that could be considered interesting and productive. I produced nothing that I’d want anyone to remember me by, nothing useful to the greater good. The irony of my reasoning for joining Twitter is that even though I was posting things that I found interesting, none of them led to greater, more in-depth conversation or learning. They were just informational junk, no different from the junk mail that I get every day. Things that I thought were interesting were really just information junk mail, even if people voluntarily signed up to get it from me.

None of this is a judgment on Twitter. I actually think it is quite useful as a mini-RSS reader in a way, a tool that someone might use to successfully market or promote a business or a blog. I wish I could use it for that. Twitter did drive my viewing stats up on my tech blog from 1 a day to 9 a day on those days I mentioned a post on Twitter. I just don’t have the ability to compartmentalize Twitter the tool from Twitter the dopamine provider. I don’t want to look back on 12 months of Twitter and wonder why in the hell I didn’t write more in that time period. I want to produce things and that takes focus and attention, something Twitter increasingly was stealing away from me. I have a limited store of attention and the more I divided it hoping to hear that stupid little TweetDeck notification sound, the less I had to pour into something that actually mattered. I really do want more than the pale facsimile of fulfillment.

Why I Quit Twitter

I joined Twitter in August of this year without a great deal of thought and after long decrying the effect I was sure it had on attention. I did it mostly because there are usually 5-10 times a day when I have a thought or see a link that don’t warrant a full blog post but that I find interesting enough to want to share it with people. I tried Facebook originally but that didn’t really feel like what Facebook is about. Twitter on the other hand seemed to be perfectly designed for that sort of activity. So I joined up and started updating pretty regularly.

For my purposes, Twitter was excellent. A majority of my updates were links to something that seemed interesting enough to share. Other times, I’d have a thought that seemed Twitter worthy and based on the responses I got from people who followed me, about 25% of them actually were. Over the course of my time on Twitter, I updated 373 times or about 4 times a day. I got 159 replies to my updates. I was following 37 people and being followed by 47. I was happy with Twitter and Twitter seemed happy with me.

The Pale Facsimile Of Fullfillment

Unfortunately, there was a darker side. I already have issues with attention and focus. I LOVE anything that gives me a dopamine fix. Twitter was rapidly becoming a dopamine fix. My real writing completely dropped off the map. I wrote 9 posts total in 2 months on my tech blog and this one. Several of the posts on my tech blog were almost Twitter-like in their brevity. I was doing no fiction writing and no journal writing. I began to notice that I was checking Twitter 5-10 times a day, even on days when I left TweetDeck turned off. When I updated and didn’t get a response, there was a distinct mental reaction in that I didn’t get any feedback. This caused me to update more.

My focus at home on projects was nil and I had trouble getting into anything. Whenever I got stuck on something, off I went to check Twitter updates. Twitter taught me that I don’t have the discipline necessary to turn off Twitter when I needed to be working on something else.

On top of all that, I started thinking about what the result was of all this *effort* I was putting into Twitter. There was nothing meaningful going on. In 2 months, I had 1 conversation that could be considered interesting and productive. I produced nothing that I’d want anyone to remember me by, nothing useful to the greater good. The irony of my reasoning for joining Twitter is that even though I was posting things that I found interesting, none of them led to greater, more in-depth conversation or learning. They were just informational junk, no different from the junk mail that I get every day. Things that I thought were interesting were really just information junk mail, even if people voluntarily signed up to get it from me.

None of this is a judgment on Twitter. I actually think it is quite useful as a mini-RSS reader in a way, a tool that someone might use to successfully market or promote a business or a blog. I wish I could use it for that. Twitter did drive my viewing stats up on my tech blog from 1 a day to 9 a day on those days I mentioned a post on Twitter. I just don’t have the ability to compartmentalize Twitter the tool from Twitter the dopamine provider. I don’t want to look back on 12 months of Twitter and wonder why in the hell I didn’t write more in that time period. I want to produce things and that takes focus and attention, something Twitter increasingly was stealing away from me. I have a limited store of attention and the more I divided it hoping to hear that stupid little TweetDeck notification sound, the less I had to pour into something that actually mattered. I really do want more than the pale facsimile of fulfillment.

Cross posted at Mental Pandiculation

The Economics Of Productivity Tools In Software Development

David O’Hara, one of my colleagues at Improving Enterprises, posted the following to Twitter today:

Folks, if you’re not willing to buy tools to get your job done faster/better – please do us all a favor…

He and I had the related Twitter discussion which you can follow, as well as a chat offline to further clarify what we meant. However, I thought it was a subject rich enough to deserve more than 140 characters in explanation. It’s my stance that the quote above at first read is essentially saying if you aren’t willing to buy productivity tools, then we’d be better off without you. David has since explained that he was really targeting people who complained about built in tool support or the lack thereof and that if you weren’t willing to buy the tools, stop complaining and just do your job. However, several other people agreed with Dave’s quote as written and I fairly strongly disagree so let’s look at the quote as it is.

My stance is that this is a purely economic decision at its most core, one that if taken at face value, expects developers to take a financial risk, e.g. pay for a yearly subscription to Code Rush or Resharper, and accept in return a non-financial reward, e.g. greater productivity which we’ll assume leads to greater happiness. Additionally, an employer who can convince all his employees to buy their own subscription reaps almost immediate rewards while taking on none of the risk. This is a bad economic decision for an employee to take. There is an edge case which nearly everyone brought up in their agreement with David and that is a craftsman. We’ll discuss that in a minute.

One point that’s critical here is that we’re talking about salaried employees and not independent contractors of any kind. When I first objected to Dave’s remark, I questioned what other profession expects the employees to buy their own productivity tools. I don’t think there are any outside of independent contractors. This is an important distinction because contractors can pass the cost of their increased productivity on to the consumer through either higher prices or longer engagements if they choose not to use the productivity tools. Salaried employees do not have that option. Several people argued that employees who were more productive would be rewarded in the long run but again, this is not a good economic bargain since future returns on my economic risk today are inherently, well, risky. Maybe the employer lays me off or pays me less than my productivity cost me.

Looking at it from another angle, by convincing me either implicitly or explicitly to pay for tools to increase my productivity, my employer has also lowered his salary costs while gaining in output. Again, in an economic agreement, this is a big loss for me. Of course, David didn’t mention the employer in all this but the assumption is that if I have to pay for my productivity tools, it’s because my employer refuses to do so for whatever reason.

Granted, I may have a choice in the matter. I may choose not to work with the tools. I may choose to get another job. But all of these come with associated costs, costs that must be weighed when making a decision.

In the end, the best employers ought to provide the best tools for their developers in an attempt to get the very best employees. The best employers do this because they know it’s in their best interest to focus on the long term return of having the very best employees while the worst employers focus on the near term return of the cutting costs. This is true across many fields, not just software development.

What about that edge case? Here’s where my thinking converges with David’s sentiment. Craftsmen always work with the best tools because their work is qualitatively different than that of the average software developer. They want to operate at the highest level of efficiency in order to achieve the quality of work that their internal motivation demands. Of course, the irony in this is that typically craftsmen refuse to work for employers who expect them to buy their own tools because that is a sign of the type of work or environment they can expect.

Overall, I don’t think it should be the employee’s obligation to provide themselves with productivity tools. They agree to do a job to the best of their abilities when they join a company. If there are tools that enhance their abilities, the employer should provide them as an investment in the long term gain of more productive and ultimately happier employees.

Of course, all this said, I choose to buy my own tools. I do this in part because I want to have them after I leave a given company but also so that I can use them in my own personal development as a software developer. I’m light years away from being a craftsman but I suppose striving to be one is the next best thing.