This is a monumental shift for me, at least professionally, and one that I’ve been looking forward to for a long time. I’m extremely excited about moving to the back end, but I’m also tremendously overjoyed to be quitting the frontend.
But I have found frontend development to be very boring and tiresome for awhile now, and unfortunately, I find many of its practitioners don’t care much beyond just getting something to work. Ship it!
So, I want to tie a bow on this period in my life, and I thought that a brief autobiographical stroll down memory lane would be just the thing to wrap up.
Life as a Programmer
I was a late bloomer, only learning my first programming language in 2003. This was after I had taken a break from university life after earning a BA in history from the University of New Mexico. I had fully expected then to go on to earn a PhD in history and become a teacher like my parents and others in my family.
The language that I learned then was of course PHP, and I was coding websites which persisted to a MySQL database (of course). The barrier to entry was low, and it was a good space in which to get started.
I enjoyed it enough, I guess, at least in the sense that I’ve always enjoyed learning, but I wasn’t hooked yet on programming. I wasn’t overly excited about PHP, and most of the sites I worked on were not very challenging.
Of course, everything is an abstraction, and using one, such as a tool, isn’t a bad thing, but there’s really no excuse to use an excess of third-party modules when it comes to developing in the browser. And, in 2007, one didn’t have that dubious luxury.
I remember when Ajax became a thing. You looked at the spec and wrote your own little Ajax library with conditional branching for Internet Explorer and then everything else. Remember all the DOM Level APIs? I do, and I could name the improvements that each one brought.
Those are some of my old man credentials, but seriously, it was important to know this stuff.
It’s not like that anymore.
And I had a lot of fun. I had the opportunity to travel to Las Vegas with my team to help man the Connected TV booth at CES 2011. One day, after a nice tinkle while taking a break from the booth, I spotted Ozzy Osbourne combing his hair behind me in the mirror as I was washing my hands. I didn’t say hello because I thought he must have been an impersonator. What an idiot (me).
Here’s another one, from Yahoo!’s 15th Birthday Party. I’m giving horns with the band Collective Soul after their performance. Handsome!
“It’s nice to want things.”
I was fairly happy at Yahoo!, but then I was contacted by a recruiter to interview with Sencha, the company that owns the aformentioned Ext framework that influenced me so much. I jumped at the chance, and after an excruciating two months of waiting (they were in the process of wrapping up and releasing Ext 4, a fairly seismic change from Ext 3), I got an offer to join.
Sencha was a great place to be in 2011. It was a still a startup, an atmosphere which was new to me, and I was employee number 40-something. We were all in the same room, no cubicles, no walls. Having joined the company as a support guy (although it was a heavy development role), I started making code commits within two months of my employment and got to know all the programmers on the Ext frameworks team, where I eventually landed.
I learned a ton, especially from Don Griffin. Not only was he a fantastic manager, but he’s one of the smartest people and best developers I’ve ever had the pleasure to work with.
Among the skills I honed was how to write modularized code. I became really good at debugging and refactoring. Any later bug fixes that touched the areas that I had refactored were usually only surgical in nature, often just needing to change a single line. I saw this as a good sign that the refactoring or bug fix was the right choice.
I started to trust my judgement much more than I ever did, and my confidence grew as my pull requests started to become merged faster and with fewer comments asking for changes and updates.
Don was great at gently pointing out or otherwise making me aware that something I was doing needed improvement. For example, I became embarrassed at the realization that frequently I didn’t fully understand a problem that I was trying to fix, and that lack of understanding became painfully obvious when he would ask me to explain the problem and its origins.
And that had larger implications. For if I didn’t fully understand the problem and what needed to be fixed, I couldn’t possibly fix the problem in the best possible way, which often took the form of a minor refactoring to make the code more maintainable and less tightly-coupled.
Mind you, it wasn’t laziness or a lack of interest or that I didn’t care. It was a time issue. Well, a lack of it. With many other bugs and tasks on my plate it was difficult to give every one the full attention it deserved.
This would invariably stress me out. I wanted to spend the time necessary to fully understand the issue and to fix something the right way, but, for a whole variety of reasons, that can frequently take a significant amount of time, time which I didn’t think I had.
The best managers and coworkers implicitly understand that programming is hard and can often be time-consuming, but it wasn’t until Sencha that I experienced a true programming environment, one where developers were truly valued, their judgement trusted and time and space given. I was in the trust tree.
Further, Don insisted that “it takes as long as it takes” to fix something, and this gave me the space I needed to do my work. I was so grateful. For the first time, I really understood the benefits of having a good manager.
And it wasn’t just me. He gave the entire frameworks team (all six or seven of us) the time to dig in and fully understand the implications and scope of a fix. This of course meant that the codebase would continue to be hardened and improved.
Enterprise Sucks Balls
I’ve made a huge mistake. I’ve followed through and joined a large company in Waltham, MA. I quickly regret the decision, and it isn’t long before I leave the company.
It’s not worth going into much detail; it’s very boring, and no one cares. I was a terrible fit for them, and they were a terrible fit for me.
I was shocked at how little people knew despite the impressive titles: Senior Frontend Engineer II; Principal; Architect. They were intensely Agile.
But, I felt real knowledge was lacking. Only one other colleague understood prototypal inheritance. There were many, many abstractions, mostly used poorly. The codebase, not old, was already filled with several unnecessary layers of indirection and misdirection, and I was never given time to fix any of it because the team culture didn’t believe that doing so added any “value to the customer”. The most common response to almost any question was “because, we’ve always done it that way”, and any change was resisted.
It was tiresome, and we were all glad when I left.
At this point in the story, my wife and I had already left the Bay Area and moved back to the east coast to be closer to family. We initially move to a small town on Cape Ann on the Atlantic, later moving to a small farm in central Massachusetts to have a bit of land and more animals.
I was so turned off by corporate culture and frontend development that I spent the next two years feeding my head and doing freelance work that turned out to be mostly Elm and Golang. My wife was totally supportive. It was fun.
Quite suddenly, it ended when my biggest client surprised me one day by saying that the work had suddenly dried up. I was completely caught off guard, and made a fear-based decision that was a huge mistake. The same one as before, actually. Derp.
How could I have made the same mistake? Because it was safe. I wanted to transition to the backend, and I believed that my best shot at doing so would be to join a large corporation doing frontend work and then make the transition internally to a backend team. It made a great deal of sense at the time. Additionally, I felt that I wouldn’t be hired onto a backend team out-of-the-gate because I didn’t have the necessary experience, and I should hedge my bets by playing my strongest hand, which was frontend programming.
The corporation I ended up joining did tick many of the boxes, so it wasn’t completely crazy that I’d do it all over again. For example, the salary was great, I could work three days a week from home (very important with all of our animals), and my would-be manager personally assured me that she would help me to move to a backend team in two years.
So, I sold myself out.
And lasted six months.
As it turns out, I’m a terrible corporate employee.
However, I think now I may have another shot, and I’m taking it. I’ll be working with an amazing group of people, one of whom is a Turing award recipient.