Regarding development and language (Java) Unfortunately the best way to learn software development in any language is to experience a significant amount of pain from doing things the wrong way that, when you find out about the right way, it will make sense (mmm... yeah, that would be much less painful than the way I just did it).
To get started (in any language) I think everyone just needs to pick something they want, some tool or toy, and then build it. It's best if it can be something that is driven by a simple data structure that will not get messy, a single data type is probably a good start. For example, a time keeper which holds a single record for each time slot of the day, or an app that pulls from a public REST API and restructures the results in a way you want. After that, pointers/object references, passing by reference, passing by value, and garbage collection become important. Whatever language you're in, you should get a grasp on how it works in your language before going too much further. I feel like learning to write a recursive function, or an algorithm that walks a tree of nodes is really a great way to learn how your language works from the perspective of object references, functions, and the stack. >From an object oriented approach, in my opinion, it's best to learn how to write good APIs for classes and subsystems by writing them backwards. Write the consumer of the API first, then write the class or subsystem. In the end, the first consumer of an API is going to be thrown away, so just think of it as a scratch pad for how a particular class is going to interact with the program, which will get you thinking about the actual implementation of the class before diving in and shooting your toes off. Also, with Java, I would stay away from the IDE for a while. It really bothers me when I meet programmers who don't know how a language works, or how to refactor code, because they've never been outside an IDE. I'm really not a big fan of Java because of all the boilerplate etc. but one of the best books I've seen on the topic is Head First Java (yeah the silly purple books with all the illustrations... but they're pretty good). But honestly, probably the most useful information after diving in, is to follow all the rants on the internets: http://www.hnsearch.com/search#request/all&q=java -- Kris Web Programmer for Fun and Profit _______________________________________________ Mid-Hudson Valley Linux Users Group http://mhvlug.org http://mhvlug.org/cgi-bin/mailman/listinfo/mhvlug Upcoming Meetings (6pm - 8pm) Vassar College Jan 4 - Getting Involved in Open Source Feb 1 - Home Networking Made Simple with Amahi Home Server
