The truth about software engineering as a career?

I put a lot of thought into the above title, and it is not the best way of describing this post, but I am a little tired and also unoriginal.

I read conflicting information nearly every week about the realities of a career as a software developer. The bls indicates that this career should experience high growth, but then I read other reports that say that this will just cause more offshoring and h1b influx. I can't get a good read on this issue - maybe I'm looking in the wrong places? It also doesn't help that I'm not in the US (Ireland):/. I don't want to make snap decisions, so I turn to the ars forum, who must have seen every side to this issue due to working in it and seeing it on a daily basis.

Is software engineering a good career to go into (employment prospects/salary/barrier to entry etc)? Will a good developer always be able to find work? I could say more on this, but I feel like you must all know of the news reports that mention these issues, so I will turn the floor over to you.

As to off shoring the simpler answer is that you want to be the guy (or gal) who gets things done, who solves the tricky things, focuses on the end product (whatever that may be). If you're that person the chance of you being outsourced is low.

Some management types think they can replace 'drones' with greater numbers of cheaper drones offshore, perhaps at the cost of more time/less flexibility (if they even think about the negatives). Even that kind of person tend not to think they can pay peanuts and get anything but monkeys.

This sounds sour, but is based on experience. My previous employer tried doing it themselves, then tried outsourcing bits and finally went with getting Big Blue to do it all. I suspect they should have gone straight from A -> C, it would have been cheaper. If that happens and you're good you may well find you welcome your new corporate overlords.

Those people I know I consider very good at building software love it in some way; be it the creative parts, the logical parts or the problem solving some aspect enthuses them profoundly. Does it do that for you?

Those people I know I consider very good at building software love it in some way; be it the creative parts, the logical parts or the problem solving some aspect enthuses them profoundly. Does it do that for you?

That's pretty much what I was thinking reading the OP. When I was in college, there were lots of people who had never messed with computers before entering CS because of the perception of the availability of good jobs. They got into the classes and realized many of us just love computing... in just about any form. I don't recall ever seeing them in soph or later classes. It's hard to compete with those type people if you're just doing it as a job.

I have 10 years experience, and make $100,000 /yr in Detroit, MI at a fortune 500 company. I never work more than 40 hrs per week. I get headhunters calling me a couple times a month asking if I know any unemployed SW engineers; I don't know any.

The Cost of living calculator tells me I'd be making $210,000 in NYC or $185,000 in Seattle WA.

I could make more per year as a lawyer, but is $150K for 60 hour work weeks really better than $100K for 40 hour work weeks?

I have 10 years experience, and make $100,000 /yr in Detroit, MI at a fortune 500 company. I never work more than 40 hrs per week. I get headhunters calling me a couple times a month asking if I know any unemployed SW engineers; I don't know any.

The Cost of living calculator tells me I'd be making $210,000 in NYC or $185,000 in Seattle WA.

I could make more per year as a lawyer, but is $150K for 60 hour work weeks really better than $100K for 40 hour work weeks?

Yeah, but you spend those 40 hours in Detroit... tough to call, man... even with the reputation hit that you'd inherit from being a lawyer

but then I read other reports that say that this will just cause more offshoring and h1b influx. I can't get a good read on this issue

