April 2007 Entries

There are only a handful of books which I read in one go without stopping. 37 Signal's "Getting Real" is one of them. Seth Godin put down some of the time consuming and heavy processes away from software development and calling you to get real by turning into the real problems that you have now! What he said is totally correct for small to medium companies and maybe even for some large companies to. But, what if you are developing software in a government agency and affecting the millions of people with the components that you developed. This turns your job into a mission critical state like a piece of software running in a pacemaker because human life is the subject of this software.

I am doing software development for about 10 years now and worked in private sector and government agencies where the heavy bureaucratic methodologies applied for the sake of complying with rules, regulations, law and public enforcement. You do analysis and design on a project and government comes along amends the law and you need to do those analysis and design sessions all over again. Endless meetings, hours of brainstorming, UML diagrams on the white board, everything is recorded. It has to be because the software is about the government and managing the public affairs, the whole taxation system, a social security system or a child support system. A simple mistake may lead to loose reputation, money, time and increases expenses. If you were the head of a government agency, can you afford a mistake like this? Can you afford to loose the trust that the public had built upon you?

As I said before in my blog Agile Software Development processes are just not applicable to government agencies where the software development process deals with millions of people and endless dependencies which are internal and external. Scott W. Ambler is also thinking the same in an article that I read quite a long time ago (sorry, no link) in the Software Development magazine. You can not make it light weight, you can not start from screens. You have to think and document about the workflow, use cases, database design, performance, formal tests, sign-offs, deployment schedules, deployment procedures, internal and external interfaces, communication formats etc.

Don't get me wrong, I am always a good believer of Agile and Extreme methodologies. I am trying to implement at least some bits and pieces where applicable in my day to day work. I saw benefits of those so far. There are other areas which you have to follow strict procedures; they are easy once you learn how to implement them.

When I have started with a large government organisation in the past, they gave me a thick folder to read as an introduction kit and more was on the intranet. I had to develop software based on organisational standards, fill and raise correct forms so that other teams can do their job properly. If you do not follow the correct procedure to do your job; it may blow on you and it would blow loud. Of course there are also quick ways of releasing an emergency fix for an application if there are enough customers affected.

When you try to make a change on a piece of software, you have to do an impact analysis to see who is affected. You have to define what are the cost and benefits of this change, how many people you need, budget, time, tasks, schedules and collaboration and communication with other teams. You have to do it for protecting the public, agency, and dependent software components. The dependencies which are affected are so branched that even sometimes you don't hear from them till you deploy into production.

There are also contractors, 3rd party companies and products and different people with their different tools. They all communicate and collaborate during the software development process. The operation is big enough that if you are not talking the same language with them, you just can't communicate. For example for the deployment of your application, you need to raise an internal "Request for Change" which creates a "CAMS" record with a reference to your RFC on the contractor companies system and processed. Yes, it is bureaucratic but also easily traceable. You have a CAMS number and an RFC number and you can track the progress like you are tracking a DHL shipment.

It is also crucial that every step of the software development process is defined, implemented and managed. This gives the agency the possibility to comply with CMMI.

You can not reduce the features to release often and early. All features are tightly connected to business rules and use cases. The unnecessary clutter had already been removed during the analysis phase. I remember on one project we used to have 64 use cases initially and reduced to 13 in total.

There is also an independent office that checks the validity and compliability of the documentation and these guys do random checks on projects without a warning. If you get caught without enough documentation or missing pieces in your procedures and processes, you will be punished (though I do not know what the details of this punishment are).

There is also a time constraint. You have to finish the software and deploy into production when the corresponding law has got the royal ascent.

Chapter 11 talks about the functional Specifications and their uselessness. I really would like to get Seth Godin and my MSE teacher Clive Boughton at ANU face to face and start an argument about this very subject. If Seth Godin is right, everything I have learnt in MSE program is a pack of lies but I doubt it. May be functional specifications are not written as they should be considering all those agile and extreme methodologies influencing software developers. We (software developers) are already tired of writing a lot of documentation and when a methodology comes along talking about light weight paper work, we all cheered HURRAAAY. But when the dust blown away after a while, you realise that there is no documentation left what so ever and the head developer left the company for greener grass. <sarcastic voice> So what are you going to do now? </sarcastic voice>. There are CMMI methodologies which you can select with Team Foundation Server when you are creating a project and tell you that you need to create certain documentation to move on. These are necessary to estimate the size, budget, work break structure, schedule etc. of the project. You can even go deep and produce a preliminary Data Flow Diagram in the beginning of the project to understand the size and complexity of the project.

