You need to speak to a lawyer who understands your jurisdiction's law and who can look over your contract properly and tell you where you stand. OK, it would have been better to do this before signing in the first place -- and you'll know that for next time -- but right now you need to get proper legal advice rather than asking lots of IANAL types here on Slashdot.
When the last 1% is what matters
on
Why I Love The GPL
·
· Score: 2, Funny
So you find it right that you do 99% of the work and MS do 1% of the work and they take 100% of the profits from your joint work?
There is an old joke, with many variations around the 'net, that goes something like this:
One day, Mega Corp.'s mainframe stops working. As it's an old system that's been running for years, their own support staff are at a loss about how to fix it, so they call a consultant who used to work for them when the system was first set up.
The consultant comes in and looks around the system for a minute. Then he takes out a piece of chalk and draws a big X on one of the boards. "That's your problem, right there," he tells them. "Replace that board and everything will be fixed. That'll be $100,000, please."
Stunned that anyone could ask so much money for a minute's work, the senior support guy asks for an invoice. "Sure," says the consultant, and he writes down the following:
Chalk, one mark: $1
Knowing where to put it: $99,999
Sometimes the last step really is worth more than everything that went before it, and being able to take it is a valuable thing.
The "food and board" charges aren't even the most abhorrent thing. If you work out the timeline, it took years for the compensation payment (almost a million pounds) to arrive. During that time, the government made some temporary payments adding up to around 300,000, but then they charged over 70,000 interest on those when they made the final payment...
I also use PlusNet, so just to offer a balancing view...
Their products are generally very good: reasonably priced, and it's clear both how much you get to up/download and how fast for your money.
However, their customer service is among the worst I've ever encountered. When I first switched to them, they managed to lose my order for weeks (despite their on-line order-tracking service) until I rang to ask what was happening and they discovered that somebody had "manually edited the database" in some way that broke everything. Then they discovered that having said I could have 1MB, I could only get 512K at my location, and we went round again. Then they forgot to send the splitters that were supposed to be included with the router I was buying from them so I couldn't actually connect. Then they sent me splitters that didn't work (my phone doesn't actually ring now if someone calls me, as I discovered when I missed a call worth a lot of money that I'd been sitting next to the phone for an hour waiting for) and to add insult to injury, when I pointed this out their tech support people suggested I buy a different kind of splitter. (I was paying them for the ones they'd given me as part of the deal I bought.) I gave up in disgust, but my phone still doesn't work.
But in the real world, "clear", "timely" and "reasonable" are often very hard -- if not impossible -- to deliver.
Perhaps, but nevertheless if they aren't delivered, it's management's fault, not the staff's.
I always like to find out whether a company I'm considering applying to for a job regularly expects its staff to work long hours. This is partly for selfish reasons, because I insist on maintaining a good work-life balance, but it's also because such an expectation is a sure sign of an incompetent management team I don't want to work for/with.
Ten years' experience against an MBA isn't a fair comparison.
Would someone with three years' experience on the job learn as much in the next year as someone with an MBA? That's a fairer question. Would someone with six years' experience be more or less competent than someone with three years' experience and an MBA? That's a fairer question.
As for comparing someone with ten years' experience in the job, who's still working at a level reflecting that experience, with an MBA, I think the comparison is simple: one just came out of lectures having gone there to learn, while the other probably came out of them having taught the class.:-)
Re:Take it from not-so-successful Project Manager
on
Geeks in Management?
·
· Score: 1
I fucked up once very bad when I could not take the BS from a senior programmer about something taking 2 Months and did the coding 15 mins right there while the one account manager watching this whole thing. Did not go well at all after that I rubbed her programming ego so bad that I got fucked later many times by her in totally unexpected ways.
You married her?;-)
But seriously, anyone that incompetent shouldn't have been working in a senior programmer position for more than five minutes. Yes, you have to let your team make their own mistakes, but not be totally moronic and get away with it. Someone that bad needs training, or failing that firing for gross incompetence.
Wow, put me down as another "You only pay $10k?" asker.
For comparison, let's look at the situation for a reasonably qualified programmer with five years' experience in a decent company here in the UK -- probably someone in a pretty good developer position on a project, or starting to move into team leader roles. Typical salary for such a person might be in the 35-45k UKP region (currently around 65-85k USD).
Our income tax system works in stages. On salaries up to the mid-30s, you're paying about 33% altogether in income tax and National Insurance, less a small allowance that is untaxed or taxed at lower rates. Above the mid-30s, the NI drops out but the income tax goes up to 40% at approximately the same place. That means that just in income tax and NI, someone on 35k UKP gives back around 10k (nearly 20k USD), and someone on 45k UKP pays around 13k UKP (well over 25k USD).
Most purchases then carry a 17.5% "Value Added Tax" on them, though in fairness a lot of basic necessities are exempted from this. And of course, about 105% of the purchase price of fuel is tax.;-) Then there are a few other significant taxes, covering things like profits from selling expensive goods or shares that have increased in value significantly since they were bought.
I've seen figures suggesting that an average person over here ultimately pays around 75% of their total income to the government through taxes. That seems a bit steep to me intuitively, but I could easily believe well over 60%. Sure, we get some things paid for by the government in return, though not as much as many people seem to think: we do have the National Health Service, which is supported through those NI payments, but my ashthmatic SO still has to buy her own inhalers, for example.
Anyway, if you had a combined income of 130k and were only paying 10k tax on it, you were amazingly lucky compared to many people. Even if that was only the income tax, I'd imagine you were still a lot better off than most at an effective income tax rate well under 10%.
Not that any of that detracts from your story or is meant as any kind of reflection on you, of course. It's just an observation that your zenith year income was very, very good.
The term piracy has been used to describe the kind of activity we're talking about for decades, possibly centuries. This meaning is listed in every dictionary I own. If you're going to rant about terminology, please have a case first.
It might be a good idea to erase the phrase "fair use rights" from the collective Slashdot vocabulary. There is, AFAIAA, no such thing in any major jurisdiction. There are fair use exemptions from the copyright law in the US, which means that if you make a copy, then that copy does not infringe copyright under certain circumstances. However, that doesn't give you some automatic legal right to the ability to make such a copy. If you can't circumvent the supplier's DRM then that's your problem; you don't have any rights to be infringed here. (I'm pretty sure there are exceptions to this covered by other rules in many countries, often for national archives and the like.) It's funny how you can describe copyright infringement as "theft" or "piracy" here and get a dozen zealots flaming you, yet when this much more misleading phrase is used, hardly anyone even notices.
Europe did fight against MS, for years, with no result in view.
They were handed down a significant fine after Steve B himself camr over to try and talk them out of it, and was pretty much told to go away. They also had various other restrictions imposed, IIRC including producing a version of Windows without Media Player built in. These decisions were upheld in the second highest court in Europe recently, and although the EU people waited until the outcome of the US action was clear, the actual proceedings in Europe were much faster than the laughable "justice" department in the US managed. Europe's response was proportionate, reasonably timely, and has been upheld when challenged. How is that fighting for years, and with no result in view? Did you expect them to order Microsoft broken up and a fine of 95% of their bank balance or something?
And European governments pass 90% of their time converting in national legislations decision from the inelected commission.
That's hardly true. And while some of the bureaucracy is clearly asinine, they've also given us things like the European Convention on Human Rights and the Working Time Directive. Both of these have brought significant improvements for many people here in the UK, often at the expense of business.
RMS invented the GPL to hack the copyright. If copyrights were to be abolished RMS would be dancing in the streets.
So many people say in these parts. So if a world without copyright is really what RMS wants, why doesn't he advocate something like a BSD licence, which is much more free-as-in-actual-freedom than the GPL?
You seem to have missed the point and reason for copyright to start with. It is to encourage the creation of new work for the society to experience and have.
That is true. For that reason, I think an arbitrary duration for copyright is probably the wrong approach. It might be better to tie it into availability: as long as you continue to make your work available to society, it's covered by copyright, but if you lapse for a certain period, then it becomes legal to copy an existing work instead of obtaining a new one from you.
This deals immediately with things like people not being able to obtain books long out of print, old software that's no longer sold, or songs you can't buy any more but can't legally copy today either. It also means that an author who does continue to make a work available is not going to be undercut by profiteers who didn't add anything except lawyers, and I really don't have a problem with that.
The implications for free-as-in-FSF software are more interesting. You could argue that the software is available forever, and therefore the GPL has permanent authority. You could also argue that the software is never available completely free of restrictions under the GPL, so the restrictions must be lifted after the "no longer published" period. (After all, copyright doesn't exist to protect the philosophical views of RMS, either.)
Perhaps a middle-ground is more appropriate: you get a fairly lengthy period of protection guaranteed under copyright law, but you forfeit that protection if you cease making the work available for an extended period of time (I'm thinking maybe 5-10 years here).
Actually, too long copyright time hinder creation in part, since you don't have to create new work. Instead you can live off old work.
I'm not sure I buy that in practice. How often does someone write a work that's good enough to live off for the rest of their life without any further effort? Those who do write such works rarely produce a second work later on of similar quality anyway, so personally I'd rather encourage people to take the time to perfect that masterpiece that could be the key to their future, rather than rush it out because they know they have to get started on the next (probably not so) big thing.
In almost any case, be it books, movies of computer software or anything else covered by copyright, a time frame of 5 to 10 years is more than adequate for the creator to be able to make enough money to be motivated to make the creation.
I'm sorry, but I believe you're confusing Europe with the US. Europe did find against Microsoft, and is only discussing software patents now because they already rejected the proposal the first time around.
Europe as a whole certainly has its flaws, but its government being absurdly pro-corporation is not normally one of them.
You can do it in-place, iteratively, with just a little temporary storage. Something like this ought to do it (he says, just knowing there's going to be an embarrassing error somewhere:-)):
struct Item { char data; Item* link; };
// Parameter: head of list before reversing. // Returns: head of reversed list. // Safe for empty lists (pass/return NULL pointer). Item* rev(Item *head) { Item *last = NULL; Item *cur = head; while (cur != NULL) { Item *next = cur->link; cur->link = last; last = cur; cur = next; } return last; }
By the way, using recursion with linked lists is often a bad idea. Unless you have a fairly small bound on the list length, you're likely to overflow the stack far too easily. Save recursion for O(log n)-depth data structures like trees.
Just out of interest, did you specify whether you wanted the list reversed in-place or non-destructively? I could generate a simple and efficient algorithm for either, but I'd be interested to see the interviewer's reaction if I had to ask them which they wanted before proceeding. Nothing like subtly turning the tables in a technical interview.:-)
No one wants to work at a place that's clueless or screwed up... and the kinds of questions that are asked and how they're worded is one of only a few major clues available to the interviewee into what it might be like to work there.
That's very true. My current employer's interview process was pretty good. The first was a technical interview, wherein I was asked some relevant mathematical questions and to write a fairly straightforward function to do some floating point work without kindergarten errors. Up to this point, I was impressed both with the interviewers' (now my boss and boss's boss) comments and with how they conducted the interview itself.
Then they asked me what I thought of an example function, producing some sample code the function identifier XXXX'd out. My immediate reaction -- and I said this out loud -- was "Well, whoever wrote it should be shot." The formatting was terrible, the variable names were unhelpful, and there were no comments, for a start. There were more egregious things, too, notably the dreaded misused operator overloads. Fortunately, they thought I was just joking about the function name; it turned out to be real code from the project I was going to work on!
After seeing the kind of code they wrote, I nearly walked away before the second interiew. The coding standards are still the worst part of the job, but most of the more heinous crimes have been stomped on by the sheer force of my team's will, and fortunately the remaining aspects of the job are enough to make up for it. But I nearly never knew.
I guess we're just coming from different backgrounds. In my line of work (mostly scientific, technical, engineering, telecomms, etc.) it's very rare to have "expendable data" lying around. Consider importing a physical quantity from another application. These might well come with units, precision information, error bounds and the like, as well as the raw value itself. Losing any of this information could critically affect the meaning of the remaining data: forgetting whether or not you were using SI units has crashed space probes into the moon, after all...
I think we probably agree about the STL. The data structure parts are quite useful, particularly things like vectors and maps, but the algorithms are mostly... not particularly useful. And I know what you mean about trying to convince people not to reinvent the linked list wheel!:-)
I'm sorry, but I can't agree that macros are no more bug prone than using the built-in C++ features. C-style macros are just a simple text substitution mechanism, with no real type-checking at all. Any polymorphism has to be coded by hand, as does ensuring destruction occurs, and anything manual is a potential source of errors, even without things like exceptions muddying the waters.
You've never ever had to deal with an external company to get data have you?
I have, and as a result I know that if your project is trying to read a data file without a clearly specified format then nothing will really help. Sure, in XML you can skip to the end of the enclosing tag block if you don't recognise a tag, but what if the information in that tag was actually critical to the meaning of the other data, and you've just silently ignored it? The problem is the unclear requirements, and the only acceptable fix for that is to clarify the requirements.
If your customer can't do that, well, that's what time and materials contracts are for. You write the code so you can change that one line and rebuild if and when it becomes necessary, and they pay you to do it if you have to. If you need to research some more on their behalf, they pay you to do it. They'd have exactly the same problem if it were some critical XML tag that was missing/misunderstood.
Just like I've learned to love the STL. The STL is better, faster, more memory efficient, and well organized then any code I'll probably ever write in my life. Your arguments sound very similar to the idiots I see expousing how they can out do the STL, right up until I make them benchmark their code against the most naive STL implementation you could imagine of their code.
I'm a professional C++ programmer, and a strong advocate of using the best tool for the job, including various under-used parts of the standard library. However, what you wrote there is just way off the mark. The STL, as implemented in C++'s standard library (which is the only actual implementation of Stepanov's original concept in mainstream use, AFAIK) is a mess.
The language lacks support for the functional programming concepts necessary to make it powerful, as a result of which most of the STL algorithms are glorified (and obfuscated) loops. Most of the advantages of using them as originally claimed are as illusory as the claim that OO designs allow extensive code reuse: in the real world, it just don't happen, boss. They have their place, but a lot of the time, it's easier just to write the loop, and you get cleaner code as a result.
Similarly, there are fundamental and unnecessary limitations in the STL architecture. The explicit use of iterators where the concepts you really want are sources, sinks and ranges makes it almost impossible to support some data structures sensibly. Circular lists are a simple example that doesn't quite "fit" the system.
In fact, the arguments against over-using the STL and the hype generated by the C++ in-crowd to support it are remarkably similar to the arguments about XML and its evangelists throughout this thread.
Why would you ever write code like that? You're simulating some useful features of C++ in a cumbersome and unreliable way in C when there's a tool available to do it all for you. That's not more control, it's just more effort and more bugs.
If you have XML you can suck it into a DOM parser and then do node walking. Then you can write the data from the nodes into structures in whatever language you have. And for this reason it makes a great way to feed data from one program to another.
Sure, as long as your data has a convenient text representation, and maps conveniently onto a tree structure...
Were there ever any refunds made for any of these so-called tools? These professors got rich selling their seminars and a lot of very good companies got duped.
No, the good companies were the ones who didn't get duped.
You need to speak to a lawyer who understands your jurisdiction's law and who can look over your contract properly and tell you where you stand. OK, it would have been better to do this before signing in the first place -- and you'll know that for next time -- but right now you need to get proper legal advice rather than asking lots of IANAL types here on Slashdot.
/me glances at thread title.
No, really? ;-)
There is an old joke, with many variations around the 'net, that goes something like this:
One day, Mega Corp.'s mainframe stops working. As it's an old system that's been running for years, their own support staff are at a loss about how to fix it, so they call a consultant who used to work for them when the system was first set up.
The consultant comes in and looks around the system for a minute. Then he takes out a piece of chalk and draws a big X on one of the boards. "That's your problem, right there," he tells them. "Replace that board and everything will be fixed. That'll be $100,000, please."
Stunned that anyone could ask so much money for a minute's work, the senior support guy asks for an invoice. "Sure," says the consultant, and he writes down the following:
Sometimes the last step really is worth more than everything that went before it, and being able to take it is a valuable thing.
The "food and board" charges aren't even the most abhorrent thing. If you work out the timeline, it took years for the compensation payment (almost a million pounds) to arrive. During that time, the government made some temporary payments adding up to around 300,000, but then they charged over 70,000 interest on those when they made the final payment...
Maybe they have a better Internet over there? Do you guys in the US still get spam and pop-ups and stuff on your Internet?
I also use PlusNet, so just to offer a balancing view...
Their products are generally very good: reasonably priced, and it's clear both how much you get to up/download and how fast for your money.
However, their customer service is among the worst I've ever encountered. When I first switched to them, they managed to lose my order for weeks (despite their on-line order-tracking service) until I rang to ask what was happening and they discovered that somebody had "manually edited the database" in some way that broke everything. Then they discovered that having said I could have 1MB, I could only get 512K at my location, and we went round again. Then they forgot to send the splitters that were supposed to be included with the router I was buying from them so I couldn't actually connect. Then they sent me splitters that didn't work (my phone doesn't actually ring now if someone calls me, as I discovered when I missed a call worth a lot of money that I'd been sitting next to the phone for an hour waiting for) and to add insult to injury, when I pointed this out their tech support people suggested I buy a different kind of splitter. (I was paying them for the ones they'd given me as part of the deal I bought.) I gave up in disgust, but my phone still doesn't work.
Perhaps, but nevertheless if they aren't delivered, it's management's fault, not the staff's.
I always like to find out whether a company I'm considering applying to for a job regularly expects its staff to work long hours. This is partly for selfish reasons, because I insist on maintaining a good work-life balance, but it's also because such an expectation is a sure sign of an incompetent management team I don't want to work for/with.
Ten years' experience against an MBA isn't a fair comparison.
Would someone with three years' experience on the job learn as much in the next year as someone with an MBA? That's a fairer question. Would someone with six years' experience be more or less competent than someone with three years' experience and an MBA? That's a fairer question.
As for comparing someone with ten years' experience in the job, who's still working at a level reflecting that experience, with an MBA, I think the comparison is simple: one just came out of lectures having gone there to learn, while the other probably came out of them having taught the class. :-)
You married her? ;-)
But seriously, anyone that incompetent shouldn't have been working in a senior programmer position for more than five minutes. Yes, you have to let your team make their own mistakes, but not be totally moronic and get away with it. Someone that bad needs training, or failing that firing for gross incompetence.
Well, the better you are, the closer you can be to your mark when you take them out. A hitman told me that once, but he's dead now.
Wow, put me down as another "You only pay $10k?" asker.
For comparison, let's look at the situation for a reasonably qualified programmer with five years' experience in a decent company here in the UK -- probably someone in a pretty good developer position on a project, or starting to move into team leader roles. Typical salary for such a person might be in the 35-45k UKP region (currently around 65-85k USD).
Our income tax system works in stages. On salaries up to the mid-30s, you're paying about 33% altogether in income tax and National Insurance, less a small allowance that is untaxed or taxed at lower rates. Above the mid-30s, the NI drops out but the income tax goes up to 40% at approximately the same place. That means that just in income tax and NI, someone on 35k UKP gives back around 10k (nearly 20k USD), and someone on 45k UKP pays around 13k UKP (well over 25k USD).
Most purchases then carry a 17.5% "Value Added Tax" on them, though in fairness a lot of basic necessities are exempted from this. And of course, about 105% of the purchase price of fuel is tax. ;-) Then there are a few other significant taxes, covering things like profits from selling expensive goods or shares that have increased in value significantly since they were bought.
I've seen figures suggesting that an average person over here ultimately pays around 75% of their total income to the government through taxes. That seems a bit steep to me intuitively, but I could easily believe well over 60%. Sure, we get some things paid for by the government in return, though not as much as many people seem to think: we do have the National Health Service, which is supported through those NI payments, but my ashthmatic SO still has to buy her own inhalers, for example.
Anyway, if you had a combined income of 130k and were only paying 10k tax on it, you were amazingly lucky compared to many people. Even if that was only the income tax, I'd imagine you were still a lot better off than most at an effective income tax rate well under 10%.
Not that any of that detracts from your story or is meant as any kind of reflection on you, of course. It's just an observation that your zenith year income was very, very good.
The term piracy has been used to describe the kind of activity we're talking about for decades, possibly centuries. This meaning is listed in every dictionary I own. If you're going to rant about terminology, please have a case first.
YHBT. HAND. :-)
It might be a good idea to erase the phrase "fair use rights" from the collective Slashdot vocabulary. There is, AFAIAA, no such thing in any major jurisdiction. There are fair use exemptions from the copyright law in the US, which means that if you make a copy, then that copy does not infringe copyright under certain circumstances. However, that doesn't give you some automatic legal right to the ability to make such a copy. If you can't circumvent the supplier's DRM then that's your problem; you don't have any rights to be infringed here. (I'm pretty sure there are exceptions to this covered by other rules in many countries, often for national archives and the like.) It's funny how you can describe copyright infringement as "theft" or "piracy" here and get a dozen zealots flaming you, yet when this much more misleading phrase is used, hardly anyone even notices.
They were handed down a significant fine after Steve B himself camr over to try and talk them out of it, and was pretty much told to go away. They also had various other restrictions imposed, IIRC including producing a version of Windows without Media Player built in. These decisions were upheld in the second highest court in Europe recently, and although the EU people waited until the outcome of the US action was clear, the actual proceedings in Europe were much faster than the laughable "justice" department in the US managed. Europe's response was proportionate, reasonably timely, and has been upheld when challenged. How is that fighting for years, and with no result in view? Did you expect them to order Microsoft broken up and a fine of 95% of their bank balance or something?
That's hardly true. And while some of the bureaucracy is clearly asinine, they've also given us things like the European Convention on Human Rights and the Working Time Directive. Both of these have brought significant improvements for many people here in the UK, often at the expense of business.
So many people say in these parts. So if a world without copyright is really what RMS wants, why doesn't he advocate something like a BSD licence, which is much more free-as-in-actual-freedom than the GPL?
That is true. For that reason, I think an arbitrary duration for copyright is probably the wrong approach. It might be better to tie it into availability: as long as you continue to make your work available to society, it's covered by copyright, but if you lapse for a certain period, then it becomes legal to copy an existing work instead of obtaining a new one from you.
This deals immediately with things like people not being able to obtain books long out of print, old software that's no longer sold, or songs you can't buy any more but can't legally copy today either. It also means that an author who does continue to make a work available is not going to be undercut by profiteers who didn't add anything except lawyers, and I really don't have a problem with that.
The implications for free-as-in-FSF software are more interesting. You could argue that the software is available forever, and therefore the GPL has permanent authority. You could also argue that the software is never available completely free of restrictions under the GPL, so the restrictions must be lifted after the "no longer published" period. (After all, copyright doesn't exist to protect the philosophical views of RMS, either.)
Perhaps a middle-ground is more appropriate: you get a fairly lengthy period of protection guaranteed under copyright law, but you forfeit that protection if you cease making the work available for an extended period of time (I'm thinking maybe 5-10 years here).
I'm not sure I buy that in practice. How often does someone write a work that's good enough to live off for the rest of their life without any further effort? Those who do write such works rarely produce a second work later on of similar quality anyway, so personally I'd rather encourage people to take the time to perfect that masterpiece that could be the key to their future, rather than rush it out because they know they have to get started on the next (probably not so) big thing.
And what if their motivation isn't monetary?
I'm sorry, but I believe you're confusing Europe with the US. Europe did find against Microsoft, and is only discussing software patents now because they already rejected the proposal the first time around.
Europe as a whole certainly has its flaws, but its government being absurdly pro-corporation is not normally one of them.
You can do it in-place, iteratively, with just a little temporary storage. Something like this ought to do it (he says, just knowing there's going to be an embarrassing error somewhere :-)):
By the way, using recursion with linked lists is often a bad idea. Unless you have a fairly small bound on the list length, you're likely to overflow the stack far too easily. Save recursion for O(log n)-depth data structures like trees.
Just out of interest, did you specify whether you wanted the list reversed in-place or non-destructively? I could generate a simple and efficient algorithm for either, but I'd be interested to see the interviewer's reaction if I had to ask them which they wanted before proceeding. Nothing like subtly turning the tables in a technical interview. :-)
That's very true. My current employer's interview process was pretty good. The first was a technical interview, wherein I was asked some relevant mathematical questions and to write a fairly straightforward function to do some floating point work without kindergarten errors. Up to this point, I was impressed both with the interviewers' (now my boss and boss's boss) comments and with how they conducted the interview itself.
Then they asked me what I thought of an example function, producing some sample code the function identifier XXXX'd out. My immediate reaction -- and I said this out loud -- was "Well, whoever wrote it should be shot." The formatting was terrible, the variable names were unhelpful, and there were no comments, for a start. There were more egregious things, too, notably the dreaded misused operator overloads. Fortunately, they thought I was just joking about the function name; it turned out to be real code from the project I was going to work on!
After seeing the kind of code they wrote, I nearly walked away before the second interiew. The coding standards are still the worst part of the job, but most of the more heinous crimes have been stomped on by the sheer force of my team's will, and fortunately the remaining aspects of the job are enough to make up for it. But I nearly never knew.
I guess we're just coming from different backgrounds. In my line of work (mostly scientific, technical, engineering, telecomms, etc.) it's very rare to have "expendable data" lying around. Consider importing a physical quantity from another application. These might well come with units, precision information, error bounds and the like, as well as the raw value itself. Losing any of this information could critically affect the meaning of the remaining data: forgetting whether or not you were using SI units has crashed space probes into the moon, after all...
I think we probably agree about the STL. The data structure parts are quite useful, particularly things like vectors and maps, but the algorithms are mostly... not particularly useful. And I know what you mean about trying to convince people not to reinvent the linked list wheel! :-)
I'm sorry, but I can't agree that macros are no more bug prone than using the built-in C++ features. C-style macros are just a simple text substitution mechanism, with no real type-checking at all. Any polymorphism has to be coded by hand, as does ensuring destruction occurs, and anything manual is a potential source of errors, even without things like exceptions muddying the waters.
I have, and as a result I know that if your project is trying to read a data file without a clearly specified format then nothing will really help. Sure, in XML you can skip to the end of the enclosing tag block if you don't recognise a tag, but what if the information in that tag was actually critical to the meaning of the other data, and you've just silently ignored it? The problem is the unclear requirements, and the only acceptable fix for that is to clarify the requirements.
If your customer can't do that, well, that's what time and materials contracts are for. You write the code so you can change that one line and rebuild if and when it becomes necessary, and they pay you to do it if you have to. If you need to research some more on their behalf, they pay you to do it. They'd have exactly the same problem if it were some critical XML tag that was missing/misunderstood.
I'm a professional C++ programmer, and a strong advocate of using the best tool for the job, including various under-used parts of the standard library. However, what you wrote there is just way off the mark. The STL, as implemented in C++'s standard library (which is the only actual implementation of Stepanov's original concept in mainstream use, AFAIK) is a mess.
The language lacks support for the functional programming concepts necessary to make it powerful, as a result of which most of the STL algorithms are glorified (and obfuscated) loops. Most of the advantages of using them as originally claimed are as illusory as the claim that OO designs allow extensive code reuse: in the real world, it just don't happen, boss. They have their place, but a lot of the time, it's easier just to write the loop, and you get cleaner code as a result.
Similarly, there are fundamental and unnecessary limitations in the STL architecture. The explicit use of iterators where the concepts you really want are sources, sinks and ranges makes it almost impossible to support some data structures sensibly. Circular lists are a simple example that doesn't quite "fit" the system.
In fact, the arguments against over-using the STL and the hype generated by the C++ in-crowd to support it are remarkably similar to the arguments about XML and its evangelists throughout this thread.
Why would you ever write code like that? You're simulating some useful features of C++ in a cumbersome and unreliable way in C when there's a tool available to do it all for you. That's not more control, it's just more effort and more bugs.
Sure, as long as your data has a convenient text representation, and maps conveniently onto a tree structure...
No, the good companies were the ones who didn't get duped.