This is an optimization thing. All nice and so, but hardly worth mentioning. The "programmer mentality" I mentioned manifests itself in your insistence of using this particular example. inefficiencies come in all shapes and forms. A manager would not be interested in what you did in one particular instance, but rather that you can recognize such problems. The whole thing is that no software developer I know talks about such specific instances of fixing some bad code. The ability to do that is expected. Talking about that means that it stood out in your mind, or, in other words, that you probably haven't encountered such situations a lot. I have, and I recognize patterns of inefficiency, but I don't recall specific instances over my 20+-year career.
Elegance is nice, but if it is slow and obviously inefficient it doesn't matter how "elegant" it is, it is still crap.
You wrote:
The "programmer mentality" I mentioned manifests itself in your insistence of using this particular example. inefficiencies come in all shapes and forms. A manager would not be interested in what you did in one particular instance, but rather that you can recognize such problems.
My Response: Again, you claim I am dwelling one this example, I HAVE SAID SEVERAL TIMES, THIS IS JUST ONE OF NUMEROUS EXAMPLES, THERE TOO MANY TO BRING UP, OF CASES WHERE I HAVE DESIGNED A BETTER SYSTEM. I DID HINT ON SEVERAL DOZEN OTHER CASES.
You wrote:
The whole thing is that no software developer I know talks about such specific instances of fixing some bad code.
My Response: Priests are not in habit of making public the truth of their abuse.
You wrote: Talking about that means that it stood out in your mind, or, in other words, that you probably haven't encountered such situations a lot.
My Response: I think your response shows that YOU DON'T READ MY RESPONSES. SO IF I PUT IN MORE EXAMPLES, YOU WOULD SIMPLY READ THE FIRST EXAMPLE, BUILD STRAW-MAN OUT OF IT, AND POUNCE ON THE STRAW-MAN.
Frankly I could write a 400+ page book on all the instances of programming inefficiency, wrought by others, I have had to fix up over the year.
But hey I'm no saint, there have been times when other have also pointed out how my code could be improved, I live for all this.
You wrote:
I have, and I recognize patterns of inefficiency, but I don't recall specific instances over my 20+-year career.
My Response:
I think you may be going senile, see a doctor. Or maybe you conveniently forget your own mistakes.
So a google search was done on Joe. Well it seems that Joe is a German, attending UCI, and has been living in the dorms as a PhD candidate for (are you ready for this), 13 years!!!! One could reasonably assume from this that he completely lacks real world experience.
Further Google searches show that he spends an inordinate amount of time bashing folks on every flavor of list serv and discussion group he can find.
I find that by using Critical Thinking, (Joe seems to lack this skill), he is all washed up on every opinion or claim. How could he possibly be experiences when he cannot even work in the US on his Student Visa except as a TA or other very menial job he can scrape up. Maybe its time for him to Graduate and get out into the real world, as many of the posters here have.
You are the one who is stuck on the "listview" example
I wrote:
"I can't meantion all the C++ work I have done, but I remember teaching a grad how to create class templates, he couldn't get it, so I took over his project. Also I implemented listview sorting form him using callback functions. These 2 examples are a tiny fraction of the work that I have done."
Clearly class templates are an advanced design feature of C++. The reason why you are hung on the listview example is that it suits your Strawman debating style.
you are still describing menial programming tasks. there is a whole other level called architecture that covers the way an entire project is structured, designed, and managed. so you can design and optimize blocks of code, even entire objects. but that is not quite on the scope of 'software development.' have you designed communication/information sharing protocols? compilers? memory management? security? ever used more than just simple math to analyze performance and reliability? statistics to compare algorithms? there is a whole other world of advanced topics that I can't even comprehend but can at least appreciate, having been an engineering major. just take a look at the senior level CS courses offered at any major university. that's what people without a CS degree are likely to be missing out on. that is why you may not be as attractive a job candidate as someone who graduated with a 4yr degree.
yes, what you learn in school may be defunct in a few years, but that's where you build fundamentals and gain exposure to other design considerations and tools. if you're only thinking about code and cycle time optimizations when working on a project, you're missing out on a lot of other things. having people with experience in a wide range of advanced topics helps ensure more complete coverage of all design aspects. and chances are, if you've studied advanced topics before, you can do it again in the future and with more ease than someone who has never done it before. i guarantee you a serious CS engineering grad thinks a lot differently than someone without college level training.
sorry to be so blunt, but that is what competitive advantage is all about.
In the real world, you were working in an IT position and then you train a foreigner who will ultimately take your position.
There's an estimate of about 12% of funds that go back into foreign economy. One dollar creates a wonderful value in the local economy. Once that dollar is exchanged into foriegn currency, jobs are lost, homes are lost and the cycle is a ripple effect through our local, state and nation wide GNP.
Of course this is a little exercise in micro economics. The reality is simple. We should provide more education to develop the skillsets here in American for high technology. We'll reap the benefits later on. The impact on the American culture and economy is bigger than one might think.
The Gates family never has to care about money for a few hundred years. What about your families and country? Nothing against foreigners these are just the facts.
What is really the long-term effect of having immigration? Is the same as having imports or outsourcing: you introduce competition to the market, which in turn causes some to fight harder and grow stronger, and some to whine asking for protection for the soon to be lost status quo. Every immigration wave in this country has been rejected by the previous one, so there is no surprise that new immigrants, who raise the competition level, are not welcomed by less skilled people. In the long run, if the US acts smartly, not you, but your kids will be more educated and competitive.
Today, reality is, US workers are not competitive; just take a look to this article, 17th place!! <a class="jive-link-external" href="http://news.com.com/U.S.+slips+lower+in+coding+contest/2100-1022_3-5659116.html?tag=nefd.lede%20" target="_newWindow">http://news.com.com/U.S.+slips+lower+in+coding+contest/2100-1022_3-5659116.html?tag=nefd.lede%20</a>
I am an immigrant with technical skills unrelated to IT. I can assure you I have not come here to be underpaid. You will find out that most of those obscure programmers that start earning 1/3 of the nominal salary end up hiring people and creating jobs. Quite simply, we are used to work harder, and this country is generous with people that do that.
You are stuck on the idea that CS degree =competent engineer
And that (no CS)=(not qualified), the fact is you are wrong.
I am going to pick apart your rambling:
You wrote:
you are still describing menial programming tasks. there is a whole other level called architecture that covers the way an entire project is structured, designed, and managed. so you can design and optimize blocks of code, even entire objects.
Reply: It's a menial task but it pays 6 figs in US dollars?
And some CS grads can't optimize the sorting of listview, well they wasted time in college.
BTW, the work done by the CS grads in companies I have worked for is no different than what I do.
You wrote:
but that is not quite on the scope of 'software development.' have you designed communication/information sharing protocols? compilers? memory management? security? ever used more than just simple math to analyze performance and reliability? statistics to compare algorithms?
My Reply:
Q: Have I designed communication/information sharing protocols?
A: Yes
Q: Have I designer compilers?
A: No, I have designer optimized interpreters though.
Q: memory management?
A: Yes.
Q: security?
A: Yes.
Ever used more than just simple math to analyze performance and reliability? statistics to compare algorithms?
A: I have used simple math to analyze performance, funny never really needed calculus for to compare performance, algrebra was sufficient. I Did create a statistical aggregration program for a marketer. Have compared algorithms, using several methods including statistics.
You wrote:
There is a whole other world of advanced topics that I can't even comprehend but can at least appreciate, having been an engineering major. just take a look at the senior level CS courses offered at any major university. that's what people without a CS degree are likely to be missing out on. that is why you may not be as attractive a job candidate as someone who graduated with a 4yr degree.
Reply: Indeed it's a big world isn't it. In computer science you've got find your niche, and not be troubled by the vastness of the field. Many people serve functional roles such as build engineer, SQL expert, GUI design and implementation (my niche), internationalization expert... and so on.
You wrote:
yes, what you learn in school may be defunct in a few years, but that's where you build fundamentals and gain exposure to other design considerations and tools. if you're only thinking about code and cycle time optimizations when working on a project, you're missing out on a lot of other things.
Reply: Apparently a significant amount of what you learn in school will (without a doubt) be defunct in a few years. And basics are all that is left, I've had the basic for years. I think what you miss by getting a degree (and expecting it to pave the way for you) is the ability to compete on true capability.
You wrote:
having people with experience in a wide range of advanced topics helps ensure more complete coverage of all design aspects. and chances are, if you've studied advanced topics before, you can do it again in the future and with more ease than someone who has never done it before. i guarantee you a serious CS engineering grad thinks a lot differently than someone without college level training.
Reply: Several engineers have told me that it was the rigors of the job that made them better students in their later years.
You wrote:
sorry to be so blunt, but that is what competitive advantage is all about.
Reply: Really you think you are blunt? I wish you had been blunt, less bologne to respond to.
I agree that a degree does not confer ability. However, to go from there to the point of saying that computer science can be learnt by reading a 35US book and lots of perseverance, is the same that saying that you can be a nuclear physicist with two 35 USD books and lots of perseverance.
I think you are confusing technical level people and real engineers (to whom the degree was awarded with merit). You can implement, code, and even design limited parts of a software without much theoretical knowledge; but to architect an effective system, you do need what I would call 'foundations'. Things you never use directly, but that helped to enlarge your brain while in school. Most unreliable systems I know were designed by people who thought they did not need theory. An empiric can build a house, but to build a dam or a skyscraper, you do need formal schooling.
There is more to architecting than a specific language or a specific system. Is it about knowing multiqueue theory, why a certain protocol is going to persist and another is going to die or understand systems engineering requirements trades. That is the difference between know-how, and know-why&
Dear Mr. Gates, you rented every helicopter in Hawaii, when you married on Lanai, to stay on the ground. Was that not protecting you and yours from whatever? Don't forget who you were. Respectfully, S. J. Medley, LAN tech before MS-DOS
Many people form India discriminate against other groups
The big problem with h-1b program is that many of the people who come here are filled with bigotted viewpoints.
I have seen several times when Indian managers only considered the resume of other Indian developers (despite dozens of domestic candidates). It is sad, but the people from India have not yet learned to hire fairly, they do not accept the need to be non-discrimanatory.
This I believe is at the heart of the shortage, because hiring managers can't find enought personnel of their own culture.
If you watch the show 30-days, where the american programmer visits India, and tries to get a job as a programmer you will see this.
The U.S. programmer is told that he can't find a programming job in India, because he doesn't know the Indian software Industry. In other words, "Sorry, Yankee there's no job for your race here."
Also, in that episode, a young Indian programmer states that Indians are taking programming jobs away from Americans, because Indians are "Smarter" than their U.S. counterparts. A clearly bigotted viewpoint.
We need to ensure diversity in the H-1b program. Right now 46% of all h-1bers come from India, it is a program that does not encourage ethnic diversity, and diversity is a key part of the fabric of our society.
People who come here have to leave all of their stereotypes (about non Indian, including the average Joe U.S. citizen) behind.
This is not a supprising move for a man that came to power through the armerican trial lawers association, and via a line of credit based on declaring intangable(software) assets at the bank. The fact that Mr. Gates is throwing more money at tax-free labor for domestic jobs is very much cheating the system.
The "programmer mentality" I mentioned manifests itself in your insistence of using this particular example. inefficiencies come in all shapes and forms. A manager would not be interested in what you did in one particular instance, but rather that you can recognize such problems.
The whole thing is that no software developer I know talks about such specific instances of fixing some bad code. The ability to do that is expected. Talking about that means that it stood out in your mind, or, in other words, that you probably haven't encountered such situations a lot. I have, and I recognize patterns of inefficiency, but I don't recall specific instances over my 20+-year career.
"This is an optimization thing. All nice and so, but hardly worth mentioning.'
My Response:
Actually, ineficentcy is always brought up, but not by mediocre developers. I have seen problems similar to this brought up by:
- Experienced GUI Developers
- Other Project Managers
- Sales people, QA...
Elegance is nice, but if it is slow and obviously inefficient it doesn't matter how "elegant" it is, it is still crap.
You wrote:
The "programmer mentality" I mentioned manifests itself in your insistence of using this particular example. inefficiencies come in all shapes and forms. A manager would not be interested in what you did in one particular instance, but rather that you can recognize such problems.
My Response: Again, you claim I am dwelling one this example, I HAVE SAID SEVERAL TIMES, THIS IS JUST ONE OF NUMEROUS EXAMPLES, THERE TOO MANY TO BRING UP, OF CASES WHERE I HAVE DESIGNED A BETTER SYSTEM. I DID HINT ON SEVERAL DOZEN OTHER CASES.
You wrote:
The whole thing is that no software developer I know talks about such specific instances of fixing some bad code.
My Response: Priests are not in habit of making public the truth of their abuse.
You wrote: Talking about that means that it stood out in your mind, or, in other words, that you probably haven't encountered such situations a lot.
My Response: I think your response shows that YOU DON'T READ MY RESPONSES. SO IF I PUT IN MORE EXAMPLES, YOU WOULD SIMPLY READ THE FIRST EXAMPLE, BUILD STRAW-MAN OUT OF IT, AND POUNCE ON THE STRAW-MAN.
Frankly I could write a 400+ page book on all the instances of programming inefficiency, wrought by others, I have had to fix up over the year.
But hey I'm no saint, there have been times when other have also pointed out how my code could be improved, I live for all this.
You wrote:
I have, and I recognize patterns of inefficiency, but I don't recall specific instances over my 20+-year career.
My Response:
I think you may be going senile, see a doctor. Or maybe you conveniently forget your own mistakes.
Further Google searches show that he spends an inordinate amount of time bashing folks on every flavor of list serv and discussion group he can find.
I find that by using Critical Thinking, (Joe seems to lack this skill), he is all washed up on every opinion or claim. How could he possibly be experiences when he cannot even work in the US on his Student Visa except as a TA or other very menial job he can scrape up. Maybe its time for him to Graduate and get out into the real world, as many of the posters here have.
Joe....its time to GET A LIFE. Troll!
"I can't meantion all the C++ work I have done, but I remember teaching a grad how to create class templates, he couldn't get it, so I took over his project. Also I implemented listview sorting form him using callback functions. These 2 examples are a tiny fraction of the work that I have done."
Clearly class templates are an advanced design feature of C++. The reason why you are hung on the listview example is that it suits your Strawman debating style.
yes, what you learn in school may be defunct in a few years, but that's where you build fundamentals and gain exposure to other design considerations and tools. if you're only thinking about code and cycle time optimizations when working on a project, you're missing out on a lot of other things. having people with experience in a wide range of advanced topics helps ensure more complete coverage of all design aspects. and chances are, if you've studied advanced topics before, you can do it again in the future and with more ease than someone who has never done it before. i guarantee you a serious CS engineering grad thinks a lot differently than someone without college level training.
sorry to be so blunt, but that is what competitive advantage is all about.
There's an estimate of about 12% of funds that go back into foreign economy. One dollar creates a wonderful value in the local economy. Once that dollar is exchanged into foriegn currency, jobs are lost, homes are lost and the cycle is a ripple effect through our local, state and nation wide GNP.
Of course this is a little exercise in micro economics. The reality is simple. We should provide more education to develop the skillsets here in American for high technology. We'll reap the benefits later on. The impact on the American culture and economy is bigger than one might think.
The Gates family never has to care about money for a few hundred years. What about your families and country? Nothing against foreigners these are just the facts.
Is the same as having imports or outsourcing: you introduce competition to the market, which in turn causes some to fight harder and grow stronger, and some to whine asking for protection for the soon to be lost status quo.
Every immigration wave in this country has been rejected by the previous one, so there is no surprise that new immigrants, who raise the competition level, are not welcomed by less skilled people. In the long run, if the US acts smartly, not you, but your kids will be more educated and competitive.
Today, reality is, US workers are not competitive; just take a look to this article, 17th place!!
<a class="jive-link-external" href="http://news.com.com/U.S.+slips+lower+in+coding+contest/2100-1022_3-5659116.html?tag=nefd.lede%20" target="_newWindow">http://news.com.com/U.S.+slips+lower+in+coding+contest/2100-1022_3-5659116.html?tag=nefd.lede%20</a>
I am an immigrant with technical skills unrelated to IT. I can assure you I have not come here to be underpaid. You will find out that most of those obscure programmers that start earning 1/3 of the nominal salary end up hiring people and creating jobs. Quite simply, we are used to work harder, and this country is generous with people that do that.
I am going to pick apart your rambling:
You wrote:
you are still describing menial programming tasks. there is a whole other level called architecture that covers the way an entire project is structured, designed, and managed. so you can design and optimize blocks of code, even entire objects.
Reply: It's a menial task but it pays 6 figs in US dollars?
And some CS grads can't optimize the sorting of listview, well they wasted time in college.
BTW, the work done by the CS grads in companies I have worked for is no different than what I do.
You wrote:
but that is not quite on the scope of 'software development.' have you designed communication/information sharing protocols? compilers? memory management? security? ever used more than just simple math to analyze performance and reliability? statistics to compare algorithms?
My Reply:
Q: Have I designed communication/information sharing protocols?
A: Yes
Q: Have I designer compilers?
A: No, I have designer optimized interpreters though.
Q: memory management?
A: Yes.
Q: security?
A: Yes.
Ever used more than just simple math to analyze performance and reliability? statistics to compare algorithms?
A: I have used simple math to analyze performance, funny never really needed calculus for to compare performance, algrebra was sufficient. I Did create a statistical aggregration program for a marketer. Have compared algorithms, using several methods including statistics.
You wrote:
There is a whole other world of advanced topics that I can't even comprehend but can at least appreciate, having been an engineering major. just take a look at the senior level CS courses offered at any major university. that's what people without a CS degree are likely to be missing out on. that is why you may not be as attractive a job candidate as someone who graduated with a 4yr degree.
Reply: Indeed it's a big world isn't it. In computer science you've got find your niche, and not be troubled by the vastness of the field. Many people serve functional roles such as build engineer, SQL expert, GUI design and implementation (my niche), internationalization expert... and so on.
You wrote:
yes, what you learn in school may be defunct in a few years, but that's where you build fundamentals and gain exposure to other design considerations and tools. if you're only thinking about code and cycle time optimizations when working on a project, you're missing out on a lot of other things.
Reply: Apparently a significant amount of what you learn in school will (without a doubt) be defunct in a few years. And basics are all that is left, I've had the basic for years. I think what you miss by getting a degree (and expecting it to pave the way for you) is the ability to compete on true capability.
You wrote:
having people with experience in a wide range of advanced topics helps ensure more complete coverage of all design aspects. and chances are, if you've studied advanced topics before, you can do it again in the future and with more ease than someone who has never done it before. i guarantee you a serious CS engineering grad thinks a lot differently than someone without college level training.
Reply: Several engineers have told me that it was the rigors of the job that made them better students in their later years.
You wrote:
sorry to be so blunt, but that is what competitive advantage is all about.
Reply: Really you think you are blunt? I wish you had been blunt, less bologne to respond to.
I think you are confusing technical level people and real engineers (to whom the degree was awarded with merit). You can implement, code, and even design limited parts of a software without much theoretical knowledge; but to architect an effective system, you do need what I would call 'foundations'. Things you never use directly, but that helped to enlarge your brain while in school. Most unreliable systems I know were designed by people who thought they did not need theory. An empiric can build a house, but to build a dam or a skyscraper, you do need formal schooling.
There is more to architecting than a specific language or a specific system. Is it about knowing multiqueue theory, why a certain protocol is going to persist and another is going to die or understand systems engineering requirements trades. That is the difference between know-how, and know-why&
Respectfully, S. J. Medley, LAN tech before MS-DOS
I have seen several times when Indian managers only considered the resume of other Indian developers (despite dozens of domestic candidates). It is sad, but the people from India have not yet learned to hire fairly, they do not accept the need to be non-discrimanatory.
This I believe is at the heart of the shortage, because hiring managers can't find enought personnel of their own culture.
If you watch the show 30-days, where the american programmer visits India, and tries to get a job as a programmer you will see this.
The U.S. programmer is told that he can't find a programming job in India, because he doesn't know the Indian software Industry. In other words, "Sorry, Yankee there's no job for your race here."
Also, in that episode, a young Indian programmer states that Indians are taking programming jobs away from Americans, because Indians are "Smarter" than their U.S. counterparts. A clearly bigotted viewpoint.
We need to ensure diversity in the H-1b program.
Right now 46% of all h-1bers come from India, it is a program that does not encourage ethnic diversity, and diversity is a key part of the fabric of our society.
People who come here have to leave all of their stereotypes (about non Indian, including the average Joe U.S. citizen) behind.