in reply to
Where Do I Go Next?
I suggest you start at least thinking
about the basic skills needed by working developers.
My experience with new graduates at our company is that, despite
having studied "computer science" for a number of years, there are
often gaping holes in their basic, practical software development
technique, such as:
- Always use a revision control system.
- Use a single-step automated build.
- Avoid duplication (DRY).
- Descriptive, explanatory, consistent and regular names.
- Useful commenting and documentation.
- Design the module's interface first.
- Sound domain abstractions.
- Wise program decomposition.
- Highly cohesive, loosely coupled modules.
- Minimize the exposure of implementation details.
- Minimize the scope of variables, pragmas, etc.
- Write components that are testable in isolation.
- Write the test cases before you write the code.
- Add new test cases before you start debugging.
- Establish a rational error handling policy and follow it strictly.
- "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live" (Damian Conway)
Many of these tips were taken from On Coding Standards and Code Reviews
Many years ago, I was lucky enough to meet Bjarne Stroustrup.
I remember him telling me that "you can't learn to ride a bicycle by a correspondence course".
That is, becoming a good programmer takes practice, lots of practice.
So you will need to find a little project to develop,
to practice many of the techniques above.
See also code kata.