Hacker News new | ask | show | jobs
by atroyn 3097 days ago
~10 years experience in software development, everything from huge government telecoms projects to my own startup. I now work in robotics/computer vision research. Here's my advice:

Programming is not hard. Don't focus on software development as a career path.

Software is only a tool, and most production software is badly written because the customer doesn't care about design patterns, only whether the product works or not. Despite the prevailing opinion on HN, learning to program is not difficult and a reasonable person with technical training in any field can pick it up in a few months from scratch. The current high salaries paid for writing CRUD apps (and almost everything is CRUD apps no matter how much JavaScript you put in front of it) won't last as the barrier to entry is ever lower. Very little that could be called 'engineering' gets done in a software context.

Once you've learned two programming languages with very different concepts (e.g. C++/Scala), you'll be able to pick up any language/programming concept easily. Don't waste time learning the flavor-of-the-month JavaScript framework, it's a waste of mental energy and if you ever need to know it you'll be able to learn everything anyone actually uses it for in a week or two of concentrated study. For the time you spent learning React in and out, you could have taught yourself rocket propulsion,

Focus instead on developing the patience needed to learn complex ideas in depth, alongside a broad range of soft skills.

If you go to university, pick a scientific or engineering discipline - ECE will keep you close to computing, but ME is a good choice too. Physics or Mathematics are both also good choices. Don't major in CS unless you really care about the mathematical foundations of computing (which have nothing to do with most programming you're ever likely to encounter). In my experience it's very easy to teach a physicist to program, but the converse is not true.

Mentors are everywhere, but they're not necessarily going to mentor you 1:1. Professors at university are mentors. Coworkers are mentors. Anyone smarter than you that you have the opportunity to spend time with is a mentor. There's no need to codify the relationship. To get the most out of these relationships, spend time figuring out the most important, concrete things you'd like to learn and pose them as questions.

To develop leadership skills, you need to first master self-examination. This is very difficult and takes a lot of mental fortitude, and life experience you may not have had the chance to develop yet. This is a journey I'm still on so I don't have much useful advice, other than that.

1 comments

Excellent advice! Wish I could upvote it twice.

> it's very easy to teach a physicist to program, but the converse is not true.

Programming isn't everything, and there are a lot of subjects out there that will make you a better programmer.