You are so misguided young grasshopper. The term software engineer came and went out of vogue long before Taco Man was doing neat little graphics for linux desktops. Yeah I remember the days....
The difference between software engineering and cs is so minute the educated can barely distinguish much less the uninitiated.
I agree McConnell has done some really good work but most people still miss the point even after you beat them over the head with your Code Complete tome. Not to mention you are still only a code monkey. You've got to get in on the revolution, think big, think system, think complexity, think design, think creatively past your damned algorithm. Make the system an algorithm. Then you've started on the never ending road to madness.
Absolutely the worst book I have read. Content and story are fine his belabored style and over indulgent descriptions make the book unbearable. He could have written the same story in 300 pages. I wish you would stop adoring him. It was originally because of a slashdot article that I wen't out and bought the book. He is an absolutely terrible writer.
How Come you're the only post defending the alluded moronic majority. I could of course try to defend the position of the elitist who wrote this article, but I believe the truth to be self evident.
>Let me suggest that the reason you think a good size of the population are morons is >because of your ego
>Let me suggest that the reason you think he is egotistical >is because you're a moron
Much as it pains me I agree wholeheartedly with you. Because the current mode of thinking is that of instant gratification there are few (almost none) willing to pay and wait for CMM Level 5 quality. This will have to change however as more and more systems become dependent on software, it will all have to have some "level" of quality. This not unlike american automobile companies having been out-engineered in the 70's and 80's by japanese car manufacturers.
POSIX and TCP/IP are standards they say nothing of the software process and the insured higher quality one gets from adhering to it (i.e. I can write a completely POSIX compliant OS that still has a large number of bugs/KLOC (KLOC == 1000 Lines of Code)). The same applies to TCP/IP and all of the other protocols you've used as an example.
I disagree we do need a higher entry level barrier. It would discourage those that are not ready to develop software even though they may think they are. Writing Visual Basic does not a programmer make, however; a made programmer can write Visual Basic.
If what you mean by small developer is those not yet quite capable then it should be made difficult if not impossible (You go try and practice Civil Engineering without a License). They are definitely not ready to be responsible for the delivery of quality software. If by small you mean a small number then your argument is wrong. 5 to 10 highly qualified software engineers whose organization is rated at CMM LEVEL 4 could blow away in terms of quality any CMM LEVEL 1 organization.
If the argument is for higher quality software ( i.e. Zero Defects) then the solution is in the process and its management.
Why don't you pick up Managing the Software Process or A Discipline for Software Engineering by Watts Humphrey. After all he can say it a whole lot better than I, although admittedly more verbose.
be prepared to pay the higer costs associated with quality.
Now before all of you start getting your underwear in a wad let me explain.
The reason I think we see all of this poorly written software is two-fold. First although there are many developers out there few of them can grasp the complexity of the development PROCESS. This often leads to bad estimates, rushed schedules, and a chaotic process. All in all you end up with a "get it out the door" attitude, so we can keep our jobs, or in more dire situations keep our company.
Secondly for the developers that do understand the development process life becomes increasingly difficult. Those developers have to deal with explaining to managers, customers, ceo's why it's going to cost so much money to write that piece of software. This is difficult to explain and in my experience always a losing proposition. I'll use an analogy to illustrate. Anyone involved in the Construction of a High Rise building (15 or more floors) can tell you that it is a process which involves hundreds of people (bricklayers, steel workers, earth movers, pile personnel, contractors, structural and consulting engineers). The individual contractors are all guided by the General Contractor which normally answers to the Structural or Project Engineer. The structural or Project Engineer requires the services of other specialized engineers for geotechnical advice and quality assurance. During the whole construction process the set of blueprints the Structural Engineer put together are used to complete and verify the work. During each phase of work the consulting engineers come in and verify that each contractor is fulfilling the specification given in the blueprints. Software design is very much like that if not almost identical, yet ask a developer about the lifecycle of the software process, the CMM, software size estimation, code reviews and you'll often get very misguided answers if you get any at all. All of the elements in the software process are engineering disciplines in and of themselves yet I meet Project Managers who have no training or knowledge in this area, even self taught.
So if you asked a bunch of people who don't know how to create the blueprints for a high rise, to calculate the loads on the foundation and determine the proper number of piles. To determine the strength (psi) of the concrete to utilize for the slabs. To determine what amount of reinforcement steel (re-bar sizes, tie off separation, and quantity) should be placed in the load bearing sections of the wall. To calculate the loads on the structural steel, the required torque at each joint in the frame, the type of bolt (ANSI XXX), washer and nut to use. You would see a lot more buildings falling down and those that did not would be so grossly overbuilt (Empire State) that only a handful would be able to afford them. This IMHO is the current state of the software industry.
This question of regulation goes hand in hand with professional regulation and when that happens the price of software will go up as it should. Also the cost of entry into the software field will be much steeper. When it happens I think we will all be much better off but the number of people entering the software field will be diminished significantly.
The Actual cost of developing software is extremely high when you compare it to the cost of the hardware it is supposed to run on. Qualified and talented Software Engineers are hard to come by hence their salaries are high, simple supply and demand. The resulting man hours required to put together a large project cost in real time dollars (no abstraction here). Hence there is a definite price associated with intellectual endeavors. If the cost of this work is so high that one entity cannot afford the cost of it's development, or it cannot find a recourse for renumeration then it is less likely that this product or idea would be developed however not unlikely. One of the biggest sources of pride for me is that I can derive my source of income from pure thought. The fact that I can design a better architecture or elegantly abstract a process into code is a major ego boost. According to my experience fewer are the number that can than those who can or maybe just willing to. I am not against sharing my ideas I usually give of them freely by instruction or tutelage within my peer group. I am opposed to a mechanism that will make it harder if not impossible for companies to get renumerated and consequently pay me my comfortable and well deserved wages. Those who can do! Those who can't should buy!
Everytime I see one of these C Bigots trash C++ I wonder what their experience with large projects (250K+ LOC) is. The OO extensions added into C by Strousstup (spelling?) are there for a reason to allow us to abstract complexity. I also wonder what the level of Cyclomatic Complexity for two projects with the same requirements written in C and C++ respectively would be. Given that the C programmer would have to track all those layers of complexity himself instead of relying on the OO mechanisms naturally provided in C++ the C program would likely introduce many unnecessary layers of complexity. This of course can be reduced with the design process but how much time will you spend in design reinventing the abstraction mechanisms that C++ and other OO languages naturally provide for.
Common people OO exists for a reason and it is not consequential that many brilliant minds have written and expanded on OO (i.e. Design Patterns). If you don't like the technology then by all means shut up and go the way of the dinosaur. If you can't grasp it I feel for you, work harder, email me and I'll try to answer your questions if I can.
IF (25 Years of programming experience)
{
Greeter position at Wal-mart;
return I smell a rat;
}
and you still have an internet connection?
You are so misguided young grasshopper. The term software engineer came and went out of vogue long before Taco Man was doing neat little graphics for linux desktops. Yeah I remember the days ....
The difference between software engineering and cs is so minute the educated can barely distinguish much less the uninitiated.
I agree McConnell has done some really good work but most people still miss the point even after you beat them over the head with your Code Complete tome. Not to mention you are still only a code monkey. You've got to get in on the revolution, think big, think system, think complexity, think design, think creatively past your damned algorithm. Make the system an algorithm. Then you've started on the never ending road to madness.
Code monkeys are out. You have to have multiple skills, math, finance, architect, .....
Take it you'll never get another offer like that when someone like me gets to interview you. Can't wait until you first peer review.
Absolutely the worst book I have read. Content and story are fine his belabored style and over indulgent descriptions make the book unbearable. He could have written the same story in 300 pages. I wish you would stop adoring him. It was originally because of a slashdot article that I wen't out and bought the book. He is an absolutely terrible writer.
>Let me suggest that the reason you think a good size of the population are morons is >because of your ego
>Let me suggest that the reason you think he is egotistical >is because you're a moron
Much as it pains me I agree wholeheartedly with you. Because the current mode of thinking is that of instant gratification there are few (almost none) willing to pay and wait for CMM Level 5 quality. This will have to change however as more and more systems become dependent on software, it will all have to have some "level" of quality. This not unlike american automobile companies having been out-engineered in the 70's and 80's by japanese car manufacturers.
You're completely off.
POSIX and TCP/IP are standards they say nothing of the software process and the insured higher quality one gets from adhering to it (i.e. I can write a completely POSIX compliant OS that still has a large number of bugs/KLOC (KLOC == 1000 Lines of Code)). The same applies to TCP/IP and all of the other protocols you've used as an example.
I disagree we do need a higher entry level barrier. It would discourage those that are not ready to develop software even though they may think they are. Writing Visual Basic does not a programmer make, however; a made programmer can write Visual Basic.
If what you mean by small developer is those not yet quite capable then it should be made difficult if not impossible (You go try and practice Civil Engineering without a License). They are definitely not ready to be responsible for the delivery of quality software. If by small you mean a small number then your argument is wrong. 5 to 10 highly qualified software engineers whose organization is rated at CMM LEVEL 4 could blow away in terms of quality any CMM LEVEL 1 organization.
If the argument is for higher quality software ( i.e. Zero Defects) then the solution is in the process and its management.
Why don't you pick up Managing the Software Process or A Discipline for Software Engineering by Watts Humphrey. After all he can say it a whole lot better than I, although admittedly more verbose.
be prepared to pay the higer costs associated with quality.
Now before all of you start getting your underwear in a wad let me explain.
The reason I think we see all of this poorly written software is two-fold.
First although there are many developers out there few of them can grasp the complexity of the development PROCESS. This often leads to bad estimates, rushed schedules, and a chaotic process. All in all you end up with a "get it out the door" attitude, so we can keep our jobs, or in more dire situations keep our company.
Secondly for the developers that do understand the development process life becomes increasingly difficult. Those developers have to deal with explaining to managers, customers, ceo's why it's going to cost so much money to write that piece of software. This is difficult to explain and in my experience always a losing proposition. I'll use an analogy to illustrate. Anyone involved in the Construction of a High Rise building (15 or more floors) can tell you that it is a process which involves hundreds of people (bricklayers, steel workers, earth movers, pile personnel, contractors, structural and consulting engineers). The individual contractors are all guided by the General Contractor which normally answers to the Structural or Project Engineer. The structural or Project Engineer requires the services of other specialized engineers for geotechnical advice and quality assurance. During the whole construction process the set of blueprints the Structural Engineer put together are used to complete and verify the work. During each phase of work the consulting engineers come in and verify that each contractor is fulfilling the specification given in the blueprints.
Software design is very much like that if not almost identical, yet ask a developer about the lifecycle of the software process, the CMM, software size estimation, code reviews and you'll often get very misguided answers if you get any at all. All of the elements in the software process are engineering disciplines in and of themselves yet I meet Project Managers who have no training or knowledge in this area, even self taught.
So if you asked a bunch of people who don't know how to create the blueprints for a high rise, to calculate the loads on the foundation and determine the proper number of piles. To determine the strength (psi) of the concrete to utilize for the slabs. To determine what amount of reinforcement steel (re-bar sizes, tie off separation, and quantity) should be placed in the load bearing sections of the wall. To calculate the loads on the structural steel, the required torque at each joint in the frame, the type of bolt (ANSI XXX), washer and nut to use. You would see a lot more buildings falling down and those that did not would be so grossly overbuilt (Empire State) that only a handful would be able to afford them. This IMHO is the current state of the software industry.
This question of regulation goes hand in hand with professional regulation and when that happens the price of software will go up as it should. Also the cost of entry into the software field will be much steeper. When it happens I think we will all be much better off but the number of people entering the software field will be diminished significantly.
The Actual cost of developing software is extremely high when you compare it to the cost of the hardware it is supposed to run on. Qualified and talented Software Engineers are hard to come by hence their salaries are high, simple supply and demand. The resulting man hours required to put together a large project cost in real time dollars (no abstraction here). Hence there is a definite price associated with intellectual endeavors. If the cost of this work is so high that one entity cannot afford the cost of it's development, or it cannot find a recourse for renumeration then it is less likely that this product or idea would be developed however not unlikely.
One of the biggest sources of pride for me is that I can derive my source of income from pure thought. The fact that I can design a better architecture or elegantly abstract a process into code is a major ego boost. According to my experience fewer are the number that can than those who can or maybe just willing to. I am not against sharing my ideas I usually give of them freely by instruction or tutelage within my peer group. I am opposed to a mechanism that will make it harder if not impossible for companies to get renumerated and consequently pay me my comfortable and well deserved wages. Those who can do! Those who can't should buy!
Everytime I see one of these C Bigots trash C++ I wonder what their experience with large projects (250K+ LOC) is. The OO extensions added into C by Strousstup (spelling?) are there for a reason to allow us to abstract complexity. I also wonder what the level of Cyclomatic Complexity for two projects with the same requirements written in C and C++ respectively would be. Given that the C programmer would have to track all those layers of complexity himself instead of relying on the OO mechanisms naturally provided in C++ the C program would likely introduce many unnecessary layers of complexity. This of course can be reduced with the design process but how much time will you spend in design reinventing the abstraction mechanisms that C++ and other OO languages naturally provide for.
Common people OO exists for a reason and it is not consequential that many brilliant minds have written and expanded on OO (i.e. Design Patterns). If you don't like the technology then by all means shut up and go the way of the dinosaur. If you can't grasp it I feel for you, work harder, email me and I'll try to answer your questions if I can.