Programming skill progression?

I started teaching myself VB.NET a few years ago and then moved onto c# just because it looked cleaner to use. I've now been using c# for about a year and I've managed to create everything i've needed to through using google and like using it a lot more than c#.

The problems i have is knowing the tools/tech thats available to me when i start anything. Having taught myself i mostly just guess my way through everything and hope it work at the end... and normally after a few attempts trying new things it does, and thats kinda the problem, I dont know the theory behind things, i only know what things do at their face value. That in itself causes me no end of headaches trying to understand why soemthing doesn't work when i think it should, but maybe that makes me a better programmer because of having to learn the intricate details of something when i do hit a wall.

I'm probably not employable as a programmer mind you, i can do stuff that i sit down and make myself and persevere with, but thats probably not the best way to do things and any software firm would just laugh at it.
 
Yeah I think I could do with getting to grips with the software architecture so I can design by hand first, but how do you learn this skill? I find that I have a fair idea what I need to do, some structures that I need to implement, what I need to use (in terms of constructs) but this is often only a tiny piece of the program...and how to make the smaller steps either side of what I know I need to create fries my brain.

I think you just have to sit down and start; put the key tasks your program needs to be able to achieve in big bubbles on an A3 sheet of paper and start drawing around them. I completely agree with djkav - once you have worked out the logic and can see the bigger picture at a glance, the programming will be much easier because you can see overlaps, dependencies, etc. I almost think someone who has written a dissertation has an advantage here - it's less about 'how much do you know about the basics of programming' and more 'how good are you at organising data so that it fits together'.

This is a very simplistic example (I don't build operating systems!), but it demonstrates my point - I built a site recently that used client testimonial data in various places, and because I sat down and mapped out exactly where they were being used and the type of data that was being output, it was very easy to build a utility that would cope with all instances of client testimonials - whereas if I'd just started building, I would've lost time and teh code would have been messy as a result.

& to second jbs, there's nothing quite like work experience to make you better - I still find it amazing that people pay me to write code and think I know what I'm talking about!
 
Back
Top Bottom