Direction, Questions and Values

ThinkingMan328x28412 years ago I was a professional musician, travelling on the road with small bands, playing coffee houses and working on original material I barely had time for.

11 years ago I’d taken a short term job in hardware and logistics at a technology company – it was supposed to be a temporary thing until my next road gig worked out.  I quickly started down the hardware route – getting A+ certified, and was about to dive into studying for MCSE.  I wasn’t satisfied, though.  I was tired of building incredible machines for other people, and never getting to *do* something with them.  I quickly transitioned into writing Cold Fusion web applications.  Realizing I loved development, could make a decent living at it, and it would allow me to pursue original music on my own terms, I decided to not go back on the road.

8 years ago I was recruited to work for the headquarters of my company, and began working from home, travelling, and continued the most intense learning streak my life has ever experienced.  I inherited a proprietary BI system from a co-worker in which the only interactivity/scripting was a proprietary object model exposed through JavaScript.  I was deeply disappointed to leave web development behind for a time, and hated that my JavaScript skills were less focused on the DOM.  I had no idea how valuable this experience would be – learning JavaScript apart from the DOM.

3 years ago I was team lead, travelling more, spread across legacy asp, ASP.NET, SQL, Data Warehousing, windows services and middle tier.  On the surface, I had the ideal job.  Good pay (with a raise on the way), travel and the accompanying benefits, working from home, flexible schedule, a great boss and good teammates.  But I was still unsatisfied.  I’d been reading up on architecture, development methodologies, good C# practices – anything I could get my hands on.  Many at work seemed ok to just coast.  Our SQL 2K databases were ancient at that point – we’d barely started migrating to 2005 – but it didn’t bother many.  I wanted to be on a team that challenged me – and not just be the challenger.  Soon after, I left the safest job on the planet, took a pay cut & added a commute to work on a team that seemed to hold all the promise of challenging me more than I’d ever been.

Ten months ago I was about to lose my job thanks to a low-life-embezzling-CEO who brought his company down around him in flames (and, in the process, breaking up the most talented team I have ever had the pleasure of working with).  In my short time there I’d learned more about distributed architecture, messaging, ORMs, WPF, NoSQL – and much much more thanks to guys like this – than I could have hoped for going into it.  Then the IRS and FBI raided our building (thanks a lot, Brian), and the process of scrambling to find new work kicked in.

These things are running through my mind tonight – as I sit outside a coffee shop on the banks of the Tennessee River in Chattanooga.  I would’ve never guessed I’d land here.  I miss my old town (Nashville), but more than that I miss the friends I made there.  I heard a quote recently: “If you only learn the skills related to your day job, then your skills are at the mercy of the one who pays you.”  Nine months ago I had slipped into the nasty habit of only focusing on the “here and now”.  When the rug was pulled out from under me, I swore that I would never allow myself to fall into those habits again.

This is the tough thing about our industry.  Unless you’re fortunate to work at a company like Google – where you can take 20% of your on-the-clock time to pursue personal ‘innovation’ projects – then learning and study happens in between work, family, kids, working out, sleep, doing the dishes, walking the dog, fixing your car and the myriad other responsibilities we all bear.  Tough choices have to be made.  I’m still a musician to the core – always will be – but time for recording projects is virtually nil at this point in life.  I think I’m beginning to learn how to better approach this, however.

At first I thought of it primarily as an exercise in time management.  Time doesn’t scale, though – after all, there are only 24 hours in the day, and you can only go without sleep for a finite amount of time before it plunges your effectiveness.  To use a budget analogy – this is like a married couple trying to squeeze every penny out of their budget, while stuck between the large house note and medical insurance bill.  Those two items tend to be the most non-negotiable-large-sum items in the budget (and you can only tweak the smaller categories so far until you bump into Tesler’s Law).