Offshoring and h1b influx have been talked about for decades as the boogey-man of the industry. The reality is that it isn't a problem for good, local developers, for two main reasons:1) The main reason for off-shoring is because companies simply can't hire enough local people. Even the places that off-shore typically hire as many locals as they can to be local eyes/ears they can talk to and to keep track of the off-shore folks. The other main reason for off-shoring is to pawn off dull/repetitious work to low-paid code monkeys. If we ever build up enough local programmers to do this work, it won't get outsourced.2) There is a very common urban legend that claims that $80/hr locals can be replaced by $20/hr foreigners. Most business have discovered this is a fallacy. (In reality, the $20/hr foreigners might actually be skilled enough to accomplish $20/hr of work, but often aren't, and the skilled foreigners are charging the same amount as locals, certainly not $20/hr. IOW, you get what you pay for.) Even if a business tries this strategy, it typically fails, and they end up hiring locals after the outsourcing was a disaster. (In my career, I've gotten several jobs from places hiring after bad outsourcing experiences.)

underscore wrote:

Is software engineering a good career to go into (employment prospects/salary/barrier to entry etc)?

Hell yes. They don't routinely list it as one of the best jobs out there for no reason. There are other jobs where you can make more money, but almost all of them routinely require >>>40hrs/weeks, more corporate politics and more education. I don't know of ANY other 40/wk job where you can routinely get senior-level work (and paychecks) after only 5-10 years of experience, with nothing more than a bachelors degree and ongoing self-study.

underscore wrote:

Will a good developer always be able to find work?

Absolutely. There are far fewer good developers than people who want to hire them, and there is nothing on the horizon that looks to be changing that fact. With only mild networking, you will hear about new jobs every week, no matter what the economy is like. Even if you get fired/outsourced/laid-off/etc., you can easily get new gigs in under a month.

NOTE: All of this depends on you being a "good" developer. If you are clock-watching mediocre employee who has no passion for the craft, the career is still good, but maybe not -that- good. Don't expect senior-level work/pay to come quickly if you aren't passionate about being good at your craft.

I have 10 years experience, and make $100,000 /yr in Detroit, MI at a fortune 500 company. I never work more than 40 hrs per week. I get headhunters calling me a couple times a month asking if I know any unemployed SW engineers; I don't know any.

The Cost of living calculator tells me I'd be making $210,000 in NYC or $185,000 in Seattle WA.

I could make more per year as a lawyer, but is $150K for 60 hour work weeks really better than $100K for 40 hour work weeks?

Well, first of all lawyers make shit money.

Second, your assumption of what you'd be worth in NYC is pretty far off.

In Detroit you're competing against a lower caliber of developer. There's a lot more competition in NYC, and it takes more than being good technically to make it here.

Developer salaries start to top out around $150K as far as I can tell. After that you need to start looking for places that pay bonuses to get anywhere near $200k, and you're a fool to count on a bonus as part of your real income.

A cost of living calculator tells you how much you would need to earn in order to maintain the same standard of living. It does not tell you how much people in that area realistically earn.

If you're looking into solely on its merits as a "good career" one key question that you left out is what are the alternatives you're considering?

My personal example: he things I've always been interested in are engineering (actually only finding my true preference/skill for the software side of it after four years of college), writing, and photography. So deciding which one to pursue as a primary, stable career was pretty easy for me.

I put a lot of thought into the above title, and it is not the best way of describing this post, but I am a little tired and also unoriginal.

I read conflicting information nearly every week about the realities of a career as a software developer. The bls indicates that this career should experience high growth, but then I read other reports that say that this will just cause more offshoring and h1b influx. I can't get a good read on this issue - maybe I'm looking in the wrong places? It also doesn't help that I'm not in the US (Ireland):/. I don't want to make snap decisions, so I turn to the ars forum, who must have seen every side to this issue due to working in it and seeing it on a daily basis.

Is software engineering a good career to go into (employment prospects/salary/barrier to entry etc)? Will a good developer always be able to find work? I could say more on this, but I feel like you must all know of the news reports that mention these issues, so I will turn the floor over to you.

Thanks,

underscore

I'm Irish (but live in London). Even with the country collapsing in on itself, I'm still getting calls from Irish recruiters. If you are in any way decent at the job you will have work, without a doubt.

Edited to add: If you want to have a chat about what working in the Irish software industry is like or have any other Irish specific questions, please feel free to PM me.

Off-shoring isn't as big of a problem as the media makes it out to be. In many respects it was a management fad, in other ways it is still evolving.

Off-shoring is *fucking great* where I am right now. I get to do the cool, interesting stuff. The boring, tedious, repetitive, soul-sucking stuff gets done by the off-shore team. And we're still trying to hire more locally, but Google keeps poaching them.

I'd say the job market is great for senior engineers right now, but junior engineers are having a harder time of it.

Almost anything which can be moved to be done in software, is being. It's one of the least industry specific skills, almost any company in any industry uses it. I imagine the only ways software development is going to become a non-job is with a huge collapse to a non-industrial society, a revolution in self-writing software, or a draconian patent system locking the entire industry into stagnation. But ha ha, none of those are likely, eh?

First, the Jevons effect. Second, the more we know how to do the more ambitious our next projects become. Third, 'ephemeralization' conveniently ignores the billions strong cheap workforce that much of our progress is based on. Fourth, the world is continuously becoming more complex whether we like it or not. Fifth, You can be as efficient as you want but as soon as you run out of a critical resource you're up shit creek and have to come up with creative solutions.

Anyway this is offtopic. Software is big and not getting smaller. And what Blacken said.

the ability of technological advancement to do "more and more with less and less

which is at least close to true though it's more complicated than that, and then I read

Quote:

until eventually you can do everything with nothing

which is LOLWUTFUCKNO.

It was a bit of a kneejerk reaction, I admit. I can't really judge it anyway cause I haven't read Fuller's book. We can take it to another thread if you wish, though someone would have to explain Fuller's idea in more detail than the Wiki entry.

I took the bit about "until you can do everything with nothing" as a joke, I haven't read his book either. But see: Paul Graham on Tablets essay.

"The advantages of doing things in software on a single device are so great that everything that can get turned into software will.", he says. That rings true to me, and paints a good future for demand for software people.

Almost anything which can be moved to be done in software, is being. It's one of the least industry specific skills, almost any company in any industry uses it. I imagine the only ways software development is going to become a non-job is with a huge collapse to a non-industrial society, a revolution in self-writing software, or a draconian patent system locking the entire industry into stagnation. But ha ha, none of those are likely, eh?

Yes, it's basically the electric loom writ large over absolutely EVERY industry. It's concentrating economic gains in the hands of a few people/companies, and destroying huge numbers of jobs in its wake.

I know plenty of ex-developers who left the industry or were forced out. They were all in it for the money and/or because it was a good career. They didn't have the passion and they stagnated. They were mediocre developers at best.

The ones that have the passion are great developers and rarely have a problem finding work. Outsourcing isn't a problem. You can make a lot of money fixing botched outsourced projects

In short if you love solving problems and creating new things with software then go for it, you will love it and be well rewarded.If you want to be a developer because its a good career, don't, you will be looking for a new career in a couple of years.

If you are motivated and like it I think it's a great career. Right out of college I work with young guys making $60k, but who knows maybe that is less than other careers.

For me, I really like computers, and programming is very cool in that I get to solve hard problems and see my software used. I feel totally badass working on code, and I like using my brain.

The downside is that you end up sitting a lot, so you need to remember to exercise, and also get your social events planned in advance because there is not a lot of socialization at work since I'm focused on writing code. The successful programmers I know just like to program, and the decent living you can make is a perk. It's hard work, but you get an interesting job and you get to program.

Programming isn't easy, and I don't think everyone can or wants to do it. You can also go into writing hardware drivers, web development, user interface, graphics, and there are so many very different areas that require programming skills.

1) The main reason for off-shoring is because companies simply can't hire enough local people. Even the places that off-shore typically hire as many locals as they can to be local eyes/ears they can talk to and to keep track of the off-shore folks. The other main reason for off-shoring is to pawn off dull/repetitious work to low-paid code monkeys. If we ever build up enough local programmers to do this work, it won't get outsourced.

Unless you're HP, at which point, you lay off hundreds of people using what is essentially a random selection process with little regard for job function and performance, and immediately expand your contract dollars with Wipro to cover the man hours. For many large companies, it is a PURE cost savings play with little regard for the consequences.

Quote:

2) There is a very common urban legend that claims that $80/hr locals can be replaced by $20/hr foreigners. Most business have discovered this is a fallacy. (In reality, the $20/hr foreigners might actually be skilled enough to accomplish $20/hr of work, but often aren't, and the skilled foreigners are charging the same amount as locals, certainly not $20/hr. IOW, you get what you pay for.) Even if a business tries this strategy, it typically fails, and they end up hiring locals after the outsourcing was a disaster. (In my career, I've gotten several jobs from places hiring after bad outsourcing experiences.)

Again, unless you're HP, at which point you repeatedly slam your metaphorical outsourcing head against the brick wall of reality, and continually have product quality degrade over the years. Meanwhile, managers can't fathom why sales suck, and warranty costs are so high.

If you are motivated and like it I think it's a great career. Right out of college I work with young guys making $60k, but who knows maybe that is less than other careers.

If somebody out of college is starting at $60K in Seattle (your tribus), I'd venture to guess that they're settling for an early offer or they're not very good. Minimum starting that I see at companies I'd want to work in either Boston or Seattle for is around $75K, with the highest I've seen outside of Silicon Valley and NYC around $90K for a graduate of a four-year degree program. Body shops like IBM push $60K across the board (engineering and entry-level consulting alike), but good companies to work for, not so much.

Right now there are relatively few professions where you can walk out of a four-year degree program and into a job that pays as well as computer programming. It is a really, really good time to be doing this.

I have 10 years experience, and make $100,000 /yr in Detroit, MI at a fortune 500 company. I never work more than 40 hrs per week. I get headhunters calling me a couple times a month asking if I know any unemployed SW engineers; I don't know any.

Where do you work and can you get me a job? I'm making about half that in Ann Arbor, but I've not no degree and about 5 years of embedded system dev under my belt.

As a career, it's hard to beat; it pays better than most jobs, you get to work indoors, you get to play with cool toys.

But...

You have to enjoy writing code for its own sake, regardless of the pay. Most industry jobs are variations on shoving data around; there aren't many jobs that are genuinely interesting on their own. Boredom is a crippling job hazard; you will want to do hobby projects on the side to keep your brain sharp. Offshoring isn't as big a problem as most people make it out to be, and there's been a spate of on-shoring happening as companies bring jobs back. Don't expect anything resembling job security, however; odds are you will be laid off several times over the course of your career (I was laid off for the third time last May). The longest I've stayed in any one place is 8 years; the shortest is 9 months.

Smaller companies are more fun to work in and offer better chances for advancement, bigger companies offer better benefits and security.

Even if you end up being mediocre at programming (and there is really no way to know ahead of time), there are a bunch of off ramps to other titles that need familiarity without actually being programming jobs.

Some aren't quite as well paying, but some are even better. I know one guy that went from programming financial models to designing them - and the company paid for a masters in applied math to help make the transition.

For many large companies, [offshoring] is a PURE cost savings play with little regard for the consequences.

Short-term, yes. Long-term, my experience (and that of others in this thread, AFAICT) is that the cost savings come back, multiplied, to onshore senior devs, one way or another.

Quote:

Again, unless you're HP, at which point you repeatedly slam your metaphorical outsourcing head against the brick wall of reality, and continually have product quality degrade over the years. Meanwhile, managers can't fathom why sales suck, and warranty costs are so high.

Nobody seems to be arguing that HP is a well-run company. The only real question is how they managed to survive the last 15 years.

I'm originally from Ireland, although now I work as a software developer in Cambridge in the UK. I'm not really sure what it's like elsewhere in Ireland and the UK, but there are certainly software development jobs available in my area at the moment.

I originally studied Electronic Engineering in University. My favourite course was Computer Science, where I learnt to program in C, and I did some programming on the side. Eventually I came to the realisation that programming was what I wanted to do so I got a job doing Java development for a games company for a couple of years. I continued to program in my spare time and to read programming books and blogs. I thought myself C++ this way.

Last year I got a chance to do some iPhone development in Objective C and C++ for a few games that the company were developing. I fell in love with mobile development and after the games company abandoned the iPhone market, I found a job as an App developer making iPhone and Android apps at my current employer.

