<?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: The oddities of being a scientist-programmer</title>
	<atom:link href="http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/</link>
	<description>Software development wisdom and common-sense for the scientist-programmer</description>
	<lastBuildDate>Mon, 14 Nov 2011 14:47:31 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: Rich</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-247</link>
		<dc:creator>Rich</dc:creator>
		<pubDate>Thu, 19 Mar 2009 14:09:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-247</guid>
		<description>Hi guys, thanks for all the feedback.  It&#039;s fascinating to see the range of views there are out there!  I agree with Jeffrey, there does very much seem to be a community forming between software engineers and computational scientists/engineers.  I think previous generation/s of scientists were able to get away with just regarding a computer as a kind of giant, automated calculator (and act accordingly).  It&#039;s not like that any more, because one can do *so* much more with a computer.</description>
		<content:encoded><![CDATA[<p>Hi guys, thanks for all the feedback.  It&#8217;s fascinating to see the range of views there are out there!  I agree with Jeffrey, there does very much seem to be a community forming between software engineers and computational scientists/engineers.  I think previous generation/s of scientists were able to get away with just regarding a computer as a kind of giant, automated calculator (and act accordingly).  It&#8217;s not like that any more, because one can do *so* much more with a computer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeffrey Carver</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-245</link>
		<dc:creator>Jeffrey Carver</dc:creator>
		<pubDate>Wed, 18 Mar 2009 14:33:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-245</guid>
		<description>Interesting post. There is a community forming between software engineers and computational scientists and engineers. We are having a workshop at the annual International Conference on Software Engineering. I would really be interested in participation from some of those that read this post. If you are interested, the website is http://www.cs.ua.edu/~SECSE09</description>
		<content:encoded><![CDATA[<p>Interesting post. There is a community forming between software engineers and computational scientists and engineers. We are having a workshop at the annual International Conference on Software Engineering. I would really be interested in participation from some of those that read this post. If you are interested, the website is <a href="http://www.cs.ua.edu/~SECSE09" rel="nofollow">http://www.cs.ua.edu/~SECSE09</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Terry A. Davis</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-243</link>
		<dc:creator>Terry A. Davis</dc:creator>
		<pubDate>Wed, 18 Mar 2009 05:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-243</guid>
		<description>I once heard a comment, &quot;Is your disertation on physics or Linux?&quot;  I have written an operating system for nonprofessional programmers called &quot;LoseThos&quot;, http://www.losethos.com.  The good news is I improved the situation for programmers, but the bad news is it&#039;s not standard, so your libraries won&#039;t port very easily.  You might check-out the website and offer advice on how it can better fill the niche of scientist programmers.</description>
		<content:encoded><![CDATA[<p>I once heard a comment, &#8220;Is your disertation on physics or Linux?&#8221;  I have written an operating system for nonprofessional programmers called &#8220;LoseThos&#8221;, <a href="http://www.losethos.com" rel="nofollow">http://www.losethos.com</a>.  The good news is I improved the situation for programmers, but the bad news is it&#8217;s not standard, so your libraries won&#8217;t port very easily.  You might check-out the website and offer advice on how it can better fill the niche of scientist programmers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conrad</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-240</link>
		<dc:creator>Conrad</dc:creator>
		<pubDate>Tue, 17 Mar 2009 20:47:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-240</guid>
		<description>Beware the &quot;this is just a prototype&quot; mentality. Often today&#039;s proof of concept prototype becomes tomorrow&#039;s legacy system; once features have been added and multiple scientists have made their changes, the code becomes a jumbled mess of indecipherable code.

I&#039;ve found that ensuring that the scientists understand some basic software engineering principles (encapsulation, abstraction and generalization, avoiding copy-and-paste, revision control, use good variable names rather than &quot;d3x&quot;, create recurring unit tests, etc.) and having them pair program with a software engineer now and then really improves the quality of the code.

Once poorly designed code grows to a certain size, making incremental changes to push the science becomes time-consuming, so a little effort in code quality ultimately enables scientists to develop the science faster.</description>
		<content:encoded><![CDATA[<p>Beware the &#8220;this is just a prototype&#8221; mentality. Often today&#8217;s proof of concept prototype becomes tomorrow&#8217;s legacy system; once features have been added and multiple scientists have made their changes, the code becomes a jumbled mess of indecipherable code.</p>
<p>I&#8217;ve found that ensuring that the scientists understand some basic software engineering principles (encapsulation, abstraction and generalization, avoiding copy-and-paste, revision control, use good variable names rather than &#8220;d3x&#8221;, create recurring unit tests, etc.) and having them pair program with a software engineer now and then really improves the quality of the code.</p>
<p>Once poorly designed code grows to a certain size, making incremental changes to push the science becomes time-consuming, so a little effort in code quality ultimately enables scientists to develop the science faster.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dean Schulze</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-239</link>
		<dc:creator>Dean Schulze</dc:creator>
		<pubDate>Tue, 17 Mar 2009 17:41:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-239</guid>
		<description>I did so much programming for my PhD level work that when I got a chance to become a software developer I took it.  It was a no-brainer since there were no jobs for physics PhDs in the mid-1990s.

It sounds like things haven&#039;t improved very much in the scientific programming field in 15 years.  I was struck by how bad - terrible - most scientists code was.  The Numerical Recipes family of books is probably the largest collection of bad code in existence.

As an experimentalist I saw many experiments ruined by poor technical work in the lab (bad work on vacuum systems, electronics, etc.).  There is lots of bad numerical / statistical work done by scientists too.

In order to &quot;get the science&quot; done the technical work underlying it has to be done correctly.

One PI that I worked for had a full-time staff of two C programmers to write software for data acquisition on his space flight missions.  He made no provision for data analysis, however.  He left it up to his graduate students (like me).  He told me once that &quot;You should be able to just press one key on your workstation and the result should be graphed on the printer.&quot;

I responded that that was true, but only after several man months of programming and proving the code.  &quot;Why do you guys think this stuff takes so much time?&quot; he asked.  He was very knowledgeable about electronics for space flight and knew that it took man years to write good data acquisition software, but thought that data analysis software was written by elves in the middle of the night.

This was partly driven by funding.  He could get multi-million dollar grants to build instrumentation for data acquisition, but NASA and the other funding agencies wouldn&#039;t give a dollar for data analysis.  All data analysis software had to be piggy-backed on the hardware funding.</description>
		<content:encoded><![CDATA[<p>I did so much programming for my PhD level work that when I got a chance to become a software developer I took it.  It was a no-brainer since there were no jobs for physics PhDs in the mid-1990s.</p>
<p>It sounds like things haven&#8217;t improved very much in the scientific programming field in 15 years.  I was struck by how bad &#8211; terrible &#8211; most scientists code was.  The Numerical Recipes family of books is probably the largest collection of bad code in existence.</p>
<p>As an experimentalist I saw many experiments ruined by poor technical work in the lab (bad work on vacuum systems, electronics, etc.).  There is lots of bad numerical / statistical work done by scientists too.</p>
<p>In order to &#8220;get the science&#8221; done the technical work underlying it has to be done correctly.</p>
<p>One PI that I worked for had a full-time staff of two C programmers to write software for data acquisition on his space flight missions.  He made no provision for data analysis, however.  He left it up to his graduate students (like me).  He told me once that &#8220;You should be able to just press one key on your workstation and the result should be graphed on the printer.&#8221;</p>
<p>I responded that that was true, but only after several man months of programming and proving the code.  &#8220;Why do you guys think this stuff takes so much time?&#8221; he asked.  He was very knowledgeable about electronics for space flight and knew that it took man years to write good data acquisition software, but thought that data analysis software was written by elves in the middle of the night.</p>
<p>This was partly driven by funding.  He could get multi-million dollar grants to build instrumentation for data acquisition, but NASA and the other funding agencies wouldn&#8217;t give a dollar for data analysis.  All data analysis software had to be piggy-backed on the hardware funding.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: links for 2009-03-16 &#171; My Weblog</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-237</link>
		<dc:creator>links for 2009-03-16 &#171; My Weblog</dc:creator>
		<pubDate>Tue, 17 Mar 2009 04:04:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-237</guid>
		<description>[...] The oddities of being a scientist-programmer &#124; Programming for Scientists (tags: science) [...]</description>
		<content:encoded><![CDATA[<p>[...] The oddities of being a scientist-programmer | Programming for Scientists (tags: science) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Z</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-236</link>
		<dc:creator>Joe Z</dc:creator>
		<pubDate>Mon, 16 Mar 2009 22:22:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-236</guid>
		<description>The other oddity that always strikes me is that &quot;feature creep&quot; is always a feature of scientific code, rather than a problem.  If your code works well then you frequently solve the problem with it and then move on to the general case/slightly different model/new dataset.  That (should) make people think more carefully about extensibility when writing their code, and I think some of the most painful codes we have to work with are the ones that have grown organically from a base that wasn&#039;t designed for it.</description>
		<content:encoded><![CDATA[<p>The other oddity that always strikes me is that &#8220;feature creep&#8221; is always a feature of scientific code, rather than a problem.  If your code works well then you frequently solve the problem with it and then move on to the general case/slightly different model/new dataset.  That (should) make people think more carefully about extensibility when writing their code, and I think some of the most painful codes we have to work with are the ones that have grown organically from a base that wasn&#8217;t designed for it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gustavo Barrancos</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-235</link>
		<dc:creator>Gustavo Barrancos</dc:creator>
		<pubDate>Mon, 16 Mar 2009 21:33:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-235</guid>
		<description>Totally agree with you Mike. I believe that functional programming languages can be of good use for scientific applications (mathematical expressiveness, numerical tower, automatic memory management etc.)

I wonder what would be the opinion of scientists on languages like Haskell, Clean and Fortress...</description>
		<content:encoded><![CDATA[<p>Totally agree with you Mike. I believe that functional programming languages can be of good use for scientific applications (mathematical expressiveness, numerical tower, automatic memory management etc.)</p>
<p>I wonder what would be the opinion of scientists on languages like Haskell, Clean and Fortress&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gawp</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-234</link>
		<dc:creator>gawp</dc:creator>
		<pubDate>Mon, 16 Mar 2009 21:10:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-234</guid>
		<description>Don&#039;t forget verifying unreliable input sources. That means pretty much anything you didn&#039;t create yourself. Add consistency checks based on how you think the data should act: that will catch both errors in the data and errors in your understanding of the data. I&#039;ve learned this the hard way:

http://www.palidwor.com/blog/?p=33</description>
		<content:encoded><![CDATA[<p>Don&#8217;t forget verifying unreliable input sources. That means pretty much anything you didn&#8217;t create yourself. Add consistency checks based on how you think the data should act: that will catch both errors in the data and errors in your understanding of the data. I&#8217;ve learned this the hard way:</p>
<p><a href="http://www.palidwor.com/blog/?p=33" rel="nofollow">http://www.palidwor.com/blog/?p=33</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.programming4scientists.com/2009/03/16/the-oddities-of-being-a-scientist-programmer/comment-page-1/#comment-233</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Mon, 16 Mar 2009 20:20:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.programming4scientists.com/?p=479#comment-233</guid>
		<description>That nearly all scientific programming is really prototyping is an excellent and crucial point.  An implication of this that is usually missed is that scientific programming should almost always be done using a programming language suitable for prototyping--a language like Python, Ruby, or Lisp.  Production languages like C, C++, and FORTRAN should generally be avoided like the plague, used only to write small extensions in cases where the utmost in speed or space efficiency is required.</description>
		<content:encoded><![CDATA[<p>That nearly all scientific programming is really prototyping is an excellent and crucial point.  An implication of this that is usually missed is that scientific programming should almost always be done using a programming language suitable for prototyping&#8211;a language like Python, Ruby, or Lisp.  Production languages like C, C++, and FORTRAN should generally be avoided like the plague, used only to write small extensions in cases where the utmost in speed or space efficiency is required.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

