A Career Reset: Back To Development

by Jon Davis 14. January 2014 17:17
I haven't been posting consistently but neither has anything been consistent in my professional life lately. 2013 turned out to be the most difficult year in my 16 years of professional development--and that's saying a lot, considering from 2000 to 2004 after the dot-com bubble burst I was barely making five-digits and ate dollar meals while I worked 16-20 hours a day (and slept 12 hours, and saw daytime flip every couple days) for myself trying to learn the ins and outs of basic micro-ISV and independent consulting. 2013 was worse. It started out with me being assigned by (at the time) my consulting firm employer to fill another seat in an already overloaded project that was already sinking. A month later, the client abruptly laid off some 150-200 or so contractors, including myself, and a couple days after I got home I was laid off. Now as awfully annoying and painful as that was, I did not blame my employer for that. Their position was that they suddenly had a bunch of people on the bench without an assignment, and it was not profitable to have them all sit on the bench waiting for an assignment because bench time is still salary pay. I totally got that. It made perfect sense. And I was grateful that they said they would take me back if I came back when project opportunities opened up--so much so, in fact, that for the next four months I worked part-time as a contractor for someone I never really intended to stick around with, so that I could come back and demonstrate my loyalty.
 
What did have me scratching my head, however, was that some of the best talent in the company, including my manager, were also laid off. And when I did come back and say, "Please hire me back?", I found out that some people subsequently quit. When these changes occur, the dynamics of the entire company changes. People who were in seats of equality now sit in seats of power, and they're learning the ropes of leadership. Mistaking the role of leadership for the role of authority (they are not equivalent; being a leader has prescribed authority but only to support the leader's actual responsibilities), the worst case--and yet apparently the default scenario--is that in their immaturity in such an abrupt role, the perceived necessity on their part to backstab and cut throats makes its way into their tempted hands, the hands of their newfound authority.
 
I Disagree.
I made some obvious mistakes when I was accepted back with the company. As a new person on the assigned project (a rather intimidating one, one that had 50 or so projects in the Visual Studio solution, an existing migration from CoffeeScript to raw Javascript, and a new migration just beginning going from Backbone to Knockout), I believed it was imperative that I receive guidance, even as a senior developer, from the peers and leaders on the team regarding shared resources, without wading through hundreds of files, as well as regarding what would constitute embraceable proper coding conventions in the new migration effort. I also insisted that new feature stories be properly clarified and documented since anything assigned to me may end up on someone else's plate (i.e. I might be laid off again, or something similar). I still believe these things. The problem was, these things require the cooperation of the team, and the team was already shaken, just like I was, by recent history of layoffs and quitters. They were managing their stress by cutting themselves off and enjoying the camaraderie that they had already established within their cliques. I was the new guy, one with opinions. I was a distraction. And where I was pursuing healthy discussion, they wrote me off after only a few short words. Basically, I wasn't likeable with this particular team, and I while I hadn't forgotten how I was coming across as a person I was too dependent upon validation feedback that never came, at least not discreetly and directly from my leads in an effort to resolve the patterns. It really didn't help that I had high blood pressure and didn't have medication for it; I had headaches and my heart was pounding, I was on the edge and couldn't focus. I disagreed with disagreeable things not vehemently but perhaps pesteringly. Most regretfully, I made a huge mistake of using false-rhetoric ("I can't even read that") to deliberately make a point about unnecessary code complexity where my words if taken literally could only be taken as "I'm too stupid for this job". And unfortunately, rather than giving me direct feedback about how I came off to help me identify areas of blindness--not a single word--they relayed their frustrations up the ladder. An hour after I showed up to work one day and the team was huddled in a corner, backs turned, discussing (finally) why I deserve no respect and basically ripping me to shreds, out of nowhere, a company exectuve shuffled me onto an elevator and told me that I had been pulled off the project because I "lack skill". 
 
