tags:

views:

250

answers:

5

I've gone through several tutorials in various languages (currently working my through the Agile Web Development with Rails book for an attempt at practical learning) and on their own, these tutorials don't seem to give a good big picture of development. You can learn how to write arrays, define variables and several other concepts but I'm not sure where I would need to do these things in practical application. In other words, it doesn't seem clear how all of this fits together. I'm hoping the Agile book will be helpful in this regard or maybe writing a Wordpress theme for learning PHP. What are some good ways to go about learning this "big picture" of development? What's the structure of what goes where? Maybe it's the notion of learning by doing, but what's a good approach to this?

+13  A: 

Learn by doing is a great approach. Building something.

In my experience the hardest part about getting started on your own is to think of something you want to write. Try to think of something from outside your computing life that would benefit from a computer program of some kind. For example to teach myself Rails I wrote a simple program that generates cookie recipes. I couldn't tell the forest from the trees with rails until I'd gone through the motions once.

acrosman
Were you new to programming when you did this?
Mackristo
That's the approach I took with my first program, and the approach I've taken with every new technique, language, and library I've learned since then.
rampion
Yes it was. Many of those projects were just things I built for myself, and I've gotten much better at knowing what was a project I could handle, but it has always been part of my learning style.
acrosman
The short version of this answer: "Practice, practice, practice". Practice what? Anything you can think of. Create goals/small projects, and just start going at it.
anonymous coward
+2  A: 

I always feel that reading a good book gets you on a firm foundation and gives you an edge in anything that you want to do. I'm a big fan of the Head First series, though a few people don't seem to take them seriously. Maybe because they're so fun to read?

Here are the two books on the big picture on how to develop software from Head First:

  1. Software Development
  2. Object oriented Analysis and Design

The books should give you a better idea of how to start, how everything fits together.

Once you've done this, you need to work on a real life application, build something that you want to use in your real life. For example a CD cataloging program or a simple to do program. It's essential that you build something that you'll actually use. Software is meant to be used. You need to use the software that you build in order to really experience what it feels like for your clients or customers.

Once you've done this, try to keep improving the project that you've built by adding in new features. One of the biggest mistakes that new developers make is not realizing how important maintainability is. It's only after you've been burnt that you realize the importance of good Object oriented design, unit tests, source control etc.

Praveen Angyan
"Object oriented Analysis and Design" says "We assume you are familiar with Java." well... I'm afraid this book is not for the beginners. (the same about 1-st). Beginners, don't read it - you'll just have a big risk to get confused.
Jet
+2  A: 

When learning something new, I find practice pieces helpful. Bite off some small problem and solve it. Then bite off another slightly larger problem. Too big a chunk, and you risk getting lost in confusion.

Dave Thomas of the Pragamatic Programmers pushed the idea of Code Katas. Take the language you're trying to master, and have a shot at a few of those.

Dave W. Smith
+3  A: 

The best way to start: find something you want to do (i.e. online contacts-list would be a good start). Not "any script to learn", but the certain task which finally must work. Yes - it will be a long way to uderstand how to start writing. Yes, you will rewrite your scripts every time when you'll find a better way to do smth (there was a time, when I wrote a funtion the same as php's implode() - that was funny to find it in manual). But as result - you will understand the basic concepts of software development, and then only real experience and reading manuals matters. In your first project you will loose 90% of time to find "how to do this" and 10% to write it as you designed. Only with experience things will swap and 90% of tim you'll spen in writing.

Jet
+1  A: 

In my opinion, learning to 'put it all together' is probably the hardest part of web development. Especially when you're starting, it can be extremely difficult to differentiate what you as a developer would normally be responsible for (things such as your code to control the settings for your application) versus the things that you aren't (the specifics of your hosting environment which may require you to use specific settings in your application so your host can accommodate it). Planning your project is something that a book just can't reasonably teach you.

It also doesn't help you that you're trying to pick up this knowledge through frameworks and application languages that emphasize agile development principles, since projects developed in this methodology tend to not really be that rigid in development structure. If you have a friend or know someone whose been there before, my advice would be to pump him or her for as much information as you can in terms of planning your application. Since you're working within Rails, stay faithful to that framework while you build your app; don't experiment with techniques or alternate development styles that aren't presented in your documentation. Always remember that since this is your application, you can always go back and refactor the code into a different development style any time you want. It's much easier to learn something new when you have something to base it off of.

KeRiCr
Do you think Rails is a sensible approach? Or possibly another language and/or framework?
Mackristo
To be honest, I can't say. I don't know Rails. I cut my teeth on ColdFusion and have a little PHP, but I haven't touched Rails at all. From what I understand, Rails should be easy to learn because it's by design very restrictive in what you can do, but if I had it to do all over again, I probably would have started in Java.
KeRiCr