Ask HN: Becoming T-shaped
https://news.ycombinator.com/item?id=10031544I'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!