views:

1525

answers:

28

Is staying employed as a programmer completely luck?


Backstory

For example, your employer decides to have you work with technology X for 5 years. While happily developing expertise in technology X, a new technology, let's call it technology Y, has now become the hot thing during that time.

Your employer inevitably terminates your employment once they realize that your job can be done at a fraction of the cost in a third-world country.

You are left to find a new job with your in-depth expertise in technology X. Your success in finding new employment seems highly dependent on whether there is any demand for technology X. Alternatively, you are hosed because employers are now only looking for people that know technology Y.


How does a programmer keep from falling prey to this (subjectively all-too-common) trap?

+1  A: 

Only as much as any other job.

StingyJack
Except I can think of few other professions where things changes so rapidly. I am not complaining. Personally, I think it keeps things interesting.
Jim Anderson
Yes, get to paddling or get off the boat.
StingyJack
+33  A: 

Then LEARN technology Y. That's the big challenge of modern programmers!

You may "Know everything about a single technology", but you MUST "Know a bit of all/most technologies, and keep learning new ones"!

If you did this, then you'd know both technology X and Y and you'd have an advantage over people who only knew technology Y because you'd be able to do the same as they did but you'd ALSO be capable of keeping legacy applications.

EDIT:

LuisCubal... Sounds good in theory but here are some follow-up questions: 1) How do you know that Technology Y will be the next hot thing? 2) Potential employers are generally skeptical of experience acquired in your free time. If your "day job" does not provide opportunities to work with technology Y, then how do you legitimately demonstrate experience with it?

  1. Let's say technology Y and Z are the two main candidates for "the next big thing", but you don't know which is going to "win". In that case, keep BOTH on radar, see the main concepts associated with them. You should know a bit about both Y and Z. And if you find out that you were wrong - you were trying to learn Z but Y "won" - then learn Y. It's never too late to learn something.

  2. Prove them you are good. They're skeptical? Then show them you understand the concepts, give them pseudocode(assuming they are programmers too). Explain them little things of Y. And give the impression that you're willing to learn. I understand that this may be hard, but you have to try.

luiscubal
2. Most employers will not even interview you unless they see technology Y on your resume from a past employer. And if you don't get the interview you don't meet the tech guy who you can explain the concepts to.
Cervo
Mention Y anyway.Some employers DO hire programmers without past work experience(otherwise all new programmers would be unemployed), so I'm guessing this isn't impossible.
luiscubal
I would vote this one up - except that edit is ridiculous pessimistic supposition just like the original question. The first part of this response is all that needs to be said.
Protip for getting past Cervo's objection: have a 'technical skill summary' section on your resume that breaks down skill areas by topic rather than employer and project. Then technology Y goes on your resume, and if they ask you how you know it, you tell them you studied it independently.
chaos
No matter how pessimistic it may be, it was still asked, so I thought it'd be nice to answer.
luiscubal
It really depends on who reviews the resume. Recruiters will often ignore the skill summary section if they don't see a skill listed in work experience. If it is a hard job requirement ie 5 years java and you do not show it in work experience...you are screwed via HR/Recruiters
Cervo
On other requirements like exposure to x preferred, or some x it helps your case. luiscubal, I agree that some do hire without past work experience. But for a mid level job, generally you won't get hired without work experience in the core language. And entry level jobs exist but are scarce.
Cervo
Also if the HR person is a bit more skilled or it is a small company and the hiring manager sees your resume then you have more of an advantage if you did not use technology Y in your work experience. On bigger companies with HR or Recruiters it is tough, because they don't know.
Cervo
+7  A: 

In the red corner: you have a brain, you have an internet connection, therefore you have a responsibility to yourself to go and learn what you should learning and find employment that helps you do that.

In the blue corner: real world problems get in the way and it's not always going to be possible to get out of a bad job when you need to (this includes myself), especially in a declining economy. History and economics don't care much for individual humans sadly.

annakata
+2  A: 

It is generally programmer's responsibility to keep up on the latest technologies regardless of what technology they are working in and to keep them highly billable and employable, it is a good idea.

Jim Anderson
+19  A: 

Don't "learn" technologies, rather learn (understand) the concepts behind.

Concepts such as OO programming e.g. have been around for quite some time.

An employer looking for programmers being skilled in a specific technology only is probably not interested in keeping you for a longer period anyway.

