Where Do You Want to Work?
"Which technology should I learn?" is one of the hardest questions any technologist must answer. It is also the most important. With the pace of innovation and change today hesitating for a moment is likely to put you way behind your competition. Specialists get hired and paid more, not generalists. In a field like web development this risk is even greater. Fortunately there is a rather simple method of determining the answer: decide what you want to do with you life.
Simple to say, hard do do, but probably not as hard as you think.
So Much Tech!
Today I was working with a student trying to make this decision himself. We briefly discussed all of the following and how they all fit together:
- system administration,
- elastic services hosting,
- continuous integration,
- front-end web development,
- back-end web development,
- full-stack web development,
- deep-end development,
- continuous security auditing,
- server patching,
- enterprise change management.
That isn't even close to covering everything.
We live in a time when there is so much tech to choose from that even knowing what is out there is a full-time job. How is anyone—especially a beginner—going to know which path to take?
This can get very frustrating even for the most experienced veterans. The web people coined the term "framework fatigue" for that feeling of being constantly bombarded with new stuff that they have to master and integrate into their projects to be current.
The key to answering this question is knowing what you want to do—not just with your life—but with every hour of the day while you are alive.
What are the specific activities that you enjoy?
Do you like people?
Do you live for the terminal and typing on a keyboard all day?
Are you more of a graphics person?
Do you need to move more than the minimum to stay alive?
Do you enjoy solving problems?
Is putting out fires more of your thing than building something that could potentially cause a fire?
Are you good with your hands and like working with gadgets?
How good are you at visualizing things?
There are hundreds more questions that any sort of career guidance survey will have, but here are some that I realized today I have never seen anywhere. I'm starting to think they matter even more than all the others:
Do you like the idea of working for a big organization?
Do you prefer a small, start-up feel?
Are you comfortable working gig to gig on contracts?
How mobile are you truly?
Do you absolutely need to go into an office with peers?
How much money do you really need?
How important is influence to you?
Would you be good just doing what you are told?
Will you be miserable unless you know what you are doing will make a difference that matters to you?
Do you have people depending on you? What company would meet their needs best?
These questions identify the type of company you would enjoy and therefore where you would most likely do your best work.
It is easier to know what tech to learn when you know what type of company you wish to work for—or even better—the top 10 companies you specifically would love to work for if you could apply today.
Accidental Life Lessons
Your answers will change dramatically over time.
When I was in college I knew that being a river guide or cruise director was not going to be a profession I could do for a long time—especially later with a family. I did know I had to do it then if at all of I would never be able to do it again.
What does that have to do with what tech to learn?
It meant that I dropped tech for a while and learned everything I could about wilderness first-aid, survival, fitness, and the outdoors. Knowing the job I wanted changed all my learning priorities dramatically, so much so that learning any tech would have distracted me from my specialty in that job.
Later the web came out. Remember that?
No one believed me when I told them it was going to be huge, no one, not even my wife at the time. She tolerated my rants about how big it was going to be.
"One day you will see these web addresses on the sides of buses and every television show!"
I knew I wanted to be involved however I could but there were no companies that dealt with that stuff, until there were.
I called Xmission in Salt Lake City, Utah who provided my PPP dial-up connection to the Internet. I knew I wanted to work for a company like it but had no idea what I needed to learn.
I will never forget the day I called and the engineer I managed to get on the phone spent some time discussing it with me. I asked him one specific question without any real fore-thought. The answer was perhaps the most important bit of information of my career.
"I realize I'm not ready to apply to your company right now, but would you mind telling me one thing I could learn that would make you hire me immediately?"
"Learn Perl," he said.
I had already been doing HTML before there were books on it having seen it come out in college.
This advice was different than learning about the next coolest tech. It was specifically the greatest skill needed by my #1 pick for a company to work for.
I bought "Learn Perl in 21 Days" and did just that. I remember reading in my ship cabin with my pregnant, patient wife in the other bunk while still working on the cruise ship in Russia. I installed Perl on my mac and hacked around with it making little programs and doing the assignments. Messing around with a thing is always the best way to learn. Learning is messy. It's just a fact.
Because I had already learned HTML and had learned more Perl than anyone within probably 50 miles I was ready when a similar company opened up literally next to my apartment, FiberNet.
When I walked in I was ready. They hired be practically on the spot. I became the Director of Sales as well as the Webmaster. I coded the first open form-to-mail processing service called
fb.pl in Perl and quickly learned how to tweak it and build other CGI scripts.
All of this tech is way out of date now
The point is that because I had envisioned and even called the company I wanted to work for asking them what skills they needed above all else—without any false pretense, pride, or agenda—I was ready when an opportunity at an identical company emerged.
What about me?
So to you I say again identify the companies you envision yourself working at. Then do all the research you can—even interview engineers and hiring managers—about the needs of that company. Most companies will be flattered to learn how much you have researched about them before even making the call.
Reach out to friends and family that you know that work at the company or one like it.
Identify specific individuals who work at those companies and stalk them on Twitter to hear everything about what they do. Twitter is for who you want to know. [Facebook is for who you knew.]
Get recruiters involved in helping you make this happen. In the gig economy everyone needs an agent. Find one.
As soon as you identify a few companies isolate their biggest needs to two or three specific technologies. Then dive deeply into them and don't come up for air. Master them. Produce a lot of tangible proof that you know them. Become absolutely indispensible. Do it as quickly because the need will likely change in a few months and be something new. Don't worry. You can always ask again and adjust your learning plan.
What Does the Company Have to Do with My Tech Learning?
Unless you are learning code to build your own company or have fun making your own stuff your primary goal in learning any tech skill is to bring value to your employer. It is remarkable how many beginners lose sight of this focus, even after they are hired. It is not about learning and using cool tech, it is about adding value.
For example, if you want to work for a bigger organization such as a bank or multi-national not-for-profit you are likely going to be forced to learn very old technology. It is pretty much a law of physics that unless you are talking about a tech giant a large company is going to still be using things like AIX, PHP, and gobs and gobs of Java. I remember one vice president telling me how proud they were of their Ruby on Rails project.
I once told our engineering lead at Nike about Linux only to have him put it down, forget about it, and—a year later—approach me to ask if I would be ok if they changed the Solaris machine hosting Nike's Intranet into a Linux server. I did not have the heart to remind him.
Can I Get a Job with This?
I often have to explain to students that I am forced to pick from among emerging technologies that I feel will be cresting, surfable waves by the time they enter the work force. So far I have nailed it, most prominently with calling Go as a leading DevOps language five years ago about the same time we threw out coding in Java for Python, which is the fastest growing language in the world by all indicators at the moment.
Still, one of my best students is currently on a paid internship where he is essentially forced to use Python Flask where a microservice in Go would be a far superior solution. [By the way, to my surprise most Python development is still back-end web applications and not data science related.]
The company employing him has certain considerations that require this decision. When you are an intern you get to work for some companies you might not pick for yourself. That helps you make the decision. Another big company down the road, Duke, notably hired a lot of Go developers recently.
Tech First or Company First?
"But I only want to program in Go."
That would be me, for the most part.
Although picking the type of company you want to work for the best to help beginners decide which tech to learn another approach—usually later in life—is to survey a lot of tech and pick what you absolutely love. Then find that companies that employ people who are good at it.
This approach is more difficult because you have to be willing to work wherever the work is that pays for your preferred tech skill.
Take game development, for example. Developing a video game in Phaser or Unreal Engine is a skill only a very specific set of companies are hiring for and those that do are very competitive. This is not unlike wanting to become a performer. If all you want to do is perform you have to be prepared to take whatever work you can doing it—initially.