<?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>Carlos Michael Gabaldon</title>
	<atom:link href="http://carlosgabaldon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://carlosgabaldon.com</link>
	<description>Technologist</description>
	<lastBuildDate>Thu, 04 Mar 2010 16:18:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Best practices for running a software development team</title>
		<link>http://carlosgabaldon.com/2010/02/14/best-practices-for-running-a-software-development-team/</link>
		<comments>http://carlosgabaldon.com/2010/02/14/best-practices-for-running-a-software-development-team/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 02:47:19 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=277</guid>
		<description><![CDATA[
Build solid relationships all of  your stakeholders.

Customers
Product Management
Executives
Business Partners
Business Units
Customer Support
Operational Support


Create a single intake process for all product requests.
Partner with stakeholders when prioritizing requests. Make sure they are part of any product steering committee meetings.
Always prioritize severity 1 &#38; 2  bugs before accepting any product feature requests from your stakeholders.
Scalability, availability, and peformance enhancements [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Build solid relationships all of  your stakeholders.
<ul>
<li>Customers</li>
<li>Product Management</li>
<li>Executives</li>
<li>Business Partners</li>
<li>Business Units</li>
<li>Customer Support</li>
<li>Operational Support</li>
</ul>
</li>
<li>Create a single intake process for all product requests.</li>
<li>Partner with stakeholders when prioritizing requests. Make sure they are part of any product steering committee meetings.</li>
<li>Always prioritize severity 1 &amp; 2  bugs before accepting any product feature requests from your stakeholders.</li>
<li>Scalability, availability, and peformance enhancements should be prioritized very high in relation to product feature requests. Categorizing them as bugs also is way to make sure that fall high on the priority list.</li>
<li>Do weekly reviews of all production &amp; QA bugs.</li>
<li>Do monthly reviews of production &amp; QA logs to do trending for security issues, performance issues, and capacity planning. Aggregate this data into <a href="http://xprogramming.com/xpmag/BigVisibleCharts">big visible charts</a> where everyone on the team can see it daily.</li>
<li>The development team should have real-time visibility to system level stats from the production environment. Use tools like <a href="http://ganglia.sourceforge.net/">Ganglia</a> and <a href="http://www.cacti.net/what_is_cacti.php">Cacti</a> to give the team a real-time view into production.</li>
<li>Every person on the development team should spend time sitting with the customer support team listening in on support calls to get a deeper view into customer issues. Every 2-3 months for a few hours is a good schedule.</li>
<li>Define a clear escalation plan for production outages/issues. Who is the first line of defense? Who do they escalate to? How do they classify the issue? When should development get involved? How should data be captured for later root cause analysis? Pull data from the HR system for the escalation up the management chain,<strong> do not waste time</strong> maintaining separate team lists of contact information. Update you HR system to contain all contact info then pull the data!</li>
<li>Hire a technical writer to setup a wiki with a well designed information architecture for all product documentation. Run books, architectural artifacts, knowledge base, etc..</li>
<li>Ensure that there is clear requirements traceability back to the originating stakeholder request.</li>
<li>There should be design traceability from the high level design to the detailed design to the completed code.</li>
<li>Every person on the development team should be trained on how to do <a href="http://en.wikipedia.org/wiki/Root_cause_analysis">root cause analysis</a>.</li>
<li>After any and every production incident there should be a root cause analysis performed with clear action items and associated owners to prevent the issue from re-occurring. This is not a witch hunt to find someone who to blame, but rather a way to identify what process or lack of process created the environment for the issue to have occurred.</li>
<li>Focus on eliminating waste in all <a href="http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle">SDLC</a> processes. A good place to start is with any process outside of analysis and writing the code, ask the question is the process adding value?</li>
<li>Balance time to market vs. perfect architecture. What is a reasonable architecture to solve the problem today. If cost, resources, or time constrains the architectural design then have a story of how to undo the trade offs made in the design to meet the time to market demands. <strong>What is the plan for getting rid of the technical debt</strong><strong>?</strong></li>
<li>Make data driven decisions, but do not require that every decision be made with complete data. Identify the experts in the organization and trust them to make the right decisions based on past experiences. For example, picking the right initial architecture should be based expert judgment, past experience, and some amount of prototypes. But scaling that architecture over time should be completely data driven from the metrics collected on the production systems. Always be measuring, analyzing, and optimizing based on the data.</li>
<li>Everyone on the development team should have a professional development plan. This plan is a contract between the employee and management to ensure that the organization will provide all required resources and opportunities for the employee to realize the career goals.</li>
<li>Foster a culture that supports a healthy balance between work and family life for everyone within the organization. Let people go home to their families at reasonable times. Ensure that people are taking vacations on a regular basis. <strong>Value results driven work over duration driven work.</strong></li>
<li>Create a respectful work environment where:
<ul>
<li>employees are valued</li>
<li>communication is polite and courteous</li>
<li>people are treated as they wish to be treated</li>
<li>conflict is addressed in a positive and respectful manner</li>
<li>disrespectful behavior and harassment are addressed</li>
</ul>
</li>
<li>Every 2-3 months get the entire organization together to discuss the product roadmap, discuss successfully delivered work, answer questions, motivate the teams, and above all to publicly praise and reward the star team members within the team.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2010/02/14/best-practices-for-running-a-software-development-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile development and low tech tools</title>
		<link>http://carlosgabaldon.com/2010/01/31/agile-development-and-low-tech-tools/</link>
		<comments>http://carlosgabaldon.com/2010/01/31/agile-development-and-low-tech-tools/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 04:29:55 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=254</guid>
		<description><![CDATA[I just recently started working on large software development project that the management team decided to use SCRUM over some of the existing waterfall process used throughout the rest of the organization. When I first heard the news I thought great now the team can focus on building working software rather than following processes that [...]]]></description>
			<content:encoded><![CDATA[<p>I just recently started working on large software development project that the management team decided to use <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">SCRUM</a> over some of the existing waterfall process used throughout the rest of the organization. When I first heard the news I thought great now the team can focus on building working software rather than following processes that only make the leadership team feeling like they have control over the project. The problem is that the team is spending large amounts of their time keeping information up to date in <a href="http://www.versionone.com/">VersionOne</a> the tool that was chosen by the management team to manage this project. VersionOne is a very popular tool that many successful companies have standardized on for SCRUM or XP, but from my experience effective agile development teams always choose low tech tools for managing the development.</p>
<p>What do I mean by low tech tools? Low tech tools are tools that do not require the team to sit in front of the computer to use; simple things like<a href="http://xprogramming.com/xpmag/BigVisibleCharts"> big visible charts</a> or <a href="http://alistair.cockburn.us/Information+radiator">information radiator</a> and index cards. Why is this so important? Because the team already spends a large amount of time sitting in front of the computer developing and testing the software, why make them spend all their remaining time updating and managing user stories, <a href="http://en.wikipedia.org/wiki/Burn_down_chart">burn down charts</a>, and tasks chained to the that same machine.</p>
<p>Low tech tools have a way of connecting people with the ideas and concepts in a much more clear, tangible, and meaningful way. For example, a team can sit down and write all the user stories on index cards then with some large wall space tape the index cards to the wall to create a product backlog. From that the team can do sprint planning by simply moving cards from the backlog section of the wall to the next planned sprint; all with no dual core&#8217;s required!</p>
<p>In a large organization or working with some remote team members the low tech way can be difficult and the organization may require that the planning be documented in a more formal project management or tacking tool. To address this have the PM on the team be responsible for keeping the low tech tools in sync with the high tech tools. They are the ones that need to communicate the status of the project to many different types of stakeholders so it makes the most sense for them to manage the communication; and leave the team to focusing on the code&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2010/01/31/agile-development-and-low-tech-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to build a product</title>
		<link>http://carlosgabaldon.com/2009/12/10/how-to-build-a-product/</link>
		<comments>http://carlosgabaldon.com/2009/12/10/how-to-build-a-product/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 06:20:56 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=229</guid>
		<description><![CDATA[
Developers, product management, and customers brainstorm ideas.
What problem are we trying to solve?
What market opportunity are we trying to meet?

Developers &#38; product management write the core user stories.
Developers build an end-to-end web site skeleton with mocks to any external systems.
Developers spec out the core web site API.
Developers and product management iterate over the web site [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Developers, product management, and customers brainstorm ideas.<br />
<blockquote><p>What problem are we trying to solve?<br />
What market opportunity are we trying to meet?</p></blockquote>
</li>
<li>Developers &amp; product management write the core user stories.</li>
<li>Developers build an end-to-end web site skeleton with mocks to any external systems.</li>
<li>Developers spec out the core web site API.</li>
<li>Developers and product management iterate over the web site skeleton adding the core user stories.</li>
<li>Partnering with the customer; developers and product management push the product to market as quickly as possible.</li>
<li>From customer feedback developers and product management enhance, rewrite, or create new user stories and apply those stories back into the web site.</li>
<li>Repeat 1-7</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/12/10/how-to-build-a-product/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meetings</title>
		<link>http://carlosgabaldon.com/2009/12/09/meetings/</link>
		<comments>http://carlosgabaldon.com/2009/12/09/meetings/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 05:05:01 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=218</guid>
		<description><![CDATA[It seems that in all my years of software development every company I work at seems to feel the need to pull developers off of real work to have a meeting. Where they want to discuss some useless topic that just makes us managers feel like the team is being productive by communicating status or [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that in all my years of software development every company I work at seems to feel the need to pull developers off of real work to have a meeting. Where they want to discuss some useless topic that just makes us managers feel like the team is being productive by communicating status or issues. So what are good guidelines for meetings? Should we be having meetings? Here are my 3 golden rules:</p>
<ol>
<li>Meetings should never be scheduled; you should strive to create an environment where meetings just happen. How do you do this? Create open development environments where there are no offices or cubicles just groups of desks with lots of couches and whiteboards. In this environments meetings become organic and happen only when people need to talk.</li>
<li>You should never have meetings to communicate status; that is why you use wiki&#8217;s and bug tracking tools. People who want status should just pull the status from those tools. It does not matter if you are standing up while you are giving status in a meeting or you call it agile. Status or issues should be an asynchronous activity where the people who need to know should be pulling those from the team, not slowing them down with a synchronous meeting. If there is an issue that needs to be escalated or help resolving then the team needs to get their butts out of their seats and pull everyone together, you should not spend time in Outlook trying to schedule a meeting!</li>
<li>You should only have meetings for productive things like brainstorming new ideas, doing use cases, group design, discussing code, or getting the team together for drinking beer.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/12/09/meetings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erlang</title>
		<link>http://carlosgabaldon.com/2009/09/11/erlang/</link>
		<comments>http://carlosgabaldon.com/2009/09/11/erlang/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 02:27:21 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=185</guid>
		<description><![CDATA[I added another articles section for my other love language Erlang.
The first article is just a quick intro into this cool and powerful language, I will be sharing more soon..
http://carlosgabaldon.com/erlang/hello-erlang/
]]></description>
			<content:encoded><![CDATA[<p>I added another articles section for my other love language <a href="http://carlosgabaldon.com/erlang/">Erlang</a>.</p>
<p>The first article is just a quick intro into this cool and powerful language, I will be sharing more soon..</p>
<p><a href="http://carlosgabaldon.com/erlang/hello-erlang/">http://carlosgabaldon.com/erlang/hello-erlang/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/09/11/erlang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Focus on delivering the business value</title>
		<link>http://carlosgabaldon.com/2009/09/04/focus-on-delivering-the-business-value/</link>
		<comments>http://carlosgabaldon.com/2009/09/04/focus-on-delivering-the-business-value/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 22:51:46 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=182</guid>
		<description><![CDATA[The following quote from  Paul Graham illustrates how in some large software development organizations the leadership team loses focus on the main goal of software development; which is to deliver the business value with reduced costs.
..we can get a portrait of the &#8220;normal&#8221; world. It&#8217;s populated by people who talk a lot with one [...]]]></description>
			<content:encoded><![CDATA[<p>The following quote from  <a href="http://www.paulgraham.com/">Paul Graham</a> illustrates how in some large software development organizations the leadership team loses focus on the main goal of software development; which is to deliver the business value with reduced costs.</p>
<blockquote><p>..we can get a portrait of the &#8220;normal&#8221; world. It&#8217;s populated by people who talk a lot with one another as they work slowly but harmoniously on conservative, expensive projects whose destinations are decided in advance, and who carefully adjust their manner to reflect their position in the hierarchy.</p></blockquote>
<p><a href="http://www.paulgraham.com/kate.html">http://www.paulgraham.com/kate.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/09/04/focus-on-delivering-the-business-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My interview by Dmitry Belitsky</title>
		<link>http://carlosgabaldon.com/2009/09/01/my-interview-by-dmitry-belitsky/</link>
		<comments>http://carlosgabaldon.com/2009/09/01/my-interview-by-dmitry-belitsky/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 20:01:53 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=178</guid>
		<description><![CDATA[I recently did another interview by Dmitry Belitsky on &#8220;How to become successful rubyist&#8221;. Dmitry is an up an coming web developer who put together a great set of interviews with several top Ruby hackers.
http://belitsky.info/freelance/carlos-gabaldon/
]]></description>
			<content:encoded><![CDATA[<p>I recently did another interview by <a href="http://belitsky.info/">Dmitry Belitsky</a> on &#8220;How to become successful rubyist&#8221;. Dmitry is an up an coming web developer who put together a great set of interviews with several top Ruby hackers.</p>
<p><a href="http://belitsky.info/freelance/carlos-gabaldon/">http://belitsky.info/freelance/carlos-gabaldon/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/09/01/my-interview-by-dmitry-belitsky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Interview on RubyLearning blog</title>
		<link>http://carlosgabaldon.com/2009/07/21/my-interview-on-rubylearning-blog/</link>
		<comments>http://carlosgabaldon.com/2009/07/21/my-interview-on-rubylearning-blog/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 06:56:32 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=173</guid>
		<description><![CDATA[I recently had the pleasure of being interviewed by Satish Talim for his RubyLearning Blog on his mini series – “How do I learn and master Sinatra?” – by top Rubyists using Sinatra.
The interview series provides insight and commentary from notable Sinatra developers, with the goal of facilitating and providing answers to the questions Ruby [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had the pleasure of being <a href="http://rubylearning.com/blog/2009/07/21/carlos-gabaldon-how-do-i-learn-and-master-sinatra/">interviewed</a> by Satish Talim for his <a href="http://rubylearning.com/blog">RubyLearning Blog</a> on his mini series – “How do I learn and master Sinatra?” – by top Rubyists using Sinatra.</p>
<p>The interview series provides insight and commentary from notable Sinatra developers, with the goal of facilitating and providing answers to the questions Ruby beginners face on how to learn and master Sinatra.</p>
<p><a href="http://twitter.com/indianguru">Satish Talim </a>is a programmer, author, trainer, and speaker. A recognized expert in the field of software development with over 30+ years of I.T. experience, Satish has consulted and trained teams at various companies in India and the US.</p>
<p><a href="http://rubylearning.com/blog/2009/07/21/carlos-gabaldon-how-do-i-learn-and-master-sinatra/">http://rubylearning.com/blog/2009/07/21/carlos-gabaldon-how-do-i-learn-and-master-sinatra/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/07/21/my-interview-on-rubylearning-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sinatra rake tasks</title>
		<link>http://carlosgabaldon.com/2009/05/25/sinatra-rake-tasks/</link>
		<comments>http://carlosgabaldon.com/2009/05/25/sinatra-rake-tasks/#comments</comments>
		<pubDate>Mon, 25 May 2009 00:37:41 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=150</guid>
		<description><![CDATA[Since I have been playing around with Sinatra again, I decided that what Sinatra needs is some automation for some of the boring day to day tasks. So I created a GitHub bucket to dump my Rake tasks. I only have 1 task, to create a new project, but I have a lot new projects [...]]]></description>
			<content:encoded><![CDATA[<p>Since I have been playing around with <a href="http://carlosgabaldon.com/ruby/bets-placed-by-sinatra/">Sinatra</a> again, I decided that what Sinatra needs is some automation for some of the boring day to day tasks. So I created a <a href="http://github.com">GitHub</a> bucket to dump my Rake tasks. I only have 1 task, to create a new project, but I have a lot new projects that I will be doing in Sinatra in the coming months, so I know there will be a cornucopia of tasks.</p>
<p><a href="http://github.com/CarlosGabaldon/sinatra-rake-tasks/tree/master">Sinatra-rake-tasks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/05/25/sinatra-rake-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on Sinatra</title>
		<link>http://carlosgabaldon.com/2009/05/23/more-on-sinatra/</link>
		<comments>http://carlosgabaldon.com/2009/05/23/more-on-sinatra/#comments</comments>
		<pubDate>Sat, 23 May 2009 22:20:36 +0000</pubDate>
		<dc:creator>Carlos Gabaldon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://carlosgabaldon.com/?p=141</guid>
		<description><![CDATA[I wrote another article on the cool Ruby web framework DSL Sinatra.
In my last article I wrote about the cool Ruby DSL web framework called Sinatra which is taking the Ruby world by storm. I decided that another &#8220;How to&#8221; article on some of Sintra&#8217;s other kick ass features was just what Frank would expect.
..

Read [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote another <a href="/ruby/bets-placed-by-sinatra/">article</a> on the cool Ruby web framework DSL Sinatra.</p>
<blockquote><p>In my <a href="http://carlosgabaldon.com/ruby/singing-with-sinatra/">last article</a> I wrote about the cool Ruby DSL web framework called <a rel="#someid0" href="http://www.sinatrarb.com/">Sinatra</a> which is taking the Ruby world by storm. I decided that another &#8220;How to&#8221; article on some of Sintra&#8217;s other kick ass features was just what Frank would expect.<br />
..
</p></blockquote>
<p><a href="/ruby/bets-placed-by-sinatra/">Read More..</a></p>
]]></content:encoded>
			<wfw:commentRss>http://carlosgabaldon.com/2009/05/23/more-on-sinatra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
