Web development help (also any opinions on codeacademy.com?)

Avatar image for aegon
Aegon

7345

Forum Posts

104

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

#1  Edited By Aegon

I'm using code academy right now for Javascript and I'm wondering if this is a viable way to learn. I've gone through a bit more than a quarter of the material so far and I'm not sure if it's as detailed as it should be. I'm aiming to be a web developer, whether full-stack, back-end or front, I'm not sure yet, but what I've got on the agenda so far is:

  • HTML/CSS: I have some basic knowledge of it, but I don't feel particularly confident in this area.
  • Python/Django (maybe flask?): I took a python course, so I'm pretty familiar with the basics, but I still want to brush up on it with LPTHW and then move on to Django (any advice on this end would be much appreciated).
  • postgreSQL or mySQL: The Django book recommends postgres, so I might go with that. And again, I've heard databases can be tricky, so advice is appreciated.
  • Javascript/ jQuery /Ember: So as you can see, I'm starting with Javascript and if you think I should be prioritizing knowledge of a particular framework, then do tell.
  • Learning about servers and deploying and all that: This comes last.

That's a lot of stuff! There's so much jargon that it's difficult for someone who's not terribly experienced to keep his head above water. Lots of languages, frameworks, APIs (don't even have a firm grasp of what this is), etc.

I always felt like what I wanted to do for a living was something creative, and I was enjoying quite a bit of the coding I was doing in my Python class. But comparing that with what I actually need to learn... It's like being focused on a hill you need to get over and realizing there's a mountain range up ahead. I want to know what I'm doing and where I'm heading. I really want to tackle this challenge and do this thing (I also don't want to be a bum). So help is welcomed!

Other than that, what else would you add to the agenda / list? How should I pace myself and how should I distribute my attention among all the items on the list? What goals should I set for myself and how much time should I allow for their accomplishment?

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

First things first. Come up with a simple idea that will harness everything you want to learn. Don't think of anything large, just something simple so you can get a feel of everything you want to learn.

You look like you are serious because you are willing to spend money on a Python course. Don't. If you have some spare cash laying around, I would recommend checking out Pluralsight as they will have courses in full video for anything you are wanting to learn. http://pluralsight.com/training/Products/Individual

Regarding databases, I would lean more towards Postgres. They're both open source, but Postgres is truly in the hands of the community whereas MySQL is controlled by Oracle. The true differences you will only notice after working in them for a long time and start doing much more advanced work. Attempt to do everything you need to do with ANSI SQL first. All SQL databases are supposed to adhere to SQL standards so it doesn't matter if you use MSSQL, MySQL, PostgreSQL, etc. That would be the best starting point because you can learn basic SQL syntax, setting up databases/tables, and how to work with the database in code without having to care about what back-end server you chose.

By now, you can probably tell what I have to say about JavaScript. Learn JavaScript first before jumping into jQuery. You don't have to master it first or anything major, but you should have basic knowledge first of how JavaScript works and why there are a million frameworks to help out with it. You will probably also want to look into AngularJS which is built by Google.

Good luck. Just try to keep it simple and set small goals.

Avatar image for deathtrap
DeathTrap

427

Forum Posts

136

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

You should also probably add AJAX to your list. I agree with the above - don't bother with paying for a course. There are a lot of resources on the web for learning how to code various languages. For web development, one of my favorites is http://www.w3schools.com/. As for Postgres vs MySQL, I think I disagree a little with @tycobb. MySQL might be controlled by Oracle and, as a consequence, isn't as free form as Postgres might be...but it is also used far more frequently in business. I've almost never seen a job posted where Postgres was mentioned - MySQL comes up fairly often, though.

Avatar image for aegon
Aegon

7345

Forum Posts

104

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

@deathtrap: @tycobb:

The Python course was the last elective I chose for my University program. I just saw it as an opportunity to introduce myself to the subject in a more serious environment where I'd be motivated to do the work for the class. And thanks for all the advice. The first project I'm working on is probably huge in scope compared to my current level, but I think I might focus on building something like a blog as well while slowly working on the other one brick by brick.

Avatar image for exiledvip3r
ExiledVip3r

160

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#5  Edited By ExiledVip3r

If Oracle is a concern with MySQL, just get MariaDB, it's a fork of MySQL by the original creator of MySQL and serves as a drop in replacement for MySQL as well.

But if you're going with Python as a starting point, as you seem to be, I'd say go with Postgres; the Python community tends to lean towards it so you'll have an easier time with it when looking for help. Django and Flask would be the main contenders for frameworks, personally I'd say just jump straight to Django, if you have a good grasp on Python by the end of PTHW, it's really not a hard leap.

If you want to learn some PHP, that community tends to lean towards MySQL/MariaDB. Don't buy into the PHP hate bandwagon either, every language has it's place and at the end of the day it's the programmer using the language that makes the real difference, not the language itself. For frameworks Laravel 4 is a fantastic, which along with the release of Composer has really breathed new life into PHP.

Personally my advice would be to just give yourself a mini project, something like a simple twitter clone, not something you can actually use, but as something singular to work towards and apply knowledge to as you learn it. Just dive into it with an empty vps, install your stack and get to it, looking up how to do particular parts of it whenever you get stuck by finding specific technical tutorials, examples, or similar open source projects to see how they did it. In my experience the coders who learned by doing, rather than just reading a book or following various online paint by the number tutorials, tend to have a better grasp of the language.

As others have said, learn and understand JavaScript basics and maybe dig into prototypes as well before jumping on the jQuery ship. A lot of people these days seem to think jQuery is the language rather than Javascript, and couldn't do shit without it, leading to a lot of dumb habits. Personally I'm partial to MooTools and would suggest that as well.

HTML/CSS shouldn't really be a concern, it just sort of comes with time as you make use of it and see new things.

Avatar image for audiobusting
audioBusting

2581

Forum Posts

5644

Wiki Points

0

Followers

Reviews: 4

User Lists: 26

I'll also recommend giving yourself a small project to start with. I find it a waste of time to fuss about the means when just starting out. The experience outweighs the bad habits you'll probably gain, I think. There's so much (free!) resources online that you wouldn't hit a total roadblock anyway. I started out studying web development using Django (with MySQL) to make a small web application and, although I never used them ever since, it was a good learning experience. I practically learnt how Javascript and JQuery work purely from reading Stack Overflow answers while working on stuff.

Avatar image for aegon
Aegon

7345

Forum Posts

104

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

I'll also recommend giving yourself a small project to start with. I find it a waste of time to fuss about the means when just starting out. The experience outweighs the bad habits you'll probably gain, I think. There's so much (free!) resources online that you wouldn't hit a total roadblock anyway. I started out studying web development using Django (with MySQL) to make a small web application and, although I never used them ever since, it was a good learning experience. I practically learnt how Javascript and JQuery work purely from reading Stack Overflow answers while working on stuff.

In what capacity do you use these gained skills? Professionally? For fun?

Avatar image for audiobusting
audioBusting

2581

Forum Posts

5644

Wiki Points

0

Followers

Reviews: 4

User Lists: 26

@aegon: professionally, kind of. I had to learn a lot more on the job, but it did start me somewhere so that I wasn't completely clueless.

Avatar image for chaser324
chaser324

9415

Forum Posts

14945

Wiki Points

0

Followers

Reviews: 1

User Lists: 15

#9  Edited By chaser324  Moderator

Here's the thing: go ahead and accept now that you're never going to know everything. However, as you build up your knowledge base, you'll probably discover that it's easier and easier for you to shift to new libraries, languages, frameworks, etc. because you have experience and a basic framework in your mind for thinking about those sorts of problems.

Don't feel too much pressure to pick the "right" language or framework. PHP, Ruby, Python - Ember, Backbone, Angular - MySQL, MongoDB, PostgreSQL - They're all totally valid paths to go down and there's nothing about any of them that makes them the all encompassing best choice (when you've learned enough to start debating this point, then you know you're well on your way). The point is just to start learning and more importantly to start doing. The sooner you start doing work, the sooner you'll start to get a feel for how things operate. Start with small projects and work your way up. Learning by doing tends to stick a lot better than just reading through examples or doing simple drills.

Avatar image for guppy507
guppy507

50

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

You'll pick up HTML and CSS pretty quickly. You don't really need to know it super well (I sure don't) to make decent looking sites.

Definitely use jQuery whenever possible. It's super nice compared to regular Javascript.

MySQL is pretty standard stuff, should be pretty easy to pick up, especially if you're using a good framework with a query builder like Laravel or CakePHP (I'm only familiar with PHP stuff).

At the end of the day, what matters is that you've learned SOMETHING. If you learn pick up Django, fantastic. If you decide to go a different route with CakePHP, that's also fantastic. Once you learn one thing, picking up other things becomes much easier.

Avatar image for bbalpert
BBAlpert

2978

Forum Posts

34

Wiki Points

0

Followers

Reviews: 0

User Lists: 16

#11  Edited By BBAlpert

I've had mixed results with Code Academy. The issue is that the lessons for different subjects seem to be written by different people, as the quality can vary wildly from lesson to lesson.

Avatar image for grabbizle
grabbizle

23

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

I believe that the languages should be learned one at a time so as to keep the exhaustion of learning the varying syntax structures of the many languages to a minimum, unless of course you believe you can handle learning the constructs of two or more programming languages at a time. As for listing internet/network systems as the last item to learn after having learned all or most of the listed web/scripting languages, I would arguably recommend setting some time aside while learning these languages to learn the basics of how some of these technologies work,

Here's a picture of Blue Waters juggernaut supercomputers to motivate you :P

No Caption Provided

Avatar image for aegon
Aegon

7345

Forum Posts

104

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Avatar image for ben_h
Ben_H

4833

Forum Posts

1628

Wiki Points

0

Followers

Reviews: 1

User Lists: 5

#14  Edited By Ben_H

Wasn't a huge fan of Codecademy when I went through it. I say all this as a third year university CS student and was just going through it for fun. The HTML/CSS stuff is fine, but it's HTML, it's kinda hard to screw up. The Javascript and Python stuff was incredibly inconsistent. The thing they use to mark whether your code was correct or not was rather suspect too. For example, some of the loop stuff was kinda messed up. I would write code in the website, their compiler thing would say it was wrong, so I would do the question and just test the script in an HTML file and it would work fine. This happened a lot with loops. I've done enough programming that I have gained a bit of an intuition for some of the stuff so to see it tell me that it was wrong when I knew it was correct caused me to raise an eyebrow more than once.

The biggest issue I have with it though is that how the site teaches. For a lot of the courses (did the HTML/CSS, Javascript, and python stuff), it basically boiled down to look at what the example was and copy it. They never concretely explained things. 10 minutes after doing an exercise I likely forgot what that exercise was about.

As for the rest of that stuff in the OP, I have no opinion. I'm not big on web development. My focus in more on software development and theoretical computer science. I know more about the logic and math behind databases than the various database thingers. I've done SQL in context to a logic class, but that's it.

The one thing I do notice though is that I find a lot of people who do that kind of stuff tend to overcomplicate it more than they need to and try too much at once. What I think you should actually do, and some people will probably disagree, is that you should kinda ditch worrying about specifics and generalize what you are studying more. Once you get the concepts behind programming down, what language you are using becomes insignificant because languages become trivial to learn. Worrying about which version of SQL to use becomes pointless if you know how SQL works in general because once that base knowledge is there, you could probably pick up a different version of SQL in an hour. Likewise with any imperative/procedural and some functional language (After using some Haskell, which is a purely functional language, I am not going to lump it in with Python and the like. It's, shall we say, a bit obtuse at times. I'm not even going to touch logic languages. Those are a completely different beast from imperative or fuctional languages. Prolog, which is an older logic language, for example, is writing out things called facts and things called rules and then asking an interpreter stuff. Sound confusing? That's because it is. It's really fun though). If you know how languages like C work, you can pick up basic Java in 2 hours. It becomes learning differences in syntax and what each language calls all its stuff in the API (see paragraph below for an explanation of API in simple terms. It should make it a little less weird). For example, I am picking up some C# right now so I can mess around with Unity a bit once classes are done, and given how much I know with Java (they're both object oriented languages with C-style syntax), most of the time I spend learning is simply thinking "what's the C# API equivalent of this thing I already know in Java" so it becomes more just looking function names up since all the concepts are similar for the most part.

Also, don't get caught up in all the jargon. A lot of it can be simplified into a way that makes sense. For APIs, just think of them as sets of tools for doing stuff in a given language that are handily prebuild for you so you don't have to build them yourself. For example the Java API is all the provided, built-in tools you can use to build stuff in the Java language. javax.swing is one of the tools you can use to make graphical user interfaces, another one is java.awt. The java.math is the set of tools for doing mathy stuff like trigonometry and that mumbo jumbo (if you want random number generators, that type of stuff is also usually in math sections of a given API if random doesn't have its own section). Stuff like that. API just means toolset in basic terms.

Avatar image for aegon
Aegon

7345

Forum Posts

104

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

#15  Edited By Aegon

@ben_h: And now I understand what APIs are. Awesome (and thanks).

Avatar image for deactivated-57d3a53d23027
deactivated-57d3a53d23027

1460

Forum Posts

121

Wiki Points

0

Followers

Reviews: 3

User Lists: 5

If you have a mac get this app: http://kapeli.com/dash

It allows you to download the documentation for many popular languages and frameworks. So you can search for functions, classes, etcetera instantly. It's extremely useful to me personally.

Stack overflow and google results also appear after the API results, so you can almost always find what you need even if your query is not in the API.

The app is its developer's primary source of income, so he/she is always adding useful new features. It's much better than browser bookmarks of the API's and searching via google.

Avatar image for gusssk
gusssk

12

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Learn Ruby. Get familiar with test-driven-development. Having a functional test is essential to any developer.

PM me for further details.

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

@gusssk:

Learn Ruby.

Why? He already knows some Python and wants to add Django on top of it. Ruby and Rails won't add any benefit to him at this point. That's something can look into later on.

Get familiar with test-driven-development.

Agreed, but that is something that should come after one learns to write basic unit-tests. I really like the 2nd post in this: http://stackoverflow.com/questions/64333/disadvantages-of-test-driven-development