Software Development

Should I go into software development?

TechRepublic contributor Justin James offers career advice to a high school student who is deciding whether to study Computer Science in college with the goal of becoming a software developer.

This is a guest post by Justin James, host of TechRepublic's Programming and Development blog.

A few months ago, I met someone through a mutual friend who wanted my opinion about whether he should study Computer Science in college with the goal of becoming a software developer. This is my response to him.

I've got good news and bad news. The good news is, other than the lack of experience in the field, you are in a great position in terms of timing and geography (note: he is a high school senior who lives near Rochester, NY). The bad news is the software development field has started to undergo some very serious shifts in terms of how things are done, which could potentially make it a fairly unattractive field. Let's start with the good.

The good news

First off, your lack of experience in the development field has allowed you to not have any prejudices about it, and unlike a lot of aspiring developers I talk to, you aren't filled with delusions or fantasies about what it would be like to work as a developer. Too many folks go to school thinking that they are going to graduate and be working on, say, World of Warcraft. Yes, it is possible to go straight from school to the gaming industry, but you have to break your back in school to do so, and preferably go to a school with a specialized gaming program. I recently read an article in Communications of the ACM about these gaming programs, and what those students are doing is not easy. Very few students make it to those schools and those programs, and people who have that kind of goal without the necessary motivation and talent will be sadly disappointed.

The next advantage you have is that you live near the Rochester Institute of Technology (RIT), which is a very good school to learn software engineering (not "how to program" but true "software engineering"). A friend of mine went to RIT, and I was very impressed by the education he received there. Even better, through that program, he was able to get some great internships, and he ended up at IBM, doing insanely cool stuff that I can't even begin to understand. While the school you attend isn't everything (you can get a decent education anywhere), going to a school with a good reputation that really gives you a solid fundamental education can be a game changer.

The bad news

More and more software development work is sent to India, Russia, China, Israel, Romania, and Ireland; these countries have excellent educational systems, much cheaper labor, and laws that do not give employees much power. A few years ago this was annoying but not horrible because the work shipped overseas was generally low value programming. A lot of these offshoring arrangements failed due to language barriers, time zone differences, cultural barriers, and other factors that basically act as "friction" in the process.

These offshore shops have wised up, and their own people have developed the expertise to work with U.S. companies with less effort. In addition, many of these shops (particularly in India) hired people who moved to the United States and learned the language, customs, etc.; those people are now going back home to bring their expertise with working with U.S. companies to the companies there. As a result, the offshore companies are getting a lot better. Some people thought that the offshore shops lacked the creativity or hands-on experience in the industry to develop applications completely on their own; this is no longer the case, and many overseas firms have created great projects 100% in-house with no outside guidance.

In other words, after you would graduate college, you would be competing not just with the other recent graduates in your area but with graduates around the world. Think of this as a challenge; someone else is willing and able to do the work for less money, so you have to be willing and able to do the work better.

Another factor is the changing nature of software development. In the last few decades, and especially in the last five years or so, we've seen a raft of products introduced that make programming more of a "gluing parts together" than ever thought possible. This doesn't mean that, in the future, there won't be programmers, but it does mean that there will be a pretty deep split between the people doing the "gluing" (who will be about equal to a factory worker from the early 1900s) and the people designing the glue and the parts. This trend will continue, and it must continue, for these reasons:

  • Software development projects are very expensive, especially in relation to how much money they save in too many cases.
  • Making changes to existing software is much harder than making it to begin with, and it is extremely difficult if the person making the changes isn't who wrote the original (or if it has been a while since that developer touched the code).
  • Software patterns are very well established in many cases, and there is little reason to keep re-writing the same code.
  • Many current development techniques are rooted in things that were necessary 20 or 50 years ago but are no longer needed.

Every industry expert and veteran programmer I have talked to agrees that this is where things are going, but it isn't known when it will happen -- it could be five years, or it could be fifty years. But I wouldn't want to be caught by surprise by this trend.

Does this mean you shouldn't go into programming?

