my dog learned polymorphism*
The moose likes Jobs Discussion and the fly likes future job prospects for Computer programmers in the USA Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Careers » Jobs Discussion
Bookmark "future job prospects for Computer programmers in the USA" Watch "future job prospects for Computer programmers in the USA" New topic
Author

future job prospects for Computer programmers in the USA

derek smythe
Ranch Hand

Joined: Apr 18, 2011
Posts: 63
Hi, I was wondering if anyone could tell me the difference between programmers and "software engineers". Because at this link, the jobs in the USA for computer programmers is supposed to decline, while the jobs for "software engineers" is supposed to rise rapidly in the next 7 years. Here is the study.



computer programming career

note this has been posted here as well. here
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18989
    
  40

Slight detour. In general, the difference between a science degree and an engineering degree, is that the scientist is concerned with theory and research, while the engineer is concerned with the application of that research. In the case of a chemist and a chemical engineer (my degree), the distinction is clear. The first works in a lab while the second works in a plant (with much bigger and much cooler equipment ... ).

IMO, in the case of a computer scientist and computer engineer, this distinction is not as clear. And there seems to be tons of overlap between the two.



As for the article, it seems to imply that a computer engineer designs algorithms (and programs), but doesn't actually code them. This doesn't seem right to me. How many people design programs but doesn't code them?

You can argue that when you are a junior person on a team, then you only do the coding part, but then, how do you code without understanding the algorithm? And after many years of coding (and hopefully understanding the algos), how come you can grow into a computer engineer? what is missing that only the degree can give? It's a confusion distinction, IMO.

Henry

Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
derek smythe
Ranch Hand

Joined: Apr 18, 2011
Posts: 63
thank you. Yes even the government in the US is confused I believe. Here is a link that calls programmers software engineers. I think software engineers are just senior coders who do less or no programming anymore. But here is the link.

software engineering link

I think the more you know, the less likely you are to be replaced by an outsourced person.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1848
    
  16

Steve McConnell has an interesting take on the difference between software engineering and computer science. His approach rings true to me: I've worked with a number of Computer Science graduates who were really great at the theory, but found it very difficult to take a pragmatic approach to using tried and tested techniques to meet the client's requirements on time/budget. In some cases, this bias towards theorising and re-inventing the wheel has cost the customer a great deal of money, so the difference in approaches is real and can have a significant impact on a project.

Don't know about your prospects of surviving the outsourcing/offshoring boom in the USA, but here in the UK, offshore outsourcing (and "onshoring" of cheap offshore staff to replace UK-based workers) is hitting pretty much all levels of the industry, as whole departments are outsourced to multinational consultancies, who then either ship the work offshore or bring in offshore staff to replace the original experienced (=expensive) staff. I have worked with a number of experienced developers and architects in recent years whose roles at their last workplaces were apparently outsourced/offshored in this way, and it's a major issue across the UK IT industry.

So you may be right that the more you know, the more secure you might be, but don't count on it. I think it may help to pick a set of niche skills that are less likely to be provided by the great one-size-fits-all programming barns of Mumbai and Bangalore, or to move into project management or business analysis, as those jobs seem a little more likely to stay onshore than the mainstream Java developer roles.

Testing and QA is another track that seems to be holding out, partly because the whole outsourced/offshore development model imposes far greater demands for clear requirements, clear communication and thorough testing of the end products. Indeed, it's ironic that at a time when Agile methodologies seem to be trying to break down the barriers to communication and collaboration between business users and developers, to provide rapid feedback cycles and improve the quality of delivered products, the industry as a whole is creating much greater geographical, cultural, organisational and legal barriers between the customer and the service provider.

Anyway, I'm just another grunt developer trying to keep my head above water, so my advice may not be worth much!




No more Blub for me, thank you, Vicar.
derek smythe
Ranch Hand

Joined: Apr 18, 2011
Posts: 63
Thank you for that. This link I found is older but it is positive. I was wondering if you think it is accurate or correct. Please look the links over that it links to. Thank you.


link about the future of IT
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
"computer programming" is simply writing statements in a particular programming language to create a computer application. In other words, programming is simple writing code that is all.

"engineering" or "software engineering" is a larger category which involves "computer programming" and also includes many other activities, e.g. management, presentation, training, designing, communication, hiring, contracting, estimations, cost/benefit analysis.
Luke Kolin
Ranch Hand

Joined: Sep 04, 2002
Posts: 336
Jimmy Clark wrote:"engineering" or "software engineering" is a larger category which involves "computer programming" and also includes many other activities, e.g. management, presentation, training, designing, communication, hiring, contracting, estimations, cost/benefit analysis.


I'd argue that most software engineers I've seen do little to no management, presentation, hiring or contracting. I'd also suggest that all computer programmers I know do training, designing, communication, estimation and cost/benefit analysis.

Cheers!

Luke
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
All of the activities related to the "software engineering field" and what a specific individual "software engineer" does on a daily basis is not the same. Rarely will a single individual have the time and/or opportunity to develop significant skills in all areas. Moreover, the role of "software engineer" is highly controlled by the organization that creates the position. As a result, the actual responsibilities of this position will vary from industry to industry and country to country.

A criminal lawyer will never do the things required to practice corporate law. However, a corporate lawyer and a criminal lawyer are both lawyers.

A software engineer will never to the things required to practice chemical engineering. However, a chemical engineer and a software engineer are both engineers.

Luke Kolin
Ranch Hand