0xA3
I think this is great advice although even if a programmer does know the underlying concepts, there is a tendency among management and recruiters to label programmers based on a specific language or technology.
Jim Anderson
Full ack. But how would you convince HR people who know nothing but the names of the technologies?
0xA3
For my team I've hired a PHP guy (not the brightest apple in the bunch, but he is still figuring it all out) and a Java guy (used to be one myself) for my ASP.Net project. While the PHP guy started out as a script kiddie, he's still picking up C# at an amazing pace.
thaBadDawg
+6  A: 

What you describe is a risk only if you are unwilling to stay current with programming trends. You are a professional and as such part of your job is to pursue further education.

This is why I read blogs and come to websites like this one. To at least stay informed about emerging trends in IT and programming if not to actively pursue continuing education.

Keep yourself current. Talk to your boss about incorporating new programming trends in projects.

TrickyNixon
+1  A: 

LuisCubal... Sounds good in theory but here are some follow-up questions: 1) How do you know that Technology Y will be the next hot thing? 2) Potential employers are generally skeptical of experience acquired in your free time. If your "day job" does not provide opportunities to work with technology Y, then how do you legitimately demonstrate experience with it?

GreenLizard
**HR** is generally skeptical of free time learning. Tech managers shouldn't be. Some might not accept that as real experience, but most that I've met do.
xando
learn everything imo
Shawn Simon
I've edited my post with a reply.
luiscubal
@Greenlizard: This 'answer' should go as an edit to your original post, not an answer to your own question: That's why you're being downvoted.
George Stocker
regarding #2 - as someone who interviews and hires developers ... I am NEVER skeptical of something someone learns on their own time - in fact, I would say that it's better that way ... but one way or another - as long as they can prove their chops, it doesn't matter WHERE they learned it.
+1  A: 

No, it's not a crapshoot. But you're going to have to work hard, over your career, to keep up with new technologies, so you'll be learning X, Y, Z and whatever comes next.

Furthermore, there is much to learn that is not technology-specific. Methodologies, management, scale, testing, deployment, there's almost no end to the list.

It is going to be that breadth of experience that will help you in the future. Long term, it's not about X and Y.

Paul Beckingham
+5  A: 

One of my former employers went the overseas route a couple of years back and they have regretted it ever since. The problem with using a distant set up like Indian programmers is that, while you may be saving money, in the long run you end up giving up a large portion of the control you have over the development of the final product.

My former employer has since tried to get me to come back and do the tweak work to finish the product, but I'm happy to say that I have since found much better work with a much more stable outfit since then.

It may be a crapshoot but in the long run overseas outsourcing tends to make people wanna pull their hair out.

thaBadDawg
How is this specific to *overseas* outsourcing? My take on this is: never outsource what's *core* to your business, and this applies to *any* business, not just software.
Mauricio Scheffer
+9  A: 

A passionate programmer understand fundamental theories of computing (OOP, algorithms, text manipulation...) and can quickly learn syntax and framework of technology Y, Z, AA, ...

Usually new technology is a higher level abstraction of the old technology anyway.

Yada
A: 

Try reading "A Whole New Mind" by Daniel H. Pink. His writing on right brain / left brain might give you some ideas on how to approach your job as a higher level programmer.

Mike Robinson
I agree that anything written by Daniel Pink is worthwhile reading!
GreenLizard
+1  A: 

I've learned 3 completely new sets to technology in 22 years of programming. It's a part of the job. I know people who are on their 4th or 5th technology shift. In that same 22 years I've never lost a job to someone in a 3rd world country.

Jim Blizard
A: 

How about learning / working on Technology X at work, and learning / working on Technology Y at home?

That's the only way you are gonna keep up with the constantly updated technologies...

Andreas Grech
A: 

This is one of those situations that is a bit hard for some people to understand.

I work at at company writing in technology A. Technology A has been around for about 10 years and is really quite bad, but with the experience I had at the time (pretty much none), I took the position. Unfortunately I now have 4 years of experience in Technology A, which is essentially not used anywhere.

I take my time to learn Technology B, I am on all the tutorial sites I can find, I am blazing up Hello World samples all day long, and have a pretty good grasp on the basics of it. But I don't have any experience with it, only 4 years of Technology A.

This is where I personally do one of two things.

  • In my own personal time, rewrite my current employers software in Technology B
  • Create a publicly available application (optionally open source) via my website using Technology B

