-
I've been at the same small company for over 7 years. I started at the bottom, worked my way to the top after 3 years, and I've been here since. For a couple years I created new positions for myself because I hate being stagnant, but there's nothing else to do here.
I'm proficient in many things and enjoy doing all of them. Development (full stack), server admin, data center management, DevOps, project management, managing teams, VoIP, routing/switching, training, sales... the list goes on.
My issue is I haven't had formal training in a lot of it, and I didn't have any mentors or people above me to teach me more because this company is too small. I just love learning and love moving forward so I kept teaching myself new things, and then using them in the company. I don't actually feel like I have impostor syndrome, but I also feel like someone that is filling these roles at another company probably knows/does it better job than I can. I'm just a big fish in a small pond here.
So finally to my question: what role/job title I should be looking for? All the searching I do points me to one specific roles. PHP Developer. Systems Admin. Network Engineer. Etc. Are there any other "Jack of all trades" out there that can tell me what your job title is, and what I could be looking for?
I've been acquiring small but promising businesses that don't have the right team in place to move them forward. I bootstrap them on my own and replace my roles as the business can afford staff. Once enough roles are replaced, I'm able to start looking for the next business. I'm on my fourth business now. Sold the first two, the third is a productized service netting seven figures, and I just acquired the fourth, which is a SaaS business that I believe has great potential.
Currently, I'm formalizing this method and will build a team that can execute it much more quickly than me alone. I'll be shooting for a new business every 12-18 months to build a portfolio. We'll have a group of partners and a small staff that will be focused on getting these acquisitions straightened out and growing, then we'll install a team to run them full-time and we'll go on to the next one.
So just taking what I've been doing for years and everything I've learned from it and scaling it up to reduce the timeframe from acquisition to growth and then operation of the business.
If OP or anyone else who identifies themself in a similar manner wants to chat, email is in my profile. I'm actively looking for people like us to work with.
I thought the same, that I was a generalist and I did also enjoy the variety. But a couple of things:
1) while I thought I was proficient in everything I actually wasn’t. When I went to a big company where I focused on a specific area is when I discovered how little I knew about the topic and how shallow my knowledge was.
2) I discovered that I enjoyed diving into a specific area and being a specialist there was also fun. Gave me a different kind of rush and ego boost, knowing I can solve deeper technical problems in a specific area.
3) you can’t be both broad and deep in everything. Best is probably aim for a T shaped skill set.
I guess short version is, maybe give specializing a go. You might discover that it’s both enjoyable and sets you up well professionally.
I had the same issues for many years, but the past 2 positions have been official "DevOps" positions and they more often than not have me doing so many random things that require all sorts of skills. I love it. It keeps things interesting, and it makes me very valuable to the company because I can do whatever they need.
Sure, some places have a very narrow definition of DevOps, but that's usually the large companies/teams. If you can find something a bit smaller, then you'll have more of a jack-of-all-trades role. At least in my opinion.
Something i learned about myself a little bit farther in was that I wasn’t a generalist so much as I was a serial specialist (once you haven’t touched something you used the be good at for seven years, can you still claim to be good at it? Turns out I can’t).
What you list sounds quite a bit like what devops was supposed to be but nobody does it that way. Instead you should probably look at small companies. In a large one the only way to wear that many hats is to stick your nose into other people’s responsibilities. At a small company there are gaps everywhere, and people are just glad when someone can fill them.
If you have any ability to mentor, you might want to look at lead positions as well, or think about what you need to get there. That gets you some management responsibilities but you still get to make things.
The challenge is endless, diverse, and there is no perfect solution to the problem if people. It is a strange domain, but being technical is nice when working with development. Worth a try if you are in to that
Wonderful, wonderful place to be a "jack of all trades," while also allowing you the opportunity to carve out a niche if you find you do become passionate about just one thing.
In addition to working in DevOps roles, there are a range of consulting opportunities that are diverse, which adds another layer of keeping things interesting. You can do work with small companies, large companies, government, schools, incubators. And you don't have to stay put. It's encouraged at Red Hat that you follow your passion. Allowing someone like you, to chase whatever happens to tickle your fancy at a given moment.
[1] Really, "Development (full stack), server admin, data center management, DevOps, project management, managing teams, VoIP, routing/switching" is a perfect fit for SRE, and SRE probably is the most in-demand and highly paid of all the related fields (software development, etc.).
Young (in experience) programmers need to move around a fair bit early in their careers, IMHO. It's good for getting perspective and seeing things from different points of view. But it isn't all roses and sunshine. It will be very challenging in a number of ways, but if you don't do it you will stagnate.
So what should you do? Get a job in an area and do your best. Don't try to do everything. Try to learn from others. Get to see their perspective. Do it wrong many, many times so that you can really understand why it is wrong. Or why (surprisingly) it is not.
But most important of all, don't try to do it all. I'm sorry to say this, but you are not a big fish in a small pond (yet). You are a fish that doesn't yet know what "big" means, or else you would have asked a very different question. What potential you have to grow will be determined by the attitude with which you take your next steps.
You’ll inevitably need to learn something brand new, and you get to pick your clients. After a few successful projects you start looking really appealing as a generalist.
Try Toptal or Moonlight, post on the monthly HN who wants a freelancer post, and reach out locally for clients.
Work is real experience, don't discount it. :thumbs up emoji here:
If you're worried about knowledge gaps, here's a badass career development project -> self-pace audit a quality CS degree:
- Find the required course list for a particular university, let's say MIT or CalTech.
http://catalog.mit.edu/degree-charts/computer-science-engine...
http://cms.caltech.edu/academics/ugrad_cs
- Select a sequence of courses based on their requirements.
- Go through each and every course syllabus and textbook to learn the big ideas.
- Write and keep notes in your own words to summarize each concept.
- If you get stuck on any concept, scour the internet, MOOCs and youtube until you get it. As a last resort, SO/HN/Reddit.
- Do the syllabus homework at a minimum.
PS: I was self-taught (Pascal, assembly, C89, C++, and Java), built beige PCs, was an assistant manager at a software store (Egghead), and had a sysadmin consulting company installed an ISDN modem, made NIX and Windows place nice and helped port a BWR/PWR simulator from NIX to Win32 before I was 18. Then I spent 10 years, money and took on some debt to get a degree that ultimately proved worthless trying to appease HR people and family... don't do that.
Look for Systems Engineering(not a title used much anymore TBH), DevOps, Site Reliability Engineering, Platform Engineer, Developer Experience engineer(or whatever).
A lot of these roles will be very cross discipline and non-functional. Always be on the lookout for cog-in-machine roles; DevOps can be "The buck stops at you for our companies site reliability" or "you write Chef cookbooks and test kitchen scripts all day".
Don't let anyone tell you your skill set doesn't exist. Let's face it, most college grads do the bare minimum of learning for their degree. Most people don't to TOO much more than what they need to keep their career viable. Being a "generalist" is like taking 20 electives you don't need to graduate; it's inconceivable to many people. Mediocre engineers and specialists will rail against the idea to protect their ego. Generalists will rail against specialist value to protect their ego. Don't get too caught up in the BS.
Be prepared to be pigeon-holed. Nearly every person you meet at your new employer will see your last job "title" and generalize you. Typically the only exceptions will be the recruiter and maybe, incredibly maybe, the hiring manager.
GL/HF
I really enjoy the work and I’m very rarely bored.
I do not spend as much time as I would like contributing to the codebase (the devs in my team do often a better job of it), but rather tend to act as a solution architect. I often bootstrap projects, do a lot of research and development, build proof of concepts, and overall push the team towards best practices.
I am very proud of some of my achievements (we are lucky enough to have freedom in the tech that we use and are currently testing out Elm for a small app, we moved the team from Java to Kotlin..) but I feel like I have lowered my value in the general market.
I would be curious to know in what form you contribute to your current team. I do not feel like my job is done here, but I am also going back and forth on whether I should get back to a more coding-oriented job, rather than doing my coding in my free time just to keep in touch with the craft.
Instead refer to yourself as a "Swiss Army knife" or something.
The reason is that "A jack of all trades." is often (mentally at least) followed by "Master of none".
I guarantee that none of the IT skills you have acquired will go to waste. Plus -- by choosing a fascinating area -- you might actually NOT BE BORED!
On the other hand, if you are at all hesitant, don't go to grad school. With the wrong adviser, it will chew you up and spit you out in tiny bleeding little pieces.
Just my 2 cents...
On the balance, I've found it to be remarkably similar to being a software generalist. You have to know something about everything and everything about something (I stretch a little, but my core competency is programming; the rest I learn as I go). You get to be engaged at all points by all people throughout the product development life-cycle. For my part, it's taught me a lot and definitely made me a more critical thinker.
Downsides include more red tape, similar mentoring problems due to personnel churn, and occasional tensions due to aligning more on shareholder than employee goals. Our project management is also a bit dicey.
I've toyed with getting back into programming full time, and the career switch has cost me a bit there. While I think my coding chops are still decent (I program daily and grab a few minutes sometimes for personal projects at home), my vocabulary has suffered, and that definitely cost me in recent interviews.
I got really surprised when I first read about the attributions. I had never seen all my interests forming such a harmonic whole before.
On the other hand, if you're really just looking for a different employer, then either find a similar position at a different small company, or go DevOps, because that is the one right now where the need is so desperate that they will hire someone with mixed experience instead of insisting on a specialist. But, beware, people who fell naturally into being a JOAT, often don't like becoming specialists after a year or so.
I'm currently working as a technical architect that allows me to do some low level work but also work across several areas/technologies. A senior support engineer might also do the same. I've noticed quite few integration jobs which might involve working across technologies. I'd apply for technical roles in your desired pay range and location where you have some of the skills and see what happens. You don't really know too much about jobs until you get there.
Some people really value a diverse skillset and others just want you to churn out x lines of Java code per day...
Sure, a broad skillset would make an excellent case for starting your own business, but I think that being a "jack of all trades" is a sign of a certain personality: great vision and engineering talent, but lack of disciplin to really follow through.
Trying to start my own business has been the most frustrating chapter of my life. I would drop projects regularly to work on something more exciting. I never got anything done until I randomly found a job with a good boss.
Good management is crucial. Someone who can keep up with new ideas and who can delegate the burden which comes with project work. The field is in my view irrelevant; you would pick up the skills anyway.
The next closest thing is Phone Stack Programming! That space has a lot of interesting challenges, and can leverage your current skills.
A good way to be the dumbest person in the room is to diverge hard. NLP, Security/Privacy, Image/Audio/Language Processing, Compilers, Operating Systems, Statistical Modeling.
I consider myself a Jack of all trades from the opposite side. I had 8 years industry work before my first opportunity to Full Stack. Hard switches are hard in every direction, but I am a big fan of "drowning to the top".
Very similar story. Beyond doing the full stack development of their web properties and internal database, design, IT, networking, I've created a marketing, seo, and advertising role handling all of that to bring in clients. It's a busy day but have automated as much as possible. Currently looking for something that checks all the boxes and that'll have me. Hardest part is remote is a must. Definitely don't have an issue traveling for work but relocation would be tough. Recently bought a house in the midwest with my wife.
My role at the moment involves doing several different things, some of which I'm not very good at, which tends to make my work quite difficult.
I find myself being envious of other members of the team who only need to do one thing, and don't even need to do it that quickly (they probably get paid the same, too). If I had their lives, I think to myself, I wouldn't find work so exhausting.
You can do any 'job'. If you have communication skills you are particularly well-suited to be a leader coordinating a team of specialists, connecting them and finding value in the overlap of their specialities.
Most of the people are too narrow now in my opinion. It is your great advantage that you can see a bigger picture than an overspecialized PHP Developer for example.
Another you might consider is starting your own business.
This path is not for most people. However, being successful as an entrepreneur does require a wide breadth of knowledge, and plenty of new things you'd need to always learn.
If you go this route, keep your (current) full-time job while you start building it on the side. Your one and only test of when you're ready to go solo is your ability to make consistent profit.
Promotions and ratings at my company are very subjective and political. I've had quite a few people over the past 4 years thinking that I was a level higher than I actually am (I'm a dev, people have even mistaken me a tech lead), one of them even offered me a next level position. The subject and technology were not interesting and it was a dead end career-wise (prior to my acceptance ofstagnation). But I have also had a couple of managers that say stuff like 'not everyone has the potential to get to the next level' or 'I hired you because I could see you being a senior dev or tech lead in a couple years, but I don't think that anymore'.
Basically, you might be better off just accepting that you hit your peak and enjoy the brief moments that you find yourself doing something interesting rather than torment yourself with looking for the next promotion or change.
Run a few product implementations at customer side and there will be no monotony.
If you grow older and start appreciating more the routine in your life you can go into product management using the knowledge accumulated on customer side implementations and finally consulting.
Given that, I ended up applying to jobs that satisfied two criteria. 1) I'd be on a good technical team, and not working as a sole developer on a project 2) The company has a great learning opportunities and mentorship.
From my experience, "jack of all trades" usually just means "all the things we need, at company X, right now", and one "jack of all trades" or multi-skilled position may not overlap with another, it's entirely context dependent. Thus, these positions tend to evolve from something else in smaller, less structured companies, and one option for you would be just trying to join a similar company!
As an example, at my current job over the last two years I've done data engineering, devops, sysadmin, security, machine learning, backend api, people management, product management, project management, and probably some things I forgot about.
It does help to have a core set of skills that you are particularly good at and experienced. Mine is data engineering followed by machine learning and devops (devops being a recent addition). I avoid boredom in those areas by building better systems at every company based on past experience and the specific business goals of the company.
I was a 'generalist' for most of my career. I had started, run and sold a successful business that required me to touch all parts of the business.
Until a Sales Director absolutely schooled me in the theory that underpinned his work. He seemed insulted that I claimed to be proficient in sales. It was an insult to his specialism.
I would suggest you really test yourself in one of these areas before claiming you're proficient. I've never met a single person who was proficient in all the above. I've met plenty of people who could trudge along in those areas.
I went through triplebyte as a generalist and it literally changed my life; I had lots of competing offers well beyond what I thought was in my reach.
My role is now 'engineering manager' but I was hired as a staff software engineer; but into an org on a stack I had zero experience with.
If I did it again I would probably do the same thing; but I would also be looking at sales engineering roles; something I wasn't really aware of at the time.
Find a great security team and hope that they will bring you on and mentor you.
Security is a great specialty for you in that it is very broad and always changing.
In the meanwhile your best bet is to market yourself to cash-strapped startups, pre-prototype to hack together the product/service. You might have to work for a dozen or so start-up that fail before finding the rising star; In such case make sure that you get enough equity so that, by the time "professional management" comes in, you're protected by your equity.
Even though a person has experience with lot of tools and languages, I believe it would be better to market yourself with specific set of tools/technology/language which are in demand. This has been my experience and worked out well.
If you have any questions, my email is in profile. Good luck with your search.
Tl;dr - figure out which of your experience areas align with an area that’s either lucrative to you or of high interest for you for other reasons, and pursue that at a large company. At higher technical levels, your soft-skill and cross-dept experience will further accelerate your career.
Since you'll most likely be part of setting up the deployment pipeline, you have to understand to some extend various git flows. You might end-up consulting developers on how to build applications that will run on a docker container, what are the best practices and what pattern the app must follow (e.g. circuit breaker) in a micro-services environment.
You surely will want to automate some management. So apart from DSLs like terraform and configuration management systems (puppet, chef, saltstack, ansible) you will have to write some API here and there, an application tailored around the need of your systems. This application might end up being written in python, ruby, golang or C.
Now, consider that you have build the CI/CD, the orchestrator, alongside the entire pipeline and logic to drive an application from staging to production. You'll most likely be on call and you'll have to deal with networking issues at TCP, HTTP or DNS level, load balancing, autoscaling, etc. You might have a say on that query which is too heavy because the data is un-indexed because, well brings down the database every now and then.
There is no role I can think of in a modern institution which has the breadth of technologies that an SRE (or DevOps engineer as they are often called) will have to gain expertise.
In short you have to be: A medium-level programmer in terms of concepts, have networking experience, learn dozens of new tech, face ever-evolving problems eventually at scale, design end-to-end systems, debug applications others written sometimes without having context, understand trade-offs of new tech stacks only to explain it to others (which might end in a PITA due to the back-and-forth but you'll eventually end up knowing lots of things you didn't ever thought about).
If you like all that, then an SRE role is ideal IMO even in medium to big corps.
NOTE: The role could be called SRE, DevOps engineer, Infrastructure Engineer and/or quite a few other things depending on where you work. Responsibilities tend to overlap significantly though.
All of these will use 50-60% of your skills.
Choose one such ecosystem to focus on, but within that can be many exciting things like Javascript and Python or Rust and Embedded.
Btw big companies like FAANG interview generalists all the time.
More likely than not this is not true. Dunning-Kruger effect and all that.
Especially if, by your own assessment, you are "proficient" in devops and sales.
>I've been at the same small company for over 7 years. I started at the bottom, worked my way to the top after 3 years, and I've been here since. For a couple years I created new positions for myself because I hate being stagnant, but there's nothing else to do here.
I've been there and I thrive on it to this day. There are ups and downs with this, but you have something that will serve you very well if you choose to have a change of perspective/attitude.
You can either take this as a blessing or as a curse. Have you thought about going into an executive role and leading the company in a larger capacity, and helping it grow further?
At a certain point you have to drop off all of these duties that you are performing so that you can leverage the people you have around you.
You may think you still enjoy doing all of these things, but this stagnancy is going to haunt you, because there isn't an infinite growth in these areas. People, and companies, like predictability. Your voracious appetite is an anomaly. And you can't keep it up forever, either, because eventually you'll just plain get tired of it.
>I also feel like someone that is filling these roles at another company probably knows/does it better job than I can.
Questionable. There are a lot of muppets in other companies that don't know what they are doing.
Did the company grow over the years that you were there? I'm assuming it's not as "small" now as it was when you started. If so, you grew along with the company and you have a very good grasp of how to introduce and manage things within a company over time as it grows (ie. transitioning/pain points).
>What roles out there fit the skill set of someone that is good at a whole lot of things, but doesn't feel like a master/senior in any one of them?
People here are already playing Startup Bingo bullshit.
I doubt working at a startup will satisfy you, because that shit will feel like Groundhog Day much like how it currently does for you. You'll get to go through all the same nonsense over and over again.
Furthermore, the startup hustle is far riskier (with even less guarantee of a payout) than the position that you are in, because your position is much rarer. Anyone can choose to start a startup. Very few people can choose to be at the top of the food chain in a company that is alive (and healthy, I hope) after 7+ years. You didn't stumble into this position by accident.
You can leverage knowledge you don't know you have to do things that you couldn't do at a startup, all while having financial backing, a solid team and processes in place.
>My issue is I haven't had formal training in a lot of it
Most of what you know that is vital (that you've dismissed, I think) has no formal training. I can get formally trained monkeys to sling code all day if I wanted to, and while it wouldn't be done as well as I would have done it, it would satisfy the larger picture and keep things moving forward. Sacrosanct words for "engineers" who keep themselves busy writing more useless unit tests I'm sure.
>So finally to my question: what role/job title I should be looking for?
Before you jump ship, see what options at the top of the company pyramid are available for you, because if you leave and go elsewhere, and if you market yourself as a "PHP Developer" or "Systems Admin", you'll more than likely just move the clock back by 7 years and have to start all over again, in a different company, doing the same shit you've done for the last 7 years.
That being said, I think you are a budding generalist and should continue to take focused jobs in multiple areas and develop your depth professionally.
There is a reason why generalists tend to be in the 40's and 50's: it takes a long time to get there.
EDIT: I want to point out that over 30+ years in the industry I can say that the "generalist" disposition is rare. MANY engineers just want to put their heads down, do their one task, and grind through life without ANY upsets. Seriously, I've left companies, come back after years of absence, and seen people doing the same tasks they were doing 10 years ago. That's fine if that's your jam, but having the desire to learn and grow and be new at things is RARE. So run with it!!!