3

So I've done a lot of research and found that Codecademy has been mentioned several times on other forums. I got stuck in and chose JavaScript through Codecademy most probably thinking it was 'Java' and I'm now slightly concerned that I have made a bad choice.. due to the fact that I see posts mentioning JavaScript teaches bad habits and so on...

Should I stop and learn other languages offered on 'Codecademy'?

Should I stop using codecademy altogether?

Or finally should I just wait until I start my degree and pose as a blank canvas?

All opinions wanted, thank you.

P.s I'm not entirely certain what jobs I will be applying for in the future but to give some indication I don't believe it will be website development and more so on the game or application designing side of things

3
  • 2
    For beginner Java is a good language. Anyway programming is a skill you have to learn for yourself, they teach that in a very limited way in university. PS. Javascript (from my point of view) sucks. Jul 4 '13 at 10:45
  • 4
    Keep in mind Javascript and Java are unrelated languages. They are only slightly similar at the syntax level. That they both have 'Java' in their names is a marketing ploy.
    – Andres F.
    Jul 4 '13 at 12:47
  • 2
    What you'll find is that Computer Science is a lot about algorithms and theory. Codecademy will provide you with a practical introduction to web development with Javascript, which is useful but also very different from what you'll encounter in your first two years of computer science, unless you specifically have a web development course in your curriculum.
    – ravibhagw
    Jul 4 '13 at 15:04
3

When you're getting started, any experience is good experience. You'll learn more about what you want to do once you've started your course. I would suggest you continue with the javascript whilst it's still teaching you new things.

Early on in learning programming, the concepts you're getting to grips with are basically consistent between different languages. All the languages you're likely to be using early on will have some way to do looping, assigning variables and encapsulation (creating functions or classes). You can certainly get used to those concepts just fine in JavaScript.

For what it's worth, I'm very fond of javascript as a language. I appreciate its versatility of style and the extent to which programming in it is fun. In my experience, it doesn't necessarily teach bad coding habits, though it is true that it is easier to code badly in it than in some other langauges.

I've done some of the courses on codeacademy to see how they were structured, and to me they seem like an extremely well thought out introduction to basic programming. I've pointed several other people at them and genuinely believe that they'll give you a good start in life as a programmer. I wouldn't give up on them just yet.

0
3

JavaScript is a language with practical applicability, and will stay so in the foreseeable future. It famously has good and bad parts. If you learn JavaScript, it would be good to use a course that focuses on the good parts.

I do not believe in avoiding to learn something for fear of bad habits, nor in "blank canvas" being something a human should strive for.

However, if you know that your CS curriculum is mainly based on Java (or whatever), then it might be a better use of your time to learn that language in preparation. On the other hand, if you're ambitious, why not learn more than one language? It's generally considered essential for good computer scientists and developers to know serveral different languages, preferably very different ones.

JavaScript and Java are superficially similar but very different at a deeper level. This might make learning both a bit confusing.

9
  • Ok I *think the degree is mainly Java and Python.. although unfortunately the codecademy doesn't offer Java HOWEVER it does offer python. I think I get the feeling I should be learning Java first but it's such a shame codecademy doesn't offer java as I enjoyed codecademys way of teaching.
    – codecopter
    Jul 4 '13 at 11:03
  • "Practical applicability" - "has good parts and bad parts". Here's an observation from experience: those two statements go hand in hand. A language with too many bad parts isn't practical, a language that is widely used will always pick up some bad parts. "In hindsight, we should have spent some more time designing language feature X". In particular, many languages have bad parts that are easily avoided, so they do not take away practical applicability but just act as stumbling blocks for new learners. Javascript has a lot of those.
    – MSalters
    Jul 4 '13 at 11:22
  • A comment unrelated to the quality of this answer: if the CS curriculum of the OP is "mainly based on Java", I suggest he runs like hell :) Proper CS curricula is based on theory, math, language paradigms, etc., not on any given programming language. A Java school is not a CS school almost by definition!
    – Andres F.
    Jul 4 '13 at 17:03
  • 1
    @MichaelBorgwardt But I actually disagree with Joel on this! He is against Java and promotes C, because "without pointers you can never understand blah blah". My point is not against Java or any particular language: it's that the "hands-on parts" are the least important and easiest parts of good CS curricula. The hardest stuff is the theory. If you must worry about which language to pick before entering a CS college -- run like hell. You are not supposed to care because it doesn't matter. If it mattered, it wouldn't be CS. See how my argument differs from Spolsky's?
    – Andres F.
    Jul 4 '13 at 20:09
  • 1
    @MichaelBorgwardt BTW, it's a mistake to think CS is a "coding" education ;) That's the root of all misunderstandings. CS is for people who will solve hard theoretical problems or produce the computing paradigms of tomorrow. Java/C schools are for people who need to learn to program. Different targets.
    – Andres F.
    Jul 4 '13 at 21:30