A huge improvement to the situation is to find the right kind of company to work for.  This requires you to be on your toes – not only in your job search, but as you spend time at a company.  Ask yourself – are the values being expressed in action – not just words – the values you can get behind?  Are they open to new ideas?  Do they promote innovation, or do the curmudgeons rule the roost?  Does your management have credibility with you and your team?  Does your team have credibility with your customers?  Are you encouraged and supported in your career growth, or are you simply a warm body, code-it-this-way-who-gives-a-crap-what-you-think-and-shut-up-thank-you-very-much developer?  To continue the budget analogy, finding the right place to work is like finding the right place to live – with a mortgage payment you can afford, and which offers better flexibility to the other smaller-sum categories.

But what about the “medical insurance bill”?  How does one maintain and promote the good health of their career, in the midst of learning and finding the right place to work?  If we’ve tweaked the smaller categories, and found a more affordable mortgage, how do we lower the other non-negotiable cost?  While this isn’t the only aspect, I’ve come to strongly believe that the choice of technologies (and especially technology frameworks) drastically affects your career health more than you realize.  I’m not necessarily talking about languages – this isn’t a C# vs. Ruby vs. Erlang debate.  However – you need to ask yourself questions like:

  • “Am I getting locked into a vendor toolset?”  (If the answer is yes, then ask “Does this vendor support open standards?”  If the answer is no, run.)
  • “What is this framework abstracting from me that I might need to know about – even if the knowledge simply helps me understand (or appreciate) the framework more?”
  • “What is this framework abstracting from me that is hurting my knowledge and programming theory?
  • “What is this framework abstracting from me that is hurting the performance, extensibility, usability or interoperability of my application?”

I won’t presume to know these answers for anyone other than myself.  I will say that, as I’ve asked myself those very questions, the answers have steered me away from things like Silverlight, SharePoint, ASP.NET Web Forms (notice a pattern here?) and towards open-standards-based approaches.  Asking those questions helped me see how opinionated certain frameworks can be in the wrong direction (Web Forms, for example).  It’s also given me renewed love for dynamic languages like JavaScript, and great js frameworks (that seem to abound these days).  I’m much more skeptical of vendor-laden architectural advice, and less satisfied with heavier server side frameworks for web apps.  I’m more interested in employers that value talent over vendor homogeneity.  I’m coming to believe that picking the right technologies – ones that amplify good habits, teach you as you use them, play well in the wild with others – is akin to being in top shape so that you can afford that higher deductible and lower those monthly costs.

Making time to study is vital, but equally so are picking the right things to study, and working in a company whose vision is one you can get behind.  The latter two make the former more effective than it can ever be on its own.


Tags: , , ,

  • Thomas Holland

    Great post. I was trying to write something similar this morning, but you did a far better job than I could have.

    So what do we do about it? How do you effectively leave a comfortable job to go stretch yourself? How do you do that without ending up at the mercy of an idiot who runs your project into the ground (or into the arms of justice in your case). I've been down that road once and it really hurts.

    I really feel like Nashville is still in need of a great technology company. There is so much talent here that is wasted on 9-5's.

    • Jim Cowart

      Great questions – thanks for the response! When I left the 'comfy job' in 2008, we knew it was going to be tight for a bit financially. It put things on hold that we hated to delay. But I'm blessed with an understanding spouse who saw me dying a bit each day inside, and was ready for me to get into something more fulfilling. Who knew the new company would collapse 2 years later? But learned valuable skills from that – learning to balance between commitment to a job, and commitment to my career. I know any company is going have it's bad days (if not seasons!), so I try to not to jump to conclusions, but I'm not a blind loyalist either. That doesn't rule out the very real chance of working for another idiot, but it might lessen the damage (and limit the length of exposure). This is also a driving reason behind why I'm trying to be more involved in OSS. I read a bit of your thoughts on OSS and certainly understand your frustrations (I used to have a lot of the same ones!). But I'm finding that OSS involvement has sharpened my skills more than I had expected, and has exposed me to other developers that I've learned a ton from (as well as providing a relationship-network for the next time I'm looking for work). I agree about Nashville – tons of great talent there (I was sad to leave!). There are great companies (like Firefly), but they're not getting the name recognition they deserve, IMO.

  • Pingback: Advantages and D..