views:

225

answers:

0

I know some programming. I know little bit of Java, I know some C#, I know some GW Basic. I've followed those 30 minute Ruby, Python tutorials and so on. I took some computer courses in college but didn't take them very seriously at that time. After I finished school, I got an IT job but my luck (or bad luck) I ended up doing non-coding work (requirements analysis, business analysis, project management etc.). I changed jobs and I now work in a "software configuration management" so although the job is technical, I don't really have to code. I just debug people's build files (ant, maven), help people with check-in/check-outs and make sure their project builds on our build-box. I've been doing this for 4 years now and my official title has been "Senior Developer" all this while. So, I kind of feel like an imbecile because I am not really a developer. I haven't yet learned the art of programming.

So, I'd like to get started and teach myself some real world programming. Right now, I can read and understand overall code and make small hacks. But I start sweating when I click "new" in text editor and it opens an empty file. I don't know how to begin programming, how to approach problems? I don't even know syntax of the top of my head. When I am hacking someone else's code, it's easy to change values, modify loops, throw some if/else statements and make whatever changes are required. But writing a complete program from scratch makes me sweat.

So, how do I learn programming? Ideally, it'd be nice to just start working as a junior programmer under a senior programmer but that's not the choice I've right now. Is there a site or some place where I can volunteer and do small work for a proficient/expert programmer for free? Somewhere I can get myself paired as a virtual apprentice (sort of) to a virtual coding-mentor? The mentor can throw some work at me every day and I'd complete it during the day and email the results in the evening. First few weeks, I would not be very productive. I would probably email my coding-mentor a lot of times throughout the day to ask questions/clarifications. But as I learn and absorb more knowledge from my coding-mentor, I'd get more productive and my work would be more and more valuable to my mentor.

This way, I would learn good coding habits/style, some good pointers on how to approach a problem, and I would be helping me mentor in real-world problems so I'd get real-world exposure. Eventually, I'd develop my own style.

I'd prefer to start in Ruby or Python and I'd prefer web-development track. But I will take whatever I can get. The idea is to become better at programming in general. Preference is web development though. I am not really a novice in the world of programming. I am , well, I don't know the word for my skill level.