Please help me decide

Hi everyone,

I’ve recently found FreeCodeCamp.org and the forum. I studied engineering in college. Back then, my programming skills were not fantastic but not too bad either. At first, I dropped my first programming course (ANSI C) halfway through the course and didn’t sit for the final exam, but got B+ in the second time.

When I joined FreeCodeCamp, I wasn’t satisfied with the style/study materials provided. I found it somewhat simplistic. After browsing the forums, I found a thread that recommended studying the “You Don’t Know JS” series. I studied 5 of the 6 books. I can say I understood 80-85% of the topics covered in the series without too much trouble (I believe this is because of my background). After that, I tried to assess my knowledge by taking some tests. I passed a few basic JS tests, including W3Schools’ JS test and similar ones. Unfortunately, I failed Upwork’s JS test.

After failing that test, I started to doubt my ability to master what is needed to be a good developer. To make things worse, I came across a very demoralizing Quora post a couple of days ago (Link: https://www.quora.com/If-they-say-anyone-can-code-or-program”-why-are-so-few-doing-it-Why-will-there-be-2-million-unfilled-coding-jobs-by-2020). As you can see, the responses are from people who seem well-established and highly experienced (several of them have 25+ years of experience). Apparently, most of them are attacking the model of platforms like FreeCodeCamp and similar ones. Basically, they are saying that programming is a talent that one is born with and that most people simply cannot master it to a professional level.

I’ve worried about this for so long: that after all, I might not have the talent needed to master programming. My main concern is: how can I be sure that FreeCodeCamp’s approach is the right one and that these people are just a bunch of naysayers? When I remember some of the guys who were much better than me at programming in uni, I can’t help feeling that perhaps I simply don’t have a talent for programming; that it doesn’t come to me as naturally as it comes to some people. How can I prevent wasting time on something that is not meant for me? Are there assessment schemes that can definitively determine whether I stand a good chance of succeeding as a programmer or not?

Thanks!

Sounds like you are very focussed on tests. The thing I like about FCC is the project heavy nature of it. Building a project from scratch is where I personally have learnt the most. Ive also listened and read quite a few times people recommending to build stuff and that tutorials and tests mean little in comparison.

Did you fly through engineering? Most people have to work hard to master engineering and higher math courses, even those with aptitude. It’s the same with programming. As an engineer, you already have the problem solving skills and the intelligence needed for good programming.

The difference is that in engineering, you’re learning formulas and whatnot that apply to natural laws. In programming, you have to learn a lot of man-made rules and conventions to get the code to work. So something that may make sense to you logically might not work in code because of some rule you haven’t learned yet.

As to whether freecodecamp’s approach is best or not: It isn’t the best approach for me. I can follow their “do this, do this, do this” but I do much better with a textbook approach, where I’m taught the material first, then given exercises to practice what I’ve been taught. I haven’t found a great (free) place for learning JS online. Most of them cover the syntax. For that, I’d say Codecademy or W3Schools gives the quickest ramp-up. (W3Schools’ info is a bit outdated, but the basic info hasn’t changed, and it’s a fine starting place.) Udacity’s Intro to Javascript course is video based (which I hate for programming courses) with excellent console-level practice exercises.

All of them fall short when it comes to teach how to use JS with websites, especially with getting info from a web page form and using it and with handling page controls. They all shift into jQuery at that point.

So it comes down to looking around for the course or tutorial that works best for you. If you’re unsure about whether it’s worth your while to even try, do one of the quickie ramp-ups and then decide whether you’d like to continue. Once you have the basics down, FCC is great for applying what you’ve learned (as you learn more).

As for the people on Quora, their attitude is ridiculous. Programming is like anything else. Some people do have a natural talent for it, but almost anyone can master it if they apply themselves. It takes time and lots of practice to master. One course, even FCC’s, won’t give you mastery; it’ll just get you to a basic competency level.

The real question is, why do you want to move into programming if you’re an engineer? If you had a passion for programming, you’d just be doing it, not worrying about it. As an engineer, you already have a great skill.

Last thing: Maybe Javascript and web development aren’t the areas of programming to choose. I find JS to be the hardest of any language I’ve taken (though I’ve never moved beyond the introductory level in any language). Maybe C++ or Java would suit your ultimate purpose better? What do you want to do with programming?

There’s no one right approach. Freecodecamp is just one of many.
I think the best phrase that describes FCC is Read, Search, Ask (in that order).

Engineering background should help tackle the depth of the subject, but will probably conflict with the ever changing chaotic nature of it.

I don’t think this is about talent, but about handling the stress of rapid change and sifting through free endless (dis)information. Humans are not equipped by nature to handle such stress, I think that’s why young people are rampant in this field because your body can repair any damage in your 20’s (only to collapse when you hit 40).

The lack of liability and warranties (disclaimer of all warranties, no fitness for any particular purpose, etc) probably will also conflict with the basic engineering mindset/code of ethics. I mean, if an engineer builds a bridge like that he’ll be sued and put to jail, but Bill Gates has simply become the richest man in the world by knowingly selling a broken, malfunctioning product and noone could sue him for that.

I think every engineer by education is ingrained with the fundamental principles of 1) presenting measurable warranties 2) assuming liabilities for his/her work, none of which exists in the field of software development.

This is something that lazy thinkers believe to justify their own laziness. There is exactly 0 (zero) research, evidence, or reason to back up their claim. I think what the top rated answers are saying is different, though. There is a difference between learning how to write JavaScript and learning how to solve problems by programming. Just being able to type out some code isn’t necessarily the same thing as programming. There are a lot of programs out there that just teach the syntax without the problem solving skills.

Learning to program is very difficult and there are more skills to pick up than just HTML, CSS, and JavaScript syntax. Here at FreeCodeCamp, you have a lot of tools at your disposal and some great projects that will make you a better programmer. But learning something difficult always involves a lot of failure and it will take time. The key skill that you need is perseverance.

Here’s a simple assessment:

  1. Do you enjoy learning how to program?
  2. Would you learn how to program even if you could not be paid for it?
  3. Can you set aside time most days of the week to dedicate towards learning?

If your answer to 1) and 2) are “no”, then you’re in trouble. If you can’t say yes to 3), then you’ll have to make some life changes. Other than that, focus on the process of learning and don’t fixate so much on the outcome. The fact is that programmers never stop learning, so if you don’t enjoy doing that, then there’s no point in continuing.

4 Likes