What is wrong with Maryland Programmers
What is wrong with Maryland Programmers?
I originally wrote this blog on 7/5/2014 on the long flight from Phoenix to Baltimore after an amazing vacation to Silicon Valley (my 2nd of the year at that time), however I had spent some time over the last month thinking about what I had written and provide an expanded view of the title: What is wrong with Maryland Programmers?
As the blog title suggests I’ve unfortunately been previewed to several software developers that I feel are nothing more than glorified typists who have gotten to a certain position and/or invested the time to learn a technically and then stopped for one reason or another. There are some legitimate reasons that I’ve heard: Kids (and getting married), graduate degree, the day job and the most classic “I just don’t have the time”. I’m reminded of one of the more memorable lines The Matrix Revolutions, “if you never take the time, how can you have no time?”
There are certainly times in which I need a breather, escape to Silicon Valley to my head or get lost in a great game (like Mass Effect), but that shouldn’t become a norm in my opinion. The software development industry changes so rapidly and dramatically that taking a “break” for a few months could be extremely detrimental to not only the work you provide your employer, but your position itself. Image you’re a “senior” level programmer. In my mind that mean you should know the ins and outs of the technology space you in (ASP.NET, Windows Store, WebAPI etc.) and spending time outside of work to ensure you maintain that knowledge set for existing and future projects. Often I’ve seen lately nothing but complacency. “I only do XYZ so I’ve never seen ABC” (where XYZ is ASP.NET, WinForms etc. and ABC is WPF, Windows Store etc.) To me this is unacceptable and if I ever got that way, I wouldn’t feel good about myself, as I would be doing a disservice to my employer and my career in general. Going back to the “senior complacency”, what happens when “new blood” comes in to assist on projects and he/she with possibly less years’ experience brings in that “ABC” knowledge. Would that hurt your image in your bosses view? On one hand, I’ve read that many leaders often say they hire people smarter and more capable than themselves – but I don’t think they intended for that to be as I have seen in Maryland.
Every company could be different in this regard. If you’re in the top position reporting to no one else, then you might be able to hide your own lack of knowledge from your superior, especially if he/she doesn’t come from a technical background, but what of your employees? The one who in the project kickoff meeting mentioned technology XYZ? The one you then covered your bases cleanly by saying “we can definitely consider that” or worse case gave a deer in the headlights expression hoping no one else saw. In my opinion this also hurts your credibility as a “senior” programmer. You are supposed to be the “Obi Wan” of your trade.
So I have had to ask myself the what and why of what goes on when that passion to be better than you are today fades?
Looking back at co-worker it seems to be he/she got to a certain salary when they can live comfortably and so the underlying need to survive was fulfilled. Maybe when a kid of the desire for a house comes around you dive back in or simply attempt to switch employer’s to drive your salary up, living off the laurels of your padded resume. For me, this is extremely sad. While yes, when I initially got a job offer in the IT industry (after a year or so of failed attempts) nearly 8 years ago to be a professional customer PHP programmer I got enamored at the fact I would no longer have to wonder if I had enough money to eat that night (lesson there is not to move out, have a new car and work in retail while going to college full time). But the passion didn’t fade for myself, if anything it only strengthened because now I was finally working with programmers my age and in many regards better programmers than myself. At that company I developed a camaraderie with one programmer in particular and for the first time in my life I was working with someone on a game (C++/SDL/OpenGL). Eventually we went our separate ways, but the knowledge that there was other people out there passionate about programming to the point that after programming 8 to 6 he/she would turn around and program their own project(s) until their heads hit their keyboards has stayed with me ever since. Sadly, I have no run into anyone locally in Maryland in the 5 years since.
This brings me to what I feel is an even bigger issue, at least for myself: Maryland. When I moved up to Maryland after being waitlisted in Virginia Tech and James Madison University (and eventually denied late that summer after High School graduation), I really had no opinion of the state in general. I knew Fort Meade and NSA were in the area my parents were looking to move to so I thought I would simply get an internship and spend a few years building up my skillset and then leave Maryland to California or Texas to work at a gaming company. This “neutral” opinion of Maryland changed dramatically when I started interacting with other developers from other consultant groups very early on in my career back in 2007.
Gone were the mid to late 20s developers who cared about their work, instead these were 40 something’s who became “salesmen” pitching everything under the sun to clients even if it was the wrong approach – in the end the consultant company only really cared about making money one way or another (I should note – I have no age discrimination of younger or older developers, it was simply a culture change from what I was used to and seemed to correlate with the complete 180 from my co-workers). While I can appreciate the need for a company to look for all monetary avenues especially in this case with a fairly large company there is a fine line between doing what is right for the client and making money. In the end I feel even if the client ends up going with someone else you conscious can be clear and with any luck the honesty could go a long way towards building a long term relationship with the client.
This leads into another aspect of Maryland (and possibly other states), the quick cash mentality. I am fortunate to work for a company that has the same values I do in that we shouldn’t just do a project just collect money as if the time invested was no more meaningful than collecting $200 on your way past go in a game of monopoly. Time is extremely precious and I know from personal experience in working on exciting projects, I am considerably more passionate and willing to freely work insane overtime on it as opposed to a tried and true ASP.NET project. For others at least in Howard Country it seems the idea of a large custom C# application (comprised of a custom backend API, multiple frontends and a scalable architecture) is forbidden. Instead endless Drupal, WordPress and Sharepoint sites are created. While there is definitely a time and place for those “out of the box” approaches, I don’t think they are the right decision for the vast majority of projects that require extensive custom work. For the client, depending on the project they might be perfectly content to use Drupal for instance. It offers a WYSIWYG editor for just about everything and has a lot of native functionality for managing content. But when extensive business logic needed and/or a plugin doesn’t exist and you come back with an astronomical estimate, the client might ask themselves “I thought platform XYZ based on your original estimate was a good approach, but now it’s costing me a fortune”. To me this is bad on the consultant if all of the requirements are gathered properly, both approaches should be conveyed with the pros and cons of each. Letting the client chose the possible smaller upfront/phase 1 cost, versus the long term (in most cases). From what I’ve seen, the consultant groups in Maryland are the most myopic group I’ve seen – use what has been proven without any innovation.
This leads into the myopic view topic. The common question I ask during interviews is “Where do you see yourself and technology in 5 years?” To my surprise, more often than not they seem to have not put much thought into their career and what they could be doing to prepare themselves for the years to come. Best answer I ever got was “I want to manage a team”. When asked to elaborate he couldn’t – this told me he wanted the gold before investing the time and effort to mine for it. Continuing the time issue, it also appears developers in Maryland land a job doing XYZ, stay there until the company struggles and then expect to get any job of their choosing. One in particular that comes to mind is a WinForms developer a few months ago applying for a position that was for the most part (probably 67%) focused on MVC 5 and WebAPI. When asked if he had experience with ASP.NET at all he said no he hadn’t had the time to learn. At this point I felt bad for this programmer as eventually his sole skillset of WinForms will be phased out and if he never odes invest the effort into his career himself and his family could be in financial trouble with him having trouble finding work.
While this post most likely appears to be a pessimistic view of programmers and in particular Maryland programmers, there is one community that is extremely strong: Twitter. While social media (Facebook in particular), I have little use for, after TechED North America 2012 in Orlando I found hundreds of like-minded polyglot programmers all over the world doing blog posts, giving back to the community with presentations at their local programming groups and overall simply wanting to be better programmers because at the end of the day if you never want to be better tomorrow than you were today you might as well switch careers – this is not the one for you.
I hope others can take something from this post. I know it isn’t my usual topic nor format. I would love to hear other stories (either success or failures) with external consultants, co-workers or potential hires. One day I hope this fad of simply seeing the 6 figure dollar signs as the allure to computer science fades and the industry really becomes a close knight community of passionate and humble developers – while that means there will be less of a gap between programmers I think in the larger scheme it will benefit everyone much like competition.
Another area comments are more than welcome is the big question: do you go back for your masters or doctorate? I was going to begin a Masters program at Stanford this past spring, but ultimately decided with a large scope creep project at work the program at Stanford would have suffered. On then on the other hand with delay, it made me really question, is my self-teaching more valuable than a professors? In some regards I was swaying towards to my own teaching – I get to focus on what I feel is important and save a considerable amount of money, but then on the flip side I might get a more well-rounded and in-depth look into computer science areas I hadn’t pursued. I am still 50/50 on this topic.
To sum up this post: invest the time and become a better programmer, if not only for your employer, but for your own career, future and family.