Joined: Sep 04, 2002
Posts: 336
Jimmy Clark wrote:A criminal lawyer will never do the things required to practice corporate law. However, a corporate lawyer and a criminal lawyer are both lawyers.
A software engineer will never to the things required to practice chemical engineering. However, a chemical engineer and a software engineer are both engineers.


There is an important distinction - in the first example, both of our attorneys have law degrees. In the second, it's pretty likely that a "software engineer" will NOT have a degree in engineering, and there's a decent chance he or she may not have a technical degree - or one at all.

Cheers!

Luke
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
Thank for pointing that out Luke. It is a good point. However, there are many colleges with software engineering programs both at the Bachelor and Master level. So, it is hard to consider someone to be a "software engineer" if they do not have any related education, i.e. a degree (or decades of experience).

Aside, the world is a pretty big place and I prefer to NOT equate my personal observations or experience as "how things are everywhere under the sun."
Luke Kolin
Ranch Hand

Joined: Sep 04, 2002
Posts: 336
Jimmy Clark wrote:However, there are many colleges with software engineering programs both at the Bachelor and Master level.


That is rather irrelevant to the discussion. If a formal education in a specific discipline is not required in order to perform a particular role, why should the number of educational institutions offering this formal education make any difference?

So, it is hard to consider someone to be a "software engineer" if they do not have any related education, i.e. a degree (or decades of experience).


Completely on the contrary - I think the best way to consider what someone is, is to look at what they are doing. I would consider someone to be a software engineer if they were doing "software engineering" (whatever the heck that is). Their education might be a hint, but it's an incredibly imperfect and unreliable one. Experience I would consider in the same vein - I'd trust someone writing code for just a few years far more than a newly minted college graduate.

Aside, the world is a pretty big place and I prefer to NOT equate my personal observations or experience as "how things are everywhere under the sun."


I pointed out the difference between programming and law because law is a very regulated profession, and in every state in the United States prohibits me from practicing law without a license and in order to get a license in most (but all) states, I need a law degree. If you don't want to discuss my personal anecdotes, then perhaps you can tell me what jurisdictions prohibit me from working as a software engineer without a degree specifically in software engineering?

FWIW, I think focusing on a degree or experience is rather foolish, in any case. Good code is a very qualitative thing, much like music or writing. No one claimed that Robert Plant was not a musician despite his lack of a music degree and being an inexperienced 20 year old when Led Zeppelin was founded. In fact, I'd argue than in artistic pursuits, a formal education and decades of experience are more likely to be a hindrance than a benefit, but that's just me. (And yes, writing software is software engineering as much as writing literature is literary engineering.)

Why do you feel a formal education is important, and how specific should it be?

Cheers!

Luke
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
Writing software code for Jim's website for his local business selling cardboard, and writing software code for control systems that guide missiles or control spacecraft are not the same.
Luke Kolin
Ranch Hand

Joined: Sep 04, 2002
Posts: 336
Jimmy Clark wrote:Writing software code for Jim's website for his local business selling cardboard, and writing software code for control systems that guide missiles or control spacecraft are not the same.


True. When I take my child in for a sore throat and I get antibiotics prescribed, it is done by a doctor. So is open-heart surgery. When I refinanced my mortgage or when a capital murder case is litigated, both are handled by lawyers. In both cases a single title gives us little idea of the complexity of the work involved.

I think I have missed what you were attempting to convey.

Cheers!

Luke
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1848
    
  16

I think maybe we're all getting a bit too hung up on titles here. There is certainly a distinction between a degree in computer science and one in software engineering, just as there is between a degree in physics and one in e.g. civil engineering. And somebody with either of these qualifications may be a good computer programmer, but that's just one skill in their respective specialisms.

But IMHO the commercial IT industry is often driven less by computer science or software engineering principles, and more by hype and title-inflation. In my work as a database applications developer I've been called a programmer, developer, builder, software engineer, analyst-programmer, even "executive officer" (I've also been called things a lot worse, but let's not go into that...), but the work I was doing stayed much the same. FWIW I tend to stick with "developer" because it can cover more activities than just programming, such as detailed analysis and design, data modelling etc, i.e. skills that fit in with my old-school RAD approach to my work. And I don't have a software engineering qualification so I don't call myself a software engineer.

In any case, I hardly ever meet anybody these days who calls themselves a programmer (even "developer" seems insufficiently grandiose to some people), because "mere programming" is increasingly (and wrongly) regarded as work for coding monkeys, so everybody wants to be a "designer", "analyst", "engineer", "business analyst", "architect","data architect", "software solutions architect", even "visionary" or whatever the latest cool title might be to beef up your CV and keep you one step ahead of the outsourcing tsunami. (The system I'm working on right now could have been built with the same functionality 10 years ago with maybe 2 analysts and 4 or 5 experienced developers. Now we have 4 architects, 3 business analysts, 3 designers, and 12 developers, and we're still behind schedule. I guess nobody read "The Mythical Man Month"!)

Sure, some of these titles describe distinct activities (different levels of analysis vs. development), but in practice there is also a lot of BS surrounding many of these distinctions. Some places I work in these days feel like the army of some unreliable republic, where everybody's at least a colonel, and people are more concerned about restricting who is permitted to do another "rank's" work than actually getting the job done.

But if you're concerned about your career prospects, ignore the titles, because they will change constantly with each year's fashions, and focus on the skills that will be needed to do the kind of work you want to be doing in the years to come.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: future job prospects for Computer programmers in the USA