1

There seems to be a strong correlation between the first programming language a programmer learns and his or her capacity to learn other programming languages which are more or less "difficult." Learning a difficult language at first is usually more beneficial for learning less difficult languages later. I suppose it is a bit like learning how to do long division before being able to use a calculator in that you gain insight that otherwise would be dificult to acquire going in the opposite direction.

In my humble opinion, Javascript is an excellent first programming language in that it is a highly used language and that it is easy to write your first program. I honestly don't know what that says about your ability to perform object-oriented programming, since you could easily use Javascript without ever having to use functions as objects. Most best practices for programming in javascript involve knowing important concepts which you will use with other languages, but they are not strictly required to use javascript correctly.

I don't think you have to worry too much. Focus on learn javascript well, since you will need it. Don't just learn syntax. Try to understand programming concepts, since these are the things that will help you most when learning other languages later. It's difficult to explain now, but you will understand these concepts better when you begin to use other languages which have things Javascript doesn't (like scope) or don't have things Javascript does (like loose typing).

When you feel confident that you understand Javascript well, you can move on to a more object-oriented language like Java or C# that will also ground you on concepts related to memory management and compiler-based languages.

2
  • 1
    I consider it advantage that JavaScript does not have many concepts as separate constructs, but only as standard usage pattern of the more primitive ones, because that way you see the relations between them.
    – Jan Hudec
    Jul 4 '13 at 11:15
  • 1
    Honestly, I've never seen this "correlation" before, and if it exists, I think it's more likely that the underlying causality works the other way around - people who are not well equipped to learn difficult programming languages will either learn an easy one first and then fail to learn others, or they will try a difficult one, fail, and give up on programming entirely.
    – tdammers
    Jul 4 '13 at 14:33
0

Personally, I wouldn't say you've made a bad choice - it just might not be all that relevant to what you end up doing.

Look up what you're going to be doing on your degree programme (this is what I did), if you are going to be doing Java download a Java IDE and get stuck in with some tutorials. If you are going to be doing C# or C++ download the express edition of Visual Studio, find some tutorials and have a go. I found it very useful to have some prior experience of what I was going to be doing - it took the pressure off for the first couple of weeks and I found I understood things a little better.

It's a bit vague, but I just "had a play" with C# and C++ before I went to uni and it really helped. Just read what you're going to be doing and have a go.

1
  • Sorry I will also add this comment here just in case you miss it: Ok I *think the degree is mainly Java and Python.. although unfortunately the codecademy doesn't offer Java HOWEVER it does offer python. I think I get the feeling I should be learning Java first but it's such a shame codecademy doesn't offer java as I enjoyed codecademys way of teaching
    – codecopter
    Jul 4 '13 at 11:17
0

Javascript may not be that bad for learning a little

Any programming experience will help you in your Computer Science studies. From that point of view, learning Javascript is better than learning nothing. If you are going to learn just a little programming, Javascript is as good as any other language.

Javascript is not very good for learning on your own

However, if you want to learn as much programming as possible before you start, it is good to know that Javascript is a programming language that is full of traps and bad things for learners, especially self-learners, and there are other languages that are better for learning from scratch on your own (Python comes to mind). At this stage, you can probably switch to a different language.

Javascript: the good parts

If you want to continue with Javascript, watch the video on Javascript: The Good Parts (and maybe buy the book). And then learn to use JSLint and use it with your Javascript code: it will help you write better code, and it will help you learn better.

0

It's also not necessarily true that javascript will be bad for game development, it depends on the types of games you will want to make. I know that recently the Firefox team ported the unreal engine to javascript using something called asm.js, which took C++ code and turned it into a subset of js operations that were gauranteed to run quickly. They then ran some game on Firefox using it. It was a pretty slick demo. Here's a link if you're interested:

asm.js description

Similarly, games like farmville and others that are maybe not blockbuster titles but have their niche and are easily delivered through the browser are probably very heavy users of js in general, either that or the dying flash/actionscript. This is going to likely earn me a downvote, but I would go as far as to claim javascript is one of the most practical languages you can learn today, since it's everywhere and isn't going away in the short term. It doesn't hurt to know it, just keep an open mind that it is definitely not like most other established languages.

Not the answer you're looking for? Browse other questions tagged or ask your own question.