Friday, December 30, 2011

Reflections on 2011, a year of trial, growth, and questions

It has been a while since I've had time to pick up my bloggers pen.   October is traditionally a hellish month for me, even when work isn't trying, the Cub Scouts have kept me busy all but a single weekend that I recall, and then on Sundays our son plays soccer.   However, things quickly went off the rails this year.   The whole family came down sick over the span of a month, and one week, we were all sick at the same time.  Yikes!  Praise God, we are better now, but that isn't the only change.

My duties on my project have shifted back to more coder oriented tasks, and less focused on testing.  While I enjoy both programming and testing pursuits, I'll admit, I miss the testing aspects of what I was doing before.   It is funny in a way, when I first got approached about a 'Automation testing' position in 2009, I was worried about being pigeonholed as a tester and excluded from some kind of elite club of programmers.  Yet that was a bit a naive thing to worry about in hindsight.  Testing brought back my love of learning in a way I had not felt since college.  It returned to me part of who I always was, but had kept silent in order to make ends meet.  I've learned a lot as I ran that course, and I wouldn't trade the decision for the world.

My current role on project has me pondering though.  I've heard it debated around twitter, about whether you can be both a programmer and a tester.   I know I can do either, but at some point do you not need to decide which to specialize in?  The reality is there are only so many hours in the day for study and growth, and the opportunity cost of each new learning investment, in effect is at a loss for learning something else.  This is a reality that I've now come face to face with in the last two months.   I still have the knowledge from what I learned as a tester, but it has been hard to try and keep up on my learning where testing is concerned, especially when my current responsibilities require me to act in a more code-centric role.

This feeling has left me feeling a bit lost internally because I know I can succeed at anything I choose to focus my efforts upon, it wouldn't matter if it was testing and programming, or some other group of tasks from which I must choose. I have the drive to do what is necessary to succeed.   Still, I find myself at this cross roads because I enjoy doing things that provide value to the teams that i work with, no matter how small or great the achievement may be.  Up till now it hasn't mattered whether I was a tester, programmer, or performing some other service to the project team.  As long as it was value that I added, I was happy, content and felt fulfilled inside,  Yet I find myself feeling as though I am stuck at a fork in the road.

I feel as if I have paused at a great fork where two rivers meet.  One is a possible focused career on testing, the other, a continued focus on programming, its methodology, and potential as a generalist programmer.  Either fork in the river looks potentially enjoyable from a learning stand point, with its opportunity to pause to fish, relax, or just skip a rock to the other side.  Like most rivers though, I realize that I can only paddle up one stream at a time.  Although the left fork might be easier, the right might be the more fulfilling, or the converse could be true.

For nine years, I have worked professionally to develop, test, and support various software efforts.  I have learned something from every experience that I have been fortunate to endure.  I wouldn't trade those experiences away as they define a bit of who I am personally and professionally.  As I enter my tenth year of service in software development, I find myself looking back over the peaks and valleys behind, and ahead up the forks in the river, yet seeing behind the first bend of either is impossible.  So I am presently anchored, where I am at this fork, pausing to consider and reflect upon what my dreams are for the next ten years.  Where do I want to be?  What roads will I need to travel to get there?  These are questions that I have no answer for currently.   So given that the new year is around the corner, I can see myself at least initially focusing greatly upon what exactly it is that I most want to do, and the realities of that choice which may require not just myself, but my whole family to adapt as well.

It may take some time for me to come to some answers, and the pot has clearly become foggy and hard to see how its contents will turn out when I finally reach that conclusion, but I want to consider things more closely, set a plan and then rush after it to attain it.  Perhaps it is the nature of how I 'fell into' my current assignment that is at the heart of this muddled mind of mine.  At least I know it is something I can do for now, while I sort through my feelings and make what could possibly be the biggest personal, and professional decision I have made in my life thus far.

