Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

itwbennett writes "A pamphlet distributed by blogger Cameron Laird's local high school proclaimed that 'Computer Science BS graduates can expect an annual salary from $54,000-$74,000. Starting salaries for MS and PhD graduates can be to up to $100,000' and 'employment of computer scientists is expected to grow by 24 percent from 2010 to 2018.' The pamphlet lists The US Federal Bureau of Labor Statistics as a reference, so how wrong can it be? 'This is so wrong, I don't know where to start,' says Laird. 'There are a lot of ways to look at the figures, but only the most skewed ones come up with starting salaries approaching $60,000 annually, and I see plenty of programmers in the US working for less,' says Laird. At issue, though, isn't so much inaccurate salary information as what is happening to programming as a career: 'Professionalization of programmers nowadays strikes chords more like those familiar to auto mechanics or nurses than the knowledge workers we once thought we were,' writes Laird, 'we're expected to pay for our own tools, we're increasingly bound by legal entanglements, H1B accumulates degrading tales, and hyperspecialization dominates hiring decisions.'"

Hello there!Please refer to your opening on job posting site. I, Rajesh Sharma, would like to apply for the job.I am working as a freelancer from Pune, India. I have over 7 years of experience in IT Industry withexposure to.NET Technologies as well as LAMP. My Key expertise is to develop Web Applications using:1. ASP.NET/C# with SQL Server 2005.2. PHP/MY SQL.I have experience working with distributed teams around the globe. I am self desciplined and selfmotivated who always belives in quality. I have a very good infrastructure with latest Hardware,Software, Telephone lines, and Broadband connection for communication.My hourly rates are $ 9 USD. If you are looking for freelancers, please reply with a time todiscuss things over IM.

Thanks,Rajesh

--

-actual reply to a craigslist posting in a major US city, looking for a software developer to work on site - received last week.

Just so you know, it's $9 an hour without even shopping around, and that's not a joke.

We all like to pretend this isn't here and it isn't happening, but I would say conservatively half the job market has disappeared in 10 years due to this currency/standard of living imbalance.

There's another reality: it's really, really hard to manage projects remotely. I have tried this for a number of projects, and have learned the following things:

A day before the deadline, John will ask for more time

Halfway through the project, John will ask for more money

John will not give the source, as was agreed

John will not use unit tests, or Subversion, as was agreed

John cannot be bothered to provide an estimate or a planning

John will take on other projects and give priority to those before yours

John actually has a day job and just does projects on the side

John will tell you he takes a holiday for three weeks, starting tomorrow

John has a wedding of a brother, a pregnant sister, a sick father, etc and cannot make the planning

John will ask for more money at the end of the project

John cannot be reached because he lost his mobile

John cannot be reached because his mobile was stolen

John cannot be reached because his mobile its battery is empty

John cannot be reached because the e-mail server is down

John cannot be reached because the internet is down

Not that I disagree entirely that it may be more difficult to manage someone in India, and I've certainly heard horror stories, but come on. These could all be applied to just about any remote contractor who isn't worth their salt. I have worked with/currently work with plenty of Indians who really knew/know their stuff.

1) Yes, you could have most of these same problems with any remote contractor, but you won't have them with an on-site employee. Ergo, if a project is critical, don't rely on remote contractors, rely on actual employees who have a stake in your company.

2) Remote contractors in your own country are also in your timezone, and you can call them up while you're at work to ask quick questions to. Not so with someone on the opposite side of the planet. Waiting a full day for an answer to every single question causes project schedules to slip badly.

3) Remote contractors in your own country can sign contracts with you, and you can take them to court if things fail due to bungling. Good luck filing a lawsuit against a contractor in another country.

Not that I disagree entirely that it may be more difficult to manage someone in India, and I've certainly heard horror stories, but come on. These could all be applied to just about any remote contractor who isn't worth their salt. I have worked with/currently work with plenty of Indians who really knew/know their stuff.

I gotta side with cerberuss on this one. Yes, c'mon all of those can be applied to any remote consultant that is not worth his salt. However, from my experience working with remote teams (India, Brazil, within the US), there is something specific about the consulting industry in India that can really bit you in the ass harder than in other cases.

Now, just like you, I've worked with plenty of Indians who really knew their stuff. In fact, most of the remote projects I've worked that involved teams in India have had a high success ratio. But the few that have failed have done so far more miserably and catastrophically than with other teams on other countries.

This has given me a glimpse to a darker side of Indian offshore consulting, which I've actually talked a lot with several of my Indian colleagues who also agree on this: you can end up with a consulting firm that sells the idea of development guided by a a top-notch architect, and you swallow the tripe. And then the top-notch architect designs a system which looks solid, then he moves to another project. Then the consulting firm gets a whole bunch of sophomore kids from college find ways to replicate GOTO statements in Java to do the implementation. My first encounter with such practices from such a consulting team was when I was working together with an Indian colleague of mine (a really good software developer) in trying to make sense out of the mess. When we looked at the code and the original design, all we could do was say "WTF?".

