<?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>Focus + Context &#187; Business</title>
	<atom:link href="http://dangreenblatt.com/blog/category/business/feed/" rel="self" type="application/rss+xml" />
	<link>http://dangreenblatt.com/blog</link>
	<description>:: lost at the intersection of technology, design and user experience</description>
	<lastBuildDate>Fri, 16 Apr 2010 06:12:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google&#8217;s &#8220;Project 10 to the 100&#8243;</title>
		<link>http://dangreenblatt.com/blog/2008/09/25/google-project-10-to-the-100/</link>
		<comments>http://dangreenblatt.com/blog/2008/09/25/google-project-10-to-the-100/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 04:43:37 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[10 the 100]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[social responsibility]]></category>

		<guid isPermaLink="false">http://dangreenblatt.com/blog/?p=182</guid>
		<description><![CDATA[Project 10 to the 100 is an initiative by Google to help save the world. And not to go all Chicken Little, but it&#8217;s becoming painfully clear that the world does need saving  
 
As part of their ten year birthday celebration They&#8217;ve earmarked $10,000,000 to fund up to five projects with the potential to have [...]]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://www.project10tothe100.com/" target="_blank">Project 10 to the 100</a> </em>is an initiative by Google to help save the world. And not to go all Chicken Little, but it&#8217;s becoming painfully clear that the world does need saving <img src='http://dangreenblatt.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p> <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/NgSRwOZtDQ8&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/NgSRwOZtDQ8&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>As part of their <a href="http://www.google.com/tenthbirthday/" target="_blank">ten year birthday celebration</a> They&#8217;ve earmarked $10,000,000 to fund up to five projects with the potential to have a positive impact on the world in areas such as alternative energy, public health, or housing.  The cool thing is that anyone can submit an idea through the project web site. The massive pool of submissions will first be weeded out by what I&#8217;m sure is a ridiculously smart panel of Googlers, and the top twenty will be put to vote by the public sometime early next year. </p>
<p>What a brilliantly simple example of crowdsourcing for the greater good. Seriously heavy stuff.</p>
<p>And if anyone can make it happen, Google can. They&#8217;ve got money comin&#8217; out the search box. What is $10,000,000 dollars to them? A day&#8217;s worth of ad revenue? A week&#8217;s budget for Naked Juice?  An open bar at a holiday party? Which is not to say I don&#8217;t think this is awesome. I admire their optimism and mandate, and if other companies had this strong a sense of social responsibility, I think that we&#8217;d all have a lot less problems that need solving in the first place.</p>
<p>Submit your world-changing idea by October  20th!</p>
]]></content:encoded>
			<wfw:commentRss>http://dangreenblatt.com/blog/2008/09/25/google-project-10-to-the-100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts On Software Architecture and Corporate Structure</title>
		<link>http://dangreenblatt.com/blog/2008/07/21/thoughts-on-software-architecture-and-corporate-structure/</link>
		<comments>http://dangreenblatt.com/blog/2008/07/21/thoughts-on-software-architecture-and-corporate-structure/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 04:13:36 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[software architecture]]></category>

		<guid isPermaLink="false">http://dangreenblatt.com/blog/?p=31</guid>
		<description><![CDATA[How is a company structured like a piece of software, and what best practices can be shared between the design of both?
I’ve been thinking a lot lately about the the effects that the organizational structure of a company can have on the work done  there. I don’t have a background in either business or management; [...]]]></description>
			<content:encoded><![CDATA[<p><em>How is a company structured like a piece of software, and what best practices can be shared between the design of both?</em></p>
<p><span>I’ve been thinking a lot lately about the the effects that the organizational structure of a company can have on the work done  there. I don’t have a background in either business or management; my background is technical, and this is thus the primary lens through which I tend to filter things and around which I form mental models of the world. It’s not always accurate or appropriate, because the world works in a very different ways than a computer does. But good design is good design, and as evidenced by such influential work as Don Norman’s book “<a href="http://en.wikipedia.org/wiki/The_Design_Of_Everyday_Things" target="_blank">The Design of Everyday Things</a>,”  Christoper Alexander&#8217;s notion of a <a href="http://en.wikipedia.org/wiki/Design_pattern" target="_blank">design pattern</a>, or Janine M. Benyus exploration of a phenomenon known as <a href="http://en.wikipedia.org/wiki/Biomimicry" target="_blank">biomimicry</a>, sometimes, borrowing ideas from a different domain can be an surprisingly fruitful exercise.  </span></p>
<p><span>In answer to the question posed above, there are several principles which I think can be applied to the design both software architecture as well as the structure of a company: </span></p>
<p> </p>
<p><span><strong>A well organized company, like well architected software, is divided up into a modular set of functional components,</strong></span></p>
<p><span>Modularization is perhaps the most important characteristic a corporation or piece of software can have. Each node, be it a software module or team of employees, has a mandate to perform a very specific task in the context of a greater whole; when all nodes are working in concert with one another, the entity as a whole works. Nodes should work seamlessly with other nodes to achieve a certain task, but shouldn’t be held responsible for performing the task assigned to another. After all, that’s not what it was built to do. There should not be an n-by-n relationship of accountability among the functioning parts: each one shouldn&#8217;t have to know what all the others are doing. Instead, it is the role of some kind of controller module upstream to make sure that everything is running smoothly. Software design patterns such as MVC (<a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">Model-View-Controller</a>) are premised on this paradigm. Keeping to a model like this helps avoid spaghetti code and spaghetti management. </span></p>
<p> </p>
<p><span><strong>all of which are allocated discrete, well-documented roles defined before they are built,</strong></span></p>
<p><span>In software development, the programmer writes pre- and postconditions in order to establish the role of a particular software component. With these boundaries well defined at design-time, the programmer is less likely to try to sneak additional functionality into code that was never meant to accommodate it. The same holds true in an organization. If the mandate of a team is well defined and appropriately suited to the skillset of the members of that team, then the team will likely perform well.  If the team’s mandate changes, then some examination is in order to make sure that it can still perform its duties appropriately under the new definition. Some flexibility in re-using, reassigning and re-appropriating code or people is of course desirable, but eventually you reach a point of diminishing returns and end up so far from where you started that it just makes sense to scrap the whole thing and rewrite it from scratch.</span></p>
<p> </p>
<p><span><strong>all of which can communicate with one another using a universal and mutually agreed-upon protocol,</strong></span></p>
<p><span>Message passing is a huge part of efficiently written software. With all the modular pieces buzzing along, doing their own thing, it becomes important that they have some mechanism to communicate with one another. Many programming languages have some level of built-in support for passing information back and forth between chunks of code, and it is often best to leverage these facilities. By mapping out the communication paradigm before a single line of code is written and keeping consistent throughout the whole application, the programmer saves him- or herself the trouble of inventing a new set of messages each time an additional module is added. </span></p>
<p><span>The notion of communication here applies both between modules, or teams, which may constantly interact with each other and require well-defined APIs for interaction, and  for more asynchronous, interrupt-driven messages, which may better be handled by an event-based notification system. In a corporation, top-down information, such as announcements or strategic direction, should be able to easily be transmitted down the corporate hierarchy (this is often handled in meetings and email lists); equally important (though much harder to implement appropriately) is for messages coming from the lower levels to be heard at the very top without having been distorted or in any way compromised along the way. </span></p>
<p> </p>
<p><span><strong>… and finally, all of which are constantly being monitored, maintained, upgraded, and, if necessary, refactored or phased out.</strong></span></p>
<p><span>A company, or a piece of software, is subject to the same rules of survival as any living entity: adapt or become extinct. In a market which is in constant flux, the only way to stay on top is to avoid stagnation and embrace change. </span></p>
<p><span>While there is something to be said for not fixing something which isn’t broken, if your software is chugging along just fine using decades old technology, while the competition is constantly migrating to the latest and greatest  (and seeing the associated financial returns), then the functional state of the software is irrelevant; something at a much higher level is indeed broken. If your algorithm was top notch for years, but the competition figured out how to do the same thing faster/cheaper/better, then it’s time to refactor your algorithm.</span></p>
<p><span>The same holds true on a macro level for the businesses that create the software -  legacy systems, legacy organizational structure, outdated processes, and other baggage will inevitably keep accumulating over time, weighing down the enterprise and all but canceling out any innovation that is achieved. Without constant vigilant monitoring, and mechanisms to execute on whatever metrics those monitoring systems return (good or bad), then the organization inevitably has resigned itself to being retroactively labeled as a <em>Version 1.0</em> relic in whatever industry it once commanded a presence.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://dangreenblatt.com/blog/2008/07/21/thoughts-on-software-architecture-and-corporate-structure/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

