Believe the Occupational Outlook Handbook?
concerned00 writes "In their latest Occupational Outlook Handbook, the US Bureau of Labor Statistics says that employment of software engineers and system analysts is expected to increase 'much faster than the average' through 2014 (here, and here). In contrast, employment of programmers is expected to increase 'more slowly than the average,' with outsourcing given as one of the major reasons why (here). However, from the stories I read from American programmers on the Net, the profession is lost. Is the government wrong, or lying, then, when it implies that software engineers and system analysts can expect to have a good future? As an American, am I a fool if I decide to undertake this for a living?" Read more for details of concerned00's analysis.
The difference between a "software engineer" and a "programmer" seems somewhat dubious to me, although from the Web pages in question apparently the software engineer is involved in requirements gathering, analysis, and design, whereas the programmer usually is not. According to the Web page for programmers, "[t]he consolidation and centralization of systems and applications, developments in packaged software, advances in programming languages and tools, and the growing ability of users to design, write, and implement more of their own programs mean that more of the programming functions can be transferred from programmers to other types of information workers, such as computer software engineers." (?)
The page for software engineers says: "Computer software engineers are projected to be one of the fastest-growing occupations from 2004 to 2014." Reasons given: the increasing complexity of computer systems, the need to "adopt and integrate new technologies," "the expanding integration of Internet technologies and the explosive growth in electronic commerce," the increasing reliance on "hand-held computers and wireless networks," and concerns about security. Yet: "As with other information technology jobs, employment growth of computer software engineers may be tempered somewhat as more software development is contracted out abroad. Firms may look to cut costs by shifting operations to lower wage foreign countries with highly educated workers who have strong technical skills. At the same time, jobs in software engineering are less prone to being sent abroad compared with jobs in other computer specialties, because the occupation requires innovation and intense research and development." (?)
On the other hand, to hear the personal anecdotes of many (American) programmers on the Internet, the profession is lost and anyone in college majoring in computer science or software engineering must be either naive or insane. According to them, you have to be a genius programmer if you expect to compete successfully for the slim pickings that are left, there is no job security at all, and the best most can realistically hope for these days is a job at Home Depot. Furthermore, even if you could get work, you wouldn't want it: the deadlines are impossible, the bosses are naive, petty-minded, and perversely self-serving, and the technology changes so fast that if you allow yourself to slip behind you might as well kiss your career good-bye.
The difference between a "software engineer" and a "programmer" seems somewhat dubious to me, although from the Web pages in question apparently the software engineer is involved in requirements gathering, analysis, and design, whereas the programmer usually is not. According to the Web page for programmers, "[t]he consolidation and centralization of systems and applications, developments in packaged software, advances in programming languages and tools, and the growing ability of users to design, write, and implement more of their own programs mean that more of the programming functions can be transferred from programmers to other types of information workers, such as computer software engineers." (?)
The page for software engineers says: "Computer software engineers are projected to be one of the fastest-growing occupations from 2004 to 2014." Reasons given: the increasing complexity of computer systems, the need to "adopt and integrate new technologies," "the expanding integration of Internet technologies and the explosive growth in electronic commerce," the increasing reliance on "hand-held computers and wireless networks," and concerns about security. Yet: "As with other information technology jobs, employment growth of computer software engineers may be tempered somewhat as more software development is contracted out abroad. Firms may look to cut costs by shifting operations to lower wage foreign countries with highly educated workers who have strong technical skills. At the same time, jobs in software engineering are less prone to being sent abroad compared with jobs in other computer specialties, because the occupation requires innovation and intense research and development." (?)
On the other hand, to hear the personal anecdotes of many (American) programmers on the Internet, the profession is lost and anyone in college majoring in computer science or software engineering must be either naive or insane. According to them, you have to be a genius programmer if you expect to compete successfully for the slim pickings that are left, there is no job security at all, and the best most can realistically hope for these days is a job at Home Depot. Furthermore, even if you could get work, you wouldn't want it: the deadlines are impossible, the bosses are naive, petty-minded, and perversely self-serving, and the technology changes so fast that if you allow yourself to slip behind you might as well kiss your career good-bye.
I believe it, but you can't get there from here.
Software engineers and software analysts are *highly skilled* positions that require experience in addition to at least a Bachelor's degree in Software Engineering or Software Project Management.
Programming, on the other hand, can be done by anybody with a Computer Science or related mathematical degree, usually a two year Associate's degree. India is graduating 50,000 people with this training EVERY YEAR.
You need to know some demographics to understand why, in the 2008-2014 era, the first will be in demand- it's because the first generation of Software Engineers and Analysts and Project Managers are all Baby Boomers. They're all in their late 50s and early 60s now- getting ready to retire. We're going to need to replace them with people who have similar skill levels.
Which leads to my question to prompt discussion: just how the hell do you become a software engineer without being a programmer first, unless you're independently wealthy enough to work in Open Source for 5-10 years?
One potential answer is government instead of private industry- I'm a software engineer with 10 years of experience and that's where I ended up after the last recession because I simply didn't have enough experience in enough languages to get a private industry job.
But beyond that- I just don't see any way for a young person graduating from high school to become a software engineer anymore. Sure, you can probably get the 4 years of schooling. But you'll be competing with people who earn $2.50/hr halfway around the world when it comes to getting experience. And that's not a winning bet when it comes to paying back your $40,000 of student loans it will take to get that Bachelor's degree.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
You are a fool to choose a career that doesn't interest you. Pick something you love, and you'll be happy. And as far as money is concerned, if you actually enjoy it, it will show in your work and you will be sought after.
The Handbook's conclusion is probably correct, but the reasons they give are pretty much incoherent. My theory goes like this.
There's a food chain in project development. At the top is the customer, and at the bottom are the implementers. The closer you are to the top, the more important it is to the customer to be in the same country as the customer. The closer you are to the bottom, the more likely your job can be done in any country.
I don't like it, either, but there you go.
--Rob
Towards the Singularity.
If you aren't good, then:
- You won't enjoy it
- People who are good won't enjoy working with you
- You'll have cause to seriously worry about outsourcing as competition for your job
People who say the profession is dead mean that the profession is no longer supporting as many gross incompetents as it did back during the boom. That's thankfully quite true.The point: Don't go into software development as a profession if you're in it for the money. You won't want the profession, and the profession doesn't want you. If you're in it for something other than the money -- come on in, the water's fine.
I won't speak to the accuracy of the studies that you might be citing, I haven't read them. But remember that anecdotes collected on the internet, or anywhere else, are almost useless since they are self-selecting participants in an ill designed casual survey. You don't have a real survey, you have the rantings of perhaps ill treated people.
All the technology in the world won't hide your lack of vision, talent, or understanding.
While it is true that "software engineer" spots are going overseas at high rates, two things should be taken into account:
/shrug
1) "Software engineer" isn't the shiny, highly-technical bastion of the well-edumacated like it used to be. As computers have become more standardized these jobs, like many other "old high-tech" jobs, have become more or less commodity positions. Look at clerical (read: typing/wordprocessor, etc.) work, for example. Everyone and their dog thinks that if they can use Windows, they're automagically a PC expert.
2) The "jobs are going overseas" mechanic implies a zero-sum game, when there isn't one. There is a growing need for generic PC software weenies in all sorts of QA and other fields at companies that didn't need them a few years back. This is A Good Thing(tm).
So, basically, having been in the industry pre and post-dot-com-boom, I'm more or less of the "Nothing to see here, move along," mindset.
The answer is in the summary. Programmers are a dime a dozen. Software engineers are useful. I've never hired anybody with a CIS degree because they were taught to be (shitty) programmers. However, folks from all walks of life can learn to be software engineers if they apply a bit of logic and problem solving skills. With outsourcing, more and more modules will be programmed by contractors (probably overseas) and more and more design will be done by software engineers then (not) done by programmers.
Is slowly dying due to its own success in automation, and making hardware nearly disposable.
As things improve each generation, and reduce the need for support people, the jobs get fewer and fewer. Only a handfull of people will be needed at the end of all this. A lot like toaster support.
---- Booth was a patriot ----
I have been a software engineer (working as an independent consultant) for 15+ years. I see plenty of jobs. At least once a year someone asks me if I'm available (I'm not) or whether I know of someone good looking for work (I don't). As with almost any profession, if you are very good at what you do then you won't have any problem finding work. If you are merely "good" (or worse) then you'll have trouble if the field isn't "hot" at the time.
So, you have to ask yourself, "Am I merely good, or am I very good (or even better)?" I think that a lot of what determines that is enjoyment of the field. If you really enjoy programming, are really bothered when something doesn't work, are really driven to find an explanation for the "strange" behavior you are seeing, then you probably have what it takes. If software engineering is just some major that you're ok at that you think will pay well then it probably won't in fact pay well for you and probably isn't the right thing for you.
Good luck.
And a waste of material to boot, if you pick a profession based on its earning potential. And I really have no patience for lectures on how arrogant my saying this is.
Do, what you love to do — and get to be really good at it, and you'll earn a lot.
The problem with Programming today is that much more programming suddenly became required over the last decade or two, than there were naturally born and/or nurtured programmers. You had people becoming "programmers" after a 2-6 months courses... Asking these people, what bit is, results in stares and head-scratching. Many of the better ones got promoted too high as well (a problem in many other professions in America due to its low unemployment today, BTW).
That much of the work of these programmer wanna-bees is outsourced is a good thing — maybe, the quality of burgers will improve, and/or hiring a (legal) baby-sitter will become possible again. The real professionals — and those, who really want to become professionals — don't have much to fear...
In Soviet Washington the swamp drains you.
On the other hand, to hear the personal anecdotes of many (American) programmers on the Internet, the profession is lost and anyone in college majoring in computer science or software engineering must be either naive or insane.
...
... there is no job security at all ...
... the technology changes so fast that if you allow yourself to slip behind you might as well kiss your career good-bye ...
And yet nearly everyone I know has an incredibly difficult time filling software engineering positions.
According to them, you have to be a genius programmer if you expect to compete successfully for the slim pickings that are left,
Genius? No. However let me make a distinction between those who enter a computer science program because they are genuinely interested in software compared to those who entered because someone told them it was a good career path. The former will generally not have a problem, more on that below.
Let me also rant on "programmers" a little. During the internet bubble anyone who could write two partially correct lines of code/script fashioned themselves a programmer and some of these collected salaries far beyond their true worth. I think many of those whining about conditions today come from this pool of talent, not all, but many.
That is universal, not specific to software development. However software developers are inherently better prepared to move from one company to another, work from home, start your own business, etc.
Now we return to those who have a genuine interest. Such people tend to tinker with new things at home, on their own time, for fun, and this helps them keep up to date and get/keep the jobs they want. I was dumbfounded many years ago when a coworker (fortunately on a different team) was hoping to be assigned to a particular project because he wanted to learn C++, the language that was to be used. He thought I was crazy when I suggested he get a compiler and learn the language on his own rather than wait for such an event.
A more generic outlook is this. Software can be produced in any country, anywhere at all, and the only thing it requires is the competent personnel to execute the project. India and China produce more software developers in total, and proportionally more *excellent* developers. Now imagine that someone in the world (a transnational corporation, for example, which does not care where the job is done) needs to develop and write a complex software system to, say, operate a 23-legged underwater spider that is being built to fix underwater fiber cables. The company will build the hardware, and now it needs to find a software developer (a company, of course) that can provide at least 100 developers full time, at least 25 senior developers, and a proportional number of managers and other necessary overhead.
Given these example conditions, let's see which company will win the bid. A US company will be burdened with high salaries, and at the same time will not be able to provide so many competent developers (warm bodies do not count.) Ability to work *seriously* overtime is probably not there; willingness to travel and participate in testing in Philippines is probably not there either. Compare to an Indian company which can give you as many workers as you need, at fraction of the cost, and they are all best of the best. A US company would need to have some very tangible advantages to win the bid, but I can't imagine how they can win on costs. Practically the only usable story here is previous experience and the ownership of relevant intellectual property, and good luck if they have it. But a US newcomer has no chance to win the bid; and even older companies, with experience of underwater and robotic works, will face fierce competition from far more populous countries.
In other words, a US worker is overpriced on the global market, and exceptions are rare. The USA does export technology, but it is in markets that have extreme barrier of entry (airplanes, nuclear reactors, Windows OS, drugs, CPU and IC designs) or when the products are weapons. Those are the major sectors of US export (not counting food products, since they are not relevant to this discussion.) More and more of US technological output is in knowledge only, and software developers are not high enough to qualify as such.
Why all this is happening is simple. Humans and societies develop more and more knowledge and skills, and then they get to a plateau - no more intellectual growth. That's what Europe and the USA reached decades ago. During that time Chinese cast iron at home and shot intellectuals, and in India Hindus and Moslems tried to determine whose god is mightier. Physics of semiconductors and quantum effects in P-N barriers were not on the horizon there. But now the developing nations advanced, as they should, and they are quickly approaching the same knowledge plateau that US and Europe encountered earlier. That's why they are becoming competitive - their PhDs are just as smart now as any european or american PhD, and there are far more of them, and they charge far less, and the process is only unwinding out of control.
I have a slightly different take on the definition of a programmer vs. software engineer.
I used to call myself a software engineer. Now that I work in the games industry I call myself a programmer, and I'm much more proud of the title than I was of software engineer.
Programmers create. Software engineers integrate.
Programmers get it done. Software engineers talk about getting it done.
Programmers are technical. Software engineers are technical writers.
The world needs both, and I take offense to comments that claim programmers aren't as well educated. I have an MS in CS.
Where I work there is little place for programmers or computer scientists. You have to be able to program, but you also have to be able to write software that shows that you have an ability to construct and follow requirements, use good design practices, and well, approach it like an engineer. They aren't as concerned with whether or not we are the best Java programmer, .NET programmer, etc., but rather how well we can come up with sophisticated architectures for reliably handling a problem.
What we are seeing is a split where programming itself is like being a construction worker, and software engineering is like going into architecture when it comes to construction work.
Brick layers make good money... so do a lot of other jobs. In short, if you're choosing your career on money or security and not your passion, then just pick some job.
If you choose your passion as your work, you will make the job work for you and be happy.
I believe the confusion is because the Handbook is using the business definition of Software Engineer instead of the technical definition. The business definition being "an early 20s new graduate with 5 years of experience in a technology that's just been invented who has no family and is willing to work 60 hours per week for $40K p.a. plus stock shares in a company that's never shown a profit".
So my advice for anyone trying to break in to the programming field would be to work in some other aspect of IT for several years - go be an SA or a network engineer or something and use your programming skills to assist you in those areas. Once you've done that you can transition into development. You'll be a MUCH better developer for it.
Beauty is just a light switch away.
How about a dose of reality. As technology has become exponentially more complex, business people risking companies on delivering it have become exponentially more stupid. And this one simple line of your statement shows why it's wrong:
Software can be produced in any country, anywhere at all, and the only thing it requires is the competent personnel to execute the project.
Show me company with "competent personnel" managing and directing a business critical software project 100% outsourced and I'll show you a company that is either working with glacial specifications or rolling the dice on total failure. The nature of business changes, requirements change, politics change, and nothing worth a damn is going to get built via "throw it over the wall to an outsourcer". Back in the pre-agile days, this was how the world ran. Stupid things were written down in thick specifications that nobody read, then budget and time ran out while unforeseen forces made whatever might have been stared worthless. With the way people operated, "over the wall" didn't matter if software development was in the next cubicle or on the next continent.
And that's where the critical issue comes in. As I jokingly indicated above, most software developers aren't building hardware/software 23 legged spiders. They're working on some internal project that enhances some other part of the business, or accelerates profitability or efficiency, or has the potential to create a new competitive edge. They're not spending millions on it either. They've got a direction and they're spending thousands over six months here on a new initiative, or a couple hundred thousand over a year on some other new initiative. They need people working WITH them to understand the business domain and leverage technology to build opportunities and MAKE MONEY.
Building software is about communication and change management. Putting 5,000 miles, 9 time zones and the history of human civilizations language and MOST importantly culture differences on top of your standard business risk is retarded. Even companies that want to pinch pennies so the CXO's expense accounts can stay fat aren't rushing off to throw stuff over the wall without identical (no, better) local personel.
That's why the job outlook is what it is for "programmers" vs. "software engineers" and "analysts". Nobody in their right mind is going to be a looser in the principal-agent problem that is outsourcing for any small to medium sized business. Oh, and any large company? What do they do? They set up their own local shop to mind the company interests.
The real problem with this, is that nobody is going to become competent at building software on a large scale until they understand what's happening on a medium and small scale. Corporate America and Europe are sowing the seeds of economic destruction by creating an environment where nobody can be paid to be a beginner or novice in building software when the only job positions open are for lucky intermediates, advanced and experts. My crystal ball prediction? In about 15 years, the US will have great greencard programs for "software engineers" with 5 or more years "programming" experience since US corporate short-sighted greed will have poisoned the well for anyone considering fighting through to find entry level work "programming" to become a "software engineer" here at home...
*** Sigs are a stupid waste of bandwidth.
... employment of software engineers and system analysts is expected to increase 'much faster than the average' through 2014 (here, and here). In contrast, employment of programmers is expected to increase 'more slowly than the average,' ...
Well golly gosh whillikers.
In my 30 years in software (before I went over to the hard side of the force) I've called myself a programmer, a system analyst, a software engineer, a system architect, and a number of other buzzwords.
Guess what: There is not a standard definition for ANY of those terms. The only distinction between them is the expectations of the employers about the strengths of various parts of your skill set.
So you call yourself the one that your prospective employer hangs on the highest-in-the-design-tree position that you can convince him you're qualified to fill, based on your own skills and your resume.
They're hiring system analysts and SW engineers locally and going abroad for programmers? That just means you have to change the top line on your resume from "programmer" to "software engineer" or "system analyst".
Don't have enough experience to qualify for whatever position they're hiring for when you're just out of school? That's the same old "break-in problem". The "can't get a job because you don't have experience and can't get experience because you don't have a job" vicious circle. It's been around as long as I've been in this industry, and I cut my teeth on computers that had vacuum tubes for the DIODES in the logic.
You get your skills through:
3) classes,
2) ripping apart and studying others' code,
1) playing with the computer to make it do something fun for you,
in that reverse order. (I know because that's how I did it, and I had some big names for teachers back in the day. The lessons were valuable. But self-directed code reading and bug fixing / feature enhancement was more so and self-directed problem solving was the top skill builder.)
You don't get your job through resumes, degrees, and certifications. You get your foot in the door through contacts with people who have seen your previous work or play. THEN you and your contact use your (tuned to the job) resume, credentials, and references from other contacts to convince the middle-manager in the suit that he's lucked into a paragon who's perfect for the job.
How do you get contacts? Initially you do as much unassigned for-fun stuff as you can when you can and let others see what you did and that you enjoy doing it and are good at it. Some of these people will remember you when somebody they know is looking for somebody like you for a job of the sort you want.
Later you'll make more contacts at work: Co-workers, managers, etc. Your network of contacts will grow to get you into more doors. Your resume's experience section will grow to calm the suits (while your other contacts serve as references ditto). And your skills will grow to let you actually perform in new positions.
Your actual skills are important: to keep impressing people so you can hold your jobs, build your resume with successful project results, and grow your contact network. But it's your contacts - as you/job matchers and references - that are what get you into the jobs.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
As for why you weren't picked, there are a couple possibilities:
- You are just not very good. In this case, the solution is simple (if not easy). Join an open source project, start your own, or do whatever it takes to get better. Maybe just reading through some guides like a zillion monkeys or even Joel. Programming is a skill, and can be developed.
- Someone else who applied was better. Whatever, it happens no matter how good you are. Move on, apply somewhere else.
- You have bad interview skills. It happens. Read What Color is Your Parachute
There are so many companies desperate for programmers out there, you too can find a job. It's just a matter of learning how to do it.Qxe4
and just like the real world, programming is in fact something that comprises of MANY fields and areas. These fields are just like jobs themselves.
.net programming and stack up msces and expect to get a job in a microsoft shop - because of the tradition these shops tend to be rather picky, and even if you are good you might have hard time just because your college is not well known.
.NET junkie ? a C++ nut ? an Assembler monkey ? Database freak ? just decide on that, and start working towards a position.
For example if you are a C++ programmer (or the language you are best at), you are like a mechanical engineer. if you are very good, you will find a very good job. if you are just ok, you will be just another 'engineer' in some obscure manufacturing plant or technical drawing room somewhere. if you have just jumped in the field for 'cash' or because your parents pushed you in, you will have problems finding a job.
if you are an assembler programmer as expertise, you are just like a painter. it will be VERY hard for you to find work, but if you are good, you will find work that noone can find, and it will be solid as hell, you will have to turn down many people. but, you have to be real, real good.
if you are a PHP/MySQL developer as expertise for example, you are like an industrial engineer. if you are good, you will find very good salary jobs. and always think of leaving and setting up your own shop. if you are just ok, then you will still easily find jobs, although not as good paid, but you at all times will be able to take on work via the internet and do freelance.
it all depends on which profession you choose. MANY cs, software engineer grads, programmers scorn php/mysql for example, even at times arguing php is not even a language (it may be, or it may not be thats not important) but this combo is whats hot on the net for a few years now, and even now the demand is nowhere near satisfied and increases. judging by the amount of free/low cost software enabling individiuals, ordinary people, very small businesses (heck, even ma&pa shops) are enabled to come on the internet and create businesses, communities, services and stuff through the php/mysql road says that the more the supply of programmers the more people will be coming in by that lane because prices are kept cheap.
you just have to choose your field accordingly. its just like choosing a business. dont go choosing a university/college that doesnt have good reputation and then learn asp,
on the other hand of the spectrum check out php/mysql developer ads, even at slashdot. they do not even require any kind of bs grad. they gather up the exact specific requirements for the job, and EXPERIENCE. because this field and what it should do and what one needs to do stuff in that is well known and defined, and when you get such people you get your work done.
therefore its all choices. programming, it is a world in itself, with MANY professions. it doesnt matter a bit if you say you are a cs grad. its like saying that "i am a human", in the midst of 7 billion people
what really are you ? a LAMPer ? a
Read radical news here