Do and Do Nots Revamped

So I made an entry recently per a request by a fellow .NETer, that some coworkers have read and noted that it appeared I was commenting on the current project at hand.  Strangely enough, even though some might apply directly, I was writing in context of my previous projects.  Even though it might not seem like it every single day our current project is actually going very well.  By industry standards we're doing ridiculously well!  Amid a little turmoil here and there, a little dose of politics, and a little realization that the project is really bigger than originally anticipated everyone is really moving forward, with January really bringing home that point.

With that in mind, and progress being made, the project plans getting straightened out I am offering this current entry as a clarification of my Do and Do Not list.  Those that worked with my at specific positions will note where each of these do nots and dos come from.

Do Not List

 

1. Do not set arbritrary deadlines for a project until full scoping or some type of reasonable expectation the date can be made has been completed by the developers.  If you set a date, then continually have to push it back it only increases the negative vibe of the team and creates an environment which will in turn create turnover.  Turnover is bad for any software project.

 

This point is in regards to the dictation of a relatively rich person (He has millions) who would dictate down to the pixel positioning of web pages and dictate down from on high when things should be done.  Needless to say things got done when they got done, but it led to a lot of 12 hr days that ended up with the effective loss of 2 senior developer and the orphaning of entire segments of web projects.

 

2. Do not create specific use cases, business workflows, UML docs, or other docs that are in essence empty and then act like they're fully formed and complete documents.  This is a very quick way to erode the enthusiasm of all but the most brazen, determined, and capable software developers (re: What makes a good software developer).

 

UML docs where presented with some interesting, yet useless design elements for a core product at one place I worked.  The UML documents where of no use as everything being done was entirely for customization purposes.  Every single element of the project resulted in verbal face to face communication between developers.  Something that is by no means bad, but the UML specs where useless in reducing time to deploy, time to build, and reducing ramp up time.

 

3. Do not create an unworkable environment schedule.  Never, and I mean never, I've seen this before, but never, not even when hell freezes over even, ever force developers to work an 8-5 schedule.  The second you set a time frame they have to come in you've knocked 10-15% off productivity.  The two elements of good productivity are developer chosen hours and a good communication and honesty in hours worked, not setting a schedule for someone to meet.

 

I once worked in an environment where the hours where between 8am and 5:00pm.  This is the quickest way to mess one's life up, lose developers, and cause undue stress.  A minor amount of flex time remedies all of this.

 

4. Do not leave developers without standards unless you want sphagetti code in large volume.  No programmer programs the same from day to day, the technologies change, and the development of said individuals changes with personal growth and knowledge.

 

The largest problem that can occur is a standardless, personally customized, one off solution.  These are the hardest, most confusing, and most costly solutions to maintain for a company.  I'll name one company I worked for that was notorious for this, Citigroup.  Yup, the massive huge corporation had sphagetti EVERYWHERE!!!

...and for the do list, I've decided after the few minutes it took to write this up, that they need no explanation.  Simply put, the do items are things to do, so do em'!!!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 1/29/2007 at 11:10 PM
Tags: , , , , , , , ,
Categories: Centerstance | How-To, Samples, and Such
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Common Sense Software Development

People like to rave about Agile or Waterfall or whatever and they love to hate Agile and Waterfall and whatever.  Well there are some things that take a little bit of common sense to get done right and software development is one of them.

First I got a list of "do not" items.  Then I'll have a list of "do this" items.

Do Not List

  1. Do not set arbritrary deadlines for a project until full scoping or some type of reasonable expectation the date can be made has been completed by the developers.  If you set a date, then continually have to push it back it only increases the negative vibe of the team and creates an environment which will in turn create turnover.  Turnover is bad for any software project.
  2. Do not create specific use cases, business workflows, UML docs, or other docs that are in essence empty and then act like they're fully formed and complete documents.  This is a very quick way to erode the enthusiasm of all but the most brazen, determined, and capable software developers (re: What makes a good software developer).
  3. Do not create an unworkable environment schedule.  Never, and I mean never, I've seen this before, but never, not even when hell freezes over even, ever force developers to work an 8-5 schedule.  The second you set a time frame they have to come in you've knocked 10-15% off productivity.  The two elements of good productivity are developer chosen hours and a good communication and honesty in hours worked, not setting a schedule for someone to meet.
  4. Do not leave developers without standards unless you want sphagetti code in large volume.  No programmer programs the same from day to day, the technologies change, and the development of said individuals changes with personal growth and knowledge.

Do This List

  1. Do setup guidelines and standards for coding, documentation, and patterns and practices.
  2. Do setup schedule guidelines based on developer estimates x32 and be flexible within x4 of the estimates.  Software development is not a "set engineering process".  Even bridge building doesn't always stay according to process and schedule, don't expect something like software development to.
  3. Do setup a flexibe work schedule with each respective developer so that developers and customers (literaly and figuratively in the sense of "management") can meet and keep communication open and clear.
  4. Do make clear documentation when needed (which is often) and document the history of the project as well.  When documentation is needed it should be had!
Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Design Patterns