I believe whatever method you are following with your software development project, if you truly follow it through the last details of it; success will be yours at the end. But if you try to cut corners here and there, things will start to stink and once you smell this stench it will be too late.

As a conclusion, keep in mind that not all methodologies are applicable to your workplace. You should always on the look out for new information about new methods but should also comply with standards of your organisation. If it is a large project or operation with lots of contractor companies and workers; having a good documentation and written procedures will always straighten out the ambiguities.


The wait is over. After all that waiting, I have finally upgraded my old laptop to an Acer TravelMate 5625WSMi. It is a 17", 2GB ram, 200GB HD monster compared to my old laptop which was top of the market 5 years ago with P4 2Ghz, 40Gb HD and 256 Ram. I have had upgraded to 60GB HD and 712mb Ram in time but it wasn't enough for my requirements these days.

The features of this laptop are:

PROC : Intel Core 2 Duo Proc T7200 (2.0GHz, 4MB cache, 667MHz FSB)
Intel Centrino Duo Mobile Tech, Intel 945PM Express chipset
MEM : 2 x 1024MB (2 x 1GB) PC4200 DDR2-SDRAM
STORAGE: 200 GB 5400rpm SATA HD, DVD-RW Drive
DISPLAY: 17" WXGA+ high-brightness widescreen Res 1440x900 16.7 m Col
COMMS : Built-in 56Kbps international fax/modem
10/100/1000 LAN & 802.11a/b/g Wi-Fi with SignalUp
Integrated Bluetooth 2.0+EDR (Enhanced Data Rate)
I/O PORTS: 1 x 10/100LAN port, 4 x USB 2.0 ports, 1 x Modem port
1 x Ext display (VGA) port, 1 x Type II PC Card slot
1 x line-in port + 1 x line-out port
1 x S-video TV out port
5-in-1 card reader (SD/MMC/MS/MS Pro/xD)
GRAPHICS : Nvidia GeForce Go 7300 up to 256MB TurboCache
(128 MB of dedicated GDDR2 VRAM; up to 128 MB of shared Sys Mem)
AUDIO : Intel High-Definition audio support, built-in speakers, Microphone, S/PDIF support
POWER : Batt life & type: LithiumIon 71W 4800 mAh (8-cell), up to 3.5 Hr
AC Adapter: 100-240V auto sensing
DIM : 358 (W) x 265 (D) x 29.33~36 (H) mm; WEIGHT : 2.77 Kg
Integrated 1.3 mega pixel Acer Orbicam with 225-degree rotation
FineTouch ergonomic keyboard with launch & programmable keys
Built-in touch-pad with ergonomic buttons and 4-way integrated scroll key

Click on picture for large version

The specialty of my new laptop is that this is my first decent computer which I can play games if I ever have time of course.

I have wiped out the initial installation of Vista Business and installed Ultimate. I had a bit of trouble with Bluetooth but solved it with the Acer's Empowering tools. Here is the list of applications that I have installed.

  1. Windows Vista Ultimate 32Bit and some drivers and updates (sweeeeeet)
  2. Microsoft File Transfer Manager (from MSDN) (to download from MSDN)
  3. Microsoft Virtual PC 2007 (never leave the door without it)
  4. Paint.Net (bored of Windows Paint?, try this one)
  5. Windows Live Messenger (another lunch box item)
  6. Windows Live Writer (latest version works with new Blogger to.)
  7. Microsoft Expression Web (NVU is alternative for basic HTML editing)
  8. Mozilla Firefox + IETab + Firebug + FFBlogThis (Do I need to say anything)
  9. Notepad++ (all your text editing with colors)
  10. Winmerge (merge files with style)
  11. MS Office Enterprise 2007 (hmm just Access, Word, Excel and Outlook)
  12. Turned on Windows Features (IIS and some other things)
  13. SQL Server 2005 + SP1 + SP2 (Developer version)
  14. Tortoise SVN (Subversion helper)
  15. Bluetooth Driver (not installed, hardware is not recognized)
  16. VS2005 (sweeeeeet)
  17. Daemon Tools (anything to do with CD/DVD images)
  18. Team Foundation Client (image downloaded from www.codeplex.com) (nice)
  19. KB926601 VS SP1 (must install)
  20. KB932232 VS SP1 for Vista (must install 2)
  21. MSDN April (CE is available to everyone)
  22. Acer Orbicam Driver
  23. Azureus (anything torrent needs this although v3.0 is a bit over featured)
  24. Acer Empowering Tools (Bluetooth on/off button hidden in this)
  25. Bluetooth driver again (Empowering tools turned it on so that I can install the driver)
  26. Foxit Reader (light weight PDF reader)
  27. Rapid SVN (So that you can see all your Sourceforge, Google Code projects together)
  28. Synaptic's Touchpad driver
  29. Setpoint for Logitech G7 mouse (for gaming))
  30. IIS was missing after all this I turned it on again, I have selected only IIS this time.
  31. Windows Mobile Device Center (My PDA now can talk with my Laptop)
  32. 7Zip (Free compression tool)
  33. KLM Codec (I still have some codecs missing!)
  34. Filezilla FTP (Free FTP application)
  35. RSS Bandit (Free RSS Reader)
  36. Warcraft 3.0 (still learning)
  37. Start++ from http://brandonlive.com/