Besides the weaknesses observed on the part of the team, I knew what went wrong on my part as well. That four-month timespan between getting laid off and getting re-hired was spent working part-time, for a client who was not interested in modern coding conventions, and the rest of my time wasn't even spent thinking about software at all. I was taking a career break, tinkering with video editing. If I knew at the time how much this was going to cost me I would have made much different choices. This is not the sort of industry that one can afford to stop thinking in code. I showed up unprepared. This was a huge mistake, one I don't intend to ever repeat. But more importantly, the choices I made of presenting myself to the team was not a fit for that team's culture. In fact, while even today I believe I was right in my expectations of the team to accomodate discussion and documentation, I was wrong to demand it. In fact, I should have kept my mouth shut. Showing up and making demands as the new guy, and freaking out when I don't get the leadership from the leaders that I need, isn't how teams work. This was a relatively large team; developers, QA, and project management combined, there were probably around 30 people in the meeting rooms, and I didn't hesitate to open my mouth and tell those who were writing things down how they should be written. Clearly, everyone in the room learned the rule about rudeness, that the rudest thing a person can do is to call someone "rude" in front of others. But I guess in my temporary moments of thoughtlessness I was jumping around the edges of social appropriateness and trying to rely on immediate feedback to help me find that line. It didn't work. I just made myself look like an ass. It is unfortunate that no one I worked under criticized me privately afterwords. A designer fellow did, but I tended to wait to hear it from my leads. It's unfortunate that they just disappeared, and some time later I had to hear it from an executive who was relying solely on upstream feedback.
 
I spent the next three weeks on the bench. I spent that time learning how to write Android apps in "native" Java. I watched software development opportunities come in and were discussed even with new recruits, but apparently that previous project's feedback issued up to the leadership tarnished my reputation as a developer so badly that my next assignment was in system operations--a DevOps role--working remotely without a single peer and not a single person from my company working alongside me. Yes, ops. PowerShell, SCOM, IIS logs, performance reporting. I sucked at this! Maybe not so much the PowerShell stuff--actually, the PowerShell stuff I did was pretty cool, I had fun with that. But ultimately I knew going into this that it was over. I being the one who was described in a company dinner announcement as "the elephant in the room" upon my return was no longer welcome in his capacity as a developer. And every day I was stressed out about ops-related concerns and dealing with a difficult client who already had a history of contractors quitting on him was another day I couldn't get my head in gear around my passion in development. I voluntarily resigned in November.
 
I have been on the job hunt ever since. The fact is, I am indeed a senior-level software developer. I have learned my lessons, even as some of them are reminder lessons previously learned years ago. I have been trying to catch up since November on what is going on in technology space. It has been crazy over the last year or two, how much has changed. Javascript is the new de facto industry coding language, for example, and as simple a language as it is, it is a difficult language to master, and while I don't hate the language, I do struggle to enjoy reading other people's Javascript code. The coding conventions of proper development with Javascript is also widely varied, since no one entity prescribes its best practices (no, not even Douglas Crockford), and all the various most popular libraries for both client and server (Node.js) have almost completely different ideas of what constitutes "good code". My responsibility in the industry as a senior-level software professional is to digest the bulk of what is very well embraced, identify the commonalities of ideals such as the implementation of [revealing] modules (as with Require.js), disambiguate the confusing semantics (prototypal inheritance is the opposite of using object.prototype.*), appreciate the good and bad of each of the popular client libraries (Knockout, Angular, Ember, et al), glean from alternative approaches to server solutions (Node.js, Nancy, OWIN, ..), stay on top of what has changed in the .NET stack (ASP.NET MVC 5, C# 5 [async], EF 6 ..), and remain mindful of enterprise software patterns and practices (DDD, BDD, etc). I still feel like I'm scratching the surface just listing these, there's so much more than this to know, but, again, the more you know the more you realize how little you know.
 
I'm also feeling the pain, yet again, of the staleness of this blog, not just the content, which is frequently lame, but the blog software. I am probably going to rewrite my blog engine. (This one wasn't written by me anyway, though I've built them in the past.) I've been down this road before, and had some false starts, and I'll reiterate, it's not that I think that blogging software is still interesting or representative in any way of some special class of software development. Besides the details of Atom, OPML, Blogger API, etc., to the ignorant mind a blog is just a sorted list, a list of blobs of formatted text. There is more to it than that, but that's not what matters, and that's not why I need to do it at some point. Others have stated it [link], writing a blogging engine is a good step in practicing the basics of modern web development. In my case, I might take up a major tweak of Ghost, adding publishing APIs (if missing) and WYSIWYG editor support, all the while staying in Javascript and Node.JS. Why not the .NET Framework? Why, because I already know it, I don't need to prove it to myself that I know it. Then again, I might anyway. I haven't started yet. Well, I have, but multiple false starts leading to abandon leads me back at the drawing board--which is good. It forces me to check up on what's trending today

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Career


 

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

About the author

Jon Davis (aka "stimpy77") has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

Jon was previously employed as a senior .NET developer at a very well-known Internet services company whom you're more likely than not to have directly done business with. However, this blog and all of jondavis.net have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 


Tag cloud

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar