I appreciated this post on /r/cscareerquestions:
What steps should I take to have healthy multi-decade career in programming?
This is my response.
While I’m not super experienced yet, this is what I’ve picked up from observing people who’ve been in the field for a long time:
- Take care of yourself first. Exercise (including stretching), diet, and sleep. Those things literally define your body composition which affects your brain function. You’ll be more efficient with 7+ hours of sleep a night which means you’ll need fewer all-nighters. Exercise can counteract being in a chair all day. Don’t let yourself get out of shape, make it a habit.
- In a similar vein, get a life. I’m working on this now. I’m working 40-50h/wk while in school for CS so I need ways to come up for air. I’ve been reaching out to people more and setting up social things, like a movie night or going for walks together or karaoke. Dating kind of helps here too. Anything besides sitting alone on your ass staring at a computer screen. Otherwise your social skills will atrophy along with your legs and back muscles. (Being likable helps a lot in interviews.)
- Maintain a sustainable work schedule. 50h/wk is fine but much more that is getting into dangerous territory. It’s your job to manage expectations (like managing your manager) so barring seriously toxic work cultures or really idiotic management, you have some control over this.
- As other commenters have said, once you plateau on your learning at a job, find another job. This requires that you’re ready to look for jobs at pretty much any time. So I’d also advise:
- Keep your resume updated and don’t let your interview skills dull too much. You don’t have to be doing tons of DS&A problems every night but keep interviews in the back of your mind. As you’re kicking ass at work, think about how you’d describe your accomplishments to an interviewer. Then when you do interview you already know what you’re going to talk about.
- Have an end goal in mind. This is different for lots of people; not everyone wants a white picket fence and 2.5 kids, not everyone wants to be CEO of a multinational corporation. For me, I think about the kind of person I want to be and I’ll do things that person would do. When I follow this I find that I like myself a lot more. If what you’re doing doesn’t jive with your ideal version of yourself, find ways to change that. Values are pretty related to this.
- More commonly touted advice: learn how to learn. Your CS education was part of this, but you should feel comfortable entering environments where you haven’t used the languages or frameworks. It’ll help if you:
- Maintain a growth mindset. Being inexperienced or ignorant is not an innately bad thing as long as you work to change that. It’s not just about working hard though, it’s about improving your strategies as you learn. I find that this gives you a kind of level-headed confidence.
- GitHub. Projects. These aren’t necessary, they’re just possible tools in your toolbelt of self-marketing. I personally like GitHub because it’s a pleasurable user experience. I tinker with CSS sometimes, it relaxes me. So I host my blog and portfolio site on GitHub Pages and fuck around with Jekyll and Bootstrap and Sass and then I look at all the cool graphs in the GitHub repo. Employers think it’s kind of cute that I do that in my spare time, which kind of helps me because I’m very junior and still in school. Also my mom likes showing people stuff I’ve made. If you’ve done real work, you don’t need a portfolio to get jobs. If you like tinkering with code on the weekends, knock yourself out. If you’re really involved in some open source community, use that to your advantage. Employers don’t have a checklist of traits they want in a candidate. Everything is negotiable.
- YMMV with a (technical) blog. On the one hand, it’s good to be able to write about what you’re doing in an engaging and relatable way. Good writers are scarce but needed in this industry. That’s part of where Stack Overflow came from. But if you have no desire to write, don’t make a blog. If you do make a blog, it’s healthy to go in expecting absolutely nobody to ever read it. My blog is basically a public, pretty journal. I don’t even think my mom has read any of my blog posts, she just keeps the link in her bookmarks. More advice on blogging: 1 2 3 4
I think the most important point I’ve written here is to think about the person you want to be, the kind of life you want to live. Figure out what it takes to get there and maintain it, and do those things.