I started with C/C++ and wrote games and played around with game engines. I learned PHP and SQL to generate basic "dynamic" sites. I learned Python and wrote commandline tools and Qt applications. Moved to Flask/Django to create websites and extended my knowledge with JS, React, and learned how to set up servers. I played around with security, reverse engineering, exploit development, web hacking, and malware analysis. I'm learning Elixir now. I've dicked around with arduinos, raspis, and simple circuitry. I've put in place devops processes and tools where I work. I dabbled with image processing, VR, and interactive experiences. Yet I wouldn't consider myself particularly knowledgeable in any one of those things.
There's people who find their niche and they learn more about it each day and never tire of it, but I can't seem to find that thing myself. At work I often do a number of different things, so again, I'm not solely focused on one thing.
The biggest issue is that it makes looking for work difficult as I can't say I'm an expert in say micro services, or I'm a React pro, nor that I am an expert Python developer.
Apart from saying you're a "generalist", how do you best sell yourself when you don't have a specialisation or a specific area you are focused on?
- Distinct talent in problem identification/discovery (i.e. see problems other people miss before they cause pain)
- Consistently producing designs that address the core problem in a general but extensible/flexible way (i.e. design to solve a class of problems rather than a particular one)
- Deliver [r]evolutionary value (i.e. produce solutions which amplify/multiply the value the rest of the team can deliver)
- Being confident out of the spotlight (i.e. trusting that my contributions will be valued and recognized by my peers and leadership even if it doesn’t show up in end user release notes or investor decks)
All of that adds up to my career increasingly being focused on library development, process optimization, tooling, plumbing, etc. It’s personally more gratifying to me than a lot of shiny feature work, and it improves the lives of my teammates and in turn the work they can produce.
What we all do is we omit a ton of stuff from our resume and narrative to make it sound like we fit better into these artificially small roles. If you get bored with a single role, work in a early startup where you can wear a lot of hats.
But again, I'm still asking myself: what's next?
As I write this, I don't think I'll ever have it all figured out. Don't know if I will ever figure it. However, it's part of the journey and along the way, I found a lot of comfort is Susan Fowler's post: https://www.susanjfowler.com/blog/2017/5/21/life-without-a-d...
The bigger thing is the convince employers of this fact, however, which most people won't understand to be true. Instead, therefore, of making just one big resume with all of your experiences, make resumes for disparate fields: full stack resume will only contain full stack experience; same for data science, devops, and so on. This will make you seem like a specialist. Don't lie but don't downplay your experience as well.
There may be multiple paths and sometimes finding the best one is a process of trial and error. Your intended destination can even change midway because of what you learn in the process. It also helps to develop a unique perspective on what you're doing, as that can help you bring you value to a project without necessarily being pigeonholed into a specialty.
What is a single most valuable thing was there for me?
Not money, fame or generic socially conditioned stuff.
But uniquely mine thing that I found there.
And for me the answer was “the process of creating something new”.
(For my wife it was “fixing things”, she likes to fix people as a psychologist and even fix our dinner :)
As simple as that!
And thanks god I’m smart and flexible enough to create something new either on stage as an actor or in my Mac as a developer.
And I don’t care about all those employers who miss my point.
There’re always like minded people out there.
It's actually the ultimate thing.
Those other guys with a thing like, say, SQL or LAMP or maybe java etc etc, they can't learn totally new things, or they would.
A made up example: I used to do Windows programming, progressed to websites and the back ends to support them, learned SQL and DB optimization, sprinkle some 3D programming in there.
Generalist? Nope. UI expert with 20 years of developing UIs across multiple platforms. Additionally, I spent time learning some of the back end like services and SQL so I can better understand the interface between the UI and the back end developers.
The point isn't that you have a current 'thing'. The point is that you went deep into some of these past things as deep as necessary and should be able to tell the story of how that went. This is one of the parts I always cover when interviewing for senior devs: tell me in your own words of a time you went deep into a problem and came out with a solution. If they can tell a coherent technically detailed story then they had first-hand knowledge of the issues and how the solution was found and applied.
Edit: A different perspective is that no company of considerable size needs a generalist dabbler, they have specialists in relevant areas. A person like that could be versatile as they could be part of any team or project but isn't indispensable. Probably better to work at smaller companies where wearing many hats is a definite plus.
"I have a talent and process for evaluating new technologies at a systematic pace. This will allow me to produce the necessary POC that would help you to decide if a piece of new tech is the right fit for your business problem."
Usually that's the job description of an Enterprise Architect or a Solutions Architect. They usually start coding stuff for a POC, or put in initial devops tools/processes, dabble with new tech but not deep enough to be a specialist.
Interested people are interesting. Talk about the things you tinker on with a shine in your eyes.