But enough about me, as you read this and other blogs, I imagine you may be reflecting on recent events, just as I have been.  Where do you stand?  What's your dream?  How will you decide what to focus upon this year, and as a result, what areas that get left behind will you perhaps miss when we reach this point a year from now?


  1. This post certainly struck a chord with me - currently working on my 'reflections on 2011' blog post. I've been getting back into learning about coding - Ruby, Rails and now even touching Haskell. I want to understand what the devs around me are doing and talking about - but at the same time the more time I spend learning about languages is less time I spend learning about testing. Trying to find the right balance is going to be one of my 2012 goals, working out what I need to know to be more effective

  2. You touched upon how testing has brought back your love of learning. I would say for me that is probably the most attractive aspect of a testing role.

    As testers, test managers, QA people or whatever meaningless title someone cares to place upon us, we tend to be allowed that little bit more freedom than most in IT. I love that about the role, as it gives us a chance to reflect and work out what is most important for us to do our jobs efficiently.

    I've no doubt whatever happens, things will work out well for you, as they do with most smart, passionate people.

  3. Darren,

    You are absolutely right about freedom and flexibility. They actually not only allow us to do a better job, but for me at least make it more enjoyable as well. I suppose part of my process at present is that I'm in highly 'process driven' environments at present. I feel at times that even when I'm trying to do something that should be somewhat creative, that I'm actually doing it with half my brain forcibly constrained behind me. It is a bit frustrating to be sure.

    For now though, I'm trying to be content, and focused on determining what my longer term goals may be. If I can get better definition there, then I'll have a better idea of where I want to be long term.

  4. Nice post with some great personal reflection & critical thinking, but I can't help feeling you're creating a fork where there doesn't necessarily need to be one.

    In an agile development process, namely with Kanban, there is a lot of hype around the "whole team approach" and members of the team are referred to as "generalizing specialists"

    We're trying it at my current client and it's great - testers get to help program & programmers get to help test through pairing with each other.

    To be honest, I still prefer testing, as the programmers like to program, but the border between the two is less black & white.

    Expanding on Darrens comment, James Bach likened programming (in one particular language) to writing crosswords - each one you write is slightly different from the last, but they're still crosswords. From my limited knowledge, learning the craft of testing appears to have more avenues which are much wider than programming.

    Good luck in whatever path you choose,


    1. Duncan,

      Excellent comment. Sorry I just now noticed it, I've been busy with other things.

      I totally see your point about Agile, the reality is, I'm not in an Agile Stop. Before my current team, I was on a team that was supposedly looking to go Agile (perhaps SCRUM), but my time on that project ended before I could really get a taste of what that was like. Agile isn't a reality where I'm at now. It certainly could be down the road, but right now, it isn't.

      Another thing to consider, is that if I choose testing over programming, it isn't like I won't learn anything about programming as I continue down the stream. It also doesn't mean that I couldn't decide to take a detour and go back to focus on programming later down the road. I have used programming to help solve a select group of problems that are testing minded.

      However there is a difference. I can program, I'm fairly competent at most things I do when I program, but I have self identified as a Tester recently. I'm schooled in Engineering, and perhaps a lot of my vision is framed through that glass, yet I don't consider what I do to be 'engineering work', at least not in the classical sense. Because of that I've always seen programming as something I can do, a skill I have, like orienting a map, or writing a novel, but I have never seen myself strictly as a programmer.

      The reality is with a family of four, and other events outside of work that already take a great deal of time, there just isn't enough time to divide my time evenly between learning both programming and testing. Today, was the first day in weeks that I've had time to read some other testing blogs.

      Getting back to my point though. I don't know where I want to go, and it bugs me. I had a five year plan, which didn't work out, so I moved to try and reach that five year plan where I'm at. I reached it, but in the middle my career goals changed a bit, I learned some things I never imagined I'd get to learn, and now that I've hit that goal, I realize I haven't set a goal for the next five or ten years. I want to, I know I need to, but I'm conflicted internally. Perhaps this would be easier if I hadn't seen the team mates I built relationships with these past six years almost all move on, and more still may be on their way. Yet I'm still here. I still have work I can do, but it's different from work in the past. It's something I struggle with more than I have in the past, and this is the crux of the fork metaphor. It feels like I'm swimming upstream, starting to gain momentum, but the stress in going that direction has almost so overwhelmed me of late, that I've lost site of shore in either direction. I've lost my bearings, and thus need to give myself time to reflect and ponder these things.

      It isn't that I might give up testing, or programming. They've always been a part of what I've done on teams, but I don't feel I can succeed at both simultaneously, at least not where I'm currently planted.

      So as I try to figure out my own course forward, I'm working at what I can do, providing value where I can, despite feeling like half my brain is reserved as unavailable while doing it at times, yet still achieving results, not quite as efficiently as I'd like, but achieving them none the less. For now I am trying to be content, but I sense on the Horizon a new shift is coming. Sometimes we need to be the change we want, and sometimes we need to move to effect the change we want in ourselves.