As a manager I get very tired of hearing about the programmers, sysadmins, etc. complaining that such-and-such can't be done, or otherwise blocking progress. Much more often than not things that "can't be done" just require a re-statement of the problem and some creative application of simple ideas.
I've found that the simple solution to this is for developers to know why a requirement is a certain way instead of just "do it that way." Very often I come across impossible/conflicting requirements and the resolution is obvious when I understand the reasons for those requirements. More often than not, they can be modified with no end harm and then easily satisified.
But the bigger picture is Company Culture (tm) I've had the pleasure of always working for engineering/scientific based organizations my entire career, and there has almost always been a push for high quality rather than "just ship it now, fix it later" (though I remember one spectacular exception:-). If the organization is focused on doing things "right" i.e., proper development processes, avoiding deathmarches before they start, working as teams instead of just mere lip service to the concept, etc., development tends to progress much more smoothly.
It is important to remember that when the developer communicates with the PM, technical or not, the PM is going to be more interested in hearing suggestions for working around the problem you found (along with your time estimates for the various solutions) rather than just "we can't do this stupid requirement because..." and walking away from the problem.
Anyways, the two most common mistakes that I've seen are (a) overbuilding what you can afford, and (b) not settling on a design before beginning the construction process.
(b) sounds an awful lot like software development:-)
An engine management computer is relatively trivial. How many inputs and outputs does it have? Just because it is running a "bona fide" embedded OS, does not mean it approaches the complexity of a general-purpose OS like Linux or XP.
Depends on your definition of trivial, I guess. A consumer-oriented general purpose operating system of comparable complexity to a small RTOS would most likely be considerably less stable than the RTOS. It's not the complexity per se (though managing the complexity to the minimum necessary is a part of achieving stability), but rather than the intended customer demands a high quality product.
By bringing up the issue of car computers, I was pointing out that in many ways cars, as electro-mechanical assemblies, are extremely complex *systems*. But they are usually so well engineered that they appear simple. Look at it this way: people are surprised and annoyed when the door handle on their new BMW drops off. But have to reboot Win2k once a week? Oh, that's normal.
The larger issue is customer expectation. If we demanded that software we use every day be as reliable as the car that gets us to work every day, it would be. Yes, at first that software would be expensive, but in the face of a large market for high-quality software, businesses would start to provide it. Competition will ensue and the price will drop.
Maybe we need the equivalent of a Japanese car of the early 70's to arrive on the software front.
Anyway, I am wondering how complex a car would be considered vs. an operating system. For example is an OS roughly as complex (therefore as hard to get right) as a car...or is it more like 10 times as complex...or maybe 100 times as complex? I would say it is more like 100 or 1000 times as complex
Bear in mind that cars have computers. While most of those computers aren't running anything more complex than a state machine, some of them are running real, bona fide Operating Systems. So, in light of that, consider your question again. When was the last time your car's engine management computer failed?
Software can be engineered to extremely high standards of quality, the problem is that most of the stuff we're complaining about (office automation) has to meet reliability requirements less stringent than a child's toy, so most S/W houses ship the first working thing they can. When people *REALLY* start complaining -- deaths in large numbers attributable directly or indirectly to software, or massive business losses due to security breaches or software crashes, only then will there be a real outcry for high quality. Until then we're pretty much just preaching to the choir.
will this lead to code bloat? I mean think about this...
most software use a lot of libraries... you get into a lot of problems if the libraries are slighty different...
Lets say that my products works with a shared library version 2.4.292. Lets say that the implementors of the shared library makes a slight change in version 2.4.293. Lets say someone who uses it with version 2.4.293 crashes...
am I responsible? If I am... I am sure hell going to compile my executable statically linking every single shared library... (eek. on the code size)
I'm getting tired of hearing this argument. This is no different than if I design a device using Integrated Circuits. Say TI decides to change the design of the UART I'm using and it breaks my product. IT IS MY FAULT!!!! As long as their change conforms to their specifications, it's up to ME to test that the new part still works on my design. Translating back to software that means that if I allow a new version of a library to link in my code and it breaks the code, it's my fault. Now, if the user had loaded that new DLL, then it's their problem (they have run the system in a non approved configuration). You can guarantee stability if you always know the environment in which your software runs.
You think this is impossible? No, we do it at work every day. No one is allowed to change any aspect of a completed system without the software development's dept. approval and without documenting the change and any potential effects. Sounds draconian, but if you want an absolutely stable system that's what you have to do.
The poster who made the comment that many IT depts passive-aggressively accept changes without specifying the effect they will have on design quality, cost, and delivery time was spot on. In other fields of engineering the attitude is "You can change the design all you like, as long as you want to pay for it!!!"
Well, if a rogue pilot decides to go banzai agains an acc, the Phalanx doesn't know it's a hostile target, since it would be a US plane (and if they get shot down just for getting close, it'd kinda defeat the purpose of an acc);-)
I could be wrong about this, but I seem to remember that there is a Fighter Engagement Zone created around a battle group in combat after the carrier has launched her aircraft, and even friendly aircraft do not enter that zone unless "in hot pursuit of enemy aircraft" lest they be shot down. Someone with more up to date knowledge than this (from some Operations courses I took almost 20 years ago) might want to confirm/correct me on this.
To finish (at any time I usually have 2-5 books in process of being read:-): Hagakure: Book of the Samurai Flashing Steel: Mastering Eishin-Ryu Swordsmanship At the Mountains of Madness The Making of a Pastry Chef
To start: Front Panel: User interfaces for embedded systems The stack of ACM Communications, Embedded Systems Programming, American Craft, and Bike magazines on the living room floor. A Book of Five Rings
To find: A good book on Kendo more modern than the Warner/Sasamori classic: suggestions??
Personally I find it amazing that anyone would want to buy a used book. But clearly there are people with mindsets completely differnet than mine.
Actually I'm almost completely the opposite: for fictional works, I prefer used books. The age and handling adds a character that new books just don't have. I've purchased books over 100 years old (got lucky at library sales) for less than $1.00 each just because I enjoyed having something that old on my bookshelf. I still haven't read _The Two Towers_ and _Return of the King_ simply because I prefer to own used copies. Getting impatient, though:-) I did find a used copy of _At the Mountains of Madness_ this weekend. It made my day to go into a used bookstore and actually find the book I was looking for!
It's common knowledge (among audio engineers, because MOST "audiophiles and professional musicians" don't understand the electronics involved) that a vacuum tube power amplifier operated in a push-pull configuration and biased for Class A operation produces less distortion than the designs commonly used for solid-state power amps. HOWEVER, a solid-state PA operating under the same conditions will produce just as clean an output and waste just as much power and generate as much, if not MORE heat.
OK, I'm confused just a bit here: how can a push-pull amp be biased for Class A? Both drivers in the totem-pole would be on continuously. Wouldn't the varying current in one transistor affect the operating point of the other? I don't know much about amplifier design, but this seems odd.
From your request, it appears that you are looking for information on more than just testing. If you are serious about quality, then the entire development process, from requirements to maintenance should be carefully considered. I assume your software products are not safety-critical or you wouldn't be asking the question here, but the auto industry probably already has standard frameworks for that kind of thing. If you have contacts working on automotive embedded development, asking them might be a good start. As far as books go, try Solid Software for process-oriented advice, or Writing Solid Code which is more coding-oriented, but also covers testing and requirements.
We used the software version in a graduate Computer Architecture class for software engineers. My background is EE,and I found it pretty easy going. Most of the class had CS background and they didn't have any trouble.
I know at least one person who started building his own microprocessor from logic chips in high school. He got as far as the ALU and part of the instruction decoder before losing interest. It's one of those things that seems interesting at first, but then you realize your talents are better spent working at higher levels of abstraction.
software? At some point, a plane from the UK will be handed off to French ATC. I'd feel safer knowing that the billion dollars spent on development had gone to world-class programmers, rather than to regional pork barrel.
The "who do you sue" argument is rubbish. Until software engineering lives up to its name, open source development can be considered no
1. The assumption that critical software is always performed by "world-class programmers" (whatever that means) is not necessarily correct. We build medical instruments and engineer software carefully. I was told by one of our project managers that the reason we sometimes have trouble finding people is that we're quite picky about who we hire, but still the range of programmer skill here varies quite a bit. Don't get me wrong: as far as I'm concerned, I'm uber-coder/software engineer extraordinaire:-) and there are no duds in this dept, but I can't think of anyone that's really awe-inspiring. We (like other medical companies) have a development process that is audited by FDA and other agencies, and *that*, along with programmer skill, is responsible for quality.
2. "Who do you sue" is not rubbish. If a company has no liability for its products, its products are more likely to be junk. When I first started here, the Project & Program managers took the new hires out for lunch and impressed upon us the importance of doing good work. Peoples' health and sometimes lives may depend on us. The quality of our product is taken quite seriously by the entire company.
I got news for you...it all comes from farmers, most of whom would not survive without those government subsidies. Farming is also the closest the U.S. can come to having a true free market, and I don't think we should ever underestimate that.
If the closest we can come to having a free market is a government-subsidized industry, then we're in bigger trouble than I thought!
Also, in the summer almost all of the buildings have A/C running full throttle. I think all of the waste heat that is blasted outside ends up raising the temperature an appreciable amount.
Actually the streets have a greater effect. Power sources and the huge amount of blacktop (streets) absorbing the sun combine to create a "heat island." I took a meteorology course long ago and we learned that the temp over NYC was usually about 10F higher than the surrounding areas. It definitely has an effect on weather. Around here, it's been noted that the temperature differential of the city causes some storms to be deflected slightly as they go past.
If Yahoo (or any other marketeer) cold-calls you, the best thing to do is not to hang up as quickly as you can, but keep them on the phone as long as you can. The telemarketing gig only works if they can complete so many sales in so much time, so by holding them on the line as long as you can, you decrease the profitability of the endeavor. If enough people do it, they may just give up the venture.
Spoken like someone who has nothing better to do with his time!
There are many areas in electronics where those of us struggling in the basement can build high-performance equipment, but CPU design is not one of them.
Posted too soon. that last phrase should read, "but modern, high-performance CPU design is not one of them" I am well aware that many people build simple CPUs at home. I know someone who did it 20+ years ago with TTL chips!
Replace 'Microprocessor' with 'Operating System' 'Intel' with 'Microsoft' 'AMD' with 'Sun' .... Read the above comment again. ; )
Just because you can claim that other complex products have been created by people with fewer resources, does not invalidate the original post. The cost of entry into the software market is HUGELY less than entry into hardware. Within hardware design, there are many fields where the bar to entry is very low (simple Data Acquisition/Control interfaces come to mind) and many amateurs are selling commercial products. But most of the high-end stuff requiring expensive tools is beyond the reach of the guy in the garage. I guess my point is that, to take Linux as an example, you can write a kernel and have it be immediately useful. Heck,I've done this by writing a small preemptive RTOS kernel for my own use. But simply building, say, a pipelined arithmetic processing unit gets you nothing without the rest of the CPU around it. There are many areas in electronics where those of us struggling in the basement can build high-performance equipment, but CPU design is not one of them.
The engineer turns the ball over until he find's it's serial number, then looks up the volume for that model on his Red Rubber Ball Table.
I'm working on a home project involving motor control project using an Atmel MCU. All my Atmel data is on CDROM or their website. I'm just about ready to call a local Atmel rep and have them send paper books to my office cause it is sooo much easier to flip through pages than to page through pdf files. Not to mention all those times you want to quickly flip back and forth between two sections. having multiple browser windows open to do this just takes up valuable resources that makes the entire development system run slower. Electronic documentation is not always the best. Now, my 50 issues of Circuit Cellar on CD: that's a whole other deal:-)
I know high school students (with strong science backgrounds) who cracked open comp. Sci texts, browsed newsgroups & now develop (not just code) better than 60% of the CS grads at the Univ Of WA.
Most reasonable people would not say it's impossible to do this. The problem is that most self-taught people do have gaps in their education, if only because we tend to ignore the things we have no interest in AND think we don't need to know. Right out of college (EE degree) I worked with a really smart guy who was a MechE and had a few years digital design experience. As different as our experience base was, I could easily see the mistakes he was making because he had never had the basic circuit theory I did, and he often made things more complex and bug-prone than necessary. I saw the same things in my code when I began to work on my MSSE (Software Engr). Although I was self-taught in programming (except for one structured programming class in FORTRAN in college) and used to read lots of books on programming and s/w development methods, my lack of knowledge on some basic CS concepts made some of my code, viewed in retrospect, look pretty amateurish.
The issue isn't that a person can't teach themselves all they need to know from books. It's that very, very few of us, without the pressure to excel on exams, etc, have the discipline to learn *everything* in those books.
Either way, I think its attitudes like the one you presented here that keep the industry deprived, not lack of school.
Would you go to a doctor that is learning on the job? Do you get your hair cut at a beauty school? Does your lawyer have a degree? Did your tax preparer learn on the job?
Wish I wasn't out of moderator points!!! To anyone interested in the likely future of software, there is an excellent paper written by Nancy Leveson (a safety-critical software guru) on the parallels between what happened in the early years of high-pressure steam engines and what will likely happen with software. (google: "High-Pressure Steam Engines and Computer Software"). I realize that most of/. thinks that hacking a few lines of Perl for a website constitutes a major system, but they're in for a shock in a few years. Heck, you can't even build your own house without a permit and inspections; why do people here think that any untrained hack should be let loose to build important software?
And to the OP: why is night school out of the question? I have been going to night school for the past 3 years for my Master's. It's a royal pain finding the time, doing all the projects and research, but worth it. I'm learning a tremendous amount and am a much better developer for it. My gf is a single mom who is getting her undergrad degree at night school. It's even harder for her, but she finds a way. If it really is that difficult for you to get away, have you considered distance learning?
Ummmmm, just because 60k is well above the cost of living, doesn't mean that loosing half your pay is a trivial thing. Gnereally speaking, as your income grows, so do your expenses. Few people put everything away over the bare necessities. Many people don't put anything away, even when they make a good deal of money. However, even if you DO put money away, if you invest it well it's not something that you want to just grab.
First, let me say that I agree that this company is poorly managed. I have had paychecks bounce at an old job and it really sucks. You've just pointed out a problem that many people ignore until it's too late. Just because you make $X per month, doesn't mean your expenses automatically increase to just below $X. The reason most people don't save is either poor financial management, or misplaced priorities, or plain stupidity. It's usually not that they can't afford to squirrel away a few bucks per month for a rainy day; it's that they just don't want to. They want to keep buying the toys. Except for those few living at the subsistence level, most people can afford to save, they just don't bother.
As you pointed out, your parents put money away. Good, but there are long term savings and short term savings. And while losing half a paycheck for a month can be difficult, having short term emergency savings should tide you over easily. Even when living alone and making $23,000/year living in southwest CT (pretty expensive), I managed to keep 2 months living expenses in the bank. Once I had that, I started putting money away for the long-term because I knew I wanted my own home someday. It just takes discipline, and understanding that someday you may need the money. when my employer finally went belly up, having money saved up meant that I didn't have to panic and take the first crappy job that came my way. I could afford to wait for something good. And that was without even touching the long-term, saving-for-a-house cash. After 12 years as an electrical engineer, my first new car was purchased in 2000 -- years after I bought my house. WI think it's ridiculous that schools preparing people for lucrative careers in the real world can't impart the importance of fiscal management to students. I learned the importance of managing finances in, of all places, my Engineering Economics course. That, and having a mother that taught me to keep the piggy bank full:-)
Learn to save, people. Money is freedom to do what you want, rather than having it dictated to you by someone dangling a paycheck over your head.
Under those circumstances I'd prefer that the human race didn't disappear or end up back in the dark ages. Even if no one I know and none of my descendants are personally involved.
This is the part that I was referring to. A doctor may treat strangers or help people he may never meet, but those people can be helped!! That is the thing that puzzles me. People who refer to the human race not dying out are not talking about evacuating the planet so its inhabitants will be safe, they're saying it's OK if everyone on Earth dies, cause we have this other colony that will perpetuate humanity. That's what doesn't make sense to me. Assume we have a thriving colony on Mars: I sincerely doubt that if most people on Earth were told that they would be incinerated tomorrow they would take much solace in the fact that the species would still be able to go on.
I've found that the simple solution to this is for developers to know why a requirement is a certain way instead of just "do it that way." Very often I come across impossible/conflicting requirements and the resolution is obvious when I understand the reasons for those requirements. More often than not, they can be modified with no end harm and then easily satisified.
But the bigger picture is Company Culture (tm) I've had the pleasure of always working for engineering/scientific based organizations my entire career, and there has almost always been a push for high quality rather than "just ship it now, fix it later" (though I remember one spectacular exception
It is important to remember that when the developer communicates with the PM, technical or not, the PM is going to be more interested in hearing suggestions for working around the problem you found (along with your time estimates for the various solutions) rather than just "we can't do this stupid requirement because..." and walking away from the problem.
(b) sounds an awful lot like software development
Depends on your definition of trivial, I guess. A consumer-oriented general purpose operating system of comparable complexity to a small RTOS would most likely be considerably less stable than the RTOS. It's not the complexity per se (though managing the complexity to the minimum necessary is a part of achieving stability), but rather than the intended customer demands a high quality product.
By bringing up the issue of car computers, I was pointing out that in many ways cars, as electro-mechanical assemblies, are extremely complex *systems*. But they are usually so well engineered that they appear simple. Look at it this way: people are surprised and annoyed when the door handle on their new BMW drops off. But have to reboot Win2k once a week? Oh, that's normal.
The larger issue is customer expectation. If we demanded that software we use every day be as reliable as the car that gets us to work every day, it would be. Yes, at first that software would be expensive, but in the face of a large market for high-quality software, businesses would start to provide it. Competition will ensue and the price will drop.
Maybe we need the equivalent of a Japanese car of the early 70's to arrive on the software front.
Bear in mind that cars have computers. While most of those computers aren't running anything more complex than a state machine, some of them are running real, bona fide Operating Systems. So, in light of that, consider your question again. When was the last time your car's engine management computer failed?
Software can be engineered to extremely high standards of quality, the problem is that most of the stuff we're complaining about (office automation) has to meet reliability requirements less stringent than a child's toy, so most S/W houses ship the first working thing they can. When people *REALLY* start complaining -- deaths in large numbers attributable directly or indirectly to software, or massive business losses due to security breaches or software crashes, only then will there be a real outcry for high quality. Until then we're pretty much just preaching to the choir.
When the pacemaker crashes, someone dies
I'm getting tired of hearing this argument. This is no different than if I design a device using Integrated Circuits. Say TI decides to change the design of the UART I'm using and it breaks my product. IT IS MY FAULT!!!! As long as their change conforms to their specifications, it's up to ME to test that the new part still works on my design. Translating back to software that means that if I allow a new version of a library to link in my code and it breaks the code, it's my fault. Now, if the user had loaded that new DLL, then it's their problem (they have run the system in a non approved configuration). You can guarantee stability if you always know the environment in which your software runs.
You think this is impossible? No, we do it at work every day. No one is allowed to change any aspect of a completed system without the software development's dept. approval and without documenting the change and any potential effects. Sounds draconian, but if you want an absolutely stable system that's what you have to do.
The poster who made the comment that many IT depts passive-aggressively accept changes without specifying the effect they will have on design quality, cost, and delivery time was spot on. In other fields of engineering the attitude is "You can change the design all you like, as long as you want to pay for it!!!"
I could be wrong about this, but I seem to remember that there is a Fighter Engagement Zone created around a battle group in combat after the carrier has launched her aircraft, and even friendly aircraft do not enter that zone unless "in hot pursuit of enemy aircraft" lest they be shot down.
Someone with more up to date knowledge than this (from some Operations courses I took almost 20 years ago) might want to confirm/correct me on this.
To finish (at any time I usually have 2-5 books in process of being read :-):
Hagakure: Book of the Samurai
Flashing Steel: Mastering Eishin-Ryu Swordsmanship
At the Mountains of Madness
The Making of a Pastry Chef
To start:
Front Panel: User interfaces for embedded systems
The stack of ACM Communications, Embedded Systems Programming, American Craft, and Bike magazines on the living room floor.
A Book of Five Rings
To find:
A good book on Kendo more modern than the Warner/Sasamori classic: suggestions??
Actually I'm almost completely the opposite: for fictional works, I prefer used books. The age and handling adds a character that new books just don't have. I've purchased books over 100 years old (got lucky at library sales) for less than $1.00 each just because I enjoyed having something that old on my bookshelf. I still haven't read _The Two Towers_ and _Return of the King_ simply because I prefer to own used copies. Getting impatient, though
I did find a used copy of _At the Mountains of Madness_ this weekend. It made my day to go into a used bookstore and actually find the book I was looking for!
Nonfiction I generally buy new.
OK, I'm confused just a bit here: how can a push-pull amp be biased for Class A? Both drivers in the totem-pole would be on continuously. Wouldn't the varying current in one transistor affect the operating point of the other? I don't know much about amplifier design, but this seems odd.
From your request, it appears that you are looking for information on more than just testing. If you are serious about quality, then the entire development process, from requirements to maintenance should be carefully considered. I assume your software products are not safety-critical or you wouldn't be asking the question here, but the auto industry probably already has standard frameworks for that kind of thing. If you have contacts working on automotive embedded development, asking them might be a good start. As far as books go, try Solid Software for process-oriented advice, or Writing Solid Code which is more coding-oriented, but also covers testing and requirements.
We used the software version in a graduate Computer Architecture class for software engineers. My background is EE,and I found it pretty easy going. Most of the class had CS background and they didn't have any trouble.
I know at least one person who started building his own microprocessor from logic chips in high school. He got as far as the ALU and part of the instruction decoder before losing interest.
It's one of those things that seems interesting at first, but then you realize your talents are better spent working at higher levels of abstraction.
I think Louis Armstrong would have sung that. Or at least accompanied Neil (Neal?) Armstrong on trumpet
1. The assumption that critical software is always performed by "world-class programmers" (whatever that means) is not necessarily correct. We build medical instruments and engineer software carefully. I was told by one of our project managers that the reason we sometimes have trouble finding people is that we're quite picky about who we hire, but still the range of programmer skill here varies quite a bit. Don't get me wrong: as far as I'm concerned, I'm uber-coder/software engineer extraordinaire
2. "Who do you sue" is not rubbish. If a company has no liability for its products, its products are more likely to be junk. When I first started here, the Project & Program managers took the new hires out for lunch and impressed upon us the importance of doing good work. Peoples' health and sometimes lives may depend on us. The quality of our product is taken quite seriously by the entire company.
If the closest we can come to having a free market is a government-subsidized industry, then we're in bigger trouble than I thought!
Actually the streets have a greater effect. Power sources and the huge amount of blacktop (streets) absorbing the sun combine to create a "heat island." I took a meteorology course long ago and we learned that the temp over NYC was usually about 10F higher than the surrounding areas. It definitely has an effect on weather. Around here, it's been noted that the temperature differential of the city causes some storms to be deflected slightly as they go past.
Spoken like someone who has nothing better to do with his time!
Posted too soon. that last phrase should read, "but modern, high-performance CPU design is not one of them"
I am well aware that many people build simple CPUs at home. I know someone who did it 20+ years ago with TTL chips!
Just because you can claim that other complex products have been created by people with fewer resources, does not invalidate the original post. The cost of entry into the software market is HUGELY less than entry into hardware. Within hardware design, there are many fields where the bar to entry is very low (simple Data Acquisition/Control interfaces come to mind) and many amateurs are selling commercial products. But most of the high-end stuff requiring expensive tools is beyond the reach of the guy in the garage. I guess my point is that, to take Linux as an example, you can write a kernel and have it be immediately useful. Heck,I've done this by writing a small preemptive RTOS kernel for my own use. But simply building, say, a pipelined arithmetic processing unit gets you nothing without the rest of the CPU around it.
There are many areas in electronics where those of us struggling in the basement can build high-performance equipment, but CPU design is not one of them.
Apples and onions, dude.
I'm working on a home project involving motor control project using an Atmel MCU. All my Atmel data is on CDROM or their website. I'm just about ready to call a local Atmel rep and have them send paper books to my office cause it is sooo much easier to flip through pages than to page through pdf files. Not to mention all those times you want to quickly flip back and forth between two sections. having multiple browser windows open to do this just takes up valuable resources that makes the entire development system run slower. Electronic documentation is not always the best.
Now, my 50 issues of Circuit Cellar on CD: that's a whole other deal
Most reasonable people would not say it's impossible to do this. The problem is that most self-taught people do have gaps in their education, if only because we tend to ignore the things we have no interest in AND think we don't need to know. Right out of college (EE degree) I worked with a really smart guy who was a MechE and had a few years digital design experience. As different as our experience base was, I could easily see the mistakes he was making because he had never had the basic circuit theory I did, and he often made things more complex and bug-prone than necessary. I saw the same things in my code when I began to work on my MSSE (Software Engr). Although I was self-taught in programming (except for one structured programming class in FORTRAN in college) and used to read lots of books on programming and s/w development methods, my lack of knowledge on some basic CS concepts made some of my code, viewed in retrospect, look pretty amateurish.
The issue isn't that a person can't teach themselves all they need to know from books. It's that very, very few of us, without the pressure to excel on exams, etc, have the discipline to learn *everything* in those books.
Wish I wasn't out of moderator points!!! To anyone interested in the likely future of software, there is an excellent paper written by Nancy Leveson (a safety-critical software guru) on the parallels between what happened in the early years of high-pressure steam engines and what will likely happen with software. (google: "High-Pressure Steam Engines and Computer Software"). I realize that most of
And to the OP: why is night school out of the question? I have been going to night school for the past 3 years for my Master's. It's a royal pain finding the time, doing all the projects and research, but worth it. I'm learning a tremendous amount and am a much better developer for it. My gf is a single mom who is getting her undergrad degree at night school. It's even harder for her, but she finds a way. If it really is that difficult for you to get away, have you considered distance learning?
This is the part that I was referring to. A doctor may treat strangers or help people he may never meet, but those people can be helped!! That is the thing that puzzles me. People who refer to the human race not dying out are not talking about evacuating the planet so its inhabitants will be safe, they're saying it's OK if everyone on Earth dies, cause we have this other colony that will perpetuate humanity. That's what doesn't make sense to me. Assume we have a thriving colony on Mars: I sincerely doubt that if most people on Earth were told that they would be incinerated tomorrow they would take much solace in the fact that the species would still be able to go on.