<?xml version="1.0" encoding="UTF-8"?>
<page>
  <content>I'm a recovering Enterprise software developer. It's been a gradual process, but I think I'm to the point where I can declare myself Enterprise free. The following is my reflections on my experiences on developing Enterprise software and how I've moved away from it.

h2. The Methodology

Over the past several months I've begun to get more comfortable as a self-employed software developer and have fully embraced a more productive software development mentality. I'm now to the point where I've retrained myself to not think like a programmer in Corporate America anymore. 

*I no longer fear simply starting a new project.*

# I only determine the high level goals and requirements before starting.
# I develop a prototype first instead of writing a long documents full of specifications.
# Having to change large chunks of functionality or the way something works based on my prototype means I'm probably doing something right, not wrong.
# Automated testing is no longer optional, I'm responsible for testing, not some group in a different cube farm.
# I no longer gather requirements and disappear, I must have an open channel of communication with the client.

If you work in Corporate America and are surprised by this development process, relax, it scared me too at first. I was used to wrapping myself in the warm protective blanket of specifications and service agreements. They allowed me to cover my own butt in case something when wrong. Now instead of saying, "I can't do this, it's not in the specifications", I can say, "This is different than what we originally assumed, lets see if we need to change direction."

You do not have to be bound by predetermined specifications and agreements. Shielding yourself with contracts is not a productive way to create an application. Moving in small steps and involving the client in the process a much better way to make sure the project is usable and closer to the actual needs of those using it.

h2. The Tools

I had been bludgeoned for so long about Enterprise ready solutions that I forgot that much of what makes the IT world is good old fashioned simple code that works. I was trained in school to write code that was elegant and to use simple yet powerful tools that got the job done. 

Yet once I transitioned into the working world I had large IDEs and a mountain of best practices that seemed to slow things down past the point of being useful. I soon found myself relying so much on debuggers and design patterns that I lost a lot of what makes software development an inherently creative process.

I think it is time for developers to begin to move away from behemoths like Websphere that introduce so many layers into the development process that setting up a development environment is almost more complicated than the actual software development itself.

Take some time to pick up a text editor and a compiler and remember what it was like to write code that simply required some well thought out design. Software need not be big merely for the sake of being big to seem important.

h2. The New Enterprise

The Enterprise world of software development right now is broken. It is based too much around money and big business. For Enterprise software to become useful again it needs to be less focused on business itself and more focused on creating something that will make customers feel empowered and happy to pay for a service.






</content>
  <created-on type="datetime">2006-08-07T15:15:47+00:00</created-on>
  <has-changes type="integer">0</has-changes>
  <html>&lt;p&gt;I&amp;#8217;m a recovering Enterprise software developer. It&amp;#8217;s been a gradual process, but I think I&amp;#8217;m to the point where I can declare myself Enterprise free. The following is my reflections on my experiences on developing Enterprise software and how I&amp;#8217;ve moved away from it.&lt;/p&gt;


	&lt;h2&gt;The Methodology&lt;/h2&gt;


	&lt;p&gt;Over the past several months I&amp;#8217;ve begun to get more comfortable as a self-employed software developer and have fully embraced a more productive software development mentality. I&amp;#8217;m now to the point where I&amp;#8217;ve retrained myself to not think like a programmer in Corporate America anymore.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;I no longer fear simply starting a new project.&lt;/strong&gt;&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;I only determine the high level goals and requirements before starting.&lt;/li&gt;
		&lt;li&gt;I develop a prototype first instead of writing a long documents full of specifications.&lt;/li&gt;
		&lt;li&gt;Having to change large chunks of functionality or the way something works based on my prototype means I&amp;#8217;m probably doing something right, not wrong.&lt;/li&gt;
		&lt;li&gt;Automated testing is no longer optional, I&amp;#8217;m responsible for testing, not some group in a different cube farm.&lt;/li&gt;
		&lt;li&gt;I no longer gather requirements and disappear, I must have an open channel of communication with the client.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;If you work in Corporate America and are surprised by this development process, relax, it scared me too at first. I was used to wrapping myself in the warm protective blanket of specifications and service agreements. They allowed me to cover my own butt in case something when wrong. Now instead of saying, &amp;#8220;I can&amp;#8217;t do this, it&amp;#8217;s not in the specifications&amp;#8221;, I can say, &amp;#8220;This is different than what we originally assumed, lets see if we need to change direction.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;You do not have to be bound by predetermined specifications and agreements. Shielding yourself with contracts is not a productive way to create an application. Moving in small steps and involving the client in the process a much better way to make sure the project is usable and closer to the actual needs of those using it.&lt;/p&gt;


	&lt;h2&gt;The Tools&lt;/h2&gt;


	&lt;p&gt;I had been bludgeoned for so long about Enterprise ready solutions that I forgot that much of what makes the IT world is good old fashioned simple code that works. I was trained in school to write code that was elegant and to use simple yet powerful tools that got the job done.&lt;/p&gt;


	&lt;p&gt;Yet once I transitioned into the working world I had large IDEs and a mountain of best practices that seemed to slow things down past the point of being useful. I soon found myself relying so much on debuggers and design patterns that I lost a lot of what makes software development an inherently creative process.&lt;/p&gt;


	&lt;p&gt;I think it is time for developers to begin to move away from behemoths like Websphere that introduce so many layers into the development process that setting up a development environment is almost more complicated than the actual software development itself.&lt;/p&gt;


	&lt;p&gt;Take some time to pick up a text editor and a compiler and remember what it was like to write code that simply required some well thought out design. Software need not be big merely for the sake of being big to seem important.&lt;/p&gt;


	&lt;h2&gt;The New Enterprise&lt;/h2&gt;


	&lt;p&gt;The Enterprise world of software development right now is broken. It is based too much around money and big business. For Enterprise software to become useful again it needs to be less focused on business itself and more focused on creating something that will make customers feel empowered and happy to pay for a service.&lt;/p&gt;</html>
  <id type="integer">50</id>
  <is-post type="integer">1</is-post>
  <is-published type="integer">1</is-published>
  <title>The Enterprise is Based (Wrongly) on Fear</title>
  <url>notebook/2006/08/07/the_enterprise_is_based_wrongly_on_fear</url>
</page>
