<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - refactoring tag</title>
  <link>http://www.codingthearchitecture.com/tags/refactoring/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 21 May 2012 09:41:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Podcast #2 : QCon revisited</title>
    <link>http://www.codingthearchitecture.com/2008/03/25/podcast_2_qcon_revisited.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;a href=&#034;http://www.codingthearchitecture.com/2008/03/06/the_first_cta_podcast.html&#034;&gt;As promised&lt;/a&gt; the 2nd CTA podcast is a roundtable discussion between some of the CTA contributors - namely &lt;a href=&#034;http://www.codingthearchitecture.com/authors/sbrown/&#034;&gt;Simon Brown&lt;/a&gt;, &lt;a href=&#034;http://www.codingthearchitecture.com/authors/sdalton/&#034;&gt;Sam Dalton&lt;/a&gt; and &lt;a href=&#034;http://www.codingthearchitecture.com/authors/kseal/&#034;&gt;Kevin Seal&lt;/a&gt;. In this podcast we discuss some of the themes emerging from the recent QCon conference held in London and our views on those themes.
&lt;/p&gt;

&lt;p&gt;
The podcast can be downloaded &lt;a href=&#034;http://static.codingthearchitecture.com/podcasts/podcast-march2008.mp3&#034;&gt;here&lt;/a&gt; or you can &lt;a href=&#034;http://www.codingthearchitecture.com/tags/podcast/rss.xml&#034;&gt;subscribe&lt;/a&gt;. Full show notes follow below:
&lt;/p&gt;

&lt;h3&gt;1. Introduction&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;QCon Conference London detail can be found &lt;a href=&#034;http://jaoo.dk:80/london-2008/conference/&#034;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;2. Monitoring and Management (0:27)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Roll your own vs. &#034;off the shelf&#034; monitoring&lt;/li&gt;
&lt;li&gt;Asynchronous monitoring&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.jinspired.com&#034;&gt;JXInsight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The need for an System Architect and an overall understanding of WHAT to monitor and a holistic view&lt;/li&gt;
&lt;li&gt;Including Monitoring NFRs upfront in SAD&lt;/li&gt;
&lt;li&gt;Monitoring the monitoring vs. best effort&lt;/li&gt;
&lt;li&gt;eBay and 1.5TB of monitoring and logfile information per day&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3. Rehashing Refactoring (11:56)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Refactoring now mainstream, now emphasizing at the micro-level&lt;/li&gt;
&lt;li&gt;Code-debt - how can you measure it?&lt;/li&gt;
&lt;li&gt;Refactoring is not something to be &#034;saved up&#034;&lt;/li&gt;
&lt;li&gt;Lots of rearchitecture projects sold as refactoring&lt;/li&gt;
&lt;li&gt;Sometimes starting again is a better solution than large scale refactoring&lt;/li&gt;
&lt;li&gt;Why do things end up in such a mess so often?&lt;/li&gt;
&lt;li&gt;Need to get back to writing code for humans to understand&lt;/li&gt;
&lt;li&gt;Worry about emphasis on low-level code optimizations rather than architecture&lt;/li&gt;
&lt;li&gt;Is refactoring its own worst enemy being referred to as a separate discipline to regular software development?&lt;/li&gt;
&lt;li&gt;We are our own worst enemies - we (especially the architects) need to stand up for the quality of our code - stop allowing ourselves to be convinced to make shortcuts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;4. The Return of the Architect? (25:08)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Thinking about performance, monitoring etc upfront&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.terracotta.org/&#034;&gt;Terracotta&lt;/a&gt;, &lt;a href=&#034;http://www.oracle.com/technology/products/coherence/index.html&#034;&gt;Coherence&lt;/a&gt;, &lt;a href=&#034;http://www.gigaspaces.com/&#034;&gt;Gigaspaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2007/03/15/qcon_open_terracotta.html&#034;&gt;Kevin&#039;s views on Terracotta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How much performance could you squeeze from a system in 2 weeks with code changes alone?&lt;/li&gt;
&lt;li&gt;Real-time VMs and performance improvements&lt;/li&gt;
&lt;li&gt;The benefits of continuous performance testing&lt;/li&gt;
&lt;li&gt;Premature optimization&lt;/li&gt;
&lt;li&gt;Understanding a system&#039;s deficiencies can be as valuable as fixing them&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/03/25/podcast_2_qcon_revisited.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/03/25/podcast_2_qcon_revisited.html</guid>
    <pubDate>Tue, 25 Mar 2008 10:23:20 GMT</pubDate>
  </item>
  
  <item>
    <title>Give the user what they want...</title>
    <link>http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html</link>
    
      
        <description>
          &lt;p&gt;
I used to subscribe to the school of thought that you should write, or at least design, your system solidly and then build your user interface(s) on top of this sound foundation. After all, it&#039;s got to work before you can use it, right?
&lt;/p&gt;
&lt;p&gt;
I&#039;m not so sure anymore, though this is mitigated somewhat by an iterative process. I&#039;ve more recently shifted towards the notion that each function must be usable before it can be used. After all, its main purpose in life is to be used, not to be strategic/beautiful/standard/optimal, right?
&lt;/p&gt;
&lt;p&gt;
People, particularly developers, tend to dismiss the user interface as being the &#034;front-end&#034; to the application, simply adapting between business function and user. This is only really true once it is complete; during development the UI is defining and refining the business functions - it is part of the development process. When implementing user interface first it is often the architectural assumptions that get changed since they don&#039;t fully support the desired functionality. This is a good thing - it is refining the architecture and making it fit for purpose, the purpose being to serve the user.
&lt;/p&gt;
&lt;p&gt;
Of course you&#039;re stuck trying to balance functional and non-functional requirements - just remember that the users carry a lot more weight than you might first think! If the end users don&#039;t want to use your application you&#039;ll struggle to get it adopted whereas if the end users do want to use it they&#039;ll give the project real inertia, biting your arm off for new features.
&lt;/p&gt;
&lt;p&gt;
Also, whilst it may seem a bit Machiavellian, it&#039;s quite easy (and sometimes fun) to ride an unrelated architectural improvement in on the back of some new user functionality. The development effort&#039;s got impetus so why not make the most of it and champion your own requirements?
&lt;/p&gt;
&lt;blockquote&gt;
The overall quality of your system should improve 
with the addition of functionality.
&lt;/blockquote&gt;
&lt;p&gt;
The development of new functionality &lt;i&gt;requires&lt;/i&gt; the refactoring of related code, thereby improving it. This development also &lt;i&gt;facilitates&lt;/i&gt; the refactoring of unrelated code - an opportunity worth taking!
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html</guid>
    <pubDate>Fri, 17 Mar 2006 16:02:28 GMT</pubDate>
  </item>
  
  </channel>
</rss>

