I'm 22 years old and I'm spending my every free minute reading about many topics. Some of my teachers told me that it is time to specialize myself and I don't think I'm ready to make that decision. I don't want to be a Microsoft guy, SAP guy, PHP guy, Virtualization guy, Networking guy etc... I would really like to be "a little of everything guy" but "a little of everything" could not get you a nice paycheck, even if you know a lot. (Am I wrong?)<p>After a few years of BI development on my full-time job, I'm getting tired of creating some localized and specialized app for a small group of people who use my software and curse me on a daily basis. I mean, I was perfectly happy when I was a junior developer and when I didn't know everything I know today about web development.<p>I'd say that I'm interested in machine learning, recommendation algorithms, big-data analytics. What if, after 4-5 years, I get really good at that field and get bored? I'd say it would be too late to change to something else.<p>How did you choose your field of specialization? Are you happy with your choice now?
Specialization is for ants (and fields that are incredibly heavily developed with huge bodies of knowledge and accepted fact...so not programming).<p>Since I was a kid I've used interpreted languages on DOS, compiled languages on Windows, interpreted languages on Linux and compiled languages on Linux, I've written 2D games, Line of Business Applications, Websites and stuff for college, I've learnt and forgotten numerous languages, used multiple database systems hell I've even written VB.<p>None of this is to brag, it's to make the point that unless you are lucky enough to find a niche you <i>really</i> enjoy the chances are within 5 years most of the technologies you choose now will be either obsolete or so mature that they'll likely be obsolete soon, learn the basics of lots of things, learn the not basics of something and then do the things that interest you <i>and</i> have a commercial value first, do the things that only interest you on the side.<p>Also you can almost be a specialist at not been a specialist (at least in a subset of fields, these days I can build you a stable reliable solution, write the code, deploy the server, handle the backups, write the unit tests and deal with the customers) I'm acceptable at most of those and good at programming, it's enough.<p>One final piece of advice: Have hobbies away from a computer (they can involve one but not primarily), Cycling, Jogging, Yoga or something that gets you out the house, 35 year old you will thank 22 year old you, trust me.
> I would really like to be "a little of everything guy" but "a little of everything" could not get you a nice paycheck, even if you know a lot. (am I wrong?)<p>Depends on how good you are at your bit of everything and how well they tie in to one another. Also where you work.<p>> How did you choose your field of specialization? Are you happy with your choice now?<p>I'm 31 now, went to College for 1.5 years for Web Development and then became a Flash Developer working at a big tech company for 10 years. I'm now working on my own startup. I'd consider myself full stack developer now and I'd say I'm good at design. I just did what I was interested in. I mean 10 years in Flash and now the technology is dead but whatever. I learned a lot and much of it was transferable into web development today.<p>The key thing is to just keep learning. You can never go wrong if you keep learning.
If you pursue a specialization and get bored, you move on from it. There's not a lot of drama to it and a lot of your skills will be transferable. On top of that, it sounds like you'll naturally keep investigating new areas as you go along, so your own transition -- if/when it comes -- will be even easier.<p>Provided that you're drawn to something that can get you work, just go for it.
The Blub paradox is instructive. It's hard to know what's good about a language or specialty if you don't understand it. So: learn PHP, learn virtualization, learn lisp, Forth, VB, C++, ML algorithms, statistics...the list goes on. Don't forget to learn the business side; basic managerial accounting, how to sell, how to manage, etc.<p>And then, of course, have a life, too.