Ask HN: How to start a career as a generalist?
Once I'm in a company I can make myself very useful by analysing, abstracting problems and telling people what they want from each other when they are having discussions and filling any gaps in front-end development. But because I'm no specialist in anything I find it hard to get my foot in the door. I could specialize or qualify in programing more, but I prefer the management and product owner work.
I'm 28, close to finishing my studies in "media and fine art" where I focused on experimental informatics, more precisely news distribution in the internet, interfaces and haptic feedback.
Wherever I worked I joined for some rather low-skill work and quickly become the one to organize at least the conceptual or technical aspects of the project.¹
I freelance doing some custom wordpress sites (those where you do need to write a bit of php) or small web implementations and work in a 3-4 person startup (unfunded, but self-sustaining by side-gigs). At the startup there is not much pay and I do some communications with customers and concept, design and frontend of a cordova/angular app. If this startup succeeds, I will most likely float on top and have a nice job, but not much equity.
Now the question: Where to go from here? The launch date for the first project of the startup is immanent, so I'll see how that performs soon. There is of course a lot of reason for doubt as with any startup, so I plan to look for a better payed job.
Thanks so much for the help!
¹ This way I went from flash animations (a few years back) for our client BMW to writing the specifications for a new outsourced MVP in one company (they offered me to become CTO on paper for the new child-startup, but for laughable pay). In another gig I moved from assistance to technical supervision of a short-film festival sponsored by the german state television.
60 comments
[ 4.2 ms ] story [ 141 ms ] thread2. Apply for jobs as product manager, or (a bit trickier) if you have the resume for it as technical manager.
I really have to get over the reverse Dunning–Kruger Effect (I know enough to know how much I don't know). In practice this is not an issue: if a problem is solved is farely easy to verify, but making statements is something else.
I will work on this :)
Granted, having any say about the product took time and the final decision rest with our CPO, but with your design skills you could make the segue over to product teams much faster, if you wanted to.
Thanks for the advice.
You match customer needs with solutions architected/engineered from your organization's product and service offerings basically, and support/consult with the customer about fitting your solution into their environment.
1) You've already started your career.
2) Companies (generally) don't hire "generalists". They hire people to solve their particular problems. You need to show why you're the right person to solve company X's problems.
3) Sounds like you're headed toward a product manager or program manager role, but need some more credentials to command that at legit companies. Starting in technical management is a good place. Learn an industry really, really well and then look into product manager roles.
Start-ups, on the other hand, seem to be a place where they like people who know how to wear multiple hats. It seems like you've got your foot in the door. If the start-up you're at seems like a dead end, start meeting people at other start-ups in the area and grow your network.
Pick something you like and get awesome at it and iterate from there.
I joined each of these startups in their infancy, and at that stage, even if wearing multiple hats doesn't get you hired, it quickly fast-tracks you to a position where you can have more impact in the decision-making process.
These startups were not just in tech either, so I think this is just generally true of startup culture. One was agricultural, one was food service / retail and only my current one actually has me coding, but I still found myself going all over the place with client/customer relations, marketing, spreadsheets, tech support / IT, etc.
What I like about taking these kinds of open-ended gigs is that it can really help provide you the experience and comprehensive knowledge that will land you better administrative / project lead roles elsewhere, as well as prepare you for striking out on your own without becoming overwhelmed.
More anecdata. I've worked as a generalist my entire career, always in companies with < 200 people. Mobile, web, desktop, api, windows, linux, embedded, javascript, sysadmin, netadmin, whatever. It's all the same to me. Point me at your weakest spot, and I'll make sure it's not your weakest spot, until the pain is gone, or you find a specialist. Rinse and repeat.
I've found that that startups (especially the ones that are far along enough that they can actually afford to pay you) are not willing to put up with the (perceived) time it takes to get a generalist software developer up to speed with their particular software stack, because of the speed at which they need to move. If they need someone to develop in AngularJS, they damn well need someone who knows AngularJS deeply and can hit the ground running, because they can't afford to spend time and manpower training you.
This is compounded by the fact that many startups overestimate the time and effort it takes for a good self-driven learner to get up to speed with a particular technological system.
In contrast, bigger tech companies tend to look for people with good smarts and algorithmic chops, because they can afford to take several weeks to train you in whatever they happen to use. They can absorb that time because you're not needed as urgently, so they don't hire as narrowly.
Source: I've been a consultant for 3 years out of the 5 that I've been a developer. I always grow and learn the most and get the most customer contact in these roles.
Not sure I agree. I work for a consulting firm. One of our main revenue sources is clients who hire us to fix the mess created by "experts". The difference is that we actually are experts in our problem space - as in, we have lots of experience and technical knowledge - so we can actually add value to our clients' operations.
Don't get me wrong: perception is definitely important. But the worst thing one can do is sell oneself as an expert when they actually aren't. If one is a generalist, they should figure out ways to package that in ways that will resonate with the clients they are going after.
Starting small is good advice, though.
The second is to join a general consultancy. This is going to make you rub shoulders with all types of devs. If you want to be a true generalist/full-stack type, this is a better route. You'll have mentors who can teach you server side code, SQL, deployment, security, etc.
I got my MS in CS and Applied Math (my BS was in unrelated science). When I got my first consulting job, I had strong backend and algorithmic skills, but very little front end experience. I found a mentor at that job who was a HTML/CSS expert, and I learned a ton from him. That job also made me learn how to setup CI, fix legacy code, and dig in databases to isolate data issues. Oh, and I definitely had to talk to customers. Now, I have no problems executing a full stack project from start to finish because I can extract requirements, design a UI, write the server code, turn the model into a schema, and deploy it all.
I recommend expanding to as large of an area as you can. I started as a full-stack developer, which is kind of a generalist role. Then I expanded to thermoelectric stuff, and then UAVs and batteries. Each of these things started as a personal interest.
If I were you, I'd find things you are interested in, and specialize in several of them as quickly as you can. Have you always been interested in hydrogen fuel cells? Spend a bit of time to learn as much as you possibly can about fuel cells. Know the cheap end of the market, know the expensive end, know the experimental research, know the size of the market.
The easiest way to get a job as a generalist is to get a "normal" job and convince the company that you can solve their problems in other ways. Going up to a company and saying "Hi, I'd like to be a generalist at your company" won't usually work, but "I'd like to be a full-stack developer with freedom to collaborate with teams throughout the company" will. Eventually, you'll grow into the "generalist" role and the company will recognize you as such.
The other, ideal option is to work for other generalists. For example, I was recently looking for someone who knows how to make CFD models, someone who can write assembly, and someone who knows about control surfaces. I would have hired a generalist who knows one or two of those three and could learn the rest quickly. I wanted to hire a generalist because I know that several months down the line, when I need something else, I can tell them "hey, I need you to do x now" and they can figure out how to do it themselves.
Here's an example of how I provide value as a generalist. A company hired me a while ago to improve the efficiency of their UAV system. Because I know about battery technology, I was able to build them a battery pack that brought the flight time from 9 minutes to 28 minutes, and cut costs by over 90%. Because I'm a full-stack web developer, I was able to build a web interface to control the system. Because I've worked on UAVs, I knew when to replace parts with low-cost alternatives and when to spend several hundred dollars on one motor. Because I've done UI/UX work, the system was usable without any training for everyone involved. And since I knew how to make these things "from scratch" there was no need to send things out to external agencies, and I was able to develop the system very quickly.
The hard part is convincing random people and companies that you're valuable to them. Unless you get lucky and find another generalist at the company that understands your value, you'll have to demonstrate it. But be careful. Only go to companies that have a semi-flexible structure already (e.x. don't try this at Microsoft or Apple.) Demonstrate your value with concrete things that can be done immediately with clear benefit. For example, at a lot of places I'm hired as a programmer, and I see a battery system that could be improved. I can go to them and say "by the way, you could switch out your current batteries for a custom pack and save $9000 per system, and I could build you that pack in less than an hour." If they like that, then the next suggestion I have will probably be an easier sell, and so on and so on until you've built up a role - official or unofficial - as a generalist.
Then, once you've been hired and start working, you will naturally use your other skills to add value to the company. After you've been with the company for a little bit and have shown your other skills to also be valuable, that's a good time to discuss getting more formal authority in other areas and/or a raise to compensate you for the duties you've taken on.
When I first started consulting I relied heavily on agents and agencies. Agencies are a challenge and it takes time to find the a relationship that knows how to put you in front of clients.
PMs don't code though. Not if they want to survive.
Not sure why you're talking about being a generalist but that word will kill any chance you have of getting a job unless it's help desk.
After a few years you'll find a groove in PMing that you may like and you can try to scope your world to that (certain project types or sizes, etc.).
My background is CS, but I've ended up in this kind of role and have worked in everything from helping out with Sales and Marketing to Designing Genomics algorithms...just dipping in to fill gaps where needed and dipping out again when there's somebody else who can fill it.
Generally the smaller the company, the more hats you'll end up filling and you'll learn more skills that way, enabling you to generalize better.
I personally tend to bounce between very small and very large companies and the ability to transition between skill sets has definitely been valuable in the larger corporations...I usually find myself starting in a discrete role and rapidly end up running a group or a department. When that gets boring I go do something very hands-on in a small company. When I want more focus, I'll go work in a large company.
The tradeoff is that I'm not highly skilled in any one field, but I can usually fill in for lots of foundational stuff to get something off the ground. I've worked in tons of fields, but would never really call myself a specialist in any of those fields, the people who are dedicated to those fields are far more skilled than I.
One bonus is I can usually take an idea and get some legs under a project very quickly, then flesh out real needs and start to fill those with specialists as needed. I've found that to be a very productive way to do business.
The key paradigm shift you need to make is this. You are probably viewing any kind of specific knowledge as a hindrance, a chain that will limit your freedom to do other things. In fact, though, it is the collection of such knowledge (as much as you can get) that eventually makes you multi-skilled hence free.
First, focus on getting depth of experience in one area. This could be front-end or back-end. These days you'll want to pick a framework and get really, really good at it—could be react, ember, angular, vue, whatever. But be really solid in that framework and the language it uses (modern javascript, for example.) Learn all the tools you use in that capacity (e.g. Chrome's web developer console, webpack, etc). Then branch out—for our hypothetical front-end developer, pick up another framework and learn it about 70-80% as well as you know your first. Or learn how to pull off an isomorphic React application and start learning about the back end.
This is the "right"[1] way to become a T-shaped developer. Once you start branching out into other languages or platforms or whatever strikes your fancy, and you develop some experience with those things, you get to be more of a "paint-drip" developer. [2] Eventually you've been a generalist so long that the area of your experience puts you on par with a mid-level developer in any of several areas, and you're well-suited to a career phase as a consultant, manager, etc. Then you become fairly expert in all of these areas and you can start gap-filling (e.g. learn devops much more deeply, learn design, whatever you didn't pick up the first time.) As a seasoned generalist, you'll be pretty valuable in startup settings, but fair warning, they rarely pay enough to warrant the time you've put into becoming a broad expert. Unless you've got founder-level quantities of equity take those jobs because you really like it, not for the illusion of an exit. It sounds like you're already coming to this realization, so that's one less thing to learn the hard way.
A word of advice in your current capacity—if you're not getting much pay, and you don't have much equity, is this really the startup you want to trade those things for experience with? Is it giving you a quality of experience that will open doors or increase your depth in a single area? If not, you're better off coming up with your own project and working on it to learn than giving your time away to someone else's exit. With your degree concentration in informatics and interfaces, you should probably look for a project that will focus heavily on those skills.
Best of luck to you in finding the path you want to be on!
[1] There's rarely a single "right" way to do anything, but what I'm describing is the way I wish I'd done it.
[2] https://www.facebook.com/notes/kent-beck/paint-drip-people/1...
But, for getting "established" financially as a human, startups with lower pay that may not succeed can make it more challenging.
That said, its been a constant struggle for recognition and position in companies. When people realize what we can do, they tend to either promote and support, or jail and exploit.
I find myself taking specific roles with a hope towards moving up in the organization. Often the role isn't what I really want to do but there isn't another way into the organization without that strategy. It takes time and doesn't always work out.
I've tried the consulting role, and very nearly kicked off a serious consulting company with multiple subject areas of focus. It is fun but in the end, you still get hired to do a specific consulting job most of the time, not just to be a generalist and give advice. One exception to that rule in my experience was consulting with startups.
You seem to have realized the startup path. I have worked for startups and that was pretty successful for the kind of person we are, but usually higher stress. Also, the startup hopefully pays well enough and is successful, otherwise you find yourself with some pay and some experience but no job when the startup deflates and back to "ok, what to do next"?
Others have mentioned product/project management. I've done that too. Product management has been a good match for generalists but without previous PM titles on your resume it can be hard to get the first role. Technical product management is a good way in, but make sure you know the difference between what a product manager vs a technical product manager does. I suggest Pragmatic Marketing training to get a leg up for this. Certifications can help for product or project management in terms of recognition.
Long story short, I love being a generalist and I feel we often don't get the respect we deserve. But it can be a hard slog getting through and we are a unique and valuable resource, just like specialists. We're just specialists in being general. :) So best of luck with your pursuits!
1. Develop skills that are rare and valuable
2. Do something useful and good for the world
3. Work with people you like
I myself have gone through a similar dilemma, being a generalist allows you to make informed decisions that sit between two disciplines. When the problem concerns both sides you ARE the expert. This is a specialist skill in itself.
If you are looking for something specific I'd highly recommend working in R&D this will give you the opportunity to work in a role where being a generalist really helps.