<?xml version="1.0" encoding="windows-1252"?>
<node id="914904" title="Re: Where Do I Go Next?" created="2011-07-16 20:09:48" updated="2011-07-16 20:09:48">
<type id="11">
note</type>
<author id="176576">
eyepopslikeamosquito</author>
<data>
<field name="doctext">
&lt;P&gt;
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:
 &lt;ul&gt;
  &lt;li&gt; Always use a revision control system.
  &lt;li&gt; Use a single-step automated build.
  &lt;li&gt; Avoid duplication (&lt;a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;DRY&lt;/a&gt;).
  &lt;li&gt; Descriptive, explanatory, consistent and regular names.
  &lt;li&gt; Useful commenting and documentation.
  &lt;li&gt; Design the module's interface first.
  &lt;li&gt; Sound domain abstractions.
  &lt;li&gt; Wise program decomposition.
  &lt;li&gt; Encapsulation.
  &lt;li&gt; Highly cohesive, loosely coupled modules.
  &lt;li&gt; Minimize the exposure of implementation details.
  &lt;li&gt; Minimize the scope of variables, pragmas, etc.
  &lt;li&gt; Write components that are testable in isolation.
  &lt;li&gt; Write the test cases before you write the code.
  &lt;li&gt; Add new test cases before you start debugging.
  &lt;li&gt; Establish a rational error handling policy and follow it strictly.
  &lt;li&gt; &lt;I&gt;"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"&lt;/I&gt; (Damian Conway)
 &lt;/ul&gt;
Many of these tips were taken from [id://744932].
&lt;/P&gt;

&lt;P&gt;
Many years ago, I was lucky enough to meet Bjarne Stroustrup.
I remember him telling me that &lt;I&gt;"you can't learn to ride a bicycle by a correspondence course"&lt;/I&gt;.
That is, becoming a good programmer takes &lt;I&gt;practice&lt;/I&gt;, lots of practice.
So you will need to find a little project to develop,
to practice many of the techniques above.
See also &lt;a href="http://codekata.pragprog.com/"&gt;code kata&lt;/a&gt;.
&lt;/P&gt;
</field>
<field name="root_node">
914881</field>
<field name="parent_node">
914881</field>
</data>
</node>