The work can be tough at times to the point of stressful if you're coming up against a deadline. It can also involve long hours. You really need to love the challenge posed by solving problems and creating useful software in order to get through these times. At the end, when you actually ship a product, it can be very satisfying to see people complement it.

My advice would be to try to pick up a language in your spare time, choose to develop an app that sounds interesting to you and see whether you catch the bug. There's really no other way to find out whether you will enjoy things. Python is an awesome first language.

One big "pitfall" of software engineering that hasn't been mentioned, that you have to understand and accept is that you WILL work with ever-changing requirements and will rarely be recognized by higher ups for good work.

Numerous programmers spiral down-hill when they can't accept that changing requirements are a reality, and that they probably won't get constant verbal accolades from their bosses. Programmers who can't deal with these two realities get frustrated and burn out rapidly. Some guys get fooled in school when they see these wonderfully thought-out specs for the programs they write as code for their homework, and think that those clear and unchanging specs are somehow representative of the real world. They see fair and honest feedback on assignments ("Look! I got an A+!") and think they might receive that type of feedback in the work world.

The reality is that most assignments change over time, sometimes radically, and that means you will go down rabbit trails that will result in days/weeks of hard work being tossed away because the requirements have changed and your work is no longer useful. It will happen. Additionally, non-tech people don't understand tech well enough to judge your technical skills, and they aren't going to praise you every day for your knowledge of C programming.

Successful programmers accept these two realities, and learn their craft to maximize their chances of being successful when requirements change, and they learn to self-congratulate themselves on their work.

NOTE: Although what I said is completely true, the idea that these are the two of the hardest parts of this career (and they probably are) is almost laughable. This (IMHO) is one of the greatest careers out there, and I know of no career with similar salaries that doesn't have 10X more problems associated with it.

^^ I think of it like this:TL;DR: Don't be precious about your code. I am not judging anyone else's feelings on the matter, I'm just stating the mindset that I've kept in recent years.

You are responsible for your code, but you don't own your code, your employer owns it. If your employer believes it's in their best interests to change direction/requirements and throw away code you've written, that's their prerogative. As long as you're in a healthy workplace, try to realize that removing/refactoring code helps the company with it's goal, which is to make money. Your goal (within the company, at least) should be the company's goals. If you're stuck in a dilbert-esque cubicle hell, think of it like you're an independent contractor, and they have you signed for a time and materials contract for 40 hours a week.

Whenever I get frustrated, I always find it helps to take a step back and see how everyone (including my manager's) efforts are fitting into the big picture. If they don't fit, maybe that's not the best place to be. Not saying to quit or anything, because everyone needs to pay their rent, but looking at things this way helps me to get excited about things I should get excited about, and accept the inanity of everything else.

When I join a new team, I make it a point to state up front and very clearly: "I am not precious about my code. If you see anything that could be done better, is redundant or not needed, or should be changed in any way, either make the change yourself if it's appropriate, or come see me, we'll talk about it, and make the change. I promise not to be offended in any way."

By my best guesstimation, between changing requirements and re-engineering, I probably toss about 50% of my committed code over the course of a year.

Numerous programmers spiral down-hill when they can't accept ... that they probably won't get constant verbal accolades from their bosses.

Don Draper wrote:

That's what the money is for!

Anybody going into any job expecting emotional validation from their superiors is going to be disappointed; programming's no worse than any other field in that regard. Hell, from my perspective, the less interaction I have with my manager, the better.

It's a job. It's what you do to keep food on the table and a roof over your head.

I receive a half dozen inquiries or more a week for senior level positions in Phoenix. I've had agencies try and get me to relocate to Colorado, Texas, Chicago and California. Granted I've got nearly twenty years of experience, but it is definitely an active field right now. It focuses very heavily on experience over degree though degree is vital if you don't have very much experience. The key thing I look for in a candidate is their ability to solve problems, apply logic to break large problems into smaller ones and the ability to figure out when it's more valuable to work through something on their own verse spending five minutes with a more senior person. Brains, initiative and good communication skills are vital.