Software Career Mid-Mortem

Gonzalo Bañuelos
8 min readJul 6, 2018
fork();

I’ve been working in the software industry for over 25 years now. I’m approaching mid life (though by some estimates I’m firmly in the midst of it) so I felt the urge to write a bit on my experience and perspective. Software development wasn’t my first choice, but it was the right choice, one that I’ve loved since my first tech job. I’ll tell you a bit about where I started, where I am, and where I think I’m going with this software thing.

The Wonder Years

I graduated in 1996 with a bachelor’s degree in computer science from Stanford. It wasn’t a straight path to Stanford. I started off at a state college — Cal Poly Pomona to be precise — as an architecture student. Somewhere along the path I learned that the return of investment of an architecture degree was outweighed by that of a computer science degree, at least for the first few decades. My thoughts at the time were that architects really didn’t find their legs in their industry until much later in life. I had the perception that they worked along other, older, more seasoned designers that threw scraps at them or had them dot the i’s and cross the t’s of their work. It was also an expensive degree in terms of materials for projects and other resources needed. It was also one of the rare five year bachelor’s programs.

As a student of architecture I learned that my life’s work would be based on the judgement of the eye of the beholder, and those beholders were frequently at opposite poles from each other. Sure, many fields depend on the interpretive bias of other people for the validation of product. But since very young, I always depended on my mathematical and analytical skills to get things right, provably so. And yes, even software is a victim of such subjective whims, but it either mostly works or it doesn’t. This is not to dismiss the fact that differences in the design of UI/UX can make or break a product. But in software, the problem for which you are building software is either solved or not solved. That’s your validation. That’s your judge.

The 3D Project That Broke the Camel’s Back

There was one pivotal moment in an undergraduate design class that crystalized just how subjectively my output would be judged. In an intro design class we were asked to model a set of blocks of basswood in 3d space. On the day the project was due, we all showed up to class with our 2'x2'x2' cubes of blocks suspended in mid-air by fishing line. Most students had some kind of spiral-staircase-exploding-tree type of suspension; blocks in every direction and angle imaginable. I didn’t. I didn’t know what others were doing until we all showed up with our masterpieces. Apparently I had a different idea of good design. My idea was not organic but very mechanical. I juxtaposed every block in my arrangement at orthogonal angles to each other. Every block was at zero or 90° from any other block, on each of the three planes. Also, I misread the directions and instead building a 1" thick frame, I made a 1.5" thick frame. It was a stout piece of work that probably could have doubled as a coffee table. My professor was impressed.

That day, while he was at the head of the class with my project, extolling the originality of my design (and concurrently embarrassing me for not following the directions on the dimensions of the frame) a professor walked in from the adjacent classroom. The visiting professor taught the same level class, working on the same projects as us. He walks up to the front desk and asks my professor why my piece was up there with him. My professor told him that he loved it. He’d spotted it across the room, through a thicket of other projects, and pulled it up to show the rest of the class. The visiting professor didn’t hesitate to say that he wholeheartedly disapproved.

Upon hearing that, I felt the gears in my mind come to a screeching, disastrous halt. That was the moment I lost all interest in a future in architecture. Essentially, whether or not I got an A for that project was based on the luck of the draw. It depended on the professor I’d been assigned for the class. There was no right or wrong answer for this project except for the professor’s judgement. So, I was out.

Computer Aided Detour

At the same time that I was figuring out how architecture worked, I discovered CAD. I loved working on the computer, putting together my plans, without constantly having to resharpen and clean my HB and 4H pencils. This excitement led me to a passion for tinkering and hacking, and eventually to a change in majors.

I decided to transfer and sent out packets to each of the top CS colleges in the country. Cornell, Georgia Tech and Stanford said yes. MIT was not interested. I don’t remember the other ones because once I opened up the Stanford packet, it didn’t matter. Stanford both had one of the best computer science programs in the country and a culture I knew. Coming from the hood in South Central LA, and never having ventured out of my little corner of the world, Stanford offered a lot to make me feel somewhat at home. So that’s where I went. I haven’t regretted it since, except occasionally when the Stanford Fund manages to locate me and ask me for money.

