Watch out for the seduction of simplicity. - Certainly we don't want to be overly simple.
Essentially the job of software developers is to create models. I haven't found good criteria yet for evaluation of models. In physics, a model is considered valid it reflects what is going on in the realm of our sensory experience. I would also add the criteria: inclusion, coherence, simplicity, and flexibility.
So, in my mind the method for determining the best model for a particular problem would be:
1. Realization that there are no paradoxes in nature. Paradoxes exist only in our constructs.
2. Throw away all invalid models.
3. Whatever is the most inclusive, coherent, simple, flexible out of what remains the best choice.
All of this caught up in the bi-directional communication (requirements gathering) between the development team and the people who are sponsoring the development. I am working on formalizing all of this as well. I have a real problem with both use cases and user stories which are fundementally the same thing: the description of a single isolated event.
"How to approach Computer Science as a Scientist." - I can email you a copy of what I have going in a few weeks, but it will be a rough draft. Unfortunately, at this point in time I don't know enough about probablity theory and statistics to make it really powerful yet (it's a matter of detail) but I still think that it is useful.
I've always seen myself as an engineer; I build stuff.
If by engineer, you mean that you use scientific knowledge to modify your environment, we all are.
Every sentance spoken is an act of engineering and creation. A technology is just an application of science in our 4(+)D sensory world. |