This for one, gets me real world experience, gets me exposure either internally to get my employer to upgrade (you gotta sell yourself good to pull this off, and it generally only works in small houses), or to give me "searchable" project experience on the web.

With releasing software to an active community of people who can, and do, actually use your utilities, you can reference that project on your Resume. Hell, when hiring new employees a few of the questions I ask them are:

  • What types of projects do you do in your free time?
  • What are you currently learning?

Some of us spend 4 years learning the basics of this craft, then we spend a few years learning from others, the rest is completely up to us. If you aren't spending your time as a software developer learning as much as you can about as many areas and technologies, then you are going to be still working on that 10 year old technology as a maintenance programmer, which sometimes isn't that bad if you like boring and tedious work with very little job security.

Tom Anderson
+6  A: 

Two things that I think would help most people in this field:

1) Learn HOW to learn. The more you learn the easier this gets, but find a technique that works for you. Should you read more books, or write a blog, or write lots of sample code. Maybe a combination. But learn HOW to learn.

2) Don't stay with a single employer for long periods. You end up learning only technologies that they want to use and they end up with people who don't have knowledge of newer technologies or methods. Job hoppers are usually looked down on, but I don't think they should be in this field. In 15 years in the field I'm on employer 10.

xando
+10  A: 

I'd like to challenge your underlying assumption: is software development really all that different from other fields? Would you be comfortable going to a doctor who hadn't learned anything since the 1980s? How about an Intellectual Property (IP) lawyer who was unfamiliar with case law evolution in IP since 1995? Or an auto mechanic who only knew pre-2000 Toyota Camrys? Would you hire an electrician who hasn't kept up with changes in the building codes? Seriously, we're not alone in having to stay on pace with new technologies.

I was going to write that programming knowledge turns over more quickly but, honestly, I'm not even sure that that is true. I've known dozens of developers who remained static in their knowledge base for 5-10 years.

Regarding losing your job to "third-world" developers; I don't worry too much about that either. Seriously, you think that this is more of an issue in software than it is in manufacturing or textiles? Also, I've seen good work from outside the country but I've also seen a lot of shoddy work. If I were hiring now (I run a software shop) I would absolutely require the developer to be in-office. There is still a very strong demand for skilled software development professionals!

Mark Brittingham
A: 

Unfortunately (or fortunately depending on your preference), we're in a field that is constantly changing. This requires us to maintain a state of continual learning. I read somewhere that if a developer doesn't complete change their skill set every three years or so they're no longer marketable.

As to the point of trying to figure out which technology is going to be one that sticks around or gains enough "buzz" to become prevalent - read blogs and articles. After a while you figure out if a technology has what it takes to stick around and become prevalent enough to waste the few, precious brain cells we have remaining on learning. Then maybe try some small experimental projects in the technology. Even if you don't become proficient enough to be a master of the new skill, at least you're conversant on it and can speak knowledgeably about it when talking to prospective employers.

And while overseas outsourcing isn't a non-issue. I think it's overblown. Yes, some people do get replaced. But, as a whole, employers like to work with people they know and can see.

+6  A: 

"The harder I work, the luckier I get." Funny that.

Ali A
I love that. I'm going to use it someday soon.
Jim Blizard
A: 

Staying employed period is a crapshoot. However you can do things to keep your skills sharp and on the leading edge so that you won't have problems finding a new job.

The bottom line is if you are a good developer then you won't have any problems finding a job. If you're one of the group that is horrible then you'll have problems. Fewer jobs and more people available to do the work makes things a lot more competitive.

Though there is some technology that I don't think will ever go away, like COBOL for instance. Thirty years of it and still going strong...

tmeisenh
+1  A: 

Most employers would rather train good employees than let them go and risk hiring bad ones that are more proficient in a "hot" technology. Being a good worker takes much more than expertise in a narrow field of technology.

Nemanja Trifunovic
A: 

As soon as the employer put him/her on it, the programmer in this scenario should have done some research about technology X and its ability to remain a relevant technology in the field for many years to come. If yes, then the programmer is set - no issues.

If no, programmer should have talked to the employer about his/her reservations in regards to technology X, and at the same time start reading up on technology Y (or Z, or whatever else people out there are talking about) and start looking for new opportunities that would let said programmer leverage technology Y, and not get left in the dust with technology X.

