<p>I'm curious about entering this field but I'm hesitant for three main reasons: (which may all be true to varying degrees)</p>
<p>1) the rapid advancement of technology that can quickly make skills obsolete</p>
<p>2) firms can hire fresh graduates from college with the latest skills to replace senior software developers</p>
<p>3) the relative ease with which software development can be offshored to low-cost countries</p>
<p>I'd like to know from people well acquainted with the field about their view of the future of the profession and whether or not my 3 points are valid.</p>
<p>Those 3 points are valid and true.
However, the impact on a software engineer’s career are exaggerated. There is enough growth in that industry, that you’ll be just fine.</p>
<p>The rapid advancement of technology is making a lot of worker’s skills in all industries become obsolete, and that’s going to happen whether you understand what’s going on or not. Frankly, I’d rather be on the side of the people who have the ability to stay on top of the new advances rather than those who are hapless victims.</p>
<p>By just MERELY DECIDING to enter the software engineering profession means:</p>
<p>1) You WILL keep up with the latest technology
2) You WILL be a “lifetime” student.
3) You WILL buy technical books at the price of $60-$100 only to THROW AWAY 2 or 3 years later.
4) You WILL spend some nights at home reading technical books, surfing user groups and reading various white papers.
5) You WILL attend training courses on the latest technology and MAY have to pay out of your pocket.</p>
<p>All of the above AUTOMATICALLY comes with the territory the very second you decide to enter the software engineering industry.</p>
<p>The items globaltraveler listed can be true for other engineering professions as well, except for the 2 to 3 year turnarounds. I wouldn’t say you won’t have to do any of those five things if you entered another field, so take that into consideration as well. Basically, don’t expect to learn everything about your profession in college.</p>
<p>The type of software development being sent overseas is dull stuff you probably wouldn’t be interested in anyway.</p>
<p>Similar to how there used to be a time when a no-skill laborer could work in a factory in this country and earn a nice middle-class living but that is no longer the case because manufacturing these days either requires more skill or is done much more economically in other countries, I foresee a time when American programmers who are rank-and-file Visual Basic drones creating database apps and so forth will be unemployable at the wages they demand, and that American software engineers will be more focused on algorithmically complex work that requires more than fancy scripting skills.</p>
<p>Let’s be honest, a lot of software development is not complicated stuff, it just requires some skills to do and could be competently handled by somebody with a focused two-year degree and who only knows VB and Java. That’s the stuff that is outsource-friendly.</p>
<p>Assuming migration patterns remain stable, things ought to work themselves out. But if America continues to see reverse brain drain, then you just might see India out-sourcing work to the States in thirty years. :-D</p>
<p>Realistically, based on published job statistics, CS/SwE is probably the most attractive STEM outcome today and for a few years, in terms of career outcomes. Outsourcing? Obsolescence? Welcome to STEM. Seriously, be a manager if you want to stop learning stuff.</p>
<ol>
<li><p>A good computer science graduate will have a solid knowledge of the concepts of the field (as opposed to programming skills tied to a specific computer language that can become obsolete) and can learn new technologies easily (however, the hard part may be convincing someone of that in an interview – assessing learning ability of non-trivial matters is hard to do in an hour). A certain classic introductory computer science textbook has been used from the 1980s until now in many of the top universities.</p></li>
<li><p>That is if the senior developers were not adding sufficient value. A good senior developer will know his/her way around the code base, know what kinds of mistakes have been made in the past (and can be avoided in the future if one knows about them), and will be a valuable resource for everyone else. Replacing him/her with another (junior or senior) developer would be a significant loss for the organization (although short sighted management decisions do happen).</p></li>
<li><p>During the great offshore outsourcing business fad of the early 2000s, companies rushed offshore for price and price alone. They often got less than what they paid for. While there is certainly offshore outsourcing going on now, it is less of a mad rush to outsource everything as opposed to things that make sense to outsource (e.g. 24 hour technical support). Of course, poor management decisions still do occur.</p></li>
</ol>
<p>All types of work must adapt to technological change. Software development is not unusual in this respect.</p>
<p>True, but the question is, how many of these jobs requiring algorithmically complex work will be available, and what salaries will they pay? Furthermore, what is the entry-level path to getting one of those jobs? For that matter, plenty of non-American programmers can do algorithmically complex work at least as well as American programmers.</p>