Ask HN: What advice would you give someone who wants to become a programmer?

22 points by becomethrow ↗ HN
Recently i have had a number of friends and family members ask me how to get into programming as a profession.

I gave them a couple links to some online resources like coursera, learnpythonthehardway, and some mit opencourseware courses; but im not sure whether this really puts them on a path to programming as a profession.

So, i ask you HN, How would an non-fresh grad adult go about starting a career in programming without a degree in computer science?

Is a couple online courses and a twitter clone or so in your github profile all you need to get a real job these days? Do they need to pay thousands for some bootcamp to learn how to 'hack the interview'? Open source contributions? What is it that hiring managers are looking for in fresh programmers?

Thanks!

26 comments

[ 5.0 ms ] story [ 87.8 ms ] thread
The advice I give everyone is to try it out first and see if you like it- it's not for everyone.

The worst is to complete to some sort of software engineering career track, without ever realizing you're not interested in programming. So you come out knowing all sorts of minutiae about software and having all these great opinions, but you can't solve FizzBuzz. Nearly every company in the country, large and small, knows how to filter people like that. Don't do that.

great advice for sure! If you arent able to enjoy working on code at least a little bit, i dont think youd be able to stick with it long enough to really have a good fundamental understanding of software development
What would you suggest to people who arent going to enjoy programming? Trades like hvac/welding? would you recommend they get into the IT side? go back to school?

i often have people near me who are struggling financially ask for advice on how to get into an actual career - these are smart people who have fallen into and out of various lower skilled jobs like restaurants, call centers, secretarial roles, small auto repair shops, and the like. These are mostly people in their late 20s or early 30s who have college degrees in something less marketable (non-STEM).

Whats out there these days for intelligent people who are willing to work hard, and how do we get these people to these jobs?

for the trades, apprenticeships have largely been outpaced by associates degree programs and credentialism. IT roles are rife with credentialism, most credentials taking 300$ plus for the exam alone without any training materials. Going back to school takes a lot of money and real confidence that youre sure what you want to pursue.

I keep seeing people say that during the industrial revolution people were saying machines would take all our jobs, and that this time its the same thing. If thats the case - where should all these people be moving?

What should the 25 year old waitress with a philosophy degree be doing in her time off work to get into a real professional career that will allow her to retire at 65?

Are we sure we have jobs for these people? Is all this displacement just caused by the older generation being slower to retire because its less affordable to retire after the housing crash? If so, how do we address that?

I'm not a career counselor but I do believe there's something out there for everyone. Maybe the 25-year-old waitress is happy in her current job. Maybe it's easy and fun for her, she lives in an exciting place, and she makes enough to get by. Why should she worry about the next forty years down the road if she's happy?

Things don't look good economically for a lot of people in America, and a lot of people get treated unfairly for stupid reasons, but there's no easy solution I'm afraid. You can't guarantee a job for everyone because not everyone necessarily wants a job, or perhaps they may only want a certain kind of job.

For the most part, the non-STEM people are "smart" and "intelligent" only regarding stuff like social skills. The high-paying jobs for them are management, law, and commissioned sales. I suspect you can do very well for yourself selling jets, mining rights, container ships, and corporations.

Non-STEM is out of luck aside from the above and some 1-in-a-million entertainment things. I guess there is also crime and gambling, but you can't keep that going for long.

I seem to notice about a 50-50 split on whether having stuff in your github profile is worthwile, but when it comes to someone pursuing very junior roles, i would imagine it cant hurt.

I'd be more interested to know what some hiring managers would like to see in a github profile for a junior dev - are they looking for twitter clones as you suggest? open source contributions? side projects? are they just looking for proof that you have interest and passion for development? or are they looking at the code to see how sophisticated it is, how it conforms to best practices wrt commenting, etc.?

don't go into web.

try embedded or game development, the caveat to learning any code is that someone will offer you money to do web.

Really? Do you have any data supporting your claim?

I thought that web programming (e.g. ruby/python/php + JS + html/css/etc.) had way higher ROI because the learning curve is much lower and the market is way larger.

really? i often see people warning others to stay away from game development, as i often hear that it favors college grads and churns through they by pushing the boundaries of burnout and high expectations.

I do think that its partially because game dev is probably one of the more fun types of programming, and because of this the market has become flooded with people wanting to develop games.

As for embedded, is that something that someone with little funds is capable of doing on their own? are we talking about doing some arduino projects and then getting a junior embedded dev role? or what does that path look like?

With games its pretty straightforward at least, a single person could reasonably make a small game, and thats probably a reasonable basis on which hiring decisions could be influenced, but im not sure what the path for an embedded developer would be

Thanks for your input!

do you want to code or tweak markup and push pixels to the left then be my guest.
I dont mean to disagree i was hoping you would expand a bit on how specifically to get into an embedded career
learn VHDL and get an FPGA kit, think of a use case and create something.

or find VHDL code on github and contribute to their code.

(comment deleted)
I see your point, CSS and HTML seems very easy and childish after you played with RTL and FPGA.

but finding a job in FPGA is very hard, the entry level job position doesn't exist! I with a MS in Computer Engineering and a very complex project (image processing on FPGA) couldn't find a job in industry and switched to web!

I'd learn VHDL or C, golang or rust.

I think something with an easy learning curve like web, gets harder before it get's interesting.

A real language starts hard and stays that way.

and there's always fresh blood nipping at your heels in web, and you'll get frustrated at frameworks and not being able to upgrade the latest or greatest.

if you design for embedded or a game (something indie) you can start a fresh with new libraries and new outlook.

in web you'll encounter technical debt more quickly.

If you want to do web anyway, I suggest coding with other stuff in your spare time.

I dont think web is the best way to go for most people either, its certainly not what i would do, though it does seem easy on the surface, i suspect getting a junior webdev role involves more than knowing how to write a header and title in html and maybe a few css stylesheets.

What do you think about backend dev, or devops type roles? would you expect them to start in frontend and move towards backend as they get experience, or should they start out from scratch and jump into SQL and python/java/ruby?

Or would mobile development be the way to go? learn swift or java and jump into creating some popular app clones in your github?

try ios or android, there's less cruft and actual code.

you won't have to context switch as much and you can focus on what you're learning.

Hmmm... for a guy without CS background, I guess going embeded is the most complex thing he can possibly do. Sure, there is a whole lot of money there, but is a niche thing; and in my opinion, it's a market for "ture hackers", not someone who is starting programming to see how it goes. Writing assembly or plain C code (in some cases, without using the std lib) is way harder than writing ruby/python/JS, etc....
I oh-so-vigorously disagree. Building web sites is the fastest way to get a return on your learning investment. Plus there's tons of mature tech out there to learn, and plenty of educational material.
you don't choose the programming life. The programming life chooses you
Don't do programming just for the sake of doing programming. Try to make something you personally want, like a better-looking calendar app, or you want to automate some appliance. You'll find out whether or not you actually enjoy programming without feeling frustrated or like you're wasting time.
My advice: start small, write something simple. Really study the language you choose and how to work with it properly. Once you understand it, you can exploit it. Then, keep studying and work on larger projects.

Also, work on something that interests you. Don't get into programming just because it seems cool. It really is, but love what you do. Life is to short not to.

How would an non-fresh grad adult go about starting a career in programming without a degree in computer science?

Reading and doing. I'll come back and add my reading list when my HN timeout is up. SICP, the dragon book, and Hennessy's computer architecture book are a good start. Others may have some great suggestions.

Is a couple online courses and a twitter clone or so in your github profile all you need to get a real job these days?

Depends on where you're located and how old you are. Cultures are so incredibly different from place-to-place that a credit in one sector can be a demerit in the other.

Do they need to pay thousands for some bootcamp to learn how to 'hack the interview'?

Probably not.

What is it that hiring managers are looking for in fresh programmers?

Fresh, innocent young whores without fixed value systems or outside obligations. If you start drawing lines in the sand for personal relationships and making value judgments about the work being dong (Uber, Palantir, etc.), you will lose a lot of value very quickly.

Suggest them a couple of recent college-level books in paper (no online courses, no e-books), one introductory and one with a lot of exercises and solutions. Python may be good choice a language because easier and more generalist than others. They will find their way from that, if one.
There is a major difference between learning programming and learning how to start a career as a programmer. The skill sets needed are very different.

You can either become a good developer and get hired on merit. Or, you can become an imposer who has great social (and bullshitting) skills and manage your career that way. The second option is undoubtedly easier.

The reason I'm bringing that up is because for an adult, starting from scratch, with no computer science degree, doing it yourself, you are easily looking at four years of hard study 8h/day to become competent. I think almost anyone can do it, but very few have enough time and stubbornness to pull it through.