Half Life

“The shelf life of a programmer was about 20 years”. I’m not sure how much truth there is in that but let’s take it as a baseline. By “programmer” I mean an actual coder, a person that builds and implements features or contributes by writing lines of code. Throughout my career I’ve mostly been that type of programmer. As I matured into my career I also managed people, projects, built businesses, was a CTO and CEO. But now, at 46, I’m coding again, or you might say “still”.

I was there during the boom of the late 90s and stuck through the bust that followed it. I made a lot of money, mostly on paper, and then promptly pissed it all away. I’ve worked at big companies like Symantec, GE and UTC. I’ve also worked at medium sized companies like RealNetworks, Cars.com, BigCommerce and now Procore. I’ve built my own products and have been at the founding stages of others. I have burned out several times over, then worked myself back up and continued it all over again. I’ve seen and grokked countless technologies over the years and have adopted many into my repertoire. I’ve also seen new technology that was really just a rehashing of old technology. And through it all, I’ve not tired of the opportunity to learn new things.

We’ve all come from somewhere and undoubtedly you’ve also had your burn outs, twists and turns, epiphanies and revelations. But after 25 years working in the industry, I still feel invigorated sitting at coding rig with a fresh cup of coffee and some solid shit to build.

Putting it simply, I’m nowhere near contemplating retirement. I honestly don’t think there is such a thing in this field. Do you really stop doing what you love because of some number? I still feel the rush of solving a complex problem and I still enjoy the instant gratification of seeing code build, execute and deploy.

I write and review code daily. I read code while I’m patiently waiting for my kids to go to bed, on the toilet, just before I close my eyes for the night. I regularly go to bed with and earpiece in my head listening to the soothing sounds of a presentation by Robert Martin, Martin Fowler, or Sani Metz (I really do). Any moment I have nothing better to do, I’m reading or writing something about code. I have my own projects and love to continually improve them. I love seeing my code in my stakeholders’ hands and getting feedback from them on how it works and how it can be made better.

So Mental

Though my ankles and knees may complain about their job now (they are 46 years old also) my brain, except for some momentary neural farts, feels as young as it has ever felt. An outside observer (like my beautiful wife) may beg to differ. This is important because as you approach the apex of your career — and if you don’t feel it now at some point you will — you will feel the pressure of keeping pace with younger programmers. They crank code out, no doubt. Coffee goes in, code comes out. They can pull all-nighters without a care that they’ll be paying for it for the following three or four days. But I like to believe that what they can brute-force crank out, I can build with finesse. I can build code with less keystrokes and wheel-reinventing because experience allows me to recognize where I’ve been before. A senior developer has cultured a nose for smelling bad code and recognizing good code. Because of this, there will always be a need for senior level developers.

In a field where young programmers enter the market at a rate of 2x every 5 years (Robert Martin), senior developers form present and future decisions on the experience of both successes and failures of the past.

exit(0)

Where does it end? To be clear, I’m not sure. But I know that I love this and I love going to “work” (I get paid to do this!). I’ve tried managing large groups of developers. And in this field, the natural and somewhat self-defeating evolution of software engineers is to move into development management and eventually pure management.

If you put in your time in the trenches and get it right, someone is going to want you to manage a small team. Do that right, and they will have you manage multiple teams. Before you know it, you spend your days aligning fucking columns on a spreadsheet and nary a minute is spent on cutting code. After some time you lose the edge that got you there to begin. That’s ok for some. I personally can’t deal with that detachment. I need to feel the code flow through my fingers then drip onto the keyboard. I need to be in the mindset of the developer who built the library I’m using. Sure, I can take the word of some of my senior developers that some tech stack is the right choice, but I still feel uneasy. I’d rather make that choice myself or in conjunction with someone else. Confidence of a technology stack is attained by intimately knowing how to use it. I don’t think I will ever tire of doing this. Catch me in a few years just to be sure.

--

--

I’m a Staff Site Reliability Engineer @ Procore Technologies during the day and a small business owner at Lumino Vision in Georgetown, Texas.