Friday, February 18, 2011

Some lessons learned from FYP progress ...

As there are very wise programming sifu (Me? ) said to me when I am seeking enlightenment :
"It is much lot easier to program than to develop the software"

Yes, it is true, as long as you had some logical thinking and know some of commonly used programmming syntax such as do-while, if-else loop and etc... You are pretty on rock solid path to programming kingdom because you program to test a functionality of that programming language such as do a conversion , simple calculator and bla bla ....

But when you are on DEVELOPING software, hehe ... that is totally different story.
That are many things to do, man . I am dead seriously. There are new features to add, documentation to add ,testing the new features, testing for backward compability,  stress test some more and bug fixing some more ..... (more or less like what a real programmer do but for free :( and relegates copyright of your software to your damn university)

Amongst these thing, I thought testing the software is NOT that important until ...
See the comics for more information

And ladies and gentlemen,  that is why I RE-learn an very important proverbs
"A stitch in time saves nine"


A true story . . . and luckily my supervisor didn't choke on his nasi lemak :) 


Therefore when you notice an early bug in software, get on your fast feet and rectify the bugs before it get worse and worse .... it happens to me =_= very very sweat ....  but thanks to Bugzilla and the "long winded comments" on the bugs report, I manage to quash tens on the average 10 (if lucky, more than 100) on an single afternoon and evening without (hopefully) introduces new bugs.

From this experiences, I learn top 5 (Finger Tips)  important things in developing a software

1. Just because you know something doesn't means that you SHOULD put it in programs


Stick to the working objective and avoid on adding extra features (maybe unnecessary)  that you THINK that you SHOULD. More is not always meant is necessarily better

More complexity doesn't always meant better (No offense to that software, just show my points) 


As in short, keep it simple as program below (for example) 


2. Don't keep adding new features until to a point it becomes a BLOAT-ware rather than a SOFT-ware


You still remember when once upon a time when Adobe Reader ~ 8 MB. Now ? Latest version, I think it approaches 50 MB when it is just a damn PDF reader. Compared to Foxit (Which I am currently using, it is 7MB in file size) :P. Not forgetting to mention that there are way too many gaping 0 day security loopholes for Adobe Reader. In short, what I am trying to say that, don't keep on adding new features (like me had done) but instead refactor your code design decision and reevaluate the existing code to make it more efficiency and also add some readability to the code.

(For me too slim is just as bad as too bloated [As applies to girls also : P ])


3.Validate your every freaking input for every freaking variable


Validate your input means correctly formatting the input from the user so that the program will operate based on user input
Example when you request for name, you should type etc: Xu Whai Tuck and not the your IC Card etc: 09009-09090909-090909
In Java , fortunately there is error handling exception, thank goodness for that . Phew . . .



4. Comment wisely on your code


It is easy for a programmer to forget the code that they themself had written especially like on unearthly hour, 2 am last Monday. Hence, a very good comment is a best documentation itself. To show you what is good commenting, I "leaked" bits of my comment

//This part A4 dumps the packets captured to folder SAVED inside same directory as the program

// C7 : Display the graph - Total Bandwidth Logged
//Error : Still got some http parser not shown correctly

//Part B5: This part used to migrate data to MYSQL  
//Error: Cannot linking it to localhost
//Fixed : Setting up localhost and open port forward 3838

Of course there are bad comments :(
(True life example when I first write it)

//Please orz dont touch this part

//You touch, you die
(Literally)

//Broken , get back to this later

which offer more ? ? ? to yourself when you get back to this part again


Just for fun :P
The full comment is 
"// Unimap Noob Programmer in the making" 


5 I LEARN IT IN HARD WAY: TESTING YOUR DAMN SOFTWARES EACH TIME FOR NEW FEATURES


Nothing beats a wide eyes and jaw dropped user  (read : ಠДಠ )when you ship your product to customers (in my case my supervisor) a buggy ridden software. I learn an important things is that the more bugs you catch before you present it, the more damage control you have later. How I test the software? I test at every possible angle of (stupid and damn noob) user would try to broke the software in many ways. :[ and takes most of my sanity away . . .



This cute baby cat which I named it : Cold Chinese Teh a.k.a Sh'ng Kat Teh always tried to sneak into the server rack in Seberang Ramai Networking Lab. :( (It always miao miao miao for help after it get stucked, haiz). 


Okay, sign out to bug buster some more . :)

3 comments:

Anonymous said...

that's why in many universities they have computer science or software engineering or information technology to do the programming intensive courses... but not your university... for you, you need to learn more on software development...

for fyp... please has a project scope to be defined so that it suits as a fyp project, not becoming too huge that you cannot coup with...

Anonymous said...

oh.. another one.. do your software development in iteration so that you can manage errors.. do search for RUP - rational unified process... object oriented software development... it's more like building a building... you need a plan/blueprint.. that where software architect came into... so that the programmer can build the software according to the plan/blueprint...

w.t-koh said...

thank you for the guidance, anon. Learning my mistake, I learned hard way to stick to core objectives before

And RUP stuffs ? Thanks, for your enlightenment. Try to search more info on this...

Another random post to read ? Come !

Related Posts with Thumbnails