Skip to main content
Learnings on software development

http://www.taylor.se/reddit.html and Digg posted an article on the learnings from ten years of software development.

May I add:

2. The difficult part of software development is communication

Primarily, this boils down to both verbal and written communication. Both are used at different combinations at different scenarios. When you are discussing features or effort or schedule with your customer, it makes sense if these are written as it allows you to archive the information and refer to it at a later point of time. Who knows, six months down the lane, it would be you who would be scrambling down your e-mail chain trying to figure out why a feature has to be implemented the way it is.

Even if you have a verbal discussion, it is a good idea to follow up with the minutes or a gist along with a set of action items.

On the other hand, when it comes to appraisals, evaluation or goal setting sessions, it is primarily verbal communication followed with the action items.

3. Learn to say no

Timeliness is also an important factor. One of the fundamental mistakes that I did during my early stint of project management was accepting insane deadlines. Event if you did and later find getting it done an impossibility, let the customer or client know early on that you are having problems. Your clients will be more understanding if they get to know the problems early against the last minute and will be able to make amendments like dropping a few lower priority features or diverting more resources to move some activities off the critical path. The best advice is to simply so no in the first place or ask for re-prioritization.

9. It all comes down to working software

To create workable software, it does not merely take technical skills to accomplish the objective. You are also required to have adequate domain knowledge to understand and query your customers to make decisions.

Take the time to learn about the domain, the application and how your customer envision to use your application.

Few other things that I found useful:

# Get your team's buy-in

When you make up a schedule, before sharing the milestones with your customer, ensure that your team buys in the schedule.

# Share a common goal

When working with multiple functions (like QA, testing, development and so on), ensure that the common goal is communicated and all are in adherence to them. For example, the delivery goal will be to ensure the product is shipped with the promised features on time and matches the quality requirements. Teams should focus on amicably resolving issues rather than create problems and make things difficult within.

In addition, as already indicated, the team will have to ensure that the features that are developed will actually benefit and is usable by the customer. That would require the domain skills to play in.

Comments

Popular posts from this blog

Inside a Text Editor Ever since my college days, after dabbling with vi and a few other editors, I always had an yearning to create my own. Now, I am still stuck with XEmacs and jEdit and had a chance to compile / study the sources and documentation of EMACS and a free editor component called Scintilla. Until now, I was under the the belief that text editors used a doubly linked list to represent the text in memory. The advantages of this approach being insertions and deletions are much more easier which is just a matter of just un-linking a node off the list. But the shortcomming is that they tend to fragment memory with each node or line take a bit of memory. The other alternative approach is to have a dynamic array which is a contiguous space of memory and can sometimes be directly written off to a file. The disadvantages are that insertion and deletion are costly and you need to reallocate quite frequently. While goint throug the source and documentation of text editors, I chanced ...
The time machine Managed to get a copy of the King Solomon's Mines by Henry Rider Haggard. The book was originally published at 1855, more than 150 years since I am reading it. I'm sure that it would transport me back in time revealing how people lived and the problems that they faced. Of course, you can get the text in an electronic form from the Project Gutenberg for free, but I prefer the traditional form of reading where you can 'shutdown' any time and 'restore' in a jiffy. The other book that I have in reserve is The Journey to the Center of the Earth by Jules Verne (1864). There are so many classics that you can get access to for free if you do not mind staring at your display or PDA. But don't miss them out.
Battle of Wesnoth Been on the lookout for a free turn based strategy game and chanced upon the Battle of Wesnoth . Despite it being an open source game (meaning, you get the source), it was incredibly polished akin to any of the other turn based strategy game (Alpha Centauri), be it the background score or the graphics or the tutorials. The game itself is set in a period similar to the D&D or nethack era. For the film buffs, if you have read or seen the Lord of the Rings, you would probably be able to relate to the clans that populate the game world. The game play, as with any turn based strategy game requires background information on each of the units that you own, their strengths and weaknesses and a lot of planning (a kin to chess, but with a lot more parameters) where factors like day - night cycles are taken into account (e.g, humans fight well during the day, but the orcs are better during the night). It is encouraged to keep your older units as they gain experience and beco...