I've beend digging around online doing a bit of research into various design patterns.  There are several reasons I wanted to do this;  a)  I wanted to see what others where out there that I had not heard of already, b)  I'm doing a bit of design work right now and wanted to see what might fit into what I have currently designed and what might be additional patterns I might be able to use, and c)  I wanted to start a new category on the ole' dev blog that related directly to design patterns.  So with that this will be the first entry I will make based on design patterns and similar ilk of development.

The first thing I did while researching was hit up google and begin one of the things I've seen demanded on many sites in relation to design patters, a "Design Pattern Site List"!  Below are the beginnings of my Design Pattern Site List.

Some other not quit related links that are still really cool!

...and for now, that's it.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 1/16/2007 at 9:33 PM
Categories: Centerstance | How-To, Samples, and Such | Design Patterns
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Scrum

So I found this quick list of Scrum rules over at controlchaos and just wanted to reprint them for my own use and reference.  Per the site linked...

Scrum : an iterative, incremental process for developing software in chaotic environments. Scrum consists of a series of 30 day sprints, each sprint producing an executable. Between sprints, all interested parties evaluate progress and reevaluate technical and business requirements. Work is reestablished and the team enters into another sprint.

The pulse of Scrum is the key to its success … management determines what should be done prior to every sprint, their determination influenced by prior deliverables and requirements. During the sprint, the team is left alone and produces the best software possible : let in chaos, keep out chaos, let in chaos, keep out chaos, let in chaos, keep out chaos … etc.

Backlog : a prioritized list of all work to be completed prior to releasing a product :

  • Only one person maintains and prioritizes the backlog list.
  • Any interested party can request that backlog be put on the list.

Between sprints, all involved parties and the engineering team meet to determine which work can be completed in the next sprint, and what the executable will be.

Sprint : a short burst of work lasting approximately 30 days during which an executable and other deliverables are built by an engineering team, as indicated by the assigned backlog.

  • A sprint lasts no more than 30 days.
  • A sprint is undertaken by a cross functional team consisting of no more than 9 members.
  • Every sprint has a specific goal.
  • An executable demonstrating the goal will be completed by the team during the sprint.
  • The sprint team has final say in estimating and determining what they can accomplish during the sprint.
  • Once the sprint is underway, new backlog cannot be added to the sprint except that, if the scrum master determines that a new backlog item will enhance the viability of the product, is in alignment with the sprint, builds on the sprint’s executable, and can be completed within the sprint’s time frame, the backlog item can be added. Examples are building a demonstration of the executable for a specific purpose, such as a trade show or prospect.
  • If external forces determine that the sprint is working on the wrong thing, a sprint can be halted and restarted with new backlog and purpose.

Scrum Meeting : A short daily meeting where the team shares status.

  • During the sprint, the team conducts daily scrum meetings.
  • The meetings are held in the same place at the same time every work day.
  • The meetings don’t last for more than 30 minutes.
  • A scrum master is appointed.
  • The scrum master is responsible for asking every team member the following three questions:
    1. What have you done since the last scrum meeting?
    2. What has impeded your work?
    3. What do you plan on doing between now and the next scrum meeting?
  • Conversation is restricted to the team members answering the above questions.
  • Meetings can be established for immediately after the scrum meeting based on answers to the above questions.
  • The scrum master is responsible for making decisions immediately, if required to remove impediments to progress.
  • The scrum master is responsible for noting impediments that must be resolved external to the meeting and causing them to be removed.

...a rather good way to develop application software.  A good way to keep stress and diress from accruing, and a good way to meet logical and specific deadlines.  Another good link on the same site is implementation of the process.  Of course Code Project has something on this too that is rather informative.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 1/15/2007 at 3:37 PM
Categories: How-To, Samples, and Such
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

New Bloggers...

So I've got a few co-worker peepz of mine that have decided to take a foray into blogging.  One of them (Eric!!!!!) needs to make some new entries.  They are all awesome software developers (re: geeks of various degrees) but interesting in ways that some developers just aren't, thus they're blogging about it so all the world can know!  Smile [:)]

So take a gander at your convenience:

Eric Peterson patterns guru and totalitarian dictator of development, Aendenne Armour gadget guru and laptop comfort development expert, and Tom Puleo the king of all Visual Studio Team Server development master & comedy expert.

Enjoy.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 1/11/2007 at 10:46 AM
Categories: Centerstance
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Project Roster

So my project roster is increasing to include several Community Server Add Ons.  Here in the coming weeks myself and a business partner will be purchasing a license for Community Server (CS) to begin development for some prospective business opportunities.  The business side of the development of course is hush hush, but the development I will probably present via this blog.  Some of the information will be proprietary but I'm sure I'll have plenty of nonproprietary code snippets that I'll want to ramble on about.

With that 2007 begins in earnest.  Cheers to a new year!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 1/9/2007 at 11:20 AM
Categories: My Projects
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed