So I haven't been very diligent about keeping up with the whole blogging thing. I haven't updated a single thing on this website in over two months! I'm sorry, blog! I do have a pretty good excuse, however; I've been going on job interviews over the last few months, and in an effort to prepare for software technical interviews, I was spending much of nights and weekends solving short programming problems, the kinds that can be completed in a day or less.
While I wasn't unhappy with my job, I felt like my evolution as an engineer was stagnating, and that I had to leave if I were to ever level-up (and by "leveling-up" I'm not talking about promotions or titles but of getting better from a technical standpoint). I had hoped to find work in completely different areas, and the opportunity to do something totally different from what I had been doing. I quickly learned that moving laterally into new areas wasn't going to be easy.
Perhaps I was naive, but I had always thought that I would have the opportunity to work on all sorts of different things throughout my career. In school, I took courses in just about everything: cryptography, computer vision, security, web applications, 3D rendering, machine learning, etc, and I thought my career would go much the same way. And for a while, it was. I got my start interning at a console game company, then jumped into the emerging world of GPU computing, and later found myself in the wireless/embedded space at Qualcomm where I am now. When my 6 year anniversary at Qualcomm had passed and I had finally finished my M.S. program (which I had been working on part-time over the last 5 years), I figured it was once again time for me to jump into something new. Cloud computing, perhaps? Maybe something machine-learning related?
This time around, however, I got a rude awakening. Now that I'm a more "experienced" engineer (which I suspect is just a euphemism for "not so young anymore") hiring managers and recruiters only wanted to talk to me if the jobs they were trying to fill were identical to my current one. This meant that the people most interested in me were people who were looking for wireless/embedded folks. When iRobot reached out to me, I was ecstatic. I love my Roomba and I thought they might give me a chance to get more into robotics and possibly A.I. and path-finding. I was disappointed when the recruiter informed me: "Actually, we're interested in hiring you into our wireless connectivity team." And when Uber's self driving car team in Pittsburgh contacted me, I was hesitant (due to all of the negatives stories about the company) but intrigued by the possibility of getting to work on self-driving cars. Yet, when I got to talk to the engineer for the technical phone screen, he informed me that they were only talking to me because they were looking for a networking guy and they figured Qualcomm engineers know networking stuff.
The thing is, I completely understand it from the employers' point of view. I get it. They don't want to fill a job with an experienced engineer if his or her background doesn't closely match the job they're trying to fill.They don't want to hire a senior engineer and have them learn X,Y, and Z; they want to hire a senior engineers who already know X, Y, and Z. As an industry, this creates a kind of gravitational force that pulls engineers deeper into their own little niche. The Industry says to us: "Specialize! Stay in Yo Lane!"
At the same time, I wish recruiters and hiring managers would see things from my perspective. A while back, Toyota reached out to me about a job out in Plano, Texas that involved integrating Qualcomm modules into their cars. I asked him the same question I asked Uber and iRobot: "What's my motivation to leave beautiful San Diego to go and do the same kind wireless/embedded work in Boston or Pittsburgh or Plano, Texas?" After all, Qualcomm is the industry leader in that space. Here, I have access to resources like training courses and subject matter experts that aren't available if I'm working at Toyota or iRobot. So if I'm going to be working in the wireless/embedded space, if I'm going to specialize in that space. it makes a lot more sense for me to stay put.
Yet a part of me resists this pull to specialize. Obviously, specialists will always be needed and valued, but I've hoped that generalists with a diverse knowledge and skill set can be valuable to engineering teams too. I've always admired the multi-faceted Renaissance man, the "five-tool" player in baseball, the "two way player" in basketball, or the rare musician who can write, sing, and play multiple instruments well (R.I.P. Prince). I want to like James Franco but he just seems a little too annoying.
Organizational psychologists now understands that diversity is a great strength in an organization. We're told now that teams are often better when they're made up of a diverse group of people. Is it not possible then that a generalist with a diverse skill set can be a stronger contributor than a specialist with a narrow skill set? And if it is possible, a company should be able to justify hiring a senior engineer to learn X, Y, and Z, because that engineer brings with her knowledge in other areas that may make her a better hire in the long run than someone who has only been doing X, Y, and Z for his entire career.
Then again, sometimes, you just need an expert, and maybe this whole generalist vs. specialist debate is just counting the number of angels that fit on the head of a pin.