Doesn't look like much but believe me it took about a week to install all this with my limited time. I still have problems with SQL Server as it is not running under Local System. Setting up Outlook, RSS Bandit, Filezilla, VS2005, Windows Live Writer is all done in time when they are required.

I have done a complete scan disk and defrag. Boot time is now under 1 minute. I have also taken a full Norton Ghost backup without my personal data and copied into my ReadyNasNV+. I am taking the backups seriously now since I have lost 20GB of family pictures.

I have also checked my HD on the net and learnt that its life time is only 5 years or 20,000 POH (whatever comes earlier) on the Technical specs page. POH means "Power on Hour". So turning your computer off when not used is a good idea; saves power too. I have reminder setup already to look for an HD replacement around the fourth year.

Now, I am going back to Warcraft .

Jeff Attwood at Coding Horror writes about the similarities between Rock Climbing and the Software Development based on Alistair Cockburn's game metaphor.

It is true in many ways that the cooperative team effort in a game can be matched with software development. I would rather choose Scuba Diving for this metaphor.

Every dive starts with planning. Based on the experience of the team, divers pair up in teams of two. Depth, what to do down there, time to spent and other activities are talked in advance and agreed (requirements analysis, work breakdown structure). You know exactly what to do in case of emergencies. The entire dive is planned and charted. There is a dive master (project leader) who is responsible of planning every move. The communication method under water has got strict rules and everyone knows what to do incase you run out of air or when you are in danger some sort. Your equipments and tools are your life support under water and all connections are checked by your buddy or the dive master.

After the dive you sit down and record the dive. Temperature, maximum depth, objective of the dive, place, weather condition, your buddy's name and everything related to that particular dive is written and recorded in your log book.

Once you get more experience and licensed you can go deeper dives, wreck dives, rescue dives. It becomes fun because you know exactly what is going to happen and learn. There may be unexpected things happen but you can always incorporate those in your plan if they are not disturbing the main plan badly. Or you terminate the dive al together just to be on the safe side.

Well, software projects do not threat the life of project stakeholders but I think loosing money, time, dignity, customers etc. is even worse in the software sector. The lack of planning, management skills, experienced team members and passion are the worst enemies of a software project.

Whenever a project fails somewhere we usually never hear about it but there may be lessons to learn from that. There are more lessons to learn from the successfull projects though.


At the end of each day, I measure my day and see if I learned a new thing or two. I record them if I think they are usable later. I blog about it, if I think community can learn something from it. This is my passion and never ending learning experience. I recommend the same to all young developers out there.




About me

Hi, my name is Gurkan Yeniceri. I am a software engineer with 8 years of experience in both public and private sectors. I have been generally writing about software engineering and Microsoft technologies since March 2005 on this site.
View Gurkan Yeniceri's profile on LinkedIn


If you would like to contact with me you can use the contact page here. I will try to respond it in a timely manner (I will try my best). You can also contact with me via Microsoft Live Messenger with the address gyeniceri {AT} hotmail {DOT} com.
If you are one of my Turkish readers, you may want to visit my Turkish blog here.

If you would like to read my site with an RSS reader like RSS Bandit, you may want to use to subscribe.

RSS 2.0


Bookmark this site

del.icio.us digg NewsVine YahooMyWeb Reddit Spurl TailRank BlinkList Furl Shadows blogmarks
    This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
    There are 133 posts and 88 comments on this site. Other sites also linked it 7 times.