M
Mortime Business Software
- Original Poster
- #1
Hello All. This is a continuation of an interesting discussion from the "UKBF Offers" forum which mysteriously vanished from the "Sapphire Web Design Sale - 25% OFF!" thread; probably because it was off-topic for that forum.
I would like to respond with an argument which I consider highly beneficial to software developers and their business. I've spent the last 70 minutes or so forming this response, so I would appreciate it if I am allowed to offer this advice. The discussion was about whether a developer with a degree is more likely to produce better software than one without a degree.
I am not in any way implying that a self-taught developer produces sub-standard software, and I acknowledge that there are many such developers who produce software which is highly useful and fit for purpose. However, I am asserting that a graduate developer is far more likely to produce better software
vshosting says about computer programmers...
---------------------------------------
I know qualified people who's work is terrible, and other people that are not qualified whose work is very good.
---------------------------------------
Sure. There are also smokers who die naturally of old age in their nineties, and non-smokers who die young of cancer. This doesn't mean we can smoke and run the same lower risk of getting cancer as a non-smoker. There are always exceptions to such rules.
Any proper programming language requires some knowledge about mathematical methods.
Code fragments, and the overall structures they form, should display characteristics including but not restricted to...
> clear and unambiguous contracts and specifications of primitive and user-defined data types,
> sensible mathematical modelling abstracted from the real world,
> an appreciation of the iterative and recursive approaches to looping,
> minimisation of conditional statements with analysis methods such as parse trees and Boolean algebra,
> adherence to appropriate robust, mathematical and logical algorithms,
> invention or commissioning of new algorithms only where necessary,
> use of patterns,
> component reuse,
> method and function signatures,
> machine checkable pre- and post-conditions written with a mathematical syntax,
> the maintenance of loop invariant quantities and proof of this by mathematical induction,
> mathematical recurrence systems,
> closed form mathematical formulae which provide a way to count statements and estimate asymptotic behaviour of code fragments for given input,
> a readiness for some customer requirements to be analysed and proved using Boolean algebra and the Rules of Inference,
> an ability to clearly describe to a customer exactly what is happening within the application domain,
> using an adequate method of ensuring other developers can quickly understand what is happening within the domain model.
These are small a selection of topics covered in the OU courses "M206 Computing: An Object Oriented Approach" and "M263 Building Blocks of Software".
A relational database requires careful planning and mathematical reasoning to set up efficient relations between attributes to, amongst other things, avoid data duplication. The following list of requirements and properties of a relation scheme should include but not be restricted to...
> first, second and third normal forms,
> Boyce-Codd, fourth and fifth normal forms,
> implementation of ideas expounded by set theory,
> identification of rules from natural and user-defined sets of attributes,
> extraction of explicit and implicit functional dependencies and keys from the above rules,
> linking schemes with foreign keys,
> one-to-one and one-to-many relationships between relations.
...and that's only some of what should be considered before you start accessing the database from applications. These ideas are from just one unit of sixteen which form the OU course "M263 Building Blocks of Software". I will be taking a more advanced 30 point course "M365 Relational Databases" in 2007 where I expect there to be more essential mathematics.
Now if we define mathematics as a language which allows us to reason logically with, as well as manipulate, numbers and quantities, then it is indeed indispensable in achieving many of these objectives.
You can key in some of those keywords into a google textbox and run around like a mad march hare finding books and tutorials on these subjects, and take years to learn about them. But I guarantee that you will learn about them far more thoroughly and rigorously by investing £500 for a couple of high quality courses.
Again I must stress that I am in no way trying to have a go at anyone. In fact I am trying to encourage self-taught developers to formalise their experience so they may progress and be more successful. I was programming for three years before I started at the OU, and I quickly found that I had never even heard of most of the items in the lists above.
I would wager that a typical self-taught developer with a few years experience would be able to satisfy a customer in less time than I if we were both presented with a project right now. But I would wager that if we both continue on our current paths, I will, in around five or six years time, overtake him and stand a much better chance of scoring the larger, more lucrative contracts. Also, and more importantly, I have faith that my applications will be of a higher standard.
This is not an attack on self-taught developers. I respect and admire them, and regard them as highly intelligent people with genuine passion.
I am just trying instill some patience and thought into that wonderful, youthful exuberance. I do this because I am also very passionate, and I believe the world would be a better place if we acknowledge the work of all those great people who have preceded us.
Even if I didn't make as much money as a self-taught developer (which I reckon is highly unlikely), I will consider myself more successful because my applications will be superior in quality, and lend themselves to continuing maintenance and development by any other team if the customer so chooses. This is how I choose to measure my success, and at the end of the day money is merely a bonus to me.
A practising, self-taught developer has no need to postpone business to do a degree. Even if it takes the next 7 or 8 years to graduate, I guarantee that it will be immensely rewarding, and work will definitely benefit in the long run.
Education is awesome and we should embrace it.
Dave
I would like to respond with an argument which I consider highly beneficial to software developers and their business. I've spent the last 70 minutes or so forming this response, so I would appreciate it if I am allowed to offer this advice. The discussion was about whether a developer with a degree is more likely to produce better software than one without a degree.
I am not in any way implying that a self-taught developer produces sub-standard software, and I acknowledge that there are many such developers who produce software which is highly useful and fit for purpose. However, I am asserting that a graduate developer is far more likely to produce better software
vshosting says about computer programmers...
---------------------------------------
I know qualified people who's work is terrible, and other people that are not qualified whose work is very good.
---------------------------------------
Sure. There are also smokers who die naturally of old age in their nineties, and non-smokers who die young of cancer. This doesn't mean we can smoke and run the same lower risk of getting cancer as a non-smoker. There are always exceptions to such rules.
Any proper programming language requires some knowledge about mathematical methods.
Code fragments, and the overall structures they form, should display characteristics including but not restricted to...
> clear and unambiguous contracts and specifications of primitive and user-defined data types,
> sensible mathematical modelling abstracted from the real world,
> an appreciation of the iterative and recursive approaches to looping,
> minimisation of conditional statements with analysis methods such as parse trees and Boolean algebra,
> adherence to appropriate robust, mathematical and logical algorithms,
> invention or commissioning of new algorithms only where necessary,
> use of patterns,
> component reuse,
> method and function signatures,
> machine checkable pre- and post-conditions written with a mathematical syntax,
> the maintenance of loop invariant quantities and proof of this by mathematical induction,
> mathematical recurrence systems,
> closed form mathematical formulae which provide a way to count statements and estimate asymptotic behaviour of code fragments for given input,
> a readiness for some customer requirements to be analysed and proved using Boolean algebra and the Rules of Inference,
> an ability to clearly describe to a customer exactly what is happening within the application domain,
> using an adequate method of ensuring other developers can quickly understand what is happening within the domain model.
These are small a selection of topics covered in the OU courses "M206 Computing: An Object Oriented Approach" and "M263 Building Blocks of Software".
A relational database requires careful planning and mathematical reasoning to set up efficient relations between attributes to, amongst other things, avoid data duplication. The following list of requirements and properties of a relation scheme should include but not be restricted to...
> first, second and third normal forms,
> Boyce-Codd, fourth and fifth normal forms,
> implementation of ideas expounded by set theory,
> identification of rules from natural and user-defined sets of attributes,
> extraction of explicit and implicit functional dependencies and keys from the above rules,
> linking schemes with foreign keys,
> one-to-one and one-to-many relationships between relations.
...and that's only some of what should be considered before you start accessing the database from applications. These ideas are from just one unit of sixteen which form the OU course "M263 Building Blocks of Software". I will be taking a more advanced 30 point course "M365 Relational Databases" in 2007 where I expect there to be more essential mathematics.
Now if we define mathematics as a language which allows us to reason logically with, as well as manipulate, numbers and quantities, then it is indeed indispensable in achieving many of these objectives.
You can key in some of those keywords into a google textbox and run around like a mad march hare finding books and tutorials on these subjects, and take years to learn about them. But I guarantee that you will learn about them far more thoroughly and rigorously by investing £500 for a couple of high quality courses.
Again I must stress that I am in no way trying to have a go at anyone. In fact I am trying to encourage self-taught developers to formalise their experience so they may progress and be more successful. I was programming for three years before I started at the OU, and I quickly found that I had never even heard of most of the items in the lists above.
I would wager that a typical self-taught developer with a few years experience would be able to satisfy a customer in less time than I if we were both presented with a project right now. But I would wager that if we both continue on our current paths, I will, in around five or six years time, overtake him and stand a much better chance of scoring the larger, more lucrative contracts. Also, and more importantly, I have faith that my applications will be of a higher standard.
This is not an attack on self-taught developers. I respect and admire them, and regard them as highly intelligent people with genuine passion.
I am just trying instill some patience and thought into that wonderful, youthful exuberance. I do this because I am also very passionate, and I believe the world would be a better place if we acknowledge the work of all those great people who have preceded us.
Even if I didn't make as much money as a self-taught developer (which I reckon is highly unlikely), I will consider myself more successful because my applications will be superior in quality, and lend themselves to continuing maintenance and development by any other team if the customer so chooses. This is how I choose to measure my success, and at the end of the day money is merely a bonus to me.
A practising, self-taught developer has no need to postpone business to do a degree. Even if it takes the next 7 or 8 years to graduate, I guarantee that it will be immensely rewarding, and work will definitely benefit in the long run.
Education is awesome and we should embrace it.
Dave