Not at all! It means is that if you want to go into this field, you have to be smart about it. I do not recommend that you try to be a programmer; slapping programs together is an increasingly low-value proposition. I suggest that you look into being a true software engineer because these professionals are pretty rare and desperately needed. Big companies are hiring people from other countries on H-1B visas, while local talent is unemployed because schools overseas are generating the software engineers that the industry needs while U.S. schools are cranking out programmers. Shoot for the stars. Go to the best school that you possibly can.

Unless you are personally opposed to it, I highly recommend either enrolling in Reserve Officer Training Corps (ROTC) in college and going into the military or trying to attend a service academy. One of the biggest mistakes in my life was turning down an appointment to the Air Force Academy and a full scholarship through the Air Force ROTC. Even without the scholarship, going into the service would have been a great move, but I did not see it then. The military teaches incredibly important skills in many areas, and former servicemen and servicewomen often have a major advantage in the workforce (so long as they were honorably discharged).

In addition, I suggest that you start learning to program now. It will give you a leg up when you get to school; it will also allow you to find out if you hate the work before you are committed to anything. More importantly, you need to work development jobs and/or internships in college if you want to be employable when you graduate, and the more experience you get, the more likely it will be that you will land those jobs and internships. If you really want to be the best, you should start by reading Structure and Interpretation of Computer Programs (which MIT used to use to teach programming). This course will challenge you in a million ways, but when you complete it, you will know more about how to think about software development than most full-time programmers. The book is pretty tough to go through on your own (nearly everyone I know who read it on their own did so after they had some experience in the industry), but even taking an honest stab at it will do you some good.

To get experience, start with a few simple applications on your own or perhaps modify some existing open source code. Then start working on an open source project with other people, or volunteering your time to a non-profit to help them write software. This will provide you with hands-on experience, as well as something to put on your resume.

The key is that you must differentiate yourself. If you graduate school and you spent that time flipping burgers and getting Bs and Cs in Computer Science, guess what? There are thousands of students across the country who just graduated in that situation and thousands more overseas, all of whom are hungry for work. But if you graduate from school with two years of quality internships or part-time employment, with a background in real software engineering (especially if you took a specialized course like those video game programs discussed in the ACM article), then you should stand out and have no problem starting a rewarding career.

I hope this helps!

J.Ja

Additional career resources

    What advice would you offer to a high school student who is considering a career in IT? What do you wish you had known about working in IT that you didn't know before you entered the field? Share your thoughts in the discussion.

    Get Career Management tips in your inbox

    TechRepublic's Career Management newsletter, delivered each Tuesday and Thursday, offers tips for how to find a job and how to cope once you're there. Automatically sign up today!

    About

    Toni Bowers is Managing Editor of TechRepublic and is the award-winning blogger of the Career Management blog. She has edited newsletters, books, and web sites pertaining to software, IT career, and IT management issues.

    106 comments
    seansimons15
    seansimons15

    Thank you for bringing up the offshore aspect of this industry. It definitely creates a challenge, and many startup businesses and other clients are going to take their business overseas. You make a good point about work quality. Furthermore, there will always be US businesses who want to do business with other US companies. 

    http://www.altsrc.net

    LocoLobo
    LocoLobo

    is more prevalent than just IT. ALL the clothes I am wearing right now came from somewhere else. My "american" car was built right up to the "final assembly" stage in Asia. Most of the mechanics around here "No habla Ingles." The US is now a net importer of food. Someone mentioned "World Competition". We have always competed with the world. But we have been isolated also. The realization is just now coming to us. We can no longer think, "We're the US and we're number 1." We need to reevaluate ourselves and the world we live in. As to the article's question, "Should you go into software development?" I think Tony Hopkinson said it best. "If you don't find writing software interesting in and of itself, then not just no hell no." But I think that's true of whatever you want to do.

    clavius
    clavius

    Something that will make you much more marketable as a developer will be to have domain knowledge of some subject matter to which you can apply your development skills. Most companies have a specific area they do business in, and they would rather have a competent programmer who knows something about their business than a superstar programmer who doesn't know anything but programming. So, in addition to the CS training, get a second major in a substantive field--something that interests you, whether that's public health, finance, marketing, library science, math, or whatever.

    oldfield
    oldfield

    I have been in the field of scientific computing for some 25 years and I am a little sad by some of the replies in this review. I interview people (engineer postions and scientific programmers) and I am shocked by the lack of real understanding of programming demonstrated in the interviews. I agree completely with this article. If you want to be an engineer then I expect you to know a lot of deep knowledge of programming - I am just a manager - the person being interviewed should know more than me ! I would like to add to this article that I consider a programmer is someone who has less knowledge of programming than an engineer but has domain knowledge; maths, biology/physics. If the person being interviewed is good then it does not matter how much they cost; in this field if the person is not good enough they just cannot do the job.

    GizmoGirl
    GizmoGirl

    First off, I love programming. Whether or not to go into the field should depend on the answer to the question, do I love it? Like any other fields, it has it's pit-falls (long hours in my case). If I were to do it over again, I'd of considered a double major (Computer Science/"insert other favorite field here"), or minored in something other than Math, which I suck at, but came pretty much with my major. MIS is another closely related field that I considered back then and may give you more options in today's world. And make sure you get very good grades, that goes without saying. The company I work for does out-source (to India), mostly the "menial" programming tasks & any programming that can be clearly defined. I've also seen a shift in the US associates (for this company) from "more programming" to "less programming" & more business analyst or project management type roles, due to client-facing & time zone differences. I'm currently a Programmer, and they may be going to India soon to train Associates there in what I do. It's a very good thing they don't know what I do! ;-) Needless to say I'm studying for my PMP cert & also data security. I enjoy what I currently do but it is always good to have a back-up plan. The nice thing about IT in general is that there are so many options within the field, many of which are not out-sourced.

    cute_sinhascoe08
    cute_sinhascoe08

    its one's matter of interest..!! initially there may be tits n bits....but it really pays u back if u enjoy it rather than just clinging to it..!!

    Mac_444
    Mac_444

    ....junk food, caffeine and all-nighters, go into software.

    LoopyDood
    LoopyDood

    I'm a high school student, final year, and I've been accepted to a good school for a three year software engineering program. I have already taken two (quite badly done) programming courses with my high school, so I know some basic Java. I also know a couple of web based languages, like HTML and CSS, which so far has been enough to make a few dollars out of web development. I enjoy programming, but I'm not very good at it. I've been struggling to find time to practice, and quite honestly I haven't really figured out how I should go about that. After looking at the sources for a few projects, I realized that even programs that appear relatively simple usually have dauntingly complex code. I've been unsure about whether I really want to pursue this path recently. I want a career in IT, but software development is looking less and less lucrative as time goes by. Reading this article has really pushed me over the edge. I have already paid for most of the college fees, set up living arrangements, etc., so I'm pretty much locked into heading off to that college this fall. Luckily, my position is a common one so the college has made it easy to transfer between IT programs. It's at Algonquin College in Ottawa, Ontario. Course list is here, look in the School of Advanced Technology Section: http://algonquincollege.com/prospective/fulltimeBySchool.html Can anyone recommend a course of action? Recommend other fields that may interest me, give tips to help me build my skills and confidence in programming, anything, really.

    gmust
    gmust

    Thanks, very informative and thanks especially for the MIT book.

    tokposman
    tokposman

    Good article and reality check. I would add that the trend for the glue-and-pieces-developer crowd is to have credentials in vertical knowledge domains like process control, healthcare, accounting, etc. This is the trend in value added software firms, hiring SMEs that can engineer solutions within the knowledge domains a company serves. The era of the generalist developer is gone.

    megabaum
    megabaum

    Politicize This was a decent post for the most part; but after 15 years in the IT industry, many of them spent working with Developers, or IT folks from India, I disagree that IT shops are wising up. Instead, as you said in your post, we (IT USA) still struggle with time zones, language barriers, cultural differences, quality, errors, and mis-communications as we offshore even low value work to India. So the end result is IT USA continues to only send low value development, qa, support work to India; it seems this has not changed much. I think some companies are starting to do a cost analysis to determine how much money they are really saving in the long run by off shoring. This "wising" up, is certainly not the status quo and certainly not a trend of any sort. Simply, these issues are too large, to fix with training, virtual office or other tools. The truth is we're still sending the rudimentary, administrative, low value work to India, so they haven't wised up that much... or else we'd be off shoring higher value work and customer facing jobs to India. Lucky for us huh? As an example, I work with a Tech from India and I have to meet with him before 10am every day, or else I have to wait until the next day to talk to him. This alone is problematic and not effective when critical issues need to be addressed immediately. So my work around is to work with his manager(US based), and this is problematic because I'm taking up a manager's time (who's making 100k per year) to work on something that should be handled by a DBA. My Tech from India also doesn't seem to have the capacity, savvy, or deep understanding needed to catch errors or realize the impacts of his work; subsequently I have to double-check his work and identify errors, ... another cost to the project. Worse, sometimes errors are not caught ... and well that's obviously not good. Generally, this is the pattern I've experienced when coordinating work offshore to India. Sadly from a political/ social perspective, it's very disheartening and demoralizing for IT workers in the USA to see thousands of low end jobs/work, which they could do, off shored to India! And then they are told by mainstream media, in such economic times, that this shift in jobs is due to the fact that US companies are seeking the "best and the brightest" =P and we (US workers) had better prepare to compete against the WORLD'S best and brightest in the future... Really? Wow, this is so sad and so untrue. How did we get to this place? What happened to Obama's promise to impose higher taxes on companies that off shore US jobs? NO, we shouldn't and really cannot continue to accept this as the status quo. This shift, which is referred to as "world competition" is in fact not competition; it has nothing to do with skills or competency; rather it's about US corporations, who are eliminating YOUR job, in order to seek out the "cheapest", not the brightest. It's really important to clarify that this has nothing to do with COMPETITION. All you're doing by suggesting this is setting up "Joe the IT guy" and young college grads for utter failure; because no matter how good they are, no matter how many degrees and certifications they achieve they aren't going to get the job, sorry the job is going to go to a foreign candidate, probably less qualified, who is happy making what is considered a minimum wage in the IT industry, probably $15/per hour. ~As the populous, we need to be sure NOT to buy into this media-hype and refrain from accepting dogma about so called "competition" with workers around the WORLD, who can support a family making $15 per hour. That's clearly not fair market competition, based on qualifications or skill-set. This is rather a result of market manipulation by US corporations and yours truly, the US government. And might I add much of what we're doing is illegal and against the GAFTA agreement, but don't get me started... Suffice to say this is one of the most socially irresponsible acts employed by the US government. Worse, this plan and these policies were supported by Bush and now supported by Obama. And the only one who profits from this market manipulation (e.g. H1B program, off shoring) are US politicians and of course US corporations, as US jobs are traded for open trade. Ironically, as Corps. eliminate our jobs and laugh all the way to the bank$, YOU continue to shop at their stores and buy their products. =P It's all so backwards... I could go on but not enough time. The good news is that I think America is waking up. Hopefully if we keep push on,0 we can politicize this issue, eliminate the Doha Rounds and hold the US government accountable for these debilitating policies. And while, I'm gainfully employed, I don't see any Indian body shops that have wised up and as you can tell, I have a problem with the H1B/off shore programs that are literally eliminating jobs, careers and training opportunities and in the process hurting American families on so many levels... Further, the relationship with our off shore partners is still problematic, and IMO creating additional costs and a lack in quality. There's not a simple process for fixing this and training sessions are not going to make this go away. More important though, is that we stop referring to this shift in jobs as "competition" and most certainly refrain from accepting and advocating socially irresponsible policies as the "status quo"... **PLEASE join in the effort to learn about these issues on a deeper level and change the H1B/off shoring policies. If you have kids in college, friends in the IT industry, or nieces and nephews in grade school, ... there's your motivation =). If the Doha Rounds agreement is approved, it's only going to get worse, so act now. ~ Best, M

    TCWells
    TCWells

    I use to recommend that application programmers major in an area of interest and minor in programming but application software has become a commodity. My unusual Civil Engineering career began in 1975 when consulting companies maintained their own software library on an expensive mini-computers or mainframes. (Ever hear of PR1ME computers & PRIMOS?) In 1997 I started working for a small very specialized family run software company that develops and sells geo-environmental data management software (primarily for storing, organizing and analyzing complicated analytical chemistry data sets from a Laboratory Information System). Despite the very small programming staff (~1/2 dozen) and extreme specialization, they moved development to India and announced to their customers that they even partnered with an Indian firm that has the "lowest operational costs in the whole of India". (I.E. they partnered with the cheapest firm in India.) I did not see that coming in 2003 because we were so small and very specialized but the business was struggling financially... In fact, at the time of the announcement I had just started working for their major competitor who was taking the opposite approach by hiring experienced talent from other such firms then pushing them very hard. I ended up doing mainly data migrations and help desk type work because I'm not a super fast computer genius. When a traditional CE consulting firm offered me a full-time engineering job in 2007, I took it (& made up for the field work that I missed in my youth due to computer working being limited to the office back then). Starting in 2009, the full-time job became a part-time job due to the great recession. Financially, I would have been much better off as a traditional Civil Engineer but I enjoy working with computers so my only regret is that career dried up about ten years too soon. Regarding promising career choices, I understand that the IRS is going to hire 16,000 new auditors because of the new "Health Care" regulations....

    18th Letter
    18th Letter

    as someone who is thinking about this field, I appreciate this article. More than anything it shows me that I should do further research to ensure that I have a rewarding career at the end of the day.

    zilliz
    zilliz

    IMO, the answer is a big resounding NO. It's too stressful and much more taxing than you're led to believe in college. It will take over your life no matter how you try to not let it. AND, the pay is ok but not as good as it should be given how technical the job is.

    nafarrin
    nafarrin

    IMHO this's the moral sentence: "someone else is willing and able to do the work for less money, so you have to be willing and able to do the work better"

    MusicRab
    MusicRab

    Go into the defence area. I doubt they will give that work to India (but you never know these days!) That's assuming a. the US doesn't chop the defence budget and b. you don't mind not necessarily using the newest equipment (defense computer equipment can lag behind the commericial world)

    Englebert
    Englebert

    IF occupation can be outsourced ? THEN stay the heck away from that occupation ELSE PERFORM pursue occupation to hearts content END-IF

    jmarkovic32
    jmarkovic32

    Stay far away from software development. As a reformed CS Student I switched Systems/Network Engineering. At least a warm body is needed onsite to do that job. However, even we have the same challenges as software developers. Ours come in the form of "paper certified" ex-Jiffy Lube employees who think that since they graduated MCSE bootcamp, they can call themselves an "Engineer". Even worse is that they are willing to undercut you by $20-30k a year. Keep in mind that $40k is a lot of money to someone who is used to changing oil or waiting tables. What's become annoying is that HR departments can't tell the difference between a real Engineer and the "Paper Tigers". Look at the IT job descriptions these days. As long as you have the right buzzwords on your resume, you get to play with the big boys. IT as a whole is in bad shape--at least compared to what it was in the 90's. You have to differentiate yourself to earn a decent salary these days. No longer can you walk into a building and demand six figures. No longer can you pull down a $75k with signing bonus from day one. You now have to work your way up from the bottom, doing menial programming or desktop repair work or even (*gasp*) pro bono work to build your experience and reputation. This is what happens when a market becomes flooded from both within and without. Gone are the days where you can "go into computers" and make good money.

    blitzwing76
    blitzwing76

    I read so many articles talking about Programmers and Software Engineers, but no one ever bothers to take the time to define each profession. I am inclined to think they are one and the same. Software Engineer write software (the blueprints), and Programmers write software. What is the difference?

    ajay_parashar97
    ajay_parashar97

    its really really beneficial for me bcoz i m Graduate engineer but i couldn't justify my self that how should i start with Software field but after seeing your guidance i got my target and path as well . thnank you so much Toni Bowers . whenever i will be able to U.S. i would like to meet with you any how . Yours sincerely Er.Ajay Parashar Banglore ,India 08105526289

    jonesy100000
    jonesy100000

    Great article, the military reference is true. I spent 10 years in the Air Force as an aircaraft mechanic and when I started my desktop support career my troubleshooting skills were 10 times better than my co-workers. Those skills allowed me to get promoted several times.

    DaemonSlayer
    DaemonSlayer

    IF you don't mind corporate mentality that will hire slave labor (China) over you because they can hire a dozen of them vs. one of you even at entry level. (They'll still go with India over us, even though they probably think that India is starting to get greedy.) Face it, Some places here in the U.S. are expensive, no matter how much of a miser or how frugal you are... IF you are going into software development, it better be because you really like it, otherwise you'd be better off becoming Mr. Goodwrench (or equivalent) if you are after money. AND if you do go into it, expect an uphill battle even for the cheapest paying IT jobs because they'll scam you out of the running for the H-1b Visa slaves.

    n31.s10
    n31.s10

    The whole article made a lot of sense and was well written, until the editor entered the last paragraph in which she attributed a rewarding career only on the basis of getting into good schools and achieving high grades. My personal opinion after 5 years of interviewing software engineers locally and abroad is that the most creative and high EQ minds are those with average or above average GPAs. So i beg to differ on this point! Thanks

    Tony Hopkinson
    Tony Hopkinson

    interesting in and of itself, then not just no hell no. Despite the lady waffling about software development just being about gluing more stuff than was ever thought possible together. Those of us capable of more than that, are all watching with great interest for this poorly designed inefficient teetering monument to incompetence to come crashing down on management ears. Generally it's hard, unsatisfying, repetative and gets very little respect, so unless you were going to do it anyway, don't bother.

    jake_leone
    jake_leone

    The software profession is in the same state that the auto industry was in, in the 1970's. And facing even heavier competition for each job. When I started my career, 15 years ago, you could be trained on the job. You could go on to make 100+k/year, just programming. And you would continue to be trained. But now companies can hire from abroad very easily. People coming in from abroad will work for 40k/year or less. Because their goal isn't the software career it is to get a Green card. People here on L-1 visa get paid far less. And the companies that hire them, exclusively hire from within their own country (and ignore resumes from ordinary U.S. Citizens). The world has 8+billion people, and with that number there are 24 potential workers for every working U.S. citizen. Don't even try competing, because as a U.S. citizen you will need several hundred thousand dollars over your lifetime just have a living wage, while a worker who comes here from abroad need only about 6000$ or less per year to achieve what is considered to be a living wage in their home country. Your best bet is to bend your career path with the times. Choose a career that makes use of that which is culturally unique about yourself. Your fluency in English and writing skills could make you an excellent documentation professional. Documentation is not as easy to outsource (and consequently gets paid very well right now). You can still code for free on the side, many people do. Maybe it will turn in to a programming career (for a few it has). Further you are better off being the hammer (owner, manager) and not the nail (software engineer) in the software industry. Get an MBA and a technical degree can be a better, more lucrative path. (Be the hammer, not the nail) The great fallacy in the software industry today is that companies are looking for great talent to fill their software engineering positions. When the fact remains that most H-1b visas are issued to people right out of college with bachelors degree, from a foreign university. These same H-1b workers are then brought in to the United States where the experienced U.S. worker (often with a more advanced degree) is required to train the foreign worker. The U.S. worker (the one with more talent and experience) is then let go.

    Editor's Picks