Hacker News new | past | comments | ask | show | jobs | submit login
We asked 15,000 people how they're learning to program (freecodecamp.com)
123 points by quincyla on May 4, 2016 | hide | past | web | favorite | 91 comments

It's funny. I'm seeing this, while I'm thinking about dropping out of this career. I don't want to be one of those girl dropout stats, but lately I'm feeling a desire to start a family. fwiw I just passed 32 and I don't know if I want to do programming/software engineering jobs anymore. I'm hoping its just a phase.

Don't let "I don't want to be one of those girl dropout stats" stop you from pursuing what you desire.

"I don't know if I want to do programming/software engineering jobs anymore"

I went through this too. You won't know unless you follow other desires you have and it sounds like one of those is to be a mom.

I am a 42 year old female that has been doing this for close to 20 years. I have 2 kids. Having kids opened me up to so many other things and actually made me better at what I do.

Don't worry about silly stats and being one of them. Worry about what you want and what is best for you.

I had a little bit of a career, had a kid, and became a stay-at-home dad. After working from home for a bit, I ended up letting the career slide and ultimately end. Along the way I realized I didn't really care for it.

Now I'm back in school in an unrelated field and realizing that coding can be an asset in the field. I'm working on a personal coding project as a way to get back into things.

My physics prof believes that going to school for computer science is like going to school to learn all how a shovel works, while other majors (like physics) just learn how to use the shovel in order to accomplish their goals.

I don't entirely agree with him, but it made me realize it was never coding that I stopped liking. It was coding about stuff I didn't care about that had killed my interest. (Interest in playing with technology for the sake of playing with technology had faded for me.) Now when I code, it is because the code is a step (one I find fun, enjoyable, and usually relaxing) towards another goal.

So, it might not be a phase. It must just be you are craving more.

> My physics prof believes that going to school for computer science is like going to school to learn all how a shovel works, while other majors (like physics) just learn how to use the shovel in order to accomplish their goals.

And this is how labs end up with terrible code that doesn't follow any best practices and is completely unmaintainable.

If scientists weren't so arrogant, they might realize that if we're spending years studying something it might be a bit more complex than a shovel.

> If scientists weren't so arrogant, they might realize that if we're spending years studying something it might be a bit more complex than a shovel.

If some programmers weren't so arrogant, they might realize that terrible code that doesn't follow any best practices and is completely unmaintainable solves a lot of day-to-day problems in many many fields/businesses.

The beauty of programming and the spread of knowledge today is that you absolutely need not be an expert to make something that works and automates real work in the real world, every day.

Again, "some programmers" (not all) seem to be overzealous in defending some kind of exclusive right to develop software the right way, as opposed to the wrong amateur way.

This irks me a little bit, not meant to be a caustic comment =) sorry if it sounds a bit like one.

I think you're getting angry about something I never said.

I'm well aware that terrible code solves many problems out there. Yes, it's great that people are able to use code to solve problems without being experts. It's also true that their code could be even better if they learned a bit more.

Just because people can do the basic level of something (it's great that they can!) doesn't mean the field is easy or useless. It's especially irksome that the primary reason physicists can hack together dirty scripts easily is thanks to the pioneering work of actual computer scientists.

> Just because people can do the basic level of something [...] doesn't mean the field is easy or useless.

Actually, the shovel analogy is quite accurate after tweaking a little.

"Just because people can do the basic level of digging holes in ground doesn't mean the field is easy or useless".

Operating an overgrown shovel called "excavator" is not an easy task and requires plenty of training to do it well, yet it's but a tool. And we would still need all the knowledge from civil engineering (totally separate field, though "engineering", not "science") to make any substantially larger or deeper hole in the ground.

All this doesn't make digging holes useful on its own.

It helps to sometimes look from this angle at programming and computer science.

I'm not angry =) thanks for replying

This parallels a lot of my experience. I moved into physics because I realised that I loved coding only when the problems and technologies interested me. While I found CS problem sets boring, being able to use my coding in physics was endlessly exciting. Even more than that though, being able to apply a CS mindset to physics problems when no-one else in the lab would was always fun in itself.

In the context of a small shovel, not that impressive. Put that into context of a large diesel earth mover used to efficiently mine earth, it sounds different. Its all relative.

33 y.o. Dad of 3, and a far better engineer since having kids. Since becoming a Dad, I learnt the value of time, I learnt how to get stuff finished when I have a chance to, I learnt empathy and tolerance, I learnt to look at the big picture. I forgot about many of the frustrations and angst that I felt before I had kids. I simply don't have time to worry about my own feelings much, but at the same time I learnt to look after myself much more efficiently, because I have to, because 3 kids and a wife depend on me. I've never been happier at work, because I have a family.

Definitely start a family, but also think about keeping your career too in what ever form suits you.

Since having kids, I've become better at dealing with managers. ;-)

Being a parent is full time management training.

Exactly -- you grow in many ways. I'm a father of two with one more on the way and I've often wondered what I might have achieved if I had the efficiency and discipline I do now before kids when I had more time... Yet somehow I'm now achieving more with less time.

It really a things that all engineers worried. Sometimes, it is like you don’t have time for your family. The work is never going finished. You tried hard to give some time for your family but you can’t. This frustration and anger makes you uncomfortable. But you can’t even share your feeling with your family. You don’t want them to worry.

It is a life of every engineer. But it is always good to choose the options that better suits you.

There is absolutely nothing wrong with this.

That you feel any conflict at all about being a mother is a testament to how sick our society has become.

I have to agree.

My wife stopped working because she want's to be a full time mother (which is hard work by the way).

I also try to work at home as much as possible because kids grow up so fast it's easy to miss the first baby steps.

Yes we have less money to save and have to skip some things once in a while but it's worth it.

I know a few women who did their own projects while raising kids. Often some web stuff about children/family, hehe. But it helped them to keep up to date and get back into the job with ease.

Also some of them made those projects to their main job, so they now work from home and have more time for their children :)

Ironically, it's an ideal profession for staying home while raising kids :)

Caring for kids is a full time job. I used to think my wife had it easy until I tried it myself.

You can't be serious

life can be in phases - http://www.smbc-comics.com/?id=2722

hey, i turn 32 today. i'm also feeling dissatisfied with being a programmer. i don't think it's a phase though. honestly, i can't remember a time that i've been satisfied with my situation.

Why do you think that is? Have you spent much time thinking about what would make you happy?

oh, constantly. but it's always changing, is the problem. actually, i've come to the opinion that that isn't really a problem. imagine an artist who's never satisfied with their work, either because it isn't good enough for them or because they're ready to move on to something completely different. that's not really a bad thing in and of itself. it's only in how they respond to that innate restlessness -- the engine that drives their work -- that could cause problems.

I'd definitely go with a family if I had someone to support me. You can always program more later.

I know code camps are usually web focused, but I'm really surprised about the lack of any lower level, desktop, or non web back end options for "which roll are you most interested in". Coming from a CS background I was also surprised that more people were interested in front end web development than back end web development, because most of the people I interact with hate front end web development with a passion.

When people want to learn how to create something, usually it starts off as imitation.

"I want to make a video game just like Mario!"

"I'd love to learn how to make a social network just like Twitter!"

"I'd like to learn how to make a desktop app just like iTunes!"

"I want to know how to make a programming language just like Lua!"

But the majority of software people use these days is web-based, even the desktop versions, from Facebook to Spotify to Twitter to Snapchat or whatever that's called. (I'm dating myself aren't I?)

So it makes sense that people getting into programming want to learn how to make web stuff first. But as they get deeper into learning how to make some website, they'll necessarily need to learn how to make the stuff that goes with it, like a backend server that uses a database, or a companion iOS app, or whatever.

Wouldn't this lead to a lot of mobile-first developers as well, though?

At least getting an basic introduction into web development (basic HTML, CSS, maybe PHP and jQuery) is probably a lot easier than mobile development.

Setting up IDE's, learning about OOP etc is probably harder than throwing some Bootstrap components together.

> desktop app just like iTunes

Ha. Haha. Hahaha.

Front-end programming is very visual. You can immediately see/sense/feel what you have developed/program, so there is a expedited positive feedback loop.

This can appeal to beginner programmers because it gives a immediate sense of satisfaction and accomplishment vs. backend programming where you see lines of output spit back to you in a terminal.