That's an experience I've had to repeat several times. It's a reality, and it has nothing to do with dissing people from X or Y country. It's an unfortunate reality that cannot be denied or politically correctly sugar coat it.

So at the higher end, RM4500/month * 12 = USD15777 a year [google.com], or about USD7/hour. The low end is naturally even lower...

For some strange reason[1] a company I used to work for outsourced some work to India. When the Indian workers came over and we compared salaries, they were paid more than the average Malaysian programmer in our company, and while we weren't very good, most of the Indian team made us look good in comparison, one or two of them had some clue (they were paid quite a lot in comparison), but the rest were like the sort of programmers who would be responsible for the notorious Excel bug (where 77.1*850=100000).

FWIW, RM5-6 buys you a decent lunch, you can rent a room for about RM250-500/month and taxes at the RM4500/month level aren't that high.

A lot of people in "the West" are unaware of the huge differences in cost of living. Wages are really low elsewhere. So when you see people say "it must be child labour", it's often bullshit, or someone misinterpreting a picture/video ( just because a bunch of oriental/asian workers are petite doesn't mean they are children - my cousin is 40+, she lives in New York and she has to buy some of her clothes in the children's section).

[1] Apparently the company had money stuck in some country (not India), so they decided to use it by outsourcing work to a company that then outsources it to India... Can't remember how many layers there were. Something like that anyway. I was wise enough not to say in one of the first meetings - "why don't we just buy a whole load of merchandise, ship it to where you want the money to be and sell it, you'd lose less that way", go figure why;)...

Indeed. I started college in 1999, and I remember in my first semester of Freshman year some guy coming in to talk to our CS 101 class. He was exclaiming how wonderful it was and how he could probably place most of us in a good job ALREADY with just 8-9 weeks of college under our belt.

Fast forward to graduation in 2003. I managed to get a job teaching computer classes at a certificate factory "school" within a month, but only for $10.00 per hour. A few friends from school went on to work in fast food for a while. It took me nearly a year to move from the teaching thing to a "real" job, and now almost 7 years later I've worked my way up to just BARELY $50,000 per year (I'm in South Carolina so cost of living is lower here than in say, California). It's a living - it pays my bills and I have enough money left over to have some fun, but the idea that programming is the easy-street ticket to rolling in gobs of money for almost no work is long gone.

I know some developers that are highly specialized in low-level DSP programming, and they make plenty. Also, if you are also responsible for architectural decisions and architectural design, you make more. I don't know many people who are just programmers, but I would have to assume they make less. My advice for programmers is take on more responsibilities and/or try to become a specialist. Unfortunately, there is a large supply of programmers, probably because the barrier to learning is quite low compared to say, FPGA design and development.

Pretty much correct there. I graduated with a Computer Engineering degree instead of a Computer Science degree so instead of developing web apps (which unfortunately high school drop outs can do even if they probably wont do it quite right) I started developing embedded avionics software starting at 55k.

_Do you spend more of your time making the gui look nice or the code running efficiently

Answering "yes" to that question will result is a system crash.

The rest of the questions also looks like bullshit.Writing/interacting with assembly is only needed when your higher level compiler doesn't have full support for the architecture. Assembly should be avoided as much as possible.Why would you need to have more than 3 C and (or?) C++ compilers. Are they for different architectures? Or the same? Why would you need C or C++ compilers when the compiler for your architecture doesn't use C or C++?Why would a CS programmer need more than 1 Linux distro on your home computer? Should (s)he also be a Linux distro tester?Crappy compilers take longer, slow systems take longer, large non modular systems (which are bad) take longer, etc. Longer compile times is usually a bad thing, not a good thing.Forgetting languages? I'd suggest you stop drinking. I can understand you become rusty at a language, but forgetting, that's just bad memory. Also, why good is it when you know 100 variations of brainfuck.

Forgetting languages? I'd suggest you stop drinking. I can understand you become rusty at a language, but forgetting, that's just bad memory. Also, why good is it when you know 100 variations of brainfuck.

Honestly, it's not even a matter of remembering languages. I never remember languages. When I pick up Java again after not using it for a little while, I always forget how to create an array. I can never remember how you declare a const pointer vs a pointer-to-const in C, I have to look up how to do heredocs every single time, and both Windows batch and Bash if statements escape me.

But none of that matters. Programming is not about knowing a language; it's about expressing yourself clearly. [xkcd.com] It doesn't matter if you're expressing yourself in for loops or while loops or s-expressions or regular expressions or list comprehensions or whatever new and shiny tool they come up with next year; what matters is that you know what you want to do well enough that you can split it into tiny, computer-sized chunks. Without that clarity, you cannot create a non-trivial program in any language.

I may forget every programming language that I have ever learned, but none of them matter as long as I know what I want to do.

That they are essentially mechanics? They're just not auto mechanics, they're more or less computer or software mechanics?

That shouldn't be a surprise to any. Especially as we see more about self-fixing computers, the furthering of object oriented programming which is leading to simpler and simpler APIs so you don't even have to be a programmer to make things happen. Or technologies like Sharepoint where you don't even have to have a GED to prop up multiple sites / data sources, etc.

It's an excellent analogy because that's how managers and other non-computer scientists in many (maybe most) workplaces view their software developers, software engineers, web developers, sysadms, etc. I spent years fighting to educate my coworkers who didn't understand what a web developer does, and put up with frequent comments like "any monkey can make a web page" and "I can make a web page in Word"... like "making web pages" was what my job was actually about (and, yes, those are actual quotes from high-level professionals).

I don't think it's possible to do it "right". I looked into it a little for a personal project I wanted to do (I'm an embedded C programmer by profession), and quickly came to the conclusion that web development is a fundamentally broken paradigm, basically a bunch of hacks piled on top of each other, starting from the simple fact that the WWW was initially designed to show static pages using a simple mark-up language. Every attempt to do so much more with it has resulted in a whole framework of hacks, including JavaScript. So, unlike other types of programming where you just write in one language (like C++) and that does everything you need, to make a decent website with dynamic content, you have to so something like write pages in one language (PHP), which will render into HTML on the server side, and then can be modified on the client side by a totally different language (JavaScript), plus they have to fetch data from your database using an altogether completely different language (SQL). It's a giant mess IMO.

The whole thing needs a complete redesign. I think doing something to get rid of the whole HTML thing would be a giant improvement; just display things straight into a window from application code like we currently do with C++ applications, instead of mucking around with a intermediate markup language. It's trivially easy to run full applications remotely with the X Window protocol; why can't something a little more like that be done with the web?

Yeah, ActiveX was incredibly stupid, because of its complete lack of security and full access to system resources. Why they didn't think that would be a problem, I have no idea. A sand-box system is exactly what's needed. Java did that in a way, but it was incredibly slow.

"Amateur night" object oriented systems are impossible to maintain, and Sharepoint is a train wreck. But you're right - as non-programmers increasingly come to view software as "easy", it devalues the profession.

This is why languages like Java, C#, and VB need to die. It seems that nowadays, these are all that is taught at colleges. My company hires these "dudes" right out of school, and they suck. We do real-time embedded systems. We use "real" languages (predictable languages) like C, C++, Ada, Fortran, and assembly. We do use scripting languages for tools and build systems. These "dudes" come in and think because they are lost, it is the language's fault, or the coding conventions are to restricted, or there is too much process, or the testing is too much. I try to help them because they don't learn thing like real-time or fault-tolerant in school, and all they ever uses were kiddie languages. But they won't listen.

Why is your company hiring people that only know interpreted languages when your company mainly uses "real" languages? That's very strange to me. I also find it odd (and funny) that you that you blame programming languages for your co-workers incompetence, then in the next sentence complain about how your coworkers blame a programming language for their incompetence.

As C++ programmer with 10 years of experience, and about 5 years of C# experience, I can tell you that C#, Java, etc. can be very useful tools for the right type of software. People who know these languages can be very valuable for the right company.

To be honest, if I were a manager I would not hire someone who is so narrow-minded about programing languages. Computer Science is not a static field. Don't expect them to teach the same things they taught 20 years go.

That's ridiculous. C++ is just as predictable in a system as C is. C++ memory allocation is completely deterministic as to WHEN the allocation/deallocation occurs, as is object life-time (unlike Java and its ilk).

The fact that you are talking about memory allocators shows that you may be thinking about this problem on a much to high level.

It is very common for some of the problems involving real-time embedded systems to require "creative" low-level uses of the C compiler, that would scar high-level programmers for life. Low-level code is where you operate with maxims like:

For a high-level programmer, the concept of writing code without using indirection is a foreign concept. Indirection is vital to advanced programming techniques, including malloc, _vtables, arrays, strings, and linked lists! However, on certain embedded architectures, significant speed gains result from having deterministic memory accesses. If it takes writing code without access to malloc, _vtables, arrays, strings, etc., then that is what you do to get the system working and shipped. Some of embedded code needs to execute without an operating system, or before the operating system loads, and sometimes before the "stack" is set up. "Heaps", in certain embedded applications, you wish such a thing existed...

B/c there's any point in developing a real-time embedded Word Processor, or IM, or.... Those languages all have their place, I think it's unfortunate that software professionals balkanize themselves so much by demonizing the other folk who don't live on their software island. What we should focus on is promoting good engineering standards (something which is very possible in Java and C#...less sure about VB), not on the specific language. FWIW, C++ can be much less "predictable" than Java or C# unless yo

Java, C# and VB are real languages (they have and will continue to solve problems for actual customers). You are just hiring the wrong kinds of people, or are hiring them and not training them properly.

A friend of mine went through this as a graphic designer, in the 80's. Once Adobe software showed up on the receptionists' desk, she knew it was time to get out. By not forming a professional group, they let their worth be watered down.

What programmers need to do is form a professional society that has licensing, regular career development, etc. and get employers to sign on and have various levels of gov't require licensed work for public software projects. 'Course, this may be too late. Probably shoulda' been done back in the 90's.

Following the "yellow brick"/gold road to to the glorious Emerald City is a safe route. Venture from that road and you find all kinds of strange creatures who were "broke" or you lose track of your goals in a field of sleep inducing flowers were you will be dependent on someone else to save you. The wicked witch of the east (aka, King of England from the East?) had to be "cut off" from the little people who were just trying to make it at a the origin of the yellow road (founding of the country and the gol

My starting salary in DC contracting with the Feds was $70K. Flash forward to a year of living in Cincinnati and my salary dropped to $40K. Now I'm back in DC contracting for Feds again. Starting salary? $105K.

60K in a place like Cincinnati, not bad. 60K in DC, can't live on it. Be sure to take regional salaries into consideration.

After working in Omaha for 7 years as a Java developer and software architect I managed to work my way up $80k. I moved to DC and as a DoD contractor/consultant I make $125k. The TS-SCI clearance helps.

The bottom line is, if you want a large salary you have to be willing to master your craft. Subject Matter Experts are the ones that are indispensable and can negotiate a better salary. Don't think you will get there writing php websites. If you do Java...really DO Java. Take Sun's Expert lead Performance Tu

I don't feel comfortable saying exactly what I made, but when I got out of the Marine Corps, with 4 years experience developing software and no degree, I was making more than that report's bottom end. And that was just after the.Com bust in a relatively small mid-west city.

A developer I worked with while I was in the MC, back in Washington DC was a consultant who's pay rate was $125k a year. Again, this was post.com bust. And most of the other folks I know who are workin

In the DC area, you'd expect a starting salary near $60k. For starting salary with a technical Ph.D., $100k is reasonable (although I'm not a programmer and do not know how that compares to other technical fields).

It completely depends on the field for government pay. For technical staff, the government pays terrible. They tend to value people with technical degrees/professions the same as non-technical ones. The private sector/contractor pay is much better and you can get equal or better benefits with

I'm a contractor working at a 30k employee company that is almost exclusively Linux / Java / Oracle. Even though they have dozens of Java programmers they couldn't get any of them to pick up VS C# / Windows Mobile fast enough to support all of their mobile devices.

The position is going to be long term and pays 80k+ per year because of the limited number of programmers skilled in C# / Corporate Mobile & Web applications. I guess you could say I made a deal with the Devil by going MS exclusively, but it pays the bills.

Goes for programming and infrastructure and all things IT -- you have to move around a lot. Employers in general have no interest in paying you more once you work there. If you want another $15k, you have to move elsewhere. Time at a company is spend padding resumes and earning certifications. Then you move. You might move back to the original company if they make a better offer. Employer logic is "We got the guy for $x, why should we pay him any more once we have him?" Doesn't matter if you complete a second degree while you're there, move from jr. developer to lead designer, take on more responsibilities, you'll get piddle-shit raises.

This kills me. I don't want to be job-hopping. I'd like to build some time with a place, earn some kudos and sweat equity. But those things don't exist. Been at a company a month or twenty years, you are equally expendable. Treat your employer the same way. And die a little inside. People want to think of the office as family because we're social creatures. Few people enjoy living life out as a lesson in Randian objectivism, looking for leverage in the battle of who's screwing whom. We aren't meant to live like that.

Goes for programming and infrastructure and all things IT -- you have to move around a lot. Employers in general have no interest in paying you more once you work there. If you want another $15k, you have to move elsewhere.

That holds up to a point, then you start to find that you've more or less topped out and moves get you little, if anything. At that point, you have two choices to continue increasing your income: Leave the salaried world behind and start taking on contract gigs, where you can pretty easily get significantly higher pay, but no other benefits and no guaranteed income (though if you're good you can keep the contracts coming), or go to a big company where you can settle in and just accept the 3-6% annual raises and then let the years work for you. Eventually you'll get to where you can't move (except into contracting or management) without taking a pay cut. Hopefully you like the job.

Don't be a developer. They will work you 24/7. You will be cuffed to your desk most of the day. Your hair will turn gray and fall out around the edges so you'll have a friar cut. They'll water board you for overtime. They make you buy your own computer, desk, and chair. You aren't allowed outside except for one hour a day of supervised time in the yard. Coworkers will shank you with shivs made from sharpened USB drives. You'll have to gang up to get respect. First thing you'll have to do when you come to work is shank someone, to let them know you mean business! Wages are a lie. You'll be paid in honey buns and cans of tobacco so you can roll your own. If you work hard enough you can get a free day with your spouse, but this depends on company performance.

Overall being a developer is the most horrible job in the world. If I were young and choosing a career I would do something else. Like be a reality star or join the circus.

The problem is, when people start working for the economy instead of the other way around, you get the problem of treating people like so many disposable parts. Unions have helped bring the human component to our work lives, but with their waning influence (and with people so willing to subsume their own interests to please the boss), we are going backwards and workers, even highly skilled, intelligent ones, become little more then means to an end (profit).

Unions are just one more tool for the wealthy to suck money from the working man's pocket. But I'm a senior developer, I don't consider myself a "working man". That's why we need to form a professional cabal like the doctors and the lawyers have. We need to set prices across the board higher. Until that happens, wages in this most important of fields will continue to erode. You aren't competing with the programmer in the next desk for money. You and him (or her) are both on the same side competing aga

That's a critical point. It seems that economists (especially but hardly exclusively) have forgotten that without people, economy doesn't even have a reason to be. The entire point of an economy is to provide for it's participants. It's good or bad is to be measured exclusively in terms of how well it serves it's participants.

Given the supposed growth in the economy, it SHOULD be possible right now to support a family of 4 with a house and 2 cars on a single 20 hour a week income.

Unfortunately, as long as labor is treated as a market like any other, it is literally impossible for the masses to ever see the benefits of high technology. Ideally, machines work so we don't have to, but when labor is a market, machines work so we don't get jobs (or income) at all. The only way to make things equitable and progressive while even pretending to use market dynamics is to create an artificial labor shortage. Otherwise, all of the benefits of an expanding economy and improving technology will inevitably accrue only at the top.

If you listen to people who don't do tech work talk about techies, you'll quickly realize that a lot of them do in fact put techies on roughly the same level as mechanics or bricklayers. You can think of yourself as a "knowledge worker" all you want, but the fact remains that you are going to be treated like a bricklayer. My most educated guess on why this is true is that techies produce useful products. In most businesses, the act of producing something (rather than selling something or organizing other people to produce something) severely limits your chances for advancement past the equivalent of senior foreman.

There are 3 ways to avoid this fate that I know of:1. Do some serious and visible work for your company about issues that aren't tech-related. For instance, if you provide intelligent input about pricing, the salespeople will respect you a lot more.2. Work at a company who's business is technology, which is still run by a techie. Make sure to leave once the suits take over.3. Start your own company, and watch out that you don't completely become a suit.

"Work at a company who's business is technology, which is still run by a techie. Make sure to leave once the suits take over."

Excellent advice, wish I could mod it up more. Probably the hardest one for a young worker to grok, considering that the very first piece of boilerplate the suits will utter will be, "We don't expect to make any changes here at all!". See, they know the game too, and are playing the other side of it.

I work in the Washington DC area, and something like only 1% of programmers in this area are employed with no degree, but it can be done, and lack of a degree doesn't have to have an impact on salary. It certainly can, but it all depends on the company you choose to work for.

I don't have a degree (in this field, anyway), either, and my income is currently $100k/yr, though I've spent most of the last five years working as an independent contractor, so it can vary quite a bit -- it's usually closer to $60k, so I feel pretty lucky considering the state of the economy right now. All that said, it took me fifteen years to get to this level. My observation of my coworkers is that the degree buys you almost nothing at the outset, but it will let you advance faster. Of course, how much faster will depend on what you actually learned in school, how fast you learn on the job, and particularly on your social skills. I've supervised people far more skilled than I am -- and I'm no slouch -- but who couldn't play the office political game, and I've been supervised by total morons whose lack of constructive skills was more than balanced by their skill at kissing their superiors' asses and taking credit for the work done by the people below them.

The degree helps, but it's not the be-all and end-all that dewy-eyed college kids would like to think it is. The big shock that everyone entering the real world has to adjust to is this: it's not remotely meritocratic. A degree, both as a simple credential and as the knowledge that (sometimes) goes with it, is one tool among many, and it's not necessarily the most important one.

I'll say this, though: I wish I'd gotten the degree. There is no such thing as a free lunch, and the work you don't do in school will have to be done on the job, where the stress and stakes are higher, and it will almost certainly take longer to fill in all of the gaps in your knowledge.

Of course, if I had it to do over, I wouldn't be in this field at all. The same things that interested me about computing in the 80's are still around, but I haven't spent the last fifteen years working on AI, VR, or even games: I've spent it building web apps, billing software, and other mind-numbingly boring crap. Once I've got the kid through college, I think I'm going to go do something else. As the main thread notes, there's not even any prestige left to the field. When I was a kid, computers and programmers were exotic, mysterious things. Now, computers are ubiquitous, and programmers are thought of by non-programmers as digital janitors.

25 with no degree in a programming field? I don't expect to be making much:p

