Saturday, March 31, 2018

Reflecting the Midpoint

This month marks an anniversary of sorts for me: 20 years of writing software as a full-time job.  Coincidentally, I'll also turn 45 this year.  Assuming the "usual path" toward retirement, these numbers mean I've got 20 years of coding "under my belt" and another 20 years ahead (notwithstanding a disruption from winning the lottery, changing careers, untimely death, etc.).  So I find myself at a career midpoint.  Huzzah.

Below are some partially-organized thoughts/musings/observations/whatever related to "tech work" that I've come to believe/understand over the years (subject to change in the future, of course).  FWIW, FYI, IMHO, YMMV, etc..  Enjoy (or don't, I can't force ya...!  :)  ).

ABL: Always Be Learning

Take a page from continuous integration and continuous delivery: strive to be a continuous learner.  May seem like an obvious goal/"good practice" to many, I'm sure.  But I've been at several places with folks who were "niche experts" in a very particular realm, who didn't feel the least bit obligated to broaden their knowledge.  When the layoffs came through, these folks suffered mightily finding their next gig.  Even if following the latest-and-hawtest tech frameworks/languages/tools/trends isn't your bag, just learning something different/new-to-you every once in a while can go a long way.  You might learn some stuff to make your current job easier, you'll definitely have new items for your resume (giving you new talking points for your next interview!), and, heck, you might even put yourself down a new career path!  As a related aside, I've found that jobs where I am surrounded by folks smarter than myself and/or are involved in other areas of tech outside of my personal career focus is a GREAT way to learn about new stuff without even trying.

Adapt or Die

By no means am I encouraging folks to blindly hop on the latest tech "hype train" barreling down the tracks (and there are just SO, so many hype trains these days...).  Rather, be open to new tools, new approaches, new processes, new ideas, new anything.  I love how git has made my world of code management so much richer than Subversion (or CVS, gag...) ever could.  And "pair programming" was something I only started trying 2 years ago, and now I "get it".  I'm a big fan of continuous integration as a best-practice and appreciate how much traction it's had over the last few years.  That said, I still use vi as my day-to-day editor (hey, it does syntax highlighting and I can work really fast in it!).  Clearly you don't have to drop all your "old" for "new", but don't shut-down or shut-out stuff just because it questions your understandings/beliefs in how things "should be" in your tech world.  It'll be a lot easier to pick up new skills (and land that next job!) if you keep your mind open to "new".

IMPOSTOR!

Ever feel like you've gotten a job you aren't really smart enough for?  Or promotion to a title you aren't qualified for?  Don't sweat it, most folks feel like an "impostor" at various points in their career (still happens to me at times!).  Take a deep breath, try your best, and be honest about things when they come up.  Did you get put on-the-spot by someone with a question about technology X (which you don't know anything about but feel like you should, since you were recently promoted to "Senior Software Developer")?  "Let me dig into that and get back to you."  Realize you aren't going to make next week's deadline because it's taken you longer on the deliverable due to ramp-up/learning effort?  Be honest with the boss/program-manager (and do so sooner-rather-than-later).  Loads of other folks feel like an impostor at times, you are definitely not alone.  Work to own those feelings and manage them.  (Note: this advice does NOT apply if you represented yourself in a fraudulent manner to attain your position; if that's the situation, then good luck with that...).

Look for the Silver Lining

I joined my first startup company in 2001.  The company was securing plenty of funding, the product was exciting, everything was coming up roses.  Employees were having water-cooler conversations about extravagant splurges they were considering once the company took off.  The company connected our managers to "wealth management" professionals for when the "ship came in".  It was an exciting and enthusiastic time.  Right up until it wasn't.  Funding dried up, mainly due to the product's lack of traction.  I survived five rounds of layoffs before I quit the company for another job (the sixth layoff round, which would have caught me, happened one month after my departure).  There was no huge payout, the exercised options were worthless.  We were bummed, our families were bummed.  Seemed like it was a "failure".  But something really cool had came out of this, something I wouldn't have considered had I not been through this experience: my former coworkers had, in an extremely brief period of time, become a sprawling network of folks at MANY tech companies all over town.  It took me a year or so to understand how awesome this really was (see the "It's More About People..." section below).  This "silver lining" has been hugely beneficial to my career over the years, I can attest to that.

It's More About People, Less About Companies

Metaphorically and physically, companies come and go.  To be blunt, companies don't GAF about you, it's the *people* at those companies who do (or don't) care about you.  It's been my experience that only a small number of people, statistically speaking, who you work with will ever really care about you to the point that they will go above-and-beyond when you need it.  Appreciate the heck out of those folks and do the work to keep those relationships active even after y'all no longer work together.  More broadly, it's worthwhile to provide appropriate care-and-feeding to your tech network.  It can be liking someone's post on social media, dropping someone a note, or meeting up for coffee or lunch.  Keeping connections current with folks you've enjoyed working alongside can help keep you in their mind (and vice versa) when a position opens up that might be a good fit (it also lets you "get a pulse" on what else is going on in tech around town).  Lastly, be a developer of people!  If you work with someone who has an appetite to learn something you know, share with them.  It's a great way to connect with folks, improve their skillset, and improve your own understanding of the subject.

Enjoy What You Do

As much as possible.  It's good for the company you work for, it's good for the people you work with, it's good for the people in your personal life, it's good for your mental well-being.  Not enjoying your current gig?  Is it something you can fix (or get fixed)?  Sometimes a change of project or transfer to another team might correct the issue.  Maybe some non-compete side work (consult your hiring agreement, of course) may ease the ennui.  Is the situation beyond (or "not worth") fixing?  Issues with upper management or being "at philosophical odds" with the company leadership/direction might mean time to look for another job.  While job searching and interviewing can be stressful, it affords an opportunity to meet new people and learn more about their company (and current projects/needs).  And landing a new job you're excited about is a huge attitude boost (duh)!

STFU Already...

Certainly I've made a few missteps on my path over the years, which I've tried to learn from (hence this post).  Take the above for whatever it's worth .  Living in an area flush with tech opportunities, I've had a pretty great ride so far.  Looking forward to the next 20 (or 25 or 30+) years of it!!