I may agree in term of first experience, but after a while (when you pass the "first time I..."), UI programming is a lot more tedious than back end. It requires so much boiler plate code to just achieve little things, having to worry about weird CSS behaviours, fighting winforms that do not do exactly what we want, obscure WPF syntax, etc. I feel that backend you only focus on your problem and get to an "ideal" solution quicker, which is more gratifying.

That's interesting, as I feel the opposite. I am a front end dev for a large eComm company, but do a lot of back end programming and scripting in my free time. The reason I love programming is problem solving. I have the most fun doing coding challenges, and get the most immediate sense of satisfaction and accomplishment when I write an algorithm that solves a test case. Although my day job is primarily "application level" JS, I am least happy when I have to do the visual things, like adding new templates with HTML/CSS. To me, design tends to be too subjective (if I'm going to do it, I'd much rather have someone provide me with a design PSD), and it tends to feel monotonous/tedious. I guess that's why I'm considering moving more into back-end development.

I wonder how much of this is because they are simply new to the field. Front-end stuff is more immediate, and immediacy is appealing. Back-end stuff has you spending less time worrying about compatibility headaches and all the non-problem-solving rabbit trails, but if you haven't spent a lot of time programming, you might not realize this and just assume that the level of headaches doesn't vary much.

Thats what I thought. Front End involves knowing a lot of quirks between browsers / css / JS and I find it a lot less about solving problems in an abstract way. Instead its solving "why does this display this way one one machine and another way on that machine" problems.

Agreed. Its only one you work with the various different technologies available on both front end and back end that you realise what a mess the front end landscape is, and how much less pleasurable it is to work with. A beginner isn't going to notice the difference a they are likely just happy to get something to work

I have the feeling there is a bigger need of front-end devs. After you got your API set up, you need shiny stuff and creating this is time consuming.

Also non-technical people seem to value front-end development more, because they have the feeling these devs do more "user specific" stuff (-> "they understand what I want")

I marketing myself as a front-end developer, but I would consider the jobs I get offered full-stack (2/3 front-end, 1/3 back-end)

I come from a CS education and a professional background that's not focused on any kind of web technology. I guess that I'm accustomed to the idea that most new devs aren't remotely interested in the areas of technology that I am, because the survey results didn't surprise me very much.

Eventually, I imagine I'll be forced to move at least into web back-end development with a modicum of front-end thrown in, but I can't imagine that ever being my main focus.

Yeah, wow - if all CS work consisted of web development, I'd have dropped out of the industry years ago.

I have been teaching myself programming and feel front end is really the only way in without formal schooling or extensive self study. "Full stack" was the most popular in the survery and I feel most code camps teach "full stack light"; enough to put up a site using RoR or Node back end/JS front end framework.

I would love to get a job doing backend development and have worked through some CS moocs and I just feel like there are so many things I don't sufficiently understand to even be considered for a backend position. I could probably handle a "full stack light" position, but get overwhelmed when I try to really understand everything going on instead of just accepting "use this gem".

As someone who comes from a CS background, spent many years as a backend web developer, and is now focusing mostly on frontend ...

... I go where the complexity goes[1]. In the age where most [web] backends are just glorified DB wrappers with an API, and the main app is on the frontend - I'm gonna stick to frontend, thanks.

Although it's starting to look more and more like I should rekindle my interest in non-research[2] machine learning and AI.

[1] complexity and users, really. You could call it "the market"

[2] with much regret, I have discovered that I am too impatient/dumb/product-focused to do well in research.

I sometimes wish I could just go where the market goes, but I can't. I've never learned how to aim the analytical engine in my head, only to figure out where it is pointing, so I can try to put myself into a job where someone will pay me to think about whatever it is that I am apparently going to be spending my time thinking about next.

Nothing about the web inspires me or engages my attention, which has left me wondering lately whether I'm still in the right industry. Not sure what else I could reasonably do for a living, though, since I doubt my brain is going to stop working on software problems whether I'm still getting paid to work on them or not.

I was surprised to see no mention of game development as what drew one into coding. Half the cats I've worked with got bit by the programming bug initially wanting to make games.

The survey says that the median age of respondents was 27 and on average they started programming 11 months ago. They didn't give a standard deviation, but presumably there are not many who are in their early teens.

