I taught myself "programming". By the time I attended university I had written a few small programs/toys.
When we were formally taught Java at university, there were 10 hours of tutored labs available. I certainly didn't need any help to do the coursework, yet I went. I soon found some real hackers, who happily ripped my coding attempts to pieces (in a good way, mind).
When I started work on my first attempt at architecture, I got some guidance from some of the same people. Whilst design patterns were around, these people helped me understand which ones to look at, why, and what overkill was.
When I graduated and started working, I was already a "better" programmer than some of my peers, as I had been shown GDB (and hence JDB) by my mentors. However two years in I worked on a project with some talented developers, and again I learned about IOC etc.
Mentors save you a lot of time and energy. They are present in almost all trades where you have apprenticeships, and I for one know I thrive in that sort of situation - the one where I am challenged by someone who has been there before, who forces me to back up my designs/arguments by reading directed texts.
If I hadn't had them, I'd have found my own path. But I'd have spent a lot of time wondering somewhat aimlessly, reading semi-useful books cover to cover (yawn), and screwing up projects...
When we were formally taught Java at university, there were 10 hours of tutored labs available. I certainly didn't need any help to do the coursework, yet I went. I soon found some real hackers, who happily ripped my coding attempts to pieces (in a good way, mind).
When I started work on my first attempt at architecture, I got some guidance from some of the same people. Whilst design patterns were around, these people helped me understand which ones to look at, why, and what overkill was.
When I graduated and started working, I was already a "better" programmer than some of my peers, as I had been shown GDB (and hence JDB) by my mentors. However two years in I worked on a project with some talented developers, and again I learned about IOC etc.
Mentors save you a lot of time and energy. They are present in almost all trades where you have apprenticeships, and I for one know I thrive in that sort of situation - the one where I am challenged by someone who has been there before, who forces me to back up my designs/arguments by reading directed texts.
If I hadn't had them, I'd have found my own path. But I'd have spent a lot of time wondering somewhat aimlessly, reading semi-useful books cover to cover (yawn), and screwing up projects...