<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Are you a &#8216;good&#8217; programmer? I&#8217;m not!</title>
	<atom:link href="https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/feed/" rel="self" type="application/rss+xml" />
	<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/</link>
	<description>Passionate about Africa&#039;s software industry</description>
	<lastBuildDate>Wed, 07 Aug 2013 11:24:08 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Albert on Caffeine &#124; Are you a ‘good’ programmer? I’m not! - Software Engineer</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-907</link>
		<dc:creator>Albert on Caffeine &#124; Are you a ‘good’ programmer? I’m not! - Software Engineer</dc:creator>
		<pubDate>Mon, 22 Apr 2013 19:21:52 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-907</guid>
		<description><![CDATA[[...] Prof Barry Dwolatzky&#039;s topic this week and i just found it so interesting, I mean seriously &quot; Are you a good programmer? &quot;.Well i would look at three different things that really matters [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Prof Barry Dwolatzky&#039;s topic this week and i just found it so interesting, I mean seriously &quot; Are you a good programmer? &quot;.Well i would look at three different things that really matters [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dorothy</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-406</link>
		<dc:creator>Dorothy</dc:creator>
		<pubDate>Thu, 16 Feb 2012 06:51:15 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-406</guid>
		<description><![CDATA[Hi, I came across this blog and it&#039;s really helpful. Honestly, I can&#039;t tell whether I&#039;m a good programmer or not but thanks for the article anyway.]]></description>
		<content:encoded><![CDATA[<p>Hi, I came across this blog and it&#8217;s really helpful. Honestly, I can&#8217;t tell whether I&#8217;m a good programmer or not but thanks for the article anyway.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mvelo Walaza</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-79</link>
		<dc:creator>Mvelo Walaza</dc:creator>
		<pubDate>Thu, 20 May 2010 07:21:42 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-79</guid>
		<description><![CDATA[Hi Prof,

I am also interested in PSP and would like to know when it (courses) will be offered, and where. Is there reading material on this?

I am a programmer but I cannot really tell whether I am &#039;good&#039; or not because I have not been measured. My job entails developing new software as well as maintaing existing software.]]></description>
		<content:encoded><![CDATA[<p>Hi Prof,</p>
<p>I am also interested in PSP and would like to know when it (courses) will be offered, and where. Is there reading material on this?</p>
<p>I am a programmer but I cannot really tell whether I am &#8216;good&#8217; or not because I have not been measured. My job entails developing new software as well as maintaing existing software.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-65</link>
		<dc:creator>Stefan</dc:creator>
		<pubDate>Fri, 07 May 2010 11:02:19 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-65</guid>
		<description><![CDATA[Two book titles are interesting in this context, namely:
- &quot;The ART of Computer Programming&quot; (by D. Knuth),
- &quot;The SCIENCE of Programming&quot; (by D. Gries),

(Capitalization of the words &quot;ART&quot; and &quot;SCIENCE&quot; by myself, not in the original titles).
Barry&#039;s term &quot;good&quot; can thus either mean: &quot;good as art&quot;, or &quot;good as science&quot;.

The question, whether programming is still (only) an &quot;art&quot; or whether it has already reached a status of &quot;science&quot;, is still an open question in the domain of philosophy of science, particularly philosophy of computer science (which is still a fairly new branch of modern philosophy).

However, in between these two extremes - &quot;art&quot; on the one hand, and &quot;science&quot; on the other hand - we can find the concept of &quot;engineering&quot;, which features particular elements of both, arts and science. Consequently we could ask, if Barry&#039;s &quot;good&quot; programming could also be understood as: &quot;good as engineering&quot;.

Engineering in all classical engineering disciplines, however, has always been characterized by the availability of pre-digested and standardised &quot;handbook knowledge&quot;, which the engineer can easily look up and apply in the circumstances of his particular projects. Much of &quot;engineering&quot; is thus the repeated application of standardised &quot;handbook knowledge&quot;, whereas the unforeseen emergence of groundbraking new ideas of highest originality is only a rare case and only the smallest part of typical &quot;engineering&quot; activities. [Acknowledgments to Tom Maibaum for several related discussions I&#039;ve had with him about this topic.]

Consequently the question arises now in this context of Barry&#039;s Blog: Do we have such &quot;handbook knowledge&quot; in the domain of programming? The answer is loud and clear: YES! We sit indeed on an enormous pile of knowledge about Algorithms and Data Structures, which have been investigated since the late 1950s (!), and which can be readily applied to MOST of our usual, standard application problems.

The &quot;good&quot; programmer in this context is thus NOT the out-of-this-world &quot;genius&quot; who suddenly comes up with something utterly new and unheard-of. The &quot;good&quot; programmer is here the one who is well familiar with the vast body of knowledge (BOK) in Algorithms and Data Structures, as it has been developed since several decades, and who is able to choose wisely the appropriate &quot;recipes&quot; from this &quot;cook-book&quot; for application and re-application in his daily projects.

The BAD programmer, on the contrary, is then the one who&#039;s trying hard to be smarter and more &quot;inventive&quot; than everybody else, and thereby only re-invents the wheel, because of having ignored or forgotten the ample historical repository of already existing and widely applicable BOK-solutions. The good programmer, so I may conclude, is the one who knows the HISTORY of his trade.]]></description>
		<content:encoded><![CDATA[<p>Two book titles are interesting in this context, namely:<br />
- &#8220;The ART of Computer Programming&#8221; (by D. Knuth),<br />
- &#8220;The SCIENCE of Programming&#8221; (by D. Gries),</p>
<p>(Capitalization of the words &#8220;ART&#8221; and &#8220;SCIENCE&#8221; by myself, not in the original titles).<br />
Barry&#8217;s term &#8220;good&#8221; can thus either mean: &#8220;good as art&#8221;, or &#8220;good as science&#8221;.</p>
<p>The question, whether programming is still (only) an &#8220;art&#8221; or whether it has already reached a status of &#8220;science&#8221;, is still an open question in the domain of philosophy of science, particularly philosophy of computer science (which is still a fairly new branch of modern philosophy).</p>
<p>However, in between these two extremes &#8211; &#8220;art&#8221; on the one hand, and &#8220;science&#8221; on the other hand &#8211; we can find the concept of &#8220;engineering&#8221;, which features particular elements of both, arts and science. Consequently we could ask, if Barry&#8217;s &#8220;good&#8221; programming could also be understood as: &#8220;good as engineering&#8221;.</p>
<p>Engineering in all classical engineering disciplines, however, has always been characterized by the availability of pre-digested and standardised &#8220;handbook knowledge&#8221;, which the engineer can easily look up and apply in the circumstances of his particular projects. Much of &#8220;engineering&#8221; is thus the repeated application of standardised &#8220;handbook knowledge&#8221;, whereas the unforeseen emergence of groundbraking new ideas of highest originality is only a rare case and only the smallest part of typical &#8220;engineering&#8221; activities. [Acknowledgments to Tom Maibaum for several related discussions I've had with him about this topic.]</p>
<p>Consequently the question arises now in this context of Barry&#8217;s Blog: Do we have such &#8220;handbook knowledge&#8221; in the domain of programming? The answer is loud and clear: YES! We sit indeed on an enormous pile of knowledge about Algorithms and Data Structures, which have been investigated since the late 1950s (!), and which can be readily applied to MOST of our usual, standard application problems.</p>
<p>The &#8220;good&#8221; programmer in this context is thus NOT the out-of-this-world &#8220;genius&#8221; who suddenly comes up with something utterly new and unheard-of. The &#8220;good&#8221; programmer is here the one who is well familiar with the vast body of knowledge (BOK) in Algorithms and Data Structures, as it has been developed since several decades, and who is able to choose wisely the appropriate &#8220;recipes&#8221; from this &#8220;cook-book&#8221; for application and re-application in his daily projects.</p>
<p>The BAD programmer, on the contrary, is then the one who&#8217;s trying hard to be smarter and more &#8220;inventive&#8221; than everybody else, and thereby only re-invents the wheel, because of having ignored or forgotten the ample historical repository of already existing and widely applicable BOK-solutions. The good programmer, so I may conclude, is the one who knows the HISTORY of his trade.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Robb</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-63</link>
		<dc:creator>Peter Robb</dc:creator>
		<pubDate>Fri, 07 May 2010 06:55:00 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-63</guid>
		<description><![CDATA[Being a good programmer i feel is relative to your domain ie a programmer for NASA that expresses himself through mathematical equation vs a line-of-business programmer might be as good as one another in their domains, but as soon as you cross-pollinate they could quite easily be very inept. I believe what makes a good programmer is his ability to adapt. This is why it is so important to understand the fundamentals of coding ie stacks, heaps, pointers etc. These concepts are across the board for all development environments and are the single commonality - everything else is really just syntax. Discipline is the second item i would raise - ie using proven methods to produce a predictable outcome ie patterns and practices, i have seen code smells develop almopst instantaneously just because time constraints caused &#039;on-the-fly&#039; code.

In summary - i feel that discipline and a good understanding of the fundamental concepts of programming create a good programmer, Once you have these coupled with a good attitude you should be able to adapt to whatever language you come across. Just my 2 cents worth.]]></description>
		<content:encoded><![CDATA[<p>Being a good programmer i feel is relative to your domain ie a programmer for NASA that expresses himself through mathematical equation vs a line-of-business programmer might be as good as one another in their domains, but as soon as you cross-pollinate they could quite easily be very inept. I believe what makes a good programmer is his ability to adapt. This is why it is so important to understand the fundamentals of coding ie stacks, heaps, pointers etc. These concepts are across the board for all development environments and are the single commonality &#8211; everything else is really just syntax. Discipline is the second item i would raise &#8211; ie using proven methods to produce a predictable outcome ie patterns and practices, i have seen code smells develop almopst instantaneously just because time constraints caused &#8216;on-the-fly&#8217; code.</p>
<p>In summary &#8211; i feel that discipline and a good understanding of the fundamental concepts of programming create a good programmer, Once you have these coupled with a good attitude you should be able to adapt to whatever language you come across. Just my 2 cents worth.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lukhambule Khumalo</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-61</link>
		<dc:creator>Lukhambule Khumalo</dc:creator>
		<pubDate>Thu, 06 May 2010 09:36:11 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-61</guid>
		<description><![CDATA[I have not programmed for the last seven years and now I am faced with this big task of programming while pursuing  my Masters here at WITS. 

 I have an interest in  PSP as it seems it works very well for you. Where can one take the PSP course? Any recommended books one may look at?]]></description>
		<content:encoded><![CDATA[<p>I have not programmed for the last seven years and now I am faced with this big task of programming while pursuing  my Masters here at WITS. </p>
<p> I have an interest in  PSP as it seems it works very well for you. Where can one take the PSP course? Any recommended books one may look at?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Myburgh</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-60</link>
		<dc:creator>Mark Myburgh</dc:creator>
		<pubDate>Thu, 06 May 2010 07:51:39 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-60</guid>
		<description><![CDATA[any news on when PSP will be offered as a course in SA?]]></description>
		<content:encoded><![CDATA[<p>any news on when PSP will be offered as a course in SA?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Winton</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-56</link>
		<dc:creator>Mark Winton</dc:creator>
		<pubDate>Wed, 05 May 2010 11:35:20 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-56</guid>
		<description><![CDATA[“How do you know?”

Your customers keep buying your products even 10 years after the &quot;new car&quot; smell has worn off.

I try in my company to have software that just works and aim to make it such that if it went to mars we would not have to send anyone there to fix it.
Today with the dev tools and everything connected and flash-able it makes for sloppy lazy programmers that slam dunk solutions together and wait till run time(or customer cancellations) to bug fix.

I started out coding in assembler on Z80&#039;s and burning proms.
If you didn&#039;t have attention to detail you could end up with an expensive and time wasting delay or even worse a buggered processor.
I do not want a return to those days, however I have found that today&#039;s young engineers seem to have a &quot;just throw more processing power or Ram at the situation rather than really understand the problem.
Also with abstraction has come a lack of understanding of the fundamentals of processing and memory management.

I hired two very well qualified software engineers (MSC&#039;s from Wits) a few years back and had them working on a RS232 comms controller for a Radio Data network.
It took three months, thousands of lines of code and endless late nights with these guys trying to debug a complex multithreading  C# application complete with multi agent architecture(why?)
The system kept on locking up and running out of steam even though the PC processor was a latest dual core pentium and the Radio network driving it all was only a simple 8 bit processor.
&quot;We can&#039;t use SQL express we need a full licence&quot; I was told and maybe more Ram.

Fortunately for me these geniuses were &quot;headhunted&quot; out of my company and I ended up having to re-write the application myself.
I am an electronics guy not a software guy so I did what was the easiest for me and re-wrote the application in VB6.
150 lines of code 1/100 of the processor load compared to the other app as I use the hardware (uart) to do half the processing for me in hardware (Data and header detection) and buffering and interrupts(sorry &quot;events&quot; in sw speak). 
No bugs and the client is happy.
No threading no Agents running around &quot;polling each other&quot;, just simple code and its still working bug free a year later.

As an engineer, I like solving challenges in a simple and sometimes unique fashion, as a business owner all that is important is that it works reliably and it does exactly as the customer wants.]]></description>
		<content:encoded><![CDATA[<p>“How do you know?”</p>
<p>Your customers keep buying your products even 10 years after the &#8220;new car&#8221; smell has worn off.</p>
<p>I try in my company to have software that just works and aim to make it such that if it went to mars we would not have to send anyone there to fix it.<br />
Today with the dev tools and everything connected and flash-able it makes for sloppy lazy programmers that slam dunk solutions together and wait till run time(or customer cancellations) to bug fix.</p>
<p>I started out coding in assembler on Z80&#8242;s and burning proms.<br />
If you didn&#8217;t have attention to detail you could end up with an expensive and time wasting delay or even worse a buggered processor.<br />
I do not want a return to those days, however I have found that today&#8217;s young engineers seem to have a &#8220;just throw more processing power or Ram at the situation rather than really understand the problem.<br />
Also with abstraction has come a lack of understanding of the fundamentals of processing and memory management.</p>
<p>I hired two very well qualified software engineers (MSC&#8217;s from Wits) a few years back and had them working on a RS232 comms controller for a Radio Data network.<br />
It took three months, thousands of lines of code and endless late nights with these guys trying to debug a complex multithreading  C# application complete with multi agent architecture(why?)<br />
The system kept on locking up and running out of steam even though the PC processor was a latest dual core pentium and the Radio network driving it all was only a simple 8 bit processor.<br />
&#8220;We can&#8217;t use SQL express we need a full licence&#8221; I was told and maybe more Ram.</p>
<p>Fortunately for me these geniuses were &#8220;headhunted&#8221; out of my company and I ended up having to re-write the application myself.<br />
I am an electronics guy not a software guy so I did what was the easiest for me and re-wrote the application in VB6.<br />
150 lines of code 1/100 of the processor load compared to the other app as I use the hardware (uart) to do half the processing for me in hardware (Data and header detection) and buffering and interrupts(sorry &#8220;events&#8221; in sw speak).<br />
No bugs and the client is happy.<br />
No threading no Agents running around &#8220;polling each other&#8221;, just simple code and its still working bug free a year later.</p>
<p>As an engineer, I like solving challenges in a simple and sometimes unique fashion, as a business owner all that is important is that it works reliably and it does exactly as the customer wants.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Klausli</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-55</link>
		<dc:creator>Peter Klausli</dc:creator>
		<pubDate>Wed, 05 May 2010 08:38:59 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-55</guid>
		<description><![CDATA[Hi Barry

I would like to make some comments on your blog about a good programmer.
I also started as a programmer in 1983, my world at this time was IBM-MVS Hosts, Cobol, IMS.

I started with a big Insurance company in a 2 years trainings course. In the first 9 months we did not write one single line of code but trained structuring programmes. The company was heavily committed to Jackson programme structuring methods (I don&#039;t know if you know about that, but at that time it was quite famous). However we trained structuring programmes until we dreamed about it at night. We also learned how to test programmes methodically, how to test exception (e.g. if no input, if impossible input, etc.).

When I came out of this course I was a good programmer and I programmed good in the sense of your blog. Something I also learned was to re-use code; copy/paste was the most efficient way to write programmes at that time: The coding was quick and the code was tested already.

However i moved forward and since a number of years I work as Project and Programme Manager. When I look at the young programmers in our teams I always find they are brilliant with ideas on how to solve a problem, but they completely lack the good old craftman ship of programming.

As a result the solutions are often brilliant, the quality is lousy. Maybe going back to these old programme craftman ship values would not be such a bad idea.

regards

Peter]]></description>
		<content:encoded><![CDATA[<p>Hi Barry</p>
<p>I would like to make some comments on your blog about a good programmer.<br />
I also started as a programmer in 1983, my world at this time was IBM-MVS Hosts, Cobol, IMS.</p>
<p>I started with a big Insurance company in a 2 years trainings course. In the first 9 months we did not write one single line of code but trained structuring programmes. The company was heavily committed to Jackson programme structuring methods (I don&#8217;t know if you know about that, but at that time it was quite famous). However we trained structuring programmes until we dreamed about it at night. We also learned how to test programmes methodically, how to test exception (e.g. if no input, if impossible input, etc.).</p>
<p>When I came out of this course I was a good programmer and I programmed good in the sense of your blog. Something I also learned was to re-use code; copy/paste was the most efficient way to write programmes at that time: The coding was quick and the code was tested already.</p>
<p>However i moved forward and since a number of years I work as Project and Programme Manager. When I look at the young programmers in our teams I always find they are brilliant with ideas on how to solve a problem, but they completely lack the good old craftman ship of programming.</p>
<p>As a result the solutions are often brilliant, the quality is lousy. Maybe going back to these old programme craftman ship values would not be such a bad idea.</p>
<p>regards</p>
<p>Peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Schofield</title>
		<link>https://softwareengineer.org.za/are-you-a-good-programmer-im-not/163/comment-page-1/#comment-54</link>
		<dc:creator>Adrian Schofield</dc:creator>
		<pubDate>Wed, 05 May 2010 07:36:56 +0000</pubDate>
		<guid isPermaLink="false">https://softwareengineer.org.za/?p=163#comment-54</guid>
		<description><![CDATA[I am not a programmer - I can count the number of programs I have written in my entire life on fewer digits than two hands possess.

But I am a writer, and I found tremendous similarity between the processes outlined by Barry for planning, coding and executing programs and those for planning, writing and publishing an article.  Without a doubt, my best work comes from pre-planning the objective, structure and content before putting fingers to keys, carefully checking the accuracy of the key depressions while typing and then doing a run-through before hitting the &quot;send&quot; or &quot;publish&quot; button.

Maybe we can take PSP into the world of journalism?]]></description>
		<content:encoded><![CDATA[<p>I am not a programmer &#8211; I can count the number of programs I have written in my entire life on fewer digits than two hands possess.</p>
<p>But I am a writer, and I found tremendous similarity between the processes outlined by Barry for planning, coding and executing programs and those for planning, writing and publishing an article.  Without a doubt, my best work comes from pre-planning the objective, structure and content before putting fingers to keys, carefully checking the accuracy of the key depressions while typing and then doing a run-through before hitting the &#8220;send&#8221; or &#8220;publish&#8221; button.</p>
<p>Maybe we can take PSP into the world of journalism?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
