Category: "Software Engineer"
I have listened an online radio show today. In the show, they mentioned "Programmer does not only write code. We do design as well!" I totally agree with them.
Even I write the application for myself, I will write a Requirement Specification. It will included a paragraph about the background of application(What is the application does, Why do I write this application), system specification(Hardware&Software) and User cases.
Programmer=> Application + Design + Documentations + Testing!
Software Prototype = Beta Version? No, 100% Not. Beta Version is a kind of pre-release version. This kind of software need to be passed the normal software development process. Moreover, This is really required to pass an internal testing. Normally, the purpose of Beta version software is to get some feedback from user community. On the other hand software prototype is to evaluate the feasibility. They are two different things.
I am using a lof of "Throw-away Software Prototype"."Throw-away Software Prototype" is a piece of software application which is not well engineered. It is not gone in a formal process for software development. It will be destroy after the initial stage of software life cycle.
I used this kind of software prototype to evaluate whether the requirements is possible to be implemented and verify whether my design is workable.
But there is very very important point, Don't try to improve the prototype and put that into a production. This is very high risk, because this type of prototype is not well design and analyzed. We don't know whether there are any hiding defects and design fault inside.
I am reading a book about System Testing. It says the bugs will be duplicated across to the system and different project. I think this is because the code is re-using everywhere and sometime, we do some cut and paste. The worst case is the bug in the cut-paste code. As I remember, my thesis used a lot of cut-paste code too. I know this is not a good practice. That is better now. I am a C# programmer and learned to use component technologies. If there is in a component, it just needs to replace the DLL across projects. Yes, I know that is still a painful job.
My uncle always teachs me to think for three seconds before I say anything.
During my IT career, I found this rule can apply in software engineering. "Please thinking for three minutes before you write code."
I need to think more before coding. There are many many effects. I need to consider the whole system, not only the parts of my code. Moreover, the cowboy code will effect the maintenance of code base. This is impossible to follow my cowboy code.(note code: my code can be very very hard to read).