The main topic discussed in this book, i.e. breadth vs depth is perenial delima also recasted in multiple forms such as exploitation vs exploration. There is no magic bullet in one side or another. The art of getting somewhere is very delicate balance between two. The best approach that has worked for people is either get lucky or find people who have made mistakes, analyze their mistake and, of course, get little bit less lucky.
I am a consultant, and i go through this process every new project. It isn't just getting a new job, its about new projects too at the same company.
It sounds really hard, politically.
This could vary from finding /building a pc for a new start when some one had forgotten to order a pc for them, fixing the BACS tape, doing initial deployments of systems including taking enough kit with us to build a network in case that had been forgotten.
The most interesting one was cracking nt4 to break into a client system - I got a break just on a power mac and didn't need to actually use all our sun workstations after ours to run a distributed attack (BT security / Squirrels) might have not been to happy (yes I did get authorisation)
Another option is that you can start your own (you mention this too). It doesn't have to be solo. From the experience you describe, it seems like you could partner with a technical cofounder and really compliment their skills. There's a lot to gain from experience like that and it can open the door to a lot of opportunities in the future that you don't know about right now.
You haven't made a mistake. You can provide a lot of value to an organization. You just have to find the right opportunity where you can do so.
But it's kind of sad that the place where I can get the most value is seemingly the place where my skills will be utilized the least. It just seems... strange.
Think of it like this: The kinds of lawyers who get a lot of "on retainer" type work are the best ones. Because those people will not often utilize those lawyers, but they want to make sure they're available when needed, because when needed, they need the best of the best and they need them now.
Google is treating you the same way. They want to make sure they best of the best are available for them when needed, and not available for anyone else. By paying you $MAX_COMP, they ensure that you're there when they need you, and its a cost that is worth it to them. They hope that you do some great things for them in the interim.
Your reasoning sounds right.
Like buying a perfectly functioning goldmine, only to close it solely to drive up the price of gold.
But you can have one of you want one.
A common reason people do 20% work is to test the waters of another area of the company. It's also a kind of tryout for you.
You do tell your manager in this case, yes. They're not supposed to say no. Hard to say what the range of responses is in practice. In my experience managers are supportive of this.
I'm in europe, I guess we are a bit behind on the pay scales but that's an absolutely incredible amount of money to me; I'm genuinely curious what you're being paid to do for that level of compensation...
A CRUD ceases to be a CRUD when one is dealing with Google-like scale and/or arbitrarily complex requirements behind each of those letters in the acronym!
There are no European companies on the list.
Companies that make enormous profits per employee can pay top employees a lot of money.
When people wonder why Americans work so much part of the reason is that these people desperately want to make it to the top where the rewards are lucrative. Is this rational? Probably not, because the top seems to get smaller in every field and most don't make it.
Also take a look at the BigLaw Profits per Partner. Top equity partners can make $4 million+ because they are at the top of a pyramid. Mostly this is in the US
Not using all of your skills can be a concern but you will gain new skills.
So... not that I think it's necessarily easy but how did you score such a lucrative gig at google? How can I do the same? Do they hire generalists? Thanks.
If you study Cracking the Coding Interview, and you know that book inside and out, and you feel confident you can solve all of the questions in it (you can ignore the Java/C++ stuff if you're not applying for one of those jobs) -- you have a /chance/ to get hired.
But there's lots of smart people with those skills who fail the interview every day.
Personally, I don't think I'd ever give up a software engineering job for a managerial position even if the compensation was higher.
Where these compensation packages are given so frequently (SV), it is very meaningful. It's the difference between being able to buy a home vs being forced to rent a 1-bedroom apartment.
Mortgage payments gets you equity on your home, which goes a long way in retirement. Rent payments disappear, and you will have to continue to pay rent when retired.
Nothing wrong with smaller companies and startups, but the pay increase and resources available in a larger company are something I would like to experience. Getting my foot in the door is a frustration though.
Both times it was as a contractor. The first time I was employed by a body shop as just simple staff augmentation. This was in the 2000s, but I believe they are still around. I think if I'd wanted to convert to full time it would have been a process, but I definitely got to meet employees and managers from the bigco (and connect to them on linkedin).
The second time was in the mid 2010s when a friend was at a big company (his startup had been acquired and then acquired again). The friend was able to intro me directly to the hiring manager's manager. We had a friendly conversation, I had a quick tech screen and they brought me in. That would have been no trouble at all to convert to FTE (in fact they had a conversation with me that began with, paraphrasing: "how much do you like money?").
I think the best way into a larger company as a generalist beyond the early stage of their career is an acquihire, but the second best is as a contractor. Risk is lower all around (well, except for you).
When some of the contractors went FTE at a previous role, their salaries dropped dramatically (though they were paying for their own health insurance through an agency).
I would not assume that individuals working as specialists for 10 years in a field are actually specialists. Too frequently I encounter individuals who have plateaued while their peers have actually become true specialists. There are many reasons why this happens, but rightly or wrongly, many specialists aren't what you might think they are. I'm sure a lot are actually anxious about their own abilities.
I'd personally suggest evaluating whether you are able to better set boundaries. Making a progressive change to your role is often a possibility but it needs understanding and navigation. That way you can keep what you like and get more of what you want. Switching to just being a senior developer as you've framed it might not be actually what you want, and there are alternatives to get what you want.
On starting your own business you have to come to terms with not doing everything. If you are successful you will get away from anything that is originally fun and desirable. A senior developer mentors folks and derives satisfaction from that activity. The trade-off is often less focused coding and delivery. They are technical leaders with more flexibility in how their work may look.
Your observation on running a business is good, but the key is the feelings that you'll have. If you are too tied actually doing particular tasks versus running a business you'll not be able to succeed. Also, be careful about putting down enterprise app developers. They often have a side gig outside of work that the stability enables. They also know how certain parts of big businesses function which would give your business a leg up. Startup people have good talk about product-market fit, but there are many companies you don't hear about being acquired which involve some enterprise software product that a startup would never land on. That said, the upsides to the approach are different.
So, if you want positions at large organizations, there will be more demand for specialists, and the reverse is true with small organizations. Whether you made a "mistake" or not, depends on whether you would rather work at small organizations, or large ones.
Note: yes, there are a minority of generalists at large organizations, and a few specialists at small ones, but the percentages are very different.
The other big one I see is that at a certain point companies can afford to shift from "duct tape it till we get funding" to "we have funding, we can spend time engineering solutions." Which also means that they go slow, write way more docs, etc.
I must be what the author calls "a well-rounded mediocrity", because my career path is nowhere near as direct as that, if I could be said to have a career at all.
On these lines generalists "generally" win. I find that when people talk about generealists vs specialists they focus more on number of things they can do. But its more important how you define the skill. You knowing and correctly identifying the data set for marketing team is way more valuable than actually being responsible for querying and putting the data together. Personally I try to spend more time on defining my tasks clearly, so that I can maximise my impact on the organisation. Hopefully this framework is of some help and you can relate to it. All the best friend!
I would like to add that after I stopped saying yes to everything, my career took a upward trend. It wasn't until I said: you know what I'm python-django specifically django developer, and won't do anything else, that I started getting progressively better jobs in the area I'm actually an expert on.
Then there is the business cut cost part of it, which annoys the hell out of me. Most managers will (conveniently) tell you should be open to learning new things, because "personal growth"... the reality of the situation is that you will end up over working yourself to death covering responsibilities that should be for a new team mate.
What I mean with upward trend is that I can negotiate conditions like benefits (remote, insurance etc... ) and a better salary, etc..
When I get bored I rewrite my cv and maybe skill up a bit on my own time (or at work) and re-emerge as a new xxx
I’ve gone from support to ops to development to ops to development to devops and I can tell you that I am 100 times more valuable in any role than someone who has specialised for ten years in the same role.
Being a generalist rules, embrace it and get with it just decide what you want to do next and make it happen.
YOU WILL BE AWESOME AT IT BECAUSE YOU HAVE DONE LOTS :) it
In my mind a generalist is someone who e.g. knows quant finance up to hedge fund snuff and knows how to configure wsgi/asgi servers with nginx; can read and rebate legal documentation and use an SMT solver. I don't feel that anyone who hasn't eg watched the recent Jordan Peterson/Slavoj Zizek debate and has a working understanding of Ripser and UMAP can call himself a generalist.
I watched that debate and found it a tedious rehashing of tired old talking points and straw men criticisms of Capitalism/Marxism. To use that in any way of a yardstick of intellectual depth seems odd.
The first hour was Jordan Peterson making a hacky point that capitalism is good and communism's not and Zizek doing Keith Jarret-type improv touching on a thousand topics. Then in the actual debate rounds Zizek got Jordan Peterson to agree with him.
It was an actual debate. There was a winner and not in the sense of a rap battle. The loser was happy to have had it.
Why is the term "generalist" so tightly constrained in your mind?
Allow me to try to help alleviate that mistake feeling. :)
I specialised the feck out of my role[s] over the last x > decade, becoming an "expert" in Exchange in a FAANG (one guess as to which one).
It got to the point where I was debugging native code issues in Windows and making code changes to the Exchange product (as a whole), which was distributed across the world.
Now, during this time, the "cloud" went from being a niche thing to being the predominant player in the market. So, whilst I was !pde.deep in a thread, people were learning CI/CD, Azure, AWS, etc.
So, imagine my dismay at having one day been asked to seek opportunities elsewhere and, resultantly, coming to find the descriptions and requirements for "Software Developer" or "SRE" positions in the "real world".
Niche skills are good because they take years to develop and you learn skills that can help you understand/rationalise other areas that you may not have gotten before that experience occurred - but those skills can also become antiquated, quite quickly.
No one's looking for anyone who can debug native or managed software clients, anymore. No one's even looking for SDETs, anymore, it seems.
In other words, on paper, code changes/fixes that have been delivered to millions of people might be somewhat impressive but the lack of any CI/CD in production use (because other teams owned that) means an even more glaring "hole" in my experience - that someone else has and could more easily fill that role.
Companies want "right now", not "has the potential to learn this skill very easily and very quickly".
So, I had to have a huge learning curve transitioning back to the common market (and that's not a complaint, by the way, just an observation), which hindered my ability to obtain gainful employment for quite some time.
So, don't think of it as a mistake. Compared to you, I think that I've made the mistake: I'm envious of those who shifted around the start-ups and amassed quite a bit of skills, which made them far more relevant and marketable to the current market.
I've done a lot of Rails then dived deep into mobile dev (native iOS & Android). I also dealt a bit with embedded and ended up as the bridge between a taiwanese team and a french one. Contractor life can be interesting :p
As you, I sometimes wish I could just stay in one role in a bigger company but I feel like I would not be able to fit in a box for long.
I started off in the software field as a developer. I've been in the software field for almost 10 years but I've only actually spent two years as a full time developer. I've also done project management, product management, marketing, customer support, and management. I find myself struggling to fill one of those individual roles because I don't have the same level of experience as those who have dedicated themselves to those for the full ten years.
I'm currently a VP of Engineering for a small company. I know most would probably say that I've made it, but I'm looking for my next opportunity and struggling. It's hard to get a job at a larger (200+ employee) company as each role filled is expected to be specialized and focused. At a smaller company or startup, though, I kick the crap out of anyone else applying because I know so much more about the business in general and can wear many different hats.
In addition, I feel a strong benefit is that my experience enhances my ability in each other role. For instance, if I'm working on a marketing email campaign, I can use my developer skills to pull relevant data from the application that helps me focus my targeting. If I'm developing, I will specifically build small helpful tools for customer support and marketing departments because I already know what they want and they don't know they can have it. It takes a small amount of time but provides a big value.
I would probably also have a leg up on starting my own business compared to someone who has a deep specialized knowledge of enterprise level applications but no idea how to put together a customer support and good user experience.
Still, we are always looking at the greener grass, and there are times when I wish I could just apply for a senior developer role at a larger company and focus on one thing. Somehow, I don't think that my lack of React experience will be made up for by letting them know that I will be able to directly interact with the customers or set up marketing campaigns. They already have 5+ people doing those things.