views:

87

answers:

4

I hope this is not a repeat question, because I'm asking about a very specific scenario.

A brief explanation: I learned LAMP development on the job by following the design practices of my supervisor. I've been exposed to plenty of open source platforms (eg. wordpress, code ignitor, joomla etc...) and left over php freelance assignment, so I've seen my share of good and bad code. I also spent a couple of years at a big newspaper company doing CMS development with the .NET framework. So over the years, I've had the benefit of seeing many different ways of doing things, learning from my supervisors and co-workers, and seeing what works and what doesn't. For someone who's only programmed for 5 years, I'd evaluate myself as an average to slightly above average programmer.

I am self-employed now and I'm interested in learning mobile application development (like building iphone applications). I want to learn on my own, but I'm concerned that it will take me a LONG time for me to become reasonably proficient with this new technology, especially since I don't have a lead supervisor to learn from.

I've seen some programmers turn out really bad code despite their claim that they've been programming for 20 years (maybe the best practices 20 years ago do not apply today?). I'm concerned that learning to code as a self-employed individual may lead to me adopting very bad habits. I'm concerned that reading about new design practices is not as good as having a supervisor evaluate my work.

Can anyone offer me guidance?

+3  A: 

Looking at other programmer's code is a great way to learn, once you have the basics of the syntax and semantics of a new system.

See what people consider to be a good program. When looking at how to use the GTK API, I might look at some Gnome programs, for example.

Learning from others works great, providing the code you learn from is considered good by people who know better than you.

Aiden Bell
In support of this suggestion, I would like to add that reading other people's code and being able to understand it quick an invaluable skill by itself.Like in music: you need to play a lot of other people's music in order to compose yours.
Sasha O
I developed that skill teaching C for several semesters. Before that, I wasn't nearly as good at looking at C code and almost immediately understanding what it did, including the bugs.
David Thornley
My first reaction
instanceofTom
+3  A: 

There are people who learn well alone, and people who need guidance. You seem to be of this latter category.

My advice: buy books, find screencasts, read existing code, and what could be the best hope for somebody like you: find an open source project you fit in nicely, you can then probably find mentors there via email or IRC.

Check this out, there are various tempting alternatives, like android (http://code.google.com/p/apps-for-android/), openmoko, phonegap, opensource.nokia.com and so on. I bet you can find a community you like to learn.

Vinko Vrsalovic
+3  A: 

Learning styles differ from person to person. If you are the type to best learn from watching other people do and also be supervised and "taught" by them, the prospect of learning-by-reading and -by-doing may not appeal to you.

But: if you have all that experience in certain areas, it should be easy for you to adapt those good experiences and best-practices to other topics as well.

Read about the topic, use what you learned before and adapt it to those new fields. Then go find source-code that other people have written and look at that.

Gerd Klima
+3  A: 

A lot of the good practices you've learned on different platforms and languages will translate to a new platform and language. What makes programmers good is more than just how familiar they are with a particular platform or language.

I'd pick up a good reference book on the platform you're looking to learn and go from there.

TLiebe