|
|
|
Ask HN: Becoming T-shaped
|
|
11 points
by gnikflow
3965 days ago
|
|
I'm 6 years into my software engineer career (first 3 as a consultant and the next 3 at a startup). From that experience, I can basically take any idea (or startup) from day 1 to around year 3. I can: register the (sub)domains, setup email, setup all servers on almost any provider (aws, rackspace, linode, digitalocean), setup git on github/bitbucket and manage deploys/versioning and continuous integration with jenkins, manage bugs and teams in jira across multiple projects, take an app from nothing in most languages (java/dropwizard, groovy/grails, ruby/rails/sinatra, node/express) to an app/api that meets almost all business requirements, write data heavy frontends for admin panels (backbone, angular, react more recently), setup and administer databases (postgres, mysql, elasticsearch), setup and implement caching strategies in redis, and setup queues/background jobs. Despite feeling confident about my experience, I feel like it would be easier to interview right now if I had just stuck to java for the past 6 years and practiced algos/data structures slowly over that time period. Now that I'm more mature and I've seen the landscape, I want to do two things:
1) Gain a deep understanding of a single language/ecosystem.
2) Get deep expertise in a particular domain. Things that innately interest me include graph problems (vehicle routing), distributed computing (things like kafka), and machine learning. I really want to dig deep and get good at one of these longer term. Beyond personal interest in these domains, I want to be in a better career position in 4-5 years, so perceived future demand for the skills would weigh in to my decision as well. Any advice on any of this would be greatly appreciated! |
|
So, what would I make the new "vertical bar" of my own "T"? I'm leaning towards two somewhat parallel tracks: And both of these involve things that were on my "horizontal bar" going back sometime anyway, it's just time to start emphasizing them more. One, is Semantic Web / Artificial Intelligence / Cognitive Computing stuff. And related, but not necessarily exactly the same is Big Data / Machine Learning / Analytics / BI stuff.
I expect skills in those areas are going to be valuable for some time to come. I started digging into the SemWeb stuff several years ago, actually, but I wish now that I'd started investing more into machine learning a few years earlier.
As far as how to do that? Well, read and experiment and build sample projects for yourself... the same things you'd do to learn any new skill. There are a number of good books and websites out there. I'm reading Machine Learning for Hackers now, and also playing around with things like Mahout, OpenNLP, Giraph, and Spark with GraphX and MLib. I'm also looking into learning R, as it's widely used in that analytics / machine learning world.