This is a great question. In my experience many programs that work well often have code that is not pretty at first reading. The important thing I think is to understand both the code AND the environment in which the code was written. I think considering one without the other is pointless. Was the management geek averse? Were the engineers formally trained or did they learn by doing? Was there a time crunch, a big customer waiting without baited breath for the new piece of software? Did the developers focus on it working well with minimal configuration regardless of the elegance of the framework? Was the group all about mental masturbation and framework creation rather than implementation, testing and actually finishing something?
I think it may be time for a kind of Natural Selection/Turing Test to asses the quality of a particular development approach:
Imagine if you had a large sample of users. Now if all of these uses feel that the software performs exceptionally at its task that it is just flat-out awesome can we conclude that those who wrote it did an excellent job?
If those that wrote the software did an excellent job, by this standard, then regardless of what approach they took, they produced great software, even if it did not follow one particular school of software development. The bottom line is that the environment and the approach play a role in selecting what software is "good".
Another point to consider is that Software Engineering/Development is a relative child (Internet is 16 years old or thereabouts) compared with other more mature disciplines. Consider Electrical Engineering or Industrial Engineering, compare an Anti-Lock breaking system to a virus scanner or a modern UI with a modern speaker enclosure. Where is the "schematic diagram" for a program (and please don't say UML)?
I follow the sort of evolutionary approach I guess. Design a good deal (use patterns and language facilities where appropriate), but focus on getting the thing working and working well; test it a lot, move it around as soon as you can (e.g. deploy it to a new environment), get it in front of judges(users) then enhance and test lots more, get it out there fast, but not totally kludged together. After a few iterations of this a real framework emerges (the kind software preachers say is there from the beginning) which should as soon as it is visible be implemented.
This is insane. First, many of the employers that run credit checks don't even follow the law. If they deny you employment as a result of what they objectively (ha ha) measure in your consumer credit file they are obligated to provide you with a letter and offer of a free credit report. A large auto insurance company was sued for using credit reports without following the Fair Credit Reporting Act. So, although claiming to use credit reports as an "objective" measure of someone's responsibility many companies are not even using the reports responsibly. This includes one of my former employers.
Further the credit reporting system is designed to assess where you fall statisticaly compared to other US borrowers on loan repayment. It is designed for this and *only* this. You are asking someone for money, therefore it is reasonable for lenders to determine how you compare with others on repayment. The system does not measure how you perform on a job, how you will do in a marriage or whether you will be a good spouse.
Companies that use credit reports to determine if or if you are not responsible are being purely subjective, while feigning some form of objectivity. In addition employeers need to show due diligence when peforming a job screening. Did they just run your credit and not check your education (a very likely case). Employeers running credit reports are more liley just taking the lazy approach.
A big downside to this is that now Molly in HR has very private information about a prospective employee. Imagine if the company that ran your credit is in a small town. Do you really think Molly won't gab at the local bar about the bad-credit employee's private financial information?
Add to this the fact that a single mother trying to get a job in on a help desk is now having to prove her financial worth. For the love of god, what is next, a Choice Point medical screening to get a help desk job.
It is high time that congress did something about this blatent misuse of credit before it gets even worse.
I like the idea of developing sensors that monitor small things like when an appliance has been turned on or off, or when a room is entered/exited. Lots sensors with simple states. These sensors would regularly broadcast their data to a central home server where the data would be stored. From this data the system might be able to deduce patterns that could be useful in forming a pattern of behavior which matches particular occupants or the collective group of occupants. The system gets to "know" its occupants based on innocuous things like current drain at particular outlet locations, or based on the length of time between a room entered/exited event.
Assuming that trends exist, what could be done with this data? Well maybe for starters it could alert residents on vacation that someone other than the normal occupants are likely to be in the house. Or maybe it could notify a family member of an elderly resident that they are not as active as normal, and it may be worth checking in on them. The key I think is that the sensors are farily low-profile and easy to install, like a standard wall outlet that replaces existing wall outlets.
About a year ago I started doing serious programming in c#. Before that I was heavy into Java. I have to say that I am not disappointed with the language so far, but I do feel like VS.NET is kind of contraining. I tend to avoid VS, except for tricky debugging.
Anyway, I have applied various data-mining and machine learning techniques in a production context - mainly for product classification. At the time we used our own java routines (tried a whole slew of various approaches, neural networks, bayes, blah blah blah).
I think it is wise to get one's hands on as much machine learning material as possible, its use - especially data-mining and classification is only going to grown. This book, although from a.NET perspective, sounds like a great introduction to the field and a way to get familiar with some practical applications. This is a welcome addition to the fairly academic and short-on-applications books.
It is telling that machine learning has made into a book coming from a.NET perspective.
I will definitely check it out.
This is a great question. In my experience many programs that work well often have code that is not pretty at first reading. The important thing I think is to understand both the code AND the environment in which the code was written. I think considering one without the other is pointless. Was the management geek averse? Were the engineers formally trained or did they learn by doing? Was there a time crunch, a big customer waiting without baited breath for the new piece of software? Did the developers focus on it working well with minimal configuration regardless of the elegance of the framework? Was the group all about mental masturbation and framework creation rather than implementation, testing and actually finishing something? I think it may be time for a kind of Natural Selection/Turing Test to asses the quality of a particular development approach: Imagine if you had a large sample of users. Now if all of these uses feel that the software performs exceptionally at its task that it is just flat-out awesome can we conclude that those who wrote it did an excellent job? If those that wrote the software did an excellent job, by this standard, then regardless of what approach they took, they produced great software, even if it did not follow one particular school of software development. The bottom line is that the environment and the approach play a role in selecting what software is "good". Another point to consider is that Software Engineering/Development is a relative child (Internet is 16 years old or thereabouts) compared with other more mature disciplines. Consider Electrical Engineering or Industrial Engineering, compare an Anti-Lock breaking system to a virus scanner or a modern UI with a modern speaker enclosure. Where is the "schematic diagram" for a program (and please don't say UML)? I follow the sort of evolutionary approach I guess. Design a good deal (use patterns and language facilities where appropriate), but focus on getting the thing working and working well; test it a lot, move it around as soon as you can (e.g. deploy it to a new environment), get it in front of judges(users) then enhance and test lots more, get it out there fast, but not totally kludged together. After a few iterations of this a real framework emerges (the kind software preachers say is there from the beginning) which should as soon as it is visible be implemented.
This is insane. First, many of the employers that run credit checks don't even follow the law. If they deny you employment as a result of what they objectively (ha ha) measure in your consumer credit file they are obligated to provide you with a letter and offer of a free credit report. A large auto insurance company was sued for using credit reports without following the Fair Credit Reporting Act. So, although claiming to use credit reports as an "objective" measure of someone's responsibility many companies are not even using the reports responsibly. This includes one of my former employers. Further the credit reporting system is designed to assess where you fall statisticaly compared to other US borrowers on loan repayment. It is designed for this and *only* this. You are asking someone for money, therefore it is reasonable for lenders to determine how you compare with others on repayment. The system does not measure how you perform on a job, how you will do in a marriage or whether you will be a good spouse. Companies that use credit reports to determine if or if you are not responsible are being purely subjective, while feigning some form of objectivity. In addition employeers need to show due diligence when peforming a job screening. Did they just run your credit and not check your education (a very likely case). Employeers running credit reports are more liley just taking the lazy approach. A big downside to this is that now Molly in HR has very private information about a prospective employee. Imagine if the company that ran your credit is in a small town. Do you really think Molly won't gab at the local bar about the bad-credit employee's private financial information? Add to this the fact that a single mother trying to get a job in on a help desk is now having to prove her financial worth. For the love of god, what is next, a Choice Point medical screening to get a help desk job. It is high time that congress did something about this blatent misuse of credit before it gets even worse.
Amazing how a simple thing like classpath can hurt an otherwise great technology.
I like the idea of developing sensors that monitor small things like when an appliance has been turned on or off, or when a room is entered/exited. Lots sensors with simple states. These sensors would regularly broadcast their data to a central home server where the data would be stored. From this data the system might be able to deduce patterns that could be useful in forming a pattern of behavior which matches particular occupants or the collective group of occupants. The system gets to "know" its occupants based on innocuous things like current drain at particular outlet locations, or based on the length of time between a room entered/exited event. Assuming that trends exist, what could be done with this data? Well maybe for starters it could alert residents on vacation that someone other than the normal occupants are likely to be in the house. Or maybe it could notify a family member of an elderly resident that they are not as active as normal, and it may be worth checking in on them. The key I think is that the sensors are farily low-profile and easy to install, like a standard wall outlet that replaces existing wall outlets.
About a year ago I started doing serious programming in c#. Before that I was heavy into Java. I have to say that I am not disappointed with the language so far, but I do feel like VS.NET is kind of contraining. I tend to avoid VS, except for tricky debugging. Anyway, I have applied various data-mining and machine learning techniques in a production context - mainly for product classification. At the time we used our own java routines (tried a whole slew of various approaches, neural networks, bayes, blah blah blah). I think it is wise to get one's hands on as much machine learning material as possible, its use - especially data-mining and classification is only going to grown. This book, although from a .NET perspective, sounds like a great introduction to the field and a way to get familiar with some practical applications. This is a welcome addition to the fairly academic and short-on-applications books.
It is telling that machine learning has made into a book coming from a .NET perspective.
I will definitely check it out.