Ask HN: How to best utilize a 6 months sabbatical to improve technical skills 24 points by vazirthrowaway 25 days ago | hide | past | web | 9 comments | favorite I currently work as a software engineer and have around ~15 years of experience. My current job is not bad and the technologies I work are current and emerging ones. I do actively spend time keeping tab on changing trends, and to keep pace with them. But I feel that my learning is shallow. Though I get a hang of new things I am not able to devote enough time (job/family commitments, commute etc.) to focus and develop depth in some of the areas I am interested in.
With an intent of improving my tech chops I am thinking of a taking a break of around ~6 months (leave the current job and look for a new one after ~6 months).
During this period I plan to improve my tech skills with focus towards distributed systems. At the end of my break I look forward to work in developing solutions that involve distributed systems or work in setup, management, and monitoring of complex distributed systems (dev OPS role).
Here is a list of things I intend to focus during my break:
-- refresh/study datastructures, algorithms
-- learn a new programming language (thinking of Go, Rust)
-- learn a functional programming language (thinking of Erlang, or Haskell)
-- contribute to an open source project (currently I don't have any list/idea about ones I can look at)
-- get familiar with *nix internals
-- get a basic understanding of web security
-- A few MOOCs here and there
-- Read SICP (and similar texts).
(I am skeptical about SICP goal as I don't have a reading group to discuss things I study. I am afraid that reading alone with no discussion/feedback I will fall into the trap thinking that I have understood the topic despite gaps in my understanding.)
Given my intent I am requesting suggestions from HNers about the best possible ways to make effective use of the break I am planning for. Any other related suggestions are most welcome.
PS: I am currently based out of Bangalore
Thanks in advance.
borplk 25 days ago [-]
This may not be what you want to hear but I'd suggest that you don't take such a break.
Get a job and learn stuff while getting paid for it.
Or however you do it, don't go full-on student mode and stopping your income. Someone in your position doesn't have to stop making money just to learn.
If you insist on taking the break I'd spend the time on something with a bigger financial potential. For example make a SaaS that could potentially earn you $1k/month after a while.
vazirthrowaway 25 days ago [-]
Thanks for your input. Can you please elaborate why you think it might not be a good idea to to be in full student mode (if one ignores the monetary aspects and the risk of not finding a job soon after the break)
borplk 24 days ago [-]
It's in a way a "compromise". Someone with as much experience as you has the luxury of being able to learn AND get paid for it too so I think you should utilise that.
Also from a career perspective to other people and employers it will probably not look very good. People may assume you were not good enough so you had to stop and become a student again. As wrong as that would be, people's perception is shallow and they don't have much information to work with, they'll make judgements.
And as I said if you insist I think it doesn't hurt to concentrate your efforts on something with financial potential, just because you can. And something that you can "show".
I think you'd be better off fitting the study in between other stuff in an organic way rather than just saying ok let's stop the world, go learn some stuff and come back again.
jbpetersen 25 days ago [-]
I'm trying to get an online community together over the next few months for some of the same stuff. More generally for learning through collaborative experimentation. My email's in my profile if you're interested.
You might try setting up a simple blog and chatroom combo specifically for what you're learning and trying to get a few others to join in on some parts for the mutual support. Half your list is stuff I'd love to join in on if the timing worked out and I doubt I'm the only one if you do decide to get small groups together for at least some parts of your adventures.
Worth mentioning is also the typical advice of teaching others being one of the most effective learning methods.
ignova1533 25 days ago [-]
Can you slow down your pace at work and do things more thoroughly even though it might create some problems for you (less than stellar review at the of the year, having to admit you're simply slow, missing some deadline but not by much; or something like that)?
If so, I think you'd be surprised by how much room you have to "wing it" and make things work at your own terms.
It might not even come to that if your understanding is improving (because you're spending more time at work digging deep into topics) and you're able to propose better solutions.
vazirthrowaway 25 days ago [-]
Thanks this is indeed a good suggestion. I had tried similar approaches earlier and had been successful to make some time for myself in the interim to focus on some of the areas I was interested in. Having tried those approaches, I am bit tired of doing the balancing act. Hence I am thinking to experiment with taking a break and see if I can make the best use of it.
hnarayanan 25 days ago [-]
This sounds so exciting! I wish you the best.
In order to focus your efforts (on the list above), I'd suggest that you additionally pick one (somewhat ambitious) project to finish in this period. Make sure this is something truly interesting to you (to motivate you to keep going) and incorporates some of the things you're trying to learn.
At least for the way I learn, a concrete application is crucial for me to truly internalise concepts.
chuck32 25 days ago [-]
"At the end of my break I look forward to work in developing solutions that involve distributed systems or work in setup, management, and monitoring of complex distributed systems (dev OPS role)."
I think a far better way of getting into a new field of software engineering (like distributed systems) would be to apply for a job in that field, let them know you've been studying it in your spare time but are an experienced software dev with ~15 years under your belt. I think that would be a pretty good offer for an employer (at least a good one). At worst you may have to take a small pay cut but that should certainly be a lot less money lost than if you took a 6 months sabbatical.
If you can afford a 6 months sabbatical then I say take it, but try spending the whole 6 months without touching a computer, or at least not coding. It will help you grow as a person and make you a better software engineer when you come back to it after the 6 months.
sghiassy 25 days ago [-]
I would consider there are three general areas to work on for interviewing
- Data Structures & Algorithms
- Domain Knowledge
- Interviewing Practice
Each section is somewhat independent, and you should have a strategy for each
- Data Structures & Algorithms
Many people dislike this section as it doesn't represent the day-to-day work of an engineer. But nothing is going to change in the short-term so you might as well prep for it.
My recommendation is to view this as a Competitive Programming. You need to devise the solution to the problem in a fast time with the most optimal solution. The best source I've found on this is The Competitive Programmer's Handbook: https://cses.fi/book.pdf
Read it well
- Domain Knowledge
This section is the actual bits on what you're supposed to know about the job. If you're applying for a job relevant to your current job - this should mostly just be a refresher course.
If you're trying to switch to a new technology stick: Build the Thing for the Team you Want.
If you want to apply to Google Search, then deploy your own server and start to crawl and rank the web. If you want to work on VR, then build your own VR app, etc., etc.
Make sure you build it and deploy it. Being able to show your product on your phone or a website during the interview is both impressive and will further gain your broad knowledge of what it takes to accomplish these tasks.
- Interview Practice
You need to practice coding, white boarding or talking about yourself in FRONT OF OTHER PEOPLE. This is uncomfortable and something you should have done several times before you actual interview of people. Use these resources to accomplish this:
GOOD LUCK!