<?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>Equivalence &#187; Observations</title>
	<atom:link href="http://equivalence.co.uk/archives/category/observations/feed" rel="self" type="application/rss+xml" />
	<link>http://equivalence.co.uk</link>
	<description>Technical Blog for Software Developers</description>
	<lastBuildDate>Mon, 21 Nov 2011 22:58:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>the internet and i</title>
		<link>http://equivalence.co.uk/archives/1836</link>
		<comments>http://equivalence.co.uk/archives/1836#comments</comments>
		<pubDate>Wed, 01 Jun 2011 16:34:31 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://equivalence.co.uk/?p=1836</guid>
		<description><![CDATA[If you are able to read this please keep it to yourself, don&#8217;t tell anyone about it. Your ability to possess information that others do not have access to is crucial to moving only in the forward direction. Yet there is very little information now that is not readily available to everyone. The internet is [...]]]></description>
			<content:encoded><![CDATA[<p>If you are able to read this please keep it to yourself, don&#8217;t tell <strong>anyone</strong> about it. Your ability to possess information that others do not have access to is crucial to moving only in the forward direction. Yet there is very little information now that is not readily available to everyone. The internet is almost ubiquitous. Rewind a mere 15 years though and observe how the landscape has changed so dramatically.</p>
<p>Back then a PC was the something only the posh kids had.  My school was fully laden with BBC micros that you could only use to control some piece-of-shit-circuit-board that you had cobbled together to light up a few LEDs in the form of a traffic light. </p>
<p>I still remember to this day getting my first PC &#8211; a (big) Compaq laptop of sorts. It was purchased second-hand from a shop that specialized in guns, knifes and guitars &#8211; I still have it somewhere. They probably didn&#8217;t even know what it was. When I read stories of people in the 80s having PCs it makes me laugh as, in my world, this stuff was sooo out of reach that you wouldn&#8217;t believe.</p>
<p>Still, what would the general public have done with the PC back then anyway (apart from gaming)? The internet was a luxury goods item at this point. Even at university only a few computers had internet access. However, between &#8217;95 and &#8217;97 it exploded. You were faced with a computer lab full of students looking up porn and printing out the pictures (I mean they were not much use unless you printed them out, right)! Those were the days of looking up what you wanted with reckless abandon without feeling that someone or something was watching you &#8211; soon to be quashed with the corporate firewall and government legislation. Make no mistake though, we are still in the golden age of the internet. Laws and legislation will likely mean that the freedom we associate with the internet now will not be the same 30 years down the line.</p>
<p>What puzzles me most is how we got by programming without the internet? If tonight I decided that I wanted to learn OCaml to build some super useful web service, then I would start by searching Google. I&#8217;d get binaries, sample programs and documentation in minutes. If I had a problem, I could search on Google or ask a question on Stackoverflow. The barrier to entry is just non-existent. I struggle to remember exactly what we had to do all those years ago. It must have been ridiculously hard compared to the present day. But this is good. We got information easily and moved forward. That said, the internet does not have its bad points. </p>
<p>We now struggle to get things done because we can listen to music online, watch videos, read blogs, not to mention the ease with which we can communicate with friends using social networks. What the internet gives with one hand it takes away with the other.</p>
<p>I&#8217;m often tempted to unplug the router and see how I get on with work minus the internet. Invariably at the last minute though I find some compelling reason to have it switched on, then the thought of uplugging it fades into nothing and time just slips away again.</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1836/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>on being open to change</title>
		<link>http://equivalence.co.uk/archives/1824</link>
		<comments>http://equivalence.co.uk/archives/1824#comments</comments>
		<pubDate>Fri, 15 Apr 2011 15:35:53 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[dhh]]></category>
		<category><![CDATA[json fried]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[rework]]></category>

		<guid isPermaLink="false">http://equivalence.co.uk/?p=1824</guid>
		<description><![CDATA[How easy is it just to say no? I think you&#8217;ll probably find just about as easy as it is to always say yes. In the past I have often found myself entrenched in that no camp. It&#8217;s so easy to hate a company, a stance or an ideology without even attempting to think of [...]]]></description>
			<content:encoded><![CDATA[<p>How easy is it just to say no? I think you&#8217;ll probably find just about as easy as it is to always say yes. In the past I have often found myself entrenched in that no camp. It&#8217;s so easy to hate a company, a stance or an ideology without even attempting to think of the why.</p>
<p>I recently decided to try out an approach where instead of following my five second gut instinct assessment, I would instead spend some time trying to overcome my own (possibly) over zealous opinions.</p>
<p>My test subjects for this were the guys at 37signals. I frequently found myself disagreeing with most things these guys were saying for no reason other than the aggressive way they generally put forward a point. This is a real stupid thing to do &#8211; even more so when you see it in writing!</p>
<p>Anyway, in this new era of love and enlightenment I picked up the book Rework by Jason Fried and DHH. I was immediately surprised how much I identified with the things these guys were saying about running a business, from focusing on products that can make a profit from day one, to abandoning long range forecasts (or to paraphrase &#8220;elaborate guessing&#8221;) about your business. So two guys I thought I &#8220;hated&#8221; actually hold opinions pretty close to my own, i.e. I was being an asshole!</p>
<p>Before anyone gets the impression that I&#8217;ve now turned into the &#8220;super fanboi&#8221;, I should say that I don&#8217;t think that Rework described THE way to run a business. It&#8217;s simply A way to go about things, and one that happens to be close to what I believe. For example, the books contains ideas that may fall apart when it comes to dealing with large enterprises or when trying to build &#8220;uber&#8221; companies like Google and Facebook &#8211; who can argue with their success. However most of the ideas seem spot on if you are trying to build a small to medium B2B business.</p>
<p>So the moral of this story is try to see past the way information is being presented to you and look at what the information is actually telling you &#8211; this is true for both the hater and the fanboi.  However, it should also not be overlooked that if something is shit, then say it&#8217;s shit.</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1824/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>is ruby killing your career?</title>
		<link>http://equivalence.co.uk/archives/1757</link>
		<comments>http://equivalence.co.uk/archives/1757#comments</comments>
		<pubDate>Tue, 15 Feb 2011 00:09:05 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[jobs]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1757</guid>
		<description><![CDATA[I&#8217;m probably at the point with Ruby where I consider it my programming language of choice (I program in both Ruby and C++ in my day job). Over the last few years I&#8217;ve kind of grown to love Ruby but I&#8217;m not really one to get passionate over someone else&#8217;s choice of programming language &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m probably at the point with Ruby where I consider it my programming language of choice (I program in both Ruby and C++ in my day job).</p>
<p>Over the last few years I&#8217;ve kind of grown to love Ruby but I&#8217;m not really one to get passionate over someone else&#8217;s choice of programming language &#8211; apart from Java, which, I&#8217;m sorry, I hate. However, when it comes to employment, there is no doubt in my mind that being competent in a particular programming language can strongly influence A) getting an interview and B) getting the job.</p>
<p>This is why ruby developers, like me, are killing their career. Sure Ruby is cool and Rails is awesome but do a quick check on job boards and see how many people are looking for a ruby developer. Actually, let me save you the time I&#8217;ve done some of the work already.</p>
<p>I&#8217;m not claiming this to be scientific in anyway what-so-ever but it does warrant some thought. I only searched using the programming language as a  keyword, which, I know, may not give the full story but should convince you there is some merit in the point that I&#8217;m trying to make. Additionally (and I suppose somewhat importantly) my search area was restricted to Scotland.</p>
<p>First up I carried out a search on s1jobs.com. The table below gives a summary of the results:</p>
<table class="long-table">
<tr>
<th>Language</th>
<th>Number of jobs matching keyword</th>
<tr>
<td>Ruby</td>
<td>3</td>
</tr>
<tr>
<td>Java</td>
<td>18</td>
</tr>
<tr>
<td>C#</td>
<td>26</td>
</tr>
<tr>
<td>C++</td>
<td>9</td>
</tr>
<tr>
<td>PHP</td>
<td>7</td>
</tr>
</table>
<p>I then tried a cwjobs.co.uk:</p>
<table class="long-table">
<tr>
<th>Language</th>
<th>Number of jobs matching keyword</th>
<tr>
<td>Ruby</td>
<td>2</td>
</tr>
<tr>
<td>Java</td>
<td>35</td>
</tr>
<tr>
<td>C#</td>
<td>45</td>
</tr>
<tr>
<td>C++</td>
<td>45</td>
</tr>
<tr>
<td>PHP</td>
<td>4</td>
</tr>
</table>
<p>As you can see, the job prospects for Ruby developers here in Scotland are somewhat dire. Sure, people don&#8217;t always look for a particular programming language when employing someone (which is a decent policy) but, as I said above, it helps a lot.</p>
<p>I decided to take my crude search a little further as I thought &#8220;Hell, there will be waaaaaaay more cool Ruby jobs in London&#8221;. Below we have the results, just cwjobs this time:</p>
<table class="long-table">
<tr>
<th>Language</th>
<th>Number of jobs matching keyword</th>
<tr>
<td>Ruby</td>
<td>57</td>
</tr>
<tr>
<td>Java</td>
<td>792</td>
</tr>
<tr>
<td>C#</td>
<td>838</td>
</tr>
<tr>
<td>C++</td>
<td>611</td>
</tr>
<tr>
<td>PHP</td>
<td>196</td>
</tr>
</table>
<p>That was kind of disappointing! Ruby still doesn&#8217;t do that great &#8211; even worse when you realise there were over 200 that mentioned Perl and 150 Python. By the looks of it if you want to maximise your chances of getting a job in the UK, and already doing Java or C# in your day job, you&#8217;d be better off learning C/C++ in your spare time.</p>
<p>Is all this going to stop me coding in Ruby? Probably not. Is it worth thinking about for a minute? Yes sure. If I was starting my own company and was hoping to get some developers in then I&#8217;m likely to be faced with a problem. Yes you can train people up, but that costs time and money. When they leave it may be worse, as the chances of finding replacements at the required skill level will be difficult. Finding a Java/C#/C++ programmer is bound to be far easier.</p>
<p>So is it all bad news for us Ruby developers? Well not if you plan to move to California &#8211; yeah yeah I know I&#8217;ve went on about it before. I&#8217;m not exactly sure of the popular job boards in the US so I went with the only one I knew off the top of my head, careers.stackoverflow.com. The results for the Bay Area are as follows:</p>
<table class="long-table">
<tr>
<th>Language</th>
<th>Number of jobs matching keyword</th>
<tr>
<td>Ruby</td>
<td>27</td>
</tr>
<tr>
<td>Java</td>
<td>33</td>
</tr>
<tr>
<td>C#</td>
<td>10</td>
</tr>
<tr>
<td>C++</td>
<td>23</td>
</tr>
<tr>
<td>PHP</td>
<td>17</td>
</tr>
</table>
<p>Maybe this was a skewed sample set but impressive all the same. So moral of the story is if you want to be a well paid Ruby hacker make sure you don&#8217;t stay in Scotland <img src='http://equivalence.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1757/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>the future is email</title>
		<link>http://equivalence.co.uk/archives/1646</link>
		<comments>http://equivalence.co.uk/archives/1646#comments</comments>
		<pubDate>Mon, 22 Feb 2010 02:15:48 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[future of email]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1646</guid>
		<description><![CDATA[In a recent podcast Jeff Attwood and Joel Spolsky were discussing the virtues of email. As a somewhat brief summary of the discussion I think it&#8217;s fair to summarise that Jeff hates email. As it happens I&#8217;m inclined to go along with him on this one, but possibly for different reasons. From what I can [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent <a href="http://blog.stackoverflow.com/2010/02/podcast-83/">podcast</a> <a href="http://www.codinghorror.com">Jeff Attwood</a> and <a href="http://www.joelonsoftware.com">Joel Spolsky</a> were discussing the virtues of email. As a somewhat brief summary of the discussion I think it&#8217;s fair to summarise that Jeff <a href="http://www.codinghorror.com/blog/2008/11/is-email-efail.html">hates</a> <a href="http://www.codinghorror.com/blog/2009/09/email-the-variable-reinforcement-machine.html">email</a>. As it happens I&#8217;m inclined to go along with him on this one, but possibly for different reasons.</p>
<p>From what I can gather, the problem Jeff and Joel were describing with email is that we end up with an inbox full of emails that never get read or processed, and to allocate the time to process these mails and respond would be a job onto itself.  To be honest, I don&#8217;t suffer this problem quite as bad, mainly due to the fact that I do not receive in any shape or form the level of email that both of these guys do. As a result, it&#8217;s hard for me to appreciate the hate of email for the same reasons. However, I feel there is a far more toxic fallout to the email culture than that which is described.</p>
<p>It has come to my attention recently that many (large) organisations still use email as a way of providing an API to their service. What do I mean by this? Well, in this digital age it is often the case that a web application uses the API provided by another web service to interact with it. For example, if I want to receive a list of the tweets that I&#8217;ve made, the twitter API allows me to do this by accessing a given URL, and returns the data in the format of my choosing. Similarly, I can also publish a tweet by posting data to a given URL. This is all rather nice  &#8211; everything is communicated over good old HTTP allowing easy integration with other services.</p>
<p>However, many firms that are not technologically aware are using email as a mechanism for inter app communication. I don&#8217;t want to bash individual companies here but the ones I have personally dealt with are multi-national companies with profits in the billions. Yet despite such profits margins their software systems look like something seen in <a href="http://www.imdb.com/title/tt0086567/">War Games</a>. To perform any communication with these systems you send an email, and responses are returned to you via the magic of an automated email. Thus, you have to parse the email body and/or parse an email attachment to get the response data. It&#8217;s as if Web 2.0 passed like an amoeba in the night without these companies so much as blinking.</p>
<p>You may say that it must work for these companies to be making the profit margin they do. However, as customers, we are paying thousands on development costs to integrate with these systems &#8211; in many cases we have no choose in the matter. At the end of the day these companies are slowly falling behind and if they are choosing not to innovate at this level, I personally don&#8217;t hold out too much hope for innovation on a wider scale. This kind of strategy no longer works, Google and other such companies have long since blown this way of doing business out the water. No-ones&#8217;s saying the death of the non-innovators is going to be quick!</p>
<p>So what is the message I&#8217;m trying to get across? Well first, email for this style of inter app communication isn&#8217;t really helping anyone. If you are thinking about doing something like this, please think again. Also, on a more general note, can companies that fail to innovate survive in this technology driven society? It&#8217;s obviously hard to answer this question with definite authority, but going by gut feeling and history, it doesn&#8217;t look good. </p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1646/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>the mark of sucessful software</title>
		<link>http://equivalence.co.uk/archives/1446</link>
		<comments>http://equivalence.co.uk/archives/1446#comments</comments>
		<pubDate>Fri, 18 Sep 2009 00:20:54 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[lists]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[development methodologies]]></category>
		<category><![CDATA[software cost]]></category>
		<category><![CDATA[software quality]]></category>
		<category><![CDATA[sucessful software]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1446</guid>
		<description><![CDATA[Right, so I&#8217;ve been thinking about this for a while now. It&#8217;s a question that has been contemplated more times than anyone cares to remember, and still we have no good way of achieving the goal that it sets out. A quick search on Amazon will probably yield a thousand books on the subject &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Right, so I&#8217;ve been thinking about this for a while now. It&#8217;s a question that has been contemplated more times than anyone cares to remember, and still we have no good way of achieving the goal that it sets out. A quick search on Amazon will probably yield a thousand books on the subject &#8211; each and every one making you think the next is the holy grail. So am I going to tell you the question?? Well I suppose I must.</p>
<p>What is successful software? I&#8217;m sure the exact definition of this is subject to opinion and means different things to different people. Therefore all I can do is bore you with the details of what I think makes successful software:</p>
<ol>
<li><strong>Software that the end user is happy with</strong> &#8211; a no brainer, if no one wants to buy or use it then you may as well give up. Happiness encompasses how the software looks, the user experience, and the functionality.</li>
<li><strong>Software that is finished to schedule</strong> &#8211; no one likes to wait, from management to clients, and even developers. Software that is late causes stress on everyone. Scheduling is hard and it has to be realistic. The end result of cramming and cutting corners is poor quality.</li>
<li><strong>Software of high quality</strong> &#8211; you can finish on time but if it doesn&#8217;t do what it needs to do in a manner the user expects, or simply is littered with bugs, then there is not much to be cheerful about. It has been documented ([1]) that bugs caught early can mean 1 hours spent now can save up to 3 to 10 hours later. As a result bugs caught after release cost between 40-50% more. This is always worth keeping in mind.</li>
<li><strong>Software that is cost effective</strong> &#8211; achieving all three things above but at a cost which prevents profit does not make sense. Costs are important and developers should also be mindful of this &#8211; even for internal software.</li>
<li><strong>The developers are happy and proud</strong> &#8211; I&#8217;m sure there are many employers that would be happy if they got software that satisfied the first four criteria but couldn&#8217;t give shit how their employees felt or what it took (out) of them. Stressed out employees are no good, they will only leave, and sooner rather than later you will find that you can no longer attract those employees that are smart and get things done. It&#8217;s surprising how easy it is to keep people happy without spending a lot of money.</li>
<li><strong>The management are happy and proud</strong> &#8211; if all the above is achieved at the expense of a stressed out, worn out, nerve shattered manager, then the same problems that arise with unhappy developers can be seen in management with the same negative results.</li>
</ol>
<p>Now that we have a definition of successful software we can ask the natural question of how to achieve this. As I mentioned earlier, there are more books that I care to read telling me how to do this. Yet I feel none of them can apply in every situation. They all preach some methodology from the latest fad to the decidedly idiotic. If any one of these methodologies actually conclusively worked, there would not be as many books. I&#8217;m convinced that the truth lies somewhere in between them all and depends not only on the organisation, but on the people involved. So surely those involved in creating the software may have a better perspective on what will work than the author of a book? (This is not to say you can&#8217;t steal ideas that you have read and apply them in a suitable manner.)</p>
<p>I have my opinions on what I think would work for me, and is something that I can probably document in a follow up post. For the moment I will leave this with the statement that don&#8217;t be frightened to break rules and invent your own when something is not working. This is the only way we can make our software more successful.</p>
<p>[1] Rapid Development &#8211; Steve McConell</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1446/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sticking with what you know</title>
		<link>http://equivalence.co.uk/archives/1405</link>
		<comments>http://equivalence.co.uk/archives/1405#comments</comments>
		<pubDate>Thu, 27 Aug 2009 00:03:18 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1405</guid>
		<description><![CDATA[There comes a time in every programmers life when they have to learn new things and step out the box. Yeah it&#8217;s difficult, for sure. It&#8217;s all too easy to create the latest application in your software empire, using a language you&#8217;ve been developing in for the last 10 years. However, the real problem is [...]]]></description>
			<content:encoded><![CDATA[<p>There comes a time in every programmers life when they have to learn new things and step out the box. Yeah it&#8217;s difficult, for sure. It&#8217;s all too easy to create the latest application in your software empire, using a language you&#8217;ve been developing in for the last 10 years. However, the real problem is thinking this is the only choice. When is it time to abandon this certitude?</p>
<p>First, we cover the forced abandonment. This is when you are pushed kicking and screaming into pastures new, whether you like it or not, i.e. the new job. Here, not only is the new language curve ball thrown (viciously), but you also get whole new set of business rules into the bargain. So what do you do? You program the new language like the old one, only translating the syntax in your head. This is not the best way to learn a language though. Why? Well consider those C programmers trying to program imperatively in Java, Java programmers in JavaScript, C++ programmers in Ruby, and so on. When there is a change in paradigm this mapping strategy just doesn&#8217;t work &#8211; a similar situation exists with languages that contain a more powerful expression set. It also encourages the behaviour where people learning enough to get the job done, without understanding what is really happening, or that there may have been a better way using &#8220;unmappable&#8221; language&#8217;s features. A better approach would be to write something small, and new, that allows you to explore the language&#8217;s features. I&#8217;m sure most people can think of something they could write. Furthermore, if you can make it useful to other people, or even your new employer, then everyone&#8217;s a winner! This is something <a href="http://www.equivalence.co.uk/archives/78">I touched on before</a>.</p>
<p>For many people though, this is the only time they will ever consider abandoning. This is sad, and a poor characteristic in a programmer.  And to be honest, I just don&#8217;t understand it. That&#8217;s not to say that I don&#8217;t accept that people just do programming as a job, then go home and don&#8217;t think about it. However, it&#8217;s like most things in life, it&#8217;s nice to progress?</p>
<p>As a programmer there will also be other signs that the tide is turning, and you don&#8217;t have to be too alert to spot these. Previously I wrote &#8220;<a href="http://www.equivalence.co.uk/archives/78">Perl is Dead, Long Live&#8230;Perl?</a>&#8221; and being a big Perl fan it was sad to see the language apparently dying, so I know what it&#8217;s like. Some signs to look out for may be:</p>
<ul>
<li>the language features are not moving on (Java watch your back) &#8211; the people who created it no longer care,</li>
<li>the community surrounding the language is dwindling &#8211; the people who use it no longer care,</li>
<li>there is little in the way of choice when selecting libraries/frameworks &#8211; the experts have fled,</li>
<li>other programmers have never heard of it &#8211; there is no buzz,</li>
<li>jobs using it are few and far between &#8211; businesses have given up on it, the death kneel.</li>
</ul>
<p>However, this is all not to say that you give up on your language just because it&#8217;s no longer cool &#8211; popularity is by no means a great indicator that something will suit your needs. It need not be the case that you give up on your language of choice, instead it could be that you contribute and drag the language forward. But be careful with this one.</p>
<p>Finally, any decent employer will want to see that you are continually developing your skill set &#8211; their business needs are continually evolving, so why aren&#8217;t you? You are much more likely to land a better job if you contribute to your own education in some way. It looks good and it&#8217;s also something to talk about.</p>
<p>So go out and learn something new today, and stop sticking with what you know.</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1405/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>programming just isn&#8217;t that hard!</title>
		<link>http://equivalence.co.uk/archives/1323</link>
		<comments>http://equivalence.co.uk/archives/1323#comments</comments>
		<pubDate>Fri, 31 Jul 2009 00:19:13 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[good practices]]></category>
		<category><![CDATA[sucessful software]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1323</guid>
		<description><![CDATA[Programmers at times can take themselves, and their abilities, a little too seriously. The fact is that programming, in general, is just not that difficult. Sure, there are parts of it that are tricky but, at the risk of over generalising, the capabilities required by your run of the mill programmer are not that high. [...]]]></description>
			<content:encoded><![CDATA[<p>Programmers at times can take themselves, and their abilities, a little too seriously. The fact is that programming, in general, is just not that difficult. Sure, there are parts of it that are tricky but, at the risk of over generalising, the capabilities required by your run of the mill programmer are not that high. Are you sure I hear you say?</p>
<p>Well plucking figures right out the air I&#8217;d say that around 90% of applications involve a simple CRUD model. So what we are essentially doing is gathering data, processing data, and writing this data to the database. Two-thirds of this process is pretty simple, i.e. gathering the data and writing it to the database, this leaves the possibilities for hardness in the processing data phase.</p>
<p>Again in most situations the processing of data is pretty simple with no complex db manipulation or algorithmic mind games. Consider your typical web application for example. The processing of data is minimal, with little to no algorithmic work involved at all &#8211; I mean with Twitter there is literally nothing to do. Google on the other hand has lots to do: it has to make those search results shine. This is not to say that developing Twitter is simple, as the scaling issues will make your head hurt. However, scaling problems are only going to affect a very very small number of sites out there, but due to their ubiquity they are the ones we hear most about.</p>
<p>If all this programming nonsense is so easy then surely it&#8217;s difficult to make bad software?</p>
<p>Nope. The fact is that the only people who care what the code looks like are other developers. The code underneath could be shitter than an incredibly shitty shit and the end user wouldn&#8217;t know. As long as it carries out the task that they require the software to do, in a reasonably efficient and user friendly way, no one really cares. Oh apart from other developers.</p>
<p>Obviously nice structured code, that is easy to understand, free of bugs, and a maintenance dream is a good building block. However, it is by no means a guarantee that you are on to a winner. Marketing, user experience and coolness are all equally important, actually, they are probably much more important. I obviously can&#8217;t say for sure but I would imagine there are plenty of successful software products that are badly written but tick these boxes &#8211; maybe even most successful products, as they are free from the burden of the studious programmer.</p>
<p>So, essentially what I&#8217;m trying to say is that despite programming not being that difficult there are many other more important factors that contribute to the success of a software product. Many software products do their job, but the one that will be successful is the one that does it well.</p>
<p>All this is not to say that programming well is not important. On the contrary, it&#8217;s important to other developers who you work with and that is not to be underestimated. This is a topic for discussion another time though!</p>
<p>Finally, for those non-programmers out there, don&#8217;t start shouting &#8220;If it&#8217;s so simple why does it take so long&#8221;? Well just because something is easy it does mean there are not lots of easy things to do. I mean, hammering a nail into a piece of wood is pretty simple, right? But if I asked you to hammer 10 million nails into a bit of wood it would take you a long time. Remember this marketers and project managers.</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1323/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iterative development</title>
		<link>http://equivalence.co.uk/archives/1324</link>
		<comments>http://equivalence.co.uk/archives/1324#comments</comments>
		<pubDate>Wed, 15 Jul 2009 18:03:44 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[iterative development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1324</guid>
		<description><![CDATA[We&#8217;ve all had it drilled down our throats that development should be completed in short-sharp iterations. &#8220;Release early and release often&#8221; &#8211; no agile developer gets up in the morning without repeating this mantra to themselves before they reach the sink. However, surely it&#8217;s important to realise the difference between &#8220;Release early and release often&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve all had it drilled down our throats that development should be completed in short-sharp iterations. &#8220;Release early and release often&#8221; &#8211; no agile developer gets up in the morning without repeating this mantra to themselves before they reach the sink. However, surely it&#8217;s important to realise the difference between &#8220;Release early and release often&#8221; and &#8220;Release utter shit early and release utter shit often&#8221;.</p>
<p>Who really wants to use an application/toolkit/library that has so many bugs in it that the user experience is dreadful? Surely users would rather wait a few more weeks for something that is, in a sense, polished? I mean we&#8217;re not talking Microsoft Vista style release cycles here, but quality control consisting of a little more than running a set of unit tests would be nice.</p>
<p>So what has prompted this minor rant? Well Firebug unfortunately. I hate to criticise it because it&#8217;s free but the bugs I find in it are getting worse and worse. The most recent one being that the continue button no longer works in the latest release (1.4.0b10). Sigh. However, open source or not, my feeling is that if you choose to do something then do it properly or not at all.</p>
<p>Anyway. Regardless of the product, it surely makes more sense to sacrifice your release schedule a little for some real testing and bug fixing? For commercial products a bad user experience is going to make a sale difficult both now and in the future. Being first to market is one thing, but it&#8217;s far from being the only (or even main) contributing factor to a products success &#8211; Google and Facebook being good examples of this.</p>
<p>So is it possible just to have a little common sense about all this and maybe restate the mantra as &#8220;Release quality early, release quality often&#8221;. It can&#8217;t be that hard, right?</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1324/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the real geek test</title>
		<link>http://equivalence.co.uk/archives/1297</link>
		<comments>http://equivalence.co.uk/archives/1297#comments</comments>
		<pubDate>Wed, 17 Jun 2009 14:29:32 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=1297</guid>
		<description><![CDATA[I&#8217;m sorry, I&#8217;m sorry, but I object to the use of the word geek. I&#8217;d always imagined that a geek was someone who was obsessive about computer programming. Lately though I&#8217;ve seen people use it in a way that is beginning to annoying me &#8211; it&#8217;s used to describe someone who simply uses the latest [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sorry, I&#8217;m sorry, but I object to the use of the word geek. I&#8217;d always imagined that a geek was someone who was obsessive about computer programming. Lately though I&#8217;ve seen people use it in a way that is beginning to annoying me &#8211; it&#8217;s used to describe someone who simply uses the latest and greatest software or gadgets. This was brought to a head when I clicked a link in a tweet (thanks Colin!) which sent me to an article called  &#8220;<a href="http://www.wired.com/geekdad/2009/06/top-10-ways-to-provoke-a-geek-argument/">Top 10 Ways to Provoke a Geek Argument</a>&#8220;.</p>
<p>I mean, I like to think I&#8217;m a geek, sad, but true. However, if the things mentioned in that article are likely to incite an argument in a geek, then I ain&#8217;t a geek. <strong>True geeks</strong> laughs in the face of such insults. So bearing all this in mind I say a <strong>real geek</strong> is someone who takes offense when:</p>
<ol>
<li>someone states that programming is <strong>just</strong> a day job;</li>
<li>someone tells you they work in IT/computing and they can&#8217;t program &#8211; this often comes in the form of a third-person telling you their friend works in IT just like you!</li>
<li>someone tells you that the technology used <strong>doesn&#8217;t matter</strong>;</li>
<li>someone&#8217;s role call of programming languages does not extend to at least 4 and they don&#8217;t know at least one dynamic language &#8211; real brownie points go to those who know a functional language;</li>
<li>someone shifts a conversation about programming to something else &#8211; oh yes, including girls, well maybe not!</li>
<li>a developer tells you they don&#8217;t have broadband at home;</li>
<li>someone states that Agile development is essentially the same as the Waterfall model;</li>
<li>someone becomes a &#8220;developer&#8221; during a one year Masters conversion course &#8211; in particular sociology and arts students;
<li>a &#8220;developer&#8221; tells you they <strong>want</strong> to be a manager;</li>
<li>people don&#8217;t think they&#8217;re a geek.</li>
</ul>
<p>There you go, if you don&#8217;t agree with these then you ain&#8217;t a geek! However, you are at least one tenth of one! <img src='http://equivalence.co.uk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/1297/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>developing software nobody wants</title>
		<link>http://equivalence.co.uk/archives/545</link>
		<comments>http://equivalence.co.uk/archives/545#comments</comments>
		<pubDate>Wed, 11 Feb 2009 01:53:20 +0000</pubDate>
		<dc:creator>Gregg</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[customers]]></category>
		<category><![CDATA[developing software]]></category>
		<category><![CDATA[Joel Spolsky]]></category>
		<category><![CDATA[software requirements]]></category>

		<guid isPermaLink="false">http://www.equivalence.co.uk/?p=545</guid>
		<description><![CDATA[Developing software that nobody wants is a classic mistake.  Joel Spolsky once said that if he had listened to what his customers wanted, and created a product with only their suggestions, they would not have came up with as many nice features (I paraphrase from an episode of the stackoverflow podcast). However, maybe his logic [...]]]></description>
			<content:encoded><![CDATA[<p>Developing software that nobody wants is a classic mistake.  <a href="http://www.joelonsoftware.com">Joel </a><a href="http://www.joelonsoftware.com">Spolsky</a> once said that if he had listened to what his customers wanted, and created a product with only their suggestions, they would not have came up with as many nice features (I paraphrase from an episode of the <a href="http://blog.stackoverflow.com">stackoverflow</a><a href="http://blog.stackoverflow.com"> podcast</a>). However, maybe his logic is slightly skewed. Why? Well he is developing a product for software developers (<a href="http://www.fogcreek.com/FogBUGZ/">FogBugz</a>). Therefore, his target market is essentially the same people who are writing the software. This makes developers a great source for feature suggestions.</p>
<p>However, consider on the other hand the average software developer. They are not creating a product that is used by other software developers. Instead, customers can range from a highly technical audience (say <a href="http://www.mathworks.com/">Matlab</a>), to a secretary with little computing knowledge. Clearly if we are creating a product aimed at the latter market, a software developer is the last person you should be asking for feature advice.</p>
<p>Unfortunately, misaligned product requirements actually happen in the wild. I have been involved a project that forced a user into making around 10 clicks to achieve a particular goal. Each step was valid, and allowed the user fine grained control over a feature. However, the user didn&#8217;t need this level of control, and they simply selected the same options every time. There was great difficulty convincing most of the developers that this kind of fine grained control was not required. Thus: <strong>d</strong><strong>eveloping software without thinking about how a customer is going to use the software should be high on the list of UNFORGIVABLE sins</strong>.</p>
<p>Some problems, like the one described above, are hard to grasp for us programmers. As programmers we are taught to generalise, and I think we find it difficult to turn this off in our heads. This can be seen in many applications that drown us in XML configuration. <strong>Product managers, and CEOs have less room for excuses</strong>.</p>
<p>So how do we ensure that we are not developing software that nobody wants? It just seems obvious to me that you have to ask the people that will be buying your software. This seems so simple right? Can you even believe that it doesn&#8217;t happen? Is it beyond the realms of possibilities that somebody, somewhere, is developing a piece of software for a market without asking that market the features that they want? You&#8217;d better believe it. It happens all the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://equivalence.co.uk/archives/545/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