I say this because the cohort you describe will have started playing games at a younger age, and would have self selected itself out of this survey by venturing into small time game development on their own at an age younger than the survey respondent demographic.

Game Maker is what got me started after MSIE 5 let me down - only like ten years later I discovered MSIE did in fact have an error console to show you what you did wrong, making it not completely trial and error!

So did creating games pull me into programming? Hmm, kind of, after another avenue failed. But I certainly recognize what you mean, I also know many people who'd love to make games full time (and some do! Just not all, not enough demand).

This is somewhat true for me. My first exposure to coding was with Action Script back when I was animating stick figures in Macromedia Flash, which led to me discovering what CSS/HTML were. I never went anywhere with it at the time, I must have been like 8 or 9 years old, but I like to think it's helped lead me into my role as an iOS developer.

Yep, that was me. Now I'm more into making helpful tools, but games are a fun side hobby.

Just to be unnecessarily argumentative, I think video games ARE helpful tools for a wide variety of reasons =)

> Half the cats I've worked with

what does `cats` mean in this context? maybe a cultural thing.

Comes from jazz idiom. Cool people, basically.

> Most of them are already applying for developer jobs, or will start applying within the next year.

I think the possible answers for this question bias towards that conclusion. Out of the five options, four refer to a time frame between now and a year from now.

Also, for the "Which learning resources have you found helpful?" I'm surprised that the official documentation for the language one is learning and "random tutorials I found on Google" aren't options. I know that's how I initially learned to code, and I was under the impression that it was somewhat common.

You'd be surprised as to how many people do not read the official documentation for the tools they use. They'll spend time on Google or Stack Overflow rather than a minute in the official docs—even when they're great (e.g. Rails guides).

Well, in their defense, most documentation is terrible. You get used to being able to find something in two Google searches that you couldn't find in five minutes looking through the docs.

I suppose it depends on what languages you use. The docs for C++, Java, PHP, and the man pages for C have all been very useful to me.

Python is terrible.

Shoutout to the golang docs, they're actually amazing.

True. It's something we have to improve.

I was surprised 'a book' wasn't an option.

You can't grep dead trees.

I learned by going to four libraries (village, town, high school and city) and reading every single book on computers and programming they had plus the entire set of manuals for every system I encountered and any additional systems for which manuals were available. That was basically the whole of my 80s. [0] In the 90s I spent significant enough proportion of my disposable income on programming books that until recently off loaded a dozen crates them they made up the majority of my material possessions by both weight and bulk.

These days I just google stuff.

Also, the selection bias in the survey probably excludes book learners.

[0] With the gaps being filled by arcade games, dial up BBSs and questionable music/fashion choices (even for the 80s). We have stereotypes for a reason.

In the Demographics and Socioeconomics section, I see 1% of respondents speak Chinese, and no data shown for China in country of citizenship. Also it says 8% have served in the military and a picture showing what I presume are soldiers in the Chinese military (I could be wrong).

Is it that there are few survey respondents from China? Is the survey accessible from China or blocked by the great firewall?

Just curious since the numbers seem very low and I presume there should be a far greater percentage of Chinese respondents purely by population demographics.

The survey was accessible behind the great firewall.

We had 88 responses from Chinese nationals. 137 respondents were native Chinese speakers.

We're still working on building a sandbox for the dataset, so I can't answer your questions at the moment, but you're welcome to dive in to the data. Or you could create a GitHub issue asking this and we'll try to create a visualization: https://github.com/FreeCodeCamp/2016-new-coder-survey/issues...

On a tangential note.

I've spoken to a few hiring managers who have expressed disappointment with some of the hires that they have made straight out of bootcamps (w/o prior CS knowledge or fundamentals).

Specifically, the bootcamp graduate are smart, motivated, and know their specific toolsets well. However, they tend to struggle a bit if you place them outside their comfort zone.

Is this a sentiment that others have heard through their work colleagues or friends as well?

>However, they tend to struggle a bit if you place them outside their comfort zone.

I mean.. yeah, I think you could say that for most people. I would also think that when hiring a bootcamp graduate you would already have some inherent bias, almost like you are waiting to find their weaknesses. Basically, it's easy to place the blame for their struggle on their bootcamp degree, when it could really just be that it would be hard for anyone. Just a thought