As a mechanic, I was making BANK. $50k a year at the age of 19 with a GED. I was making as much if not more than the teachers who told me I wasn't going to amount to anything:-) I loved doing it, but had to stop due to physical injury -_-;;

which makes it a "good job". Certainly compared with those people who have to work standing up (shop sales, manufacturing), on unsocial shifts or those who work outdoors and get wet when it rains. So far as being qualified or having a degree goes, that might count for something (other than merely a selection barrier to entry) if the skills people learned at university were actually used in their day-to-day work. Most of the IT people and programmers I meet are indistinguishable from non-degree types of the same age, when they're not talking about the one, single programming skill they have.

I have yet to meet a non-graduate with who I can discuss a performance problem in terms of time and space complexity. Big O notation? What's that? Some kind of cheerio?

That's not to say that there aren't some very intelligent people without University degrees and some very stupid people with them. I've just found that most people with a passion for their profession are those with degrees. They did have the drive to spend 4 extra years of their lives going to school after all.

I know that is a lot of crap! I live in the uk and earn roughly £25K, prob about £35K?
I've always thought that to really make money out of a programming career, you have to start you're own business, do it for yourself with an original idea. Otherwise you do seem to end up becoming another wheel in the cog. I might be wrong, but its just the way things seem to be to me.

Simply put, there's three factors that determine what you're going to make. Where you work physically (Palo Alto and Austin have significantly different pay rates for the same job), where you work financially (startups pay less than huge companies, state governments pay less than the feds, banks pay less than almost everyone;^), and where you work professionally (it's unlikely that an C or Java programmer with 10 years experience will make as much as a CCIE w/ 10 years experience). A CS/BS is a ticket to ride, but you still gotta find your seat on the car and some have a better view than others:^).

I had a co-op student once, who obviously had no affinity for programming . . . or, more to the point, no affinity for computers in general. (This was back in the 80's, before PCs were as pervasive as now).

I really couldn't understand why he was torturing himself with a degree program, which he didn't like, so I asked him why he chose computer science. The answer:

"I heard that I will be able to make a lot of money in this field."

Money is not the reason to choose computer programming as a career.

Or any other career for that matter . . . do you want to have your tonsils removed by a surgeon, who is, "in it for the money . . . ?"

So we're all just supposed to starve to death because we're doing something for a career that we 'enjoy', but pays shit?

While it's great to be studying computer 'science' and all, when the student loan bills come due, YOU NEED TO HAVE A JOB. Four-year universities should focus on giving students marketable skills, not a bunch of useless theory that has no real-world impact.

And cue all the overeducated computer 'scientists' claiming that they use what they learned in their 'theory' classes every day. That's great up in your ivory tower, the rest of us grunts need to be able to write actual code.

Anyone with eyes to see knew the relatively high pay of the last century couldn't last in the face of easy off-shoring and other factors.

We should be thankful for what we had, not complaining about more rational (from a capitalistic perspective) compensation.

On the flip side, most people who make okay-or-better programmers have the brains and basic skills to do a variety of careers with maybe a year or two or less of additional training, and most of us hopefully know it's not wise to put all your career eggs in one basket.

Also, some jobs such as most of those in the defense industry will remain in-country.

So, yes, there may be fewer newly-minted programmers in the Western world in the future, fewer domestic jobs available, and lower pay for the remaining jobs, but it won't be the total disaster it was for say, the steel or textile industries.

From an overall global economic health perspective, I see this as a good thing, even if it hurts me personally and Western economies in general.

No-hire and non-compete agreements are pretty common in contracts especially when the development work is specialized. This sidelines a lot of talent and helps exacerbate the software developer labor shortage employers are always complaining about. It also lowers wages for developers since they'd have more trouble finding work if they left their job. I think we need to severly limit what kind of restrictions companies can place on their employees' future job prospects.

I have been principally been a Perl Programmer so that is the market I know, but the salaries I looked at have been all over the place with a good bit of it depending on location.

Recently I was looking at Sr Developer positions in LA, NYC, Nashville, and Austin.

The company in Austin, TX was willing to pay relocation and $90/K (top level). They went with someone local due to because they wanted to hire quick.

I looked at two jobs in LA seriously, neither was really willing to go over $90/K with a third company willing to go as high as $110/K but only for a elite guy.

I looked but not hard in NYC, and their salary ranges were from $80/K to $120/K. One company I wanted to interview wanted only to pay $90/K but could not even bother to pick me up from the airport. F*ck that!

I interviewed in Nashville, the highest they were willing to go was $80/K. We just did not click.

Now I technically have 10+ years of programming experience. If I stayed one place as a programmer (theoretically speaking) I might have gotten to an architect level position and earned 150K. Or you some Chinese super guru out of school, some companies will throw money at you, but that is a rarity.

I had also seen positions where companies wanted you telecommute for 10/hour because they thought that was what they could get from some guy in Russia or India.

Basically, if you become a programmer, you are going to be treated as skilled labor. Skilled but still labor and they will never be interested in paying you more because they will have no way of determining if you are good at your job. At that point, you will need to job boat to get a real raise. Then you need to know how large the market is for a particular technology in your area, otherwise you will end up moving all over the place.

I got into programming because I love building stuff. I don't really care what I get paid as long as I can live in contentment, and I do. I'm very lucky to have found a profession that aligns with my interests. A lot of people got into programming in the 90s because it was lucrative; well, it's not now. Be glad you have a job, Quit bitching. Welcome to reality.

Never ever let anyone tell you what you can or should earn. Your salary is your choice. Do what you love, take control, and don't whine. This approach has worked well for me for the past 30 years. I've survived more than a few industry changes over that time.

The only thing worse than a statistic is an anecdote. The author has his personal experience- fine. But my personal experience directly contradicts his. And the only statistics on the subject (from NACE and BLS) give a fairly Normal distribution of salaries between 57,000 and 151,000
(http://www.bls.gov/oco/ocos304.htm)
Median annual wages of computer and information scientists were $97,970 in May 2008. The middle 50 percent earned between $75,340 and $124,370. The lowest 10 percent earned less than $57,480, and the highest 10 percent earned more than $151,250. Median annual wages of computer and information scientists employed in computer systems design and related services in May 2008 were $99,900.

it was the domain of the greatest scientists, engineers, craftsmen, and artists

now its the domain of guys with ass crack showing

all industries go from new and fantastic to mundane and ordinary. IT work is no exception. for some of us in networking, it pretty much IS plumbing

but there's an important caveat here: some plumbers make a shitload of money. reason being, simple economics of supply and demand: if you're a good plumber, and you're willing to mess with a toilet, you're a rarity, and you can charge good money

the same simple economic truths apply to IT work, and always will. just like plumbing's disagreeable facets to the job according to average folk, to average folk, dealing with the technical aspects of a computer is a mindnumbing experience

this means there is and always will be a natural barrier to entry in the field, and so those of us who thrive in the nominally difficult mental arena of dealing with the innards of a computer will therefore always, for generations to come, make good money, just like plumbers today

I love the job requirements that are literally impossible to meet. Like, 10 years of C# experience. I wonder if they actually do any research or if they're just going the H1B fast track ("Hey, we couldn't find any American workers...but some guy in India says he's been doing C# for 20 years!" "Wow, that's amazing! Let's interview him!")

After 15 years I can say to the younger generation coming in with 100% certainty - go independent.

What does this mean? Well obviously you need experience so getting a job to bootstrap yourself and pay your rent is first priority. But what you do on the side will impact your career greatly.

Things you can do in your spare time:1. Work on an Open Source project and wrap it into a solution you can sell as a service2. Create your own shrink-wrapped application and sell it

Either way you are partaking in the foundation of wealth - ownership. Only through ownership can you be truly "free" in the western world. Owners are first class citizens in any country. Everyone else is just a worker bee.

Just to convince you let me break down a little math for you. I currently bill our clients at around $190/hr for my programming services and I'm in an average "enterprise software" development position. But I only get a fraction of that - let's say around $50/hr for argument's sake. Some goes to infrastructure but the majority of that profit goes to the ownership. If you are the owner you get it all. Yes it's more work. But let me ask you this - would you put in 10-20 more hours per week to make 3-4 times as much? And that's just the tip of the iceberg. Some indy developers have really made a name for themselves and a fortune to boot.

And if it all fails, you still have that experience to learn from. Nothing ventured nothing gained.

There is a big difference between modifying JSP/ASP/PHP pages vs low-level programming or programming and architecting highly available e-commerce back ends. There is a big difference between IT support calls where you try to help users how to press the any key vs being a Tier III support Sysadmin/Network guy who knows that kind of shit inside out.

Just as software-related jobs run the spectrum from mundane to highly complex, so the salaries that go with them. That is reality. We got to "thanks" the dot-com brainfartopocalypse and the washing down of undergraduate CS curriculum that we still get new graduates that think they'll make as much as the under qualified prima-donas of the late 90's even if don't know the difference between a pointer and a coconut or don't know the difference between a Vector from an ArrayList in Java or who think C# is the same as C++ or who have never written anything more than a "hello world" program in assembler.

You can tell the difference between the graduate who just went through the bare minimum course curriculum and the one who took far more programming courses and who tried to work at the college labs or tried to get internships somewhere (anywhere!) or who at the very least tried to run Linux at home and played with as many programming classes as possible and who found big-O notation fascinating.

What type of job should each of these two should get? And what salaries should they get? There are people who graduate from MIS and CS now who should have never been able to graduate 10-15 years ago. But they graduate. Schools let them as a response of what the industry need.

And what the IT industry now needs is a gamut of software professionals that can do a variety of jobs, from the mundane to the holy-crap-this-is-hard(10+1)! With more of the former than the later. The drop in salaries is just a reflection of that.

If programmers want more moolah, then they should try to tackle harder jobs that warrant better salaries. That requires specialization of skills: be it embedded programming or system-level programming or becoming a JEE specialist/architect who knows how to write solid back-end systems, or becoming a systems engineer, or a software architect, or work your way to become a team lead, or become a solid gold SysAdmin/DBA, etc, etc.

Being a "computer guy" stopped being a cash cow a long time ago. It can provide for a decent living (just like any other well-done trade or profession). But for those who go to school and graduate thinking they should deserve $70 just because their diplomas read "Computer" somewhere, nope. Graduate and become an specialist that can tackle hard problems. Then earn it.
The reality is that salaries are going down, and that's a justified reflection on the fact that the software industry is inundated with mediocre programmers.

(re)Learning spelling would be a good idea. I'd hate to be the one to debug human resources code with a variable named bool higher=False;/*Whether or not higher subject*/
which actually determined if someone was hired, but another coder thought it was a boolean for hierarchical levels, and was making it flip-flop between true/false.
Coders, as the future jacks of all trades, need to know a little of everything, and a lot of the fundamentals.

I don't give a rat's ass about their (for example) Java experience quite frankly. And why should we?

You shouldn't. Well, not directly, anyway, given it's not a requirement for the work you do.

But not caring about "breadth of knowledge" is a little silly. Breadth (and depth) of knowledge is a good proxy indicator for an individual's ability to learn on-the-fly and pick up new skills as needed. It also indicates a deep-seated passion and curiousity about their profession, something that's vital in a truly skilled developer. Plus, a broad range of skills means a larger range of tools (for example, the ability to approach a problem from a functional, procedural, or object-oriented perspective as needs require), which can only be a good thing.

So, while it's true that, from a checklist standpoint, candidates should have the specific set of skills you need, it should definitely be considered a plus if the individual shows a wide range of skills.

There's a bell curve at play, though, which peaks at about age 35. After that experience becomes a detraction, and unless you settle on one company that looks stable enough to keep you till retirement, going from job to job will lead to decreasing salaries/rates.

High school kids and anyone who spends two years at a technical school can 'program' nowadays, but coming up with a proper design is something people are still willing to pay for.

Good companies, perhaps. But in general it seems design doesn't really matter, ultimately. Business wants a blackbox that works. If it takes more time to design it and test it well, that will be deemed unnecessary at many companies. I worked at a company and the most cherished developer there was a guy who wrote terrible code,

They pay programmers better in India relative to other jobs there. Yes they get paid less in India than they do in the US. But your buying power with that income is far greater in India than it is in the US.

An Indian friend of mine went back to India for that very reason. His standard of living is quite higher now than it was in the US. No more living in a tiny studio apt. He has a house and a car and plenty of money left over.

Median annual wages of computer and information scientists were $97,970 in May 2008. The middle 50 percent earned between $75,340 and $124,370. The lowest 10 percent earned less than $57,480, and the highest 10 percent earned more than $151,250. Median annual wages of computer and information scientists employed in computer systems design and related services in May 2008 were $99,900.

In May 2008, median annual wages of wage-and-salary computer applications software engineers were $85,430. The middle 50 percent earned between $67,790 and $104,870. The lowest 10 percent earned less than $53,720, and the highest 10 percent earned more than $128,870. Median annual wages in the industries employing the largest numbers of computer applications software engineers in May 2008 were as follows:

I went to Northern Il. University - not exactly the best school, not a bad school either though. I was told, by the University, that the average starting salary for their Computer Science graduates was 59k.

Not to toot my own horn, but I was a big fish in a little pond, if that makes sense. I had internships and Fermi, Hewitt Associates, Volt. I was also the Microsoft Student Ambassador for the University and had a 3.9 GPA in my major.

I had interviews with every company I spoke to at the job fair, and job offers from all three that I pursued. They were 40k, 43k and 50k (but ~50% travel required). I negotiated the 43k up to 47k.

I was pissed.

I felt like a failure after all that - but my roommate who was also Comp Sci ended up taking months to land his first gig at ~30k. Similarly, every one of my friends that was Comp. Sci. - who I knew well enough to find out, ended up making less than 50k out of the gate. Many less than 40k And a few took several months to land a job.

My girlfriend at the time, was finishing her Masters and even with that, she started at 45k....which pissed her off to no end at the time.

To this date, none of us, have ever gotten a call from NIU asking us what our starting salary was. Everyone I knew personally, took a position for far less than the 'average'.

We cannot compete with an overpopulated world. The relative few of you that can pipe in with well-paying jobs are a dying breed. The pattern will repeat. Yet you still believe in open markets that have killed 90%+ of the rest of the country, on the chance that you will be the special exceptions.