Forgot your password?
typodupeerror
Businesses Programming The Almighty Buck

Is Programming a Lucrative Profession? 844

Posted by Soulskill
from the do-fractions-of-pennies-count dept.
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.'"
This discussion has been archived. No new comments can be posted.

Is Programming a Lucrative Profession?

Comments Filter:
  • No. (Score:2, Insightful)

    by Anonymous Coward on Tuesday January 26, 2010 @09:58AM (#30903426)

    That is all.

  • by SnapShot (171582) on Tuesday January 26, 2010 @10:00AM (#30903452)

    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...

    Not if you have a magic time machine back to 1999.

  • Not so much (Score:4, Insightful)

    by garg0yle (208225) on Tuesday January 26, 2010 @10:01AM (#30903470) Journal

    If you have experience, and are willing to lead a team, you can make decent money. Of course, how do you get experience?

  • missing number (Score:5, Insightful)

    by lapsed (1610061) on Tuesday January 26, 2010 @10:01AM (#30903472)
    This is one of those contexts where the standard deviation would be helpful, or even a graph showing the distribution of salaries.
  • by purpledinoz (573045) on Tuesday January 26, 2010 @10:02AM (#30903478)
    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.
  • by i_want_you_to_throw_ (559379) on Tuesday January 26, 2010 @10:03AM (#30903500) Homepage Journal
    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.
  • by Alarindris (1253418) on Tuesday January 26, 2010 @10:05AM (#30903528)
    That's a terrible analogy. It's like saying a novelist is a book mechanic.
  • by Just Brew It! (636086) on Tuesday January 26, 2010 @10:08AM (#30903562)
    "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.
  • by wdhowellsr (530924) on Tuesday January 26, 2010 @10:10AM (#30903584)
    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.

    William Howell
  • by mdm-adph (1030332) <mdmadph&gmail,com> on Tuesday January 26, 2010 @10:10AM (#30903592) Homepage

    Guess it's time to stop reading Atlas Shrugged, pretending that those above us in the hierarchy are looking out for us, and start forming a union, eh?

  • by jollyreaper (513215) on Tuesday January 26, 2010 @10:16AM (#30903688)

    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.

  • by Anonymous Coward on Tuesday January 26, 2010 @10:17AM (#30903704)

    You cannot possibly believe that programmers are analogous to novelists. If you do believe that, you are obviously delusional about either what programmers do or what novelists do... or both.

  • by nysus (162232) on Tuesday January 26, 2010 @10:18AM (#30903728)

    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).

  • by dkleinsc (563838) on Tuesday January 26, 2010 @10:19AM (#30903736) Homepage

    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.

  • by dangitman (862676) on Tuesday January 26, 2010 @10:20AM (#30903740)

    Guess it's time to stop reading Atlas Shrugged,

    That's good advice for anyone.

  • by petes_PoV (912422) on Tuesday January 26, 2010 @10:20AM (#30903742)
    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.
  • by gatkinso (15975) on Tuesday January 26, 2010 @10:23AM (#30903784)

    I agree with that. I have worked with nondegree'ed devs who were fantastic... in fact ALL of them were fantastic.

    Which explains why they were employed. In order to make it without a degree one has to be way above the rest. Mediocre developers without a degree soon find themselves either unemployed or in school.

    Ironic.

  • by AllyGreen (1727388) on Tuesday January 26, 2010 @10:24AM (#30903802)
    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.
  • by CptNerd (455084) <adiseker@lexonia.net> on Tuesday January 26, 2010 @10:27AM (#30903852) Homepage
    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.
  • by dgreer (1206) on Tuesday January 26, 2010 @10:27AM (#30903860)

    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 :^).

  • by dsoltesz (563978) <deborah.soltesz@gmail.com> on Tuesday January 26, 2010 @10:29AM (#30903880) Homepage Journal
    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).
  • by hrimhari (1241292) on Tuesday January 26, 2010 @10:30AM (#30903886) Journal

    (...)and start forming a union, eh?

    Thanks, but no thanks. I'm not yet convinced that the unimaginative or unskilled Computer Scientist needs to be leveraged up.

  • by rev_sanchez (691443) on Tuesday January 26, 2010 @10:31AM (#30903908)
    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.
  • by bl8n8r (649187) on Tuesday January 26, 2010 @10:33AM (#30903928)

    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.

  • by swillden (191260) <shawn-ds@willden.org> on Tuesday January 26, 2010 @10:42AM (#30904076) Homepage Journal

    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.

  • by SledgeHammerSeb (520650) on Tuesday January 26, 2010 @10:44AM (#30904124)
    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.
  • by BVis (267028) on Tuesday January 26, 2010 @10:46AM (#30904148)

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

    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.

  • by Anonymous Coward on Tuesday January 26, 2010 @10:47AM (#30904172)
    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.
  • by TheRaven64 (641858) on Tuesday January 26, 2010 @10:49AM (#30904212) Journal
    There's nothing wrong with reading Atlas Shrugged, any more than there's something wrong with reading The Wizard of Oz. It's only a problem when you expect the real world to be like that.
  • by HungryHobo (1314109) on Tuesday January 26, 2010 @10:54AM (#30904286)

    You get that attitude even amongst programmers... hell especially from some programmers.

    I'm no web developers, I know enough web design and development to be sure I'm no web developer and I've seen some fantastical cockups from programmers who've decided they are web developers.

  • by dcollins (135727) on Tuesday January 26, 2010 @11:06AM (#30904520) Homepage

    "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.

  • by Anonymous Coward on Tuesday January 26, 2010 @11:08AM (#30904546)

    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 Tuning Workshop. Learn what the JVM is REALLY doing for you. Study the API docs! Read Effective Java 2nd Edition. Read "Java Concurrency in Practice." Join a local Java Users' Group. Oh, and big thing...speak up. In your org, be willing to speak up in a meeting and suggest your ideas. Volunteer to fix things that you see are broken. Finally, figure out a niche that you can carve in your org.

  • by Culture20 (968837) on Tuesday January 26, 2010 @11:08AM (#30904558)

    I'm in software. I freely admit my spelling and grammar skills SUCK. :)

    (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.

  • 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

    hopefully we'll show less ass crack though ;-P

  • by Abcd1234 (188840) on Tuesday January 26, 2010 @11:12AM (#30904630) Homepage

    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.

  • by MBGMorden (803437) on Tuesday January 26, 2010 @11:17AM (#30904720)

    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.

  • by Anonymous Coward on Tuesday January 26, 2010 @11:18AM (#30904734)

    Sooooo, when are we gonna unionize?

  • by Prien715 (251944) <agnosticpope@nOspAm.gmail.com> on Tuesday January 26, 2010 @11:19AM (#30904738) Homepage Journal

    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!")

  • by Anonymous Coward on Tuesday January 26, 2010 @11:22AM (#30904792)

    In-house developers will almost always make less than people designing products that will be sold to external customers (i.e. actual commercial products). Why? The company has less perceived financial risk so doesn't need to pay for top quality talent.

    If you are a "software developer" and you are writing perl/PHP, doing web front-ends to intranet databases, or working for any company that primarily provides "services", get out and get a job where you work on an actual product (something that is listed on your company's website that they will SELL). Want to make a little more money? Specialize. Become an embedded programmer, learn to write drivers, become a user interface specialist.

    Also, if you are with a big company, plan on jumping about every 3 years to get salary increases / promotions, at least couple of times. With a small company, you have a better chance to get good raises if you perform well so you can stay longer. Jumping also gives you a chance to figure out what you like about different places and what to look for next time. Then when you are 30-35, find a place you want to stay for 10+ years and decide if you want to stay technical or try to climb the corporate ladder.

  • by Cornflake917 (515940) on Tuesday January 26, 2010 @11:44AM (#30905082) Homepage

    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.

  • by radtea (464814) on Tuesday January 26, 2010 @11:55AM (#30905296)

    and no guaranteed income

    You say that like there is a guaranteed income in "full time employment".

    I'm totally unclear why you would think that. You are a cost center to your employer. They will lay you off the instant it becomes convenient to do so.

    Where exactly is the "guarantee" in that?

  • Go independent (Score:5, Insightful)

    by e2d2 (115622) on Tuesday January 26, 2010 @11:59AM (#30905366)

    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 service
    2. 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.

  • by Anonymous Coward on Tuesday January 26, 2010 @12:03PM (#30905424)

    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.

    I never really understood the need to think of co-workers as some surrogate family. Sure, we spend a lot of time at the workplace, but this notion of a loving workplace seems to be as misguided as telling little girls that Prince Charming will one day appear and take them away to his castle.

    Work is what I do to enable myself to do the things I want to do when I'm not at work. Sure, I play the game. Grumble at the poor coffee. Grumble when the stupid boss man, who hasn't coded a script in ten years, tells me change some delimiters to something other than underscores because some he heard that it causes problems. But after work I really go home and do fun things, or boring things. Play with my daughter. Make art. Take classes (and try to get the 30-somethings to join me for dinner).

    When the bullshit level gets too high, I leave. I go somewhere else that will pay me for the inconvenience. It's worked so far.

    It only matters because we think it matters.

  • by Drethon (1445051) on Tuesday January 26, 2010 @12:08PM (#30905504)
    My line of work is a little different but same idea:

    _Do you know what MCDC means and how to implement it?
    _Do you understand what O(log n) means?
    _Do you know the difference between ARINC 429 and 1553?
    _Can you convert a packed unsigned value into a float?
    ...
  • by Gilmoure (18428) on Tuesday January 26, 2010 @12:10PM (#30905550) Journal

    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.

  • If you answered yes [...]

    _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.

  • by acidrainx (806006) on Tuesday January 26, 2010 @12:21PM (#30905738) Homepage

    Indistinguishable? Really?

    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.

  • by Anonymous Coward on Tuesday January 26, 2010 @12:22PM (#30905744)

    The unions' problem isn't that people don't want unions. It's that people don't want corrupt unions. The unions long ago became as corrupt as the corporations they fight, to the point that the workers have the choice of siding with the corporation which will work you to death for no pay or with the union which will take all of your money in dues and bend over for the corporation and you'll be worked to death because the union is demanding so much more money for you.

    When a union comes along that is actually worth bothering with, people will flock to it. Then the cycle can repeat, but there will at least be a few good years.

  • Re:No. (Score:3, Insightful)

    by ClosedSource (238333) on Tuesday January 26, 2010 @12:22PM (#30905748)

    "Mind you, Programming == Computer Scientist as much as Machinist == Mechanical Engineer."

    Hardly. If that were true we could have a moratorium on giving out CS degrees for a decade and still have too many. Outside of academia there isn't much use for a non-programming computer scientist.

  • by Pojut (1027544) on Tuesday January 26, 2010 @12:25PM (#30905814) Homepage

    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 -_-;;

  • by eyrieowl (881195) on Tuesday January 26, 2010 @12:34PM (#30905956)

    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 you are very conscientious about your standards. That's especially true if one is trying to do a complex, multi-threaded application (for any problem domain where information sharing across threads is necessary). After all, it's not like Windows was written in Java (and, until recently, there certainly wasn't any C# in it either...not sure if there is now). But being written in C++ surely hasn't saved it from unpredictable crashes.... Sure, it can be done, but...different tools for different jobs. I'm happy for you, though, that you get to use "real" languages. Spending time in fake languages makes for such an existential crisis....

  • by CausticPuppy (82139) on Tuesday January 26, 2010 @12:39PM (#30906022) Homepage

    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.

    Except they have no problems asking tech people to do free work.

    "Oh, you're a bricklayer? Hey, can you stop by sometime and replace the bricks on my front sidewalk? I'll give you a beer...."

  • by the_hellspawn (908071) on Tuesday January 26, 2010 @12:51PM (#30906220)
    All countries outside the US should not follow our example. Admiral Ackbar said it best; "Its a trap!"
  • by FuturShoc1k (1265058) on Tuesday January 26, 2010 @01:07PM (#30906482)
    I'd like to hear more on your suggestion to "avoid web application programming like the plague". Why? I'm genuinely curious as this is where most of my own experience is.
  • by CommieLib (468883) on Tuesday January 26, 2010 @01:07PM (#30906494) Homepage
    I think you misunderstand the original point. The reason you shouldn't choose a career for money is that it's confusing cause and effect...people make a lot of money in computing because they love it and eat, breathe and sleep it and pay out of their own pocket to go to classes on it. At least that's how me and the other six figure per year computer guys I know do it. We make a lot of money, but we add under our breath "for all the time, money and effort I've put into my skillset, I'd damn well better make a lot of money".

    So you're just vastly more likely to be successful in any way, including financially, doing something where taking time and effort beyond the regular work day isn't going to be utter misery. Of course, realism has to enter into somewhere - you're not likely to make a good living getting drunk and playing XBox, no matter how much you love it - but if you choose a career that fits with your natural talents and strengths, you're more likely to be successful.

    Is it possible to make a lot of money doing something you hate? I suppose so, but what profiteth a man if he wins the world and loses his soul?
  • by dkleinsc (563838) on Tuesday January 26, 2010 @01:34PM (#30906870) Homepage

    Absolutely true. And notice how much social reward and top of the career path a good mechanic gets, unless they also have a really funny NPR show or own their own shop.

  • by SirLurksAlot (1169039) on Tuesday January 26, 2010 @01:42PM (#30906964)

    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.

  • by Skuld-Chan (302449) on Tuesday January 26, 2010 @01:49PM (#30907088)

    You should try hiring in India as well. I used to call these guys at home (from Seattle) - it was a major plus if they showed up at the agreed time, another major plus if they answered any of my questions with something resembling words.

    I found that most teams hired like 10 people for the workload of 3 or 4 just because it was inevitable that a) one or more of them would be terminated for lying on their resume (education and degree's they didn't actually have, or degree's from fraudulent universities), and b) out of that 10 or so - you'd have 2 or 3 that actually knew what they were doing - and barely at that.

    I honestly don't see how that saved anyone any money over having American's do the same work (which is what we were doing - hiring Indians because they worked for less). There didn't seem to be any accountability like you mention above either - I guess that's the problem with having employees 10,000+ miles away.

  • by Skuld-Chan (302449) on Tuesday January 26, 2010 @01:57PM (#30907210)

    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.

  • by Anonymous Coward on Tuesday January 26, 2010 @02:22PM (#30907546)
    We "hackers" in aerospace know better than to use floats when deterministic real values are necessary. We use fixed point types in that case, which can represent 0.1 exactly. Banks don't use floats either. They use either (depending on language and availability) BCD or decimal fixed point. We wouldn't use Java either. In Java, an integer isn't just an integer. It is ALWAYS 2s complement, regardless of the under lying hardware. C++ allows three representations: 2s comp., 1s comp., or sign/magnitude, allowing it to be more efficient by matching what the machine does. It doesn't dumb (and slow) things down, because the programmer is too stupid to understand something as simple as an integer format.
  • by Grishnakh (216268) on Tuesday January 26, 2010 @02:26PM (#30907586)

    There's some differences, though.

    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.

  • by sjames (1099) on Tuesday January 26, 2010 @02:42PM (#30907844) Homepage

    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.

  • by Grishnakh (216268) on Tuesday January 26, 2010 @02:53PM (#30908026)

    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?

  • by IICV (652597) on Tuesday January 26, 2010 @03:10PM (#30908308)

    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.

  • by ultranova (717540) on Tuesday January 26, 2010 @03:14PM (#30908404)

    Each and every project, I have had the above things. There are lots of ways around the above, but the main thing is that it's very hard.

    Hey, you outsource and offshore because you don't want to pay a decent wage, you deserve all the pain you get.

  • by BitZtream (692029) on Tuesday January 26, 2010 @03:24PM (#30908544)

    When the world reaches population levels like it is today, you must face reality ... people ARE DISPOSABLE PARTS.

    You can act all cocky and pretend you can call the shots all day long, but you really can't. The only time you have that ability is when you work for idiots, in which case you aren't safe because its unlikely your division/department/company will survive long anyway with idiots managing it.

    You can be 'highly skilled' and there are 10 more skilled/qualified people sitting at the door willing to do your job for less the instant you get out of your seat for coffee.

  • by BlueBoxSW.com (745855) on Tuesday January 26, 2010 @03:30PM (#30908600) Homepage

    Here's how you bake that statistic:

    A) Only count people who got a job
    B) In their major
    C) Use the best average salary from the past decade

  • by Sir_Real (179104) on Tuesday January 26, 2010 @03:52PM (#30908854)

    That is the stupidest thing I've ever seen modded insightful on slashdot... Different tools for different jobs "dude"... You would not write a SOA platform in asm/c or c++. Just because you don't understand the domain these languages serve, doesn't mean they need to die.

  • by elnyka (803306) on Tuesday January 26, 2010 @03:54PM (#30908888) Homepage

    Is Programming a Lucrative Profession?

    No, it is not. And it shouldn't be just because it's "programming"

    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.

  • by elnyka (803306) on Tuesday January 26, 2010 @04:16PM (#30909182) Homepage
    Looking back at my own experiences when I graduated, I would have been better served if I had started at a lower salary when I graduated.

    See, many of us during the dot-com boom-boom (and many who graduate now) came to the profession thinking big bucks. The reality is that a $50k salary (or even a $40K salary) is a decent salary for a single person ... if you live frugally (unless you live in an expensive area like NY). Living frugally and with financial responsibility appreciating a $50k salary is a far better life lesson than just graduating and getting $60-$70k just because. Many of us in the software industry lost touch with respect to reasonable proportions of salary as a function of our work functions.

    That is the worst legacy of the dot-com era.

  • by Cheefachi (970662) on Tuesday January 26, 2010 @04:22PM (#30909258)
    I'm sure I am in the minority, but I am proud of the fact that I got rich as a programmer and not by being a suit. How did I achieve that? I co-founded a small software company that was acquired by a large tech company. True we didn't pay ourselves much until we started making some good revenue, and it took us 7 years before we were acquired, but ultimately my ownership stake in the company got me more money in the end than if I had been working as an investment banker right out of college. I didn't turn into a manager or director or some suit who forgot his developer roots, I remained pretty much an architect/developer the whole time. I am really proud of that achievement.

    But anyway, my salary at the acquiring company was quite good ($135k with bonus, stock, etc.). I checked on glassdoor.com and it looks to be comparable to other developers at the company. I agree with some previous posters that if you want to be treated more than just a code monkey, work for a company that understands what developers bring to the table, that programming is very much a creative art and not at all like a bricklayer. If you work for a company whose core business is far away from tech (off the top of my head I am thinking a manufacturer or an insurance company, etc.) you will probably not be thought of as key and so I would assume your salary would reflect that. Check out salaries for software developers at companies like Cisco, Apple, Google, and Oracle and you will see they are pretty good.

    Now you do have to consider the location. These companies are all based in expensive areas (Silicon Valley, east coast areas like NY and Boston) so their salaries will have to be higher just because of that. But still, overall I do believe that tech companies will give better salaries for developers than other companies.
  • by Anonymous Coward on Tuesday January 26, 2010 @05:08PM (#30909914)

    Good afternoon,

    I think that specialization in a couple of focused areas (depth of knowledge / tools), breadth (experience and multiple different project types) and looking further than 'pure programming' are the best ways to increase your income and job satisfaction.

    I found it interesting the number of people who happened to be in Cincinnati: I am too. I make more than $100K / year but not in programming. How? Ironically by running offshore test teams in India. Employers are starting to learn that offshoring works best when you have experienced leads doing the planning and verification activities, attending meetings, looking ahead to remove blocks and generally keeping test velocity high. Deep experience in process, toolsets and industry (28 years) makes me valuable. Staying current with all of that means you study a lot, take classes and are generally aware of upcoming trends. I believe the exact same things are true for dev not just test. Have a humble attitude; I always say I'll wash the dishes if needed (do not wait until asked).

    I know when I want to hire a senior test automation person (I hate the term 'resources' - we are people) I know the price varies by city but that I need to budget around 110k base on the West coast and 85K or more in the mid-West. Have you ever considered moving over to automated testing or performance testing (programming in tools like SILK / QTP / others)? There is a shortage and it requires essentially the same skillset.

    Being able to write coherent sentences, plan, dress well and give presentations easily adds 20K / year to a salary; do not overlook those skills if you want the money. Image is not everything but removal of a deliberate 'individualism' that blocks a positive perception adds to your salary. Be a skateboarding 'punk' with green hair, body odour and foul language on your own time (these are all real-world examples over the last 5 years). I'm not saying don't do things you like or be a conformist; simply allow business - they pay the bills - to relate to you. Make them think of you as a peer or able to give good advice.

    Being able to admit when you are wrong, asking for advice from other teammates (and thanking them sincerly for the effort even when you do not choose to follow it) along with a myriad of other social and 'soft' skills also add to your 'likeableness' and make you more secure. This is different from plain 'sucking up' in that you must truly be sincere.

    Being able to help with estimating and planning development work is a crucial area that contributes to project success if done properly. One of the best PM's I know started out as a developer and transitioned. She makes more money (significantly more) and is much happier. She is extremely valuable because her estimates are accurate, she can call developers out when needed (I've watched her load an IDE and help a developer identify code issues) and she has the organizational skills to keep track of everything. She brings creditability and gravitas. People know her projects are hard but they step up and deliver.

    I guess if I summed it up: actively work to make yourself valuable to an employer. Do not hold on to information - the more you share the more you are needed. Learn business processes not just development ones. Learn basic accounting / order entry / shipping / etc. terminology and methods.

    P.S. I only have a GED.

  • by Grishnakh (216268) on Tuesday January 26, 2010 @05:45PM (#30910424)

    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.

It's later than you think, the joint Russian-American space mission has already begun.

Working...