In conclusion, does luck play a part in our professional careers? Sure, there's some of that. But you're also responsible for your own career path.

Kon
+3  A: 

How does a programmer keep from falling prey to this (subjectively all-too-common) trap?

  • By taking responsibility for your own career, rather than letting your employer do it.
  • By making yourself top 20% in 3 or 4 skills, rather than top 5% in a single skill.
RoadWarrior
A: 

Understand the business so well that it is worth your employer's time for you to learn the new technology when they're ready to adopt it.

  1. Get involved in process and procedure, above and beyond your narrow niche.
  2. Help solve other people's problems.
  3. Learn how to architect a good system. Offshore resources, in my experience, do not know anything about architecting.

In other words, take a systems approach to everything. Offshore simply cannot do that, by definition. In other, other words: it is not sufficient to only add value through your programming skills.

sfuqua
+3  A: 

Programmers shouldn't stick to just one technology, but rather have some skills that will work regardless of the specific language such as:

  • Problem solving/Debugging - Can you troubleshoot problems to find their root cause and recommend various solutions? Knowing how to investigate and analyse problems is a skill that one shouldn't forget that they bring to the table.
  • Design patterns - While this is programming specific, there usually isn't much difference besides syntax if you look at VB.Net, C#, Java or other languages that tend to be a mix of OO/procedural.
  • While you have technology X, there is also likely to be other things that were used that should also be listed as skills. For example some classic ASP developers probably became proficient with HTML and CSS as these would be added to pages and be part of what made it work. Alternatively, if the ASP sites dealt with a specific database this is also experience to note.
  • What processes and methodologies were used that may be worth telling others you know well. This is where Agile, RUP, Waterfall, and other buzzwords may pop up.

If you stay with the same employer for 5 years, it may be worth thinking about what were the tools used, skills acquired, and have you found what parts of software development appeal to you and is the world you want to get into now? In the dot-com boom, I can think of dozens of different things I learned and used and how I could have taken a variety of different career paths and still do in some ways.

There will always be some hot technology out there that some know and others don't. For example, the LAMP architecture that some may find great for the web is totally foreign to me as I've developed within Microsoft technologies for most of my career. Granted this does mean moving along with what Microsoft releases as new versions of IIS and SQL have changed what is used there can be some fun in seeing what was changed to make the software better like in IIS where it used to be a service that one could start and stop, there is now a rather large plug-in to the management console with lots of configurable options and screens devoted to ASP.Net setup as well as ASP. Within SQL there used to be Query Analyzer and Enterprise Manager where now there is a Management Studio application to do various tasks within the database.

JB King
A: 

I think your question may be ambiguously worded.

If the next prospective employer is "now only looking for people that know technology Y" one can fix that by learning and keeping abreast of change. Hard but it's in the programmer's hands.

What I think you might have been trying to suggest is that the next prospective employer is "now only looking for people that have foo years experience working in technology Y". In that case the question and the challenge is completely different.

It is going to be rare that employers are seeking "knowledge". Bad employers expect 20 years experience in a 10 year old technology. Good employers are looking for people who show they can add value through the ebb and flow of different technologies.

duncan
A: 

It depends on the management above you... I've seen the most capable and productive of developers lose their job because their worth is not apparent.

Jesse Pepper
A: 

... i should clarify that with, if you mean staying employed in the one company. The same undervalued developers tend to get a new job the day they are fired because if they really are good their absence is remembered (so they can get jobs with old colleagues).

Jesse Pepper
+1  A: 

Excellent advice from all the guys who've recommended LEARNING new stuff. I started programming with VB3, and migrated right along till VB6, then I had a lot of inertia about learning VB.Net cause VB6 could get a lot done and I was having trouble handling the differences that .Net had.

I realized in 2004 end that if I didn't want to become obsolete in a couple more years I'd have to shape-up (or be shipped out).

So I worked a little harder and learnt VB.Net, then I discovered I liked C# better, then I found that I liked doing web development, and then I decided I will learn to handle CSS, and then that I wanted to make my websites better using AJAX (not Updatepanel!) so I learnt Javascript and I found that I could do better at Javascript if I knew JQuery, so I learnt that.

Well, that's my prescription to everybody. If you want to be a programmer better get in the habit of running (learning) everyday, if you run (learn) with all your effort, you just might be able to keep up. :)

Cyril Gupta