This is something that has made me hold back from applying for development positions. I like to really understand the how and why of things (and feel like that is what expected of a developer), which is why I started learning CS concepts after being frustrated following tutorials/books that just asked you to follow the specific steps for the framework.

I have done Harvard CS50 and am working through Berkeley cs61a (with the goal to then do 61b/c), the Stanford database class and reviewing maths on Khan academy. I'll likely apply for a front-end position first even though I enjoy back-end more because I don't feel like I am at the level that is expected of a back-end or fullstack developer.

I believe it is, because as Elon Musk said, education is like a tree.

These people learn about the leafs of a tree (specific tools) but don't learn about the trunk and branches that hold them (fundamental CS educaton).

I've heard the same thing about college graduates with minimal or no experience (no internships, for example).

Well, they don't have a lot of experience yet.. given time I imagine that they'd grow their zone of comfort

Interesting to see that only half of bootcamp attendees actually found a job. That's not the kind of stats these camps like to advertise.

But than again, this is not your average bootcamp. From the FAQ:

"What is Free Code Camp?

We’re an open source community that helps you learn to code."

I Wish their data set wasn't so biased. 72% of respondents found freecodecamp helpful? Well that answers almost everything about who they're talking to!

Doesn't seem like a fair representation of people who are learning to code. There are 40,000 computer science graduates per year. So perhaps 160k to 200k CS majors at any given moment. Those people learning program doesn't seem to be represented at all in this survey.

These are all things you can filter for in the data. 13% of respondents, for example, were computer science grads, so filter just for them and you still have what will be statistically significant dataset for most questions.

Why didn't they ask which languages they're trying to learn?

Given the other data points, you can assume javascript.

There's also a podcast for C++, python, etc. It's all over the place.

Amazing free market research. I am going to make good use of this :-). Also note there are 2 links to other free research in the github repo.

By wanting to do something, then finding out how I need to do it. I never learned anything just to learn it, it was always for direct use. Once I made a bunch of Renoise plugins in LUA. Never had used LUA before, never used it since, I don't know any LUA. I know what I use while I use it, so to speak. So I don't really know if I ever "learned programming", I probably wouldn't call myself "programmer" and surely not developer.. I just do things until I have what I want and it works. With things I make up and expand as I go along, until I realize I need to restart from scratch with a better structure. And of course, that I like simple things helps :) The code always has some (cough) messyness to it.. but the next thing I start, is usually a bit cleaner and better organized from, because it incorporates what I learned in the previous adventures.

It's 'Lua' btw.

I'm surprised at the education numbers; out of the respondents who attended university, 22% studied either Computer Science or IT.

Reading their 'how we made the survey' piece (1), it looks like they asked for responses across a wide variety of media and only branded it as a 'New Coders Survey'.

So I have to wonder if they caught a bunch of people with traditional computer science education in their net. That would definitely skew the data considering the sort of conclusions that they're trying to draw about coding bootcamps.

(1): https://medium.freecodecamp.com/we-just-launched-the-biggest...

Wow. I've had what has felt to me like a varied and interesting career across the nearly-25 years I've been writing code for money, but with one small exception everything I've ever been paid for fits within this survey's "other" category. That's... an odd feeling.

Companies will eventually learn they'll need to accept Ruby/JS/Python in their stack to get this new swathe of cheap labor, and you'll see these devs slowly transition towards enterprise.

They already have, and I'm not cheaper because I'm currently focused on node.

> 58% have earned at least a 4-year college degree.

In the UK (possibly other countries), you can get a Bachelor's degree in 3 years.

In Scotland, most* Degrees are 4-year courses.

*technically, the 4th is an 'honours' year, and you can graduate without honours after 3 years. This isn't that common for people who aren't struggling.

It's the same in India. Most Bachelor's degree are 3 years, but a degree in Engineering, which is also a Bachelor's (BS/BTech) is roughly 4 Years (8 Semesters) long.

Thank you for pointing this out. I wrote this late at night and forgot about regional differences in degree duration. I've corrected this.

Actually you can do this in the US too, but they are still called 4 year colleges here.

"21% are women"

Why mention this statistic?

To show that the data collected in this survey is biased towards answers by men.

because the dearth of women writing code has been a huge, widely-reported problem for several years now, perhaps?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact