<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>So Jake Says &#187; Use code</title>
	<atom:link href="http://www.jakevoytko.com/blog/tag/use-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jakevoytko.com/blog</link>
	<description>Ye Olde Computer Science Blogge</description>
	<lastBuildDate>Sun, 17 Jan 2010 15:16:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Preparing Yourself, a Student, for a Programming Job</title>
		<link>http://www.jakevoytko.com/blog/2008/09/29/preparing-yourself-a-student-for-a-programming-job/</link>
		<comments>http://www.jakevoytko.com/blog/2008/09/29/preparing-yourself-a-student-for-a-programming-job/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 04:00:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[LAPACK]]></category>
		<category><![CDATA[Looking for job]]></category>
		<category><![CDATA[modify code]]></category>
		<category><![CDATA[MPZ]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming job]]></category>
		<category><![CDATA[read code]]></category>
		<category><![CDATA[Student]]></category>
		<category><![CDATA[Use code]]></category>

		<guid isPermaLink="false">http://www.jakevoytko.com/blog/?p=165</guid>
		<description><![CDATA[Congratulations, student! You&#8217;ve made it through college, aced your interview, and now you are starting a job as a programmer! If you&#8217;re like me, you want to know what you can do before you start. For my previous 2 programming jobs, I asked my interviewer what I could do to better prepare myself for my [...]]]></description>
			<content:encoded><![CDATA[<p>Congratulations, student! You&#8217;ve made it through college, aced your interview, and now you are starting a job as a programmer!</p>
<p>If you&#8217;re like me, you want to know what you can do before you start. For my previous 2 programming jobs, I asked my interviewer what I could do to better prepare myself for my first day. They both laughed and said, &#8220;Just show up!&#8221; True story.</p>
<p>I ended up working on personal projects instead of preparing for the job. It didn&#8217;t really hurt or help in the long run, but I felt that the time could have been better spent.</p>
<p>If you <em>really</em> only have a few weeks before you start your job, don&#8217;t keep preparing for your interview. Don&#8217;t practice arcane language trivia questions and don&#8217;t try to solve programming puzzles (unless you do it as a hobby!). Avoid trivia in this stage. If your interviewer was competent, s/he already thinks that you can do the work. Diving back into Meyers, the Gang of Four, or Knuth might give you a trick or two, but in the long run it&#8217;ll all get lost in the noise.</p>
<p>Don&#8217;t get me wrong! Studying is <em>never</em> a bad move. I graduated 3 months ago and I still spend a lot of my time studying. It&#8217;s not the best short-term solution to getting you started in a programming job.</p>
<p>One of the things you should do (but not the most important) is to read domain and company-specific material. Academic journals, conference proceedings, blogs, company websites, and Econ books all fall into this category.</p>
<p>If you&#8217;re still in school, take a Microeconomics course. Trust me, it&#8217;s worth it. Look at the press releases on your company&#8217;s website. They&#8217;ll give you a hint at the focus of your job specifics.</p>
<p>Why should you waste your time with this crap? Odds are that your company has a few goals:</p>
<ol>
<li>To contribute to its particular field of expertise.</li>
<li>To do better than its competitors, for some value of better.</li>
<li>To turn a profit.</li>
</ol>
<p>It is certainly possible to make good programming/GUI interface/business decisions without knowing anything about your field, your competitors, or your business.</p>
<p>Is it easier with the insider knowledge? Probably. If you didn&#8217;t spend time thinking about your field in college, you should at least flip through an Econ textbook or a few trade journals.</p>
<p>This shouldn&#8217;t command the bulk of your time. At the end of the day, you won&#8217;t master your new field in the few weeks before your job starts. I don&#8217;t mean to undercut the importance of this step! You will learn your business sooner or later, and starting early will give you a big help on your first day.</p>
<p>What will REALLY help you prepare?</p>
<p><strong>Use, read, and modify code written by other programmers. A lot. </strong></p>
<p>Why? You&#8217;re going to spend most of your career as a programmer doing two things:</p>
<p>1) Reading and correcting what others have written.<br />
2) Building on top of what others have designed.</p>
<p>Likewise, other people will spend time correcting what you have written, and building on top of your designs.</p>
<p>Unless you have donated a significant amount of time to Open Source projects, s/he has minimal experience dealing with unfamiliar code. Maybe a few libraries here and there, but not much else.</p>
<p>Many of my friends and I were very active programmers in our spare time, but we spent our time designing our own code, not using the code of others. I <a href="http://www.jakevoytko.com/blog/2007/12/22/reading-comprehension-will-make-you-a-better-programmer/">started seeing the light</a> towards the end of my senior year, but the full implications never struck me until I entered the work world as a professional programmer.</p>
<p>Most of my school assignments were based around creating new code. Sometimes I didn&#8217;t even have to design it! Use the professor&#8217;s framework, fill in the blanks, get an A, and move on to something more interesting.</p>
<p>I landed a Summer of Code project, but the project was based around creating a helper for some <a href="http://www.boost.org/">Boost</a> libraries (for being a messy solution to an ill-defined problem under time constraint while working another full-time job, it ended up producing decent results). I learned how to use a few of the useful Boost libraries, learned I never wanted to use others ever again, and got a window into the OSS world. Unfortunately for me, my experience reading and modifying the code of others was minimal.</p>
<p>Some of my harder assignments were still reasonable projects to complete from scratch. I took a cryptography class, and my final project was to implement the quadratic sieve. I used GNU&#8217;s <a href="http://gmplib.org/">MPZ library</a>, and built the linear algebra/number theoretic functions from scratch. I just as easily could have used a library like <a href="http://math.nist.gov/lapack++/">LAPACK++</a>. In fact, it&#8217;s very likely that such a library would have been much faster than my personal implementation, and the project would have been finished sooner.</p>
<p>If it is so important, why weren&#8217;t you asked about using the code of others in your interview? It could be any number of reasons, really. Maybe the company&#8217;s code base is so massive that EVERYONE needs time to digest the structure. Maybe they haven&#8217;t hired a junior developer recently. Maybe the company wants to completely mold the habits of new developers, before they learn naughty practices.</p>
<p>Will you be OK without doing this? Yes. I started my job with only minimal experience with unfamiliar code, and I haven&#8217;t starved to death on the streets. Yet. However, I wish I had spent more time figuring out how to use different libraries.</p>
<img src="http://www.jakevoytko.com/blog/?ak_action=api_record_view&id=165&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.jakevoytko.com/blog/2008/09/29/preparing-yourself-a-student-for-a-programming-job/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
