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

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
Helmet and seat-belt mandated at TN Today morning, I was pleasantly surprised to see most bikers (along with pillion riders) traveling with their helmets on as TN geared itself from the 1st of June to make it mandatory to wear helmets for bikers and seat belts (for the front seat passengers) for car commuters. The FM radio RJs had been conducting on-the-road commentaries, catching helmet-less riders seeking justification on why they had not yet acquired one (the helmet) yet. The shamed few who got caught eventually were presented with a helmet. One the way (near Tirumangalam), I couldn't help notice people flocking near put-up helmet shops on the sidewalks, trying to acquire the license to ride a bike! Let's hope the momentum carries on...

R programming

Of late, I have been following up with data analytics and learnt R and Pandas (using Python). Somehow, most of the work that I now do is crunching data and representing them in a more fancier way. In a lighter vein, when I am at home, I try to see how my non-work data can be represented as charts and graphs. Here is the first attempt to categorize the list of programmers editors that I had used throughout my life time... This was generated using R and ggplot (ggplot is a great library that allows you to generate different types of charts). Why not excel? Sure, I can do the same in excel as well. But once the data becomes huge to manage, it becomes difficult to monitor each of the cells to see if the formula is right. Sometimes, they get complicated enough that I have to wait for a few seconds every time I make a change in a cell or consider turning off auto-calculation in excel. It is much more simpler to have the processing logic as a source file that you can modify separated from t