It’s the old catch-22 of the job market: It’s hard to get a good job without experience, but it’s hard to get respectable experience without a good job. But if you’re looking to enter the job market, why not take advantage of the huge opportunity that Open Source Software provides? You can make a meaningful contribution to a high-profile project, based merely on your skills and initiative.You are a young programmer-by-vocation in a modern, developed country such as the USA or Germany. You could be fresh out of high school, studying for a degree in computer science or IT at a university or you could be fresh out of university with the degree in your pocket.
You’re also looking for a job.
As you might have found out already, getting a job as a programmer is difficult. The reason for this is that as far as young “inexperienced” programmers are concerned, supply exceeds demand and companies are unwilling to take risks as long as there are more experienced people applying for the same job.
Getting a degree alone really doesn’t help either. Simply too many of your competitors have the same degree, be it Bachelor’s or Master’s. A PhD won’t help much either — the only thing it says about you is that you wasted three years of your life focusing on some pointlessly obscure subject.
So how do you get more experience on your resume and rise above your competitors in this situation?
What you’re looking for is experience. Anything that says “I’ve done actual work in this area before” is good. There are several ways of getting experience.
You could start off small, doing whatever work you can — usually this means you’ll be building websites for a few years with not much hope for doing much else. If you do choose this route, at least be professional. Don’t reinvent the wheel. Use existing Open Source content management systems and customise them if needed. Too many companies and people out there suffer from the “not invented here” syndrome. Don’t cripple yourself with it.
Also, if you’re working with the code of some Open Source project, you’re bound to find bugs in it. Fix them and submit the bugfixes. If your project requires features the Open Source program does not have, add them and submit them. Remember, you’re looking for experience to put on your resume. “Project X” might look good, but what about “Project X” and “Added feature Y to Open Source Project Z” without any extra effort?
Open Source projects are a very good source of experience these days. What’s even better is that you can easily cherry-pick: work on only the stuff you like and when you like. You won’t have the same luxury in the future.
There really is no catch to this. You can pick any project you like, grab the source code, improve it, contribute the improvements and presto — more bonus points on your resume.
Working on Open Source projects also shows that you care about your profession. That you’re not another loser who does a sloppy job just to get paid.
If you’re afraid of jumping right into big projects, you can start off small. Maintain packages for your favourite distribution, become a betatester somewhere, submit bug reports with fixes, etc. There’s plenty to choose from.
You might be thinking that big companies are likely to ignore such things. Yes, that’s true, but if, for example, they have to shift through the resumes of a few dozen graduates all with the same degree and no actual experience, then who do you think they’re more likely to hire: someone with no experience or someone who’s worked on various Open Source projects? It also helps if the employer has actually heard of these projects.
Taking a step back, there are interesting “side effects” to this.
First, more Open Source enthusiasts will be joining big companies. For example, quite a lot of people on the Microsoft campus run Linux. The merits of Open Source Software have been argued many times before, so I won’t reiterate, but there’s no doubt in my mind that Open Source is a good thing as long as companies know how to use it.
And second, a lot of good Open Source projects will be getting much better.
Open Source offers wonderful opportunities for both people and companies. Not taking these opportunities would be shooting yourself in the foot.
The above rant was inspired by a conversation with Martin-Eric.
Good way of thinking, learning, getting experience and making your resume more interesting.
I am already past this point having 32 year of experience with computers, but now I am on the other side of the equation, I have the experience, but too much, nobody wants to pay for this most of the time, and I have too many expenses (children, ex-wife, …) to be able to accept smaller payments
Anyhow I am also planning to contribute to some FOSS project in the future, when I have too much free time
Alex.
That would be great for Software Engineers, but not us poor lowly QA people-not many FOSS projects use WinRunner or SilkTest-two buzzwords the uninitiated HR person look for in a position like mine (nevermind the fact that I *built* the QA department, had to learn programming of a language to test our products because I worked in a startup with limited finances, etc.)…
But hey, I’m not bitter 😉
I couldn’t have done better myself
(no, I’m not looking for helpers: part of the reason is what this article describes, but not because I don’t have experience, but because employers are often asking, “What can you SHOW us?”)
it is software, not hardware. you do not need to get a corporation to hire you so you get access to hardware to get experience in order to get another job.
just start your own company and make your own stuff.
I often see job openings, especially for web related positions, that request 5 years or more of experience. Then I wonder, what would such experience really add?
The web today is hardly the place it was back in 2000 or the late 90’s. I’ve seen it explode since 1992 and my knowledge from that time is utterly useless these days. Any knowledge of HTML 3 or earlier is completely outdated except when building sites for mobiles or other non-browser devices. With so many governments and other large customers requesting that their sites meet accessibility standards, there’s no real way around XHTML and CSS anymore but these trends are fairly recent.
I don’t know how this situation is in programming positions but there certainly was no Java, C++ or .NET back in the 70’s. Does anyone outside the embedded or real time space really do hardcore assembly anymore?
I have the impression that experience is often used as a simple but short-sighted measure for quality and I personally doubt its relevance in the IT field. I think professional attitude counts for more..
Don’t expect to make $100,000/year right out of college. Your CS degree isn’t worth the paper it’s printed on these days, especially with India just a phone call away.
Interesting article, thanks.
“you’re not another loser who does a sloppy job just to get paid.”
What of the fundamental principles of economics? What should the free open source software programmer do to be paid?
But you help build software.. that becomes a commodity.. that reduces the need for your services.
Ahh well. Its still Friday, after all!
Bas, experience has more to do with the ability to perform the job than the technical aspect of it. A person with more experience is going to be much wiser at the position and will not be prone to common mistakes someone who is fresh off the boat. An experienced person will know how to handle the toughest deadlines and perform much better under pressure than a newly baptized IT incumbent.
There are no shortage of programming jobs for the inexperienced. What you have are (pardon the stereotype) unsocial computer geeks with high-than-thou standards looking for the “cool” jobs.
I got 2 job offers right out of the gate and the one I did accept told me I was the one they wanted because I wasn’t a “typical” geek. They didn’t want someone who sat in front of the computer all day playing games and talking about how l33t I was. They wanted someone who they wouldn’t be embarrased to introduce to a client and was mildly competent.
Also, how may of these people do you know…
– 3 Linux or BSD boxes at home looking for jobs but refusing to apply for ones that only accept Word resumes.
– Only applying to those companies with big names
Not to mention most people that get that BS really aren’t useful as programmers. Given, some are, but I would argue that the majority is not. At least not right out. School alone won’t prepare you for that, but it seems that everyone believes it should.
And I have to take a knock at this article. Yes, it can be great experience to work on a project and get you name on it. Good stuff. However, in my case, I have very little intention on dedicating that much of my time to a non-paying position. Yes it may help my resume, but it won’t pay the bills.
and years of experience is often made up for by significant projects or certifications.
A Sun Certified Java Programmer can claim up to 3 years experience around here.
I mean seriously, I have a couple of friends in their last year, and they pretty much have a job waiting for them when they graduate. The way I see it, is that the IT economy is starting to bloom again. Look at how many people Cap Gemini is hiring all over the world. (not just India)
There is even some concern growing that their won’t be enough it workers, as the number of new students in IT is dropping.
Maybe that’s just in Belgium, and situation elsewhere may be worse..
Damn straight.
Most of the interviews I’ve been to they’ve wanted exact experience for what they are hiring in. You can be the best C++ programmer out there but if they want someone who knows Java you’re out of luck. Even if you know Java they want to see that you’ve programmed something similar to what they’ll have you working on. I’ve worked on some previous commercial projects that weren’t too far off from the jobs I applied to but to the interviewer my experience wasn’t close enough to what they wanted. But any experience is better than no experience so working on OSS projects (whether it will help get a job or not) is better than just sitting around doing nothing.
Honestly I don’t think this kid knows much about the computing industry. What are his credentials?
Someone who says in their article, “A PhD won’t help much either — the only thing it says about you is that you wasted three years of your life focusing on some pointlessly obscure subject.” definitely does not get any respect from me. Where’s your PhD?
– j
If I had any idea what else I wanted to be doing right now you can be sure I’d be getting the hell out of developing software.
Sitting in front of a computer monitor in a quasi-solitary environment staring at the same pages of text making alterations and modifications over and over on the same generalized bits of stuff is a horrible life to lead.
Sure the job stimulates the purely logical and analytical part of my persona… but that is about the sum of it, every other facet of my being goes untapped, unappreciated, and is forced into submission by my responsibility to be a good little software engineer.
One day I hope they can replace me with a robot, as no human should have to look back on their life and realize that they spent 70% of the hours they were awake each day glued to a machine.
The are some basic problems we software developers face:
1) No certification: software development can be done by anybody and they needn’t have a degree in computer science. Unlike Medicine or Law or Accounting you don’t need a degree/certification to write software and have companies use it. In Medicine, you need to have a medical degree to practice medicine and you need to prescribe medicine produced by a company that’s FDA approved.
One additional thing, to write software you don’t have to be an expert in that field – for example, to practice bankrupcy cases you need to be a lawyer with expertise in that field or you cannot practice law. Similariy in Medicine, you have to be a doctor specializing in cosmetic surgery or you can’t perform breast implant surgery. However in software, any joe can claim to be a Java expert or a Web guru or a Kernel designer.
2) Outsourcing: there are many people hungrier than you willing to do the job for less cost – see what outsourcing is doing to western programmers.
3) Open Source: the rise of open source, you can no longer hold your software secrets and make money the way Jobs or Gates or Mitch Kapor did in the old days. You have to pretty much GPL your software to be taken seriously. The guys who started Zen had to open source it before anybody took them seriously but I can promise you that they’ll never become stinking rich like Jobs or Gates or Kapor. Redhat, MySQL or JBoss will NEVER EVER become as rich as Oracle or Adobe or other successful closed source developers.
4) Free (as in $0.00) software: The whole Free-beer mentality is to blame – not one other business gives you free stuff like the software business. Blame Microsoft or blame GPL or blame anybody who puts out free software.
Why should software be free to companies that aren’t in the software/hardware development business?. I don’t see them returning the favor.
If we, the software developers, don’t value our work, how can we expect consumers to value our work?. We are too busy fighting each other to see who can drive the other guy into the ground – like Linux fighting to drive MS under and MS fighting Sun to drive them under and Sun fighting Linux to drive them under.
Say what you will about the RIAA – they went out with a vengence to protect the value of Music and now slowly the tide is turning where more people get music through iTunes and Rhapsody and MSN than from gnutella/kazaa etc. Musicians aren’t giving away their music anymore and some of them have fought with their customers and now customers value their work.
If your only experience is doing free open source software the potential employer will think you’re willing to work for nothing. And that you’ve never gotten laid
It can be easy or very difficult to find programming/design work depending on your technical background, your previous job experience, and the set of actual job contacts that you have in your possession.
As I found out the hard way when I was laid off from my airline IT position (applications developer/analyst) three years ago, many companies are looking for people with both technical and line-of-business experience that can drop right into their projects with little or no training.
Just knowing the languages, databases, or platforms they were using isn’t enough anymore for many employers — they want specific experience with check imaging or certain types of insurance processing or hearing aid software development, and a programmer without that type of specific experience will often never get as far as an initial phone interview with HR. Instead, your resume it tossed.
It took me almost 32 months to find permanent work again in the IT world (which required that I move 1200 miles), and I know several people with between 5-20 years of IT experience (some former airline people, some not) who are either still looking or who have given up and are going back to school for other occupations.
Folks with trendy skills can find it easier, but I know more than a few Unix/C people who are still looking for work back in the Minneapolis area where I came from.
It ain’t so much about WHAT you know these days, but what you’ve DONE and *WHO* you know…
Oh sure. And expect to become a millionaire overnight.
What will you do? Yet another registry cleaner? Another photo editing app with great features nobody had thought before? Another mail client? Another browser? An antivirus? A download manager? A great game maybe (on your own?!?)?
Someone who says in their article, “A PhD won’t help much either — the only thing it says about you is that you wasted three years of your life focusing on some pointlessly obscure subject.” definitely does not get any respect from me. Where’s your PhD?
If you want/get a PhD, you’re likely to spend the rest of your life writing books and research papers.
It’s kinda like looking at a picture. A bachelor will have looked at the picture from afar. A master from near. And a PhD will have spent 3 years of his life studying the nuances of some 1cm by 1cm piece of the picture.
When you’re looking for a real job in the software industry, then sometimes a PhD is an overkill. Sometimes it’s harder to get a job because you have a PhD and no previous experience. It says bad things about you. It says you’re a researcher with no real practical experience.
It ain’t so much about WHAT you know these days, but what you’ve DONE and *WHO* you know…
Open Source can take care of the “what you’ve done” bit quite easily. And good connections in the industry aren’t that difficult to make if you’re willing to take a few days off. I might write an article about that some day, heh.
If your only experience is doing free open source software the potential employer will think you’re willing to work for nothing. And that you’ve never gotten laid
Well, at least the potential employer will know he doesn’t have to worry about the guy suddenly getting depressed because his girlfriend left him
On a more serious note, go to some Open Source-centered event nowadays — quite a lot of women there.
“Working on Open Source projects also shows that you care about your profession. That you’re not another loser who does a sloppy job just to get paid.”
I know a few people who will absolutely love this sentence.
This plan is great for 1% of IT workers what about the rest of those that actually make IT run? Networking guys, System Administrator such as myself. I would contribute to FOSS if i found any joy in sitting for hours and hours debugging someone elses poorly documented hack. Not to mention i don’t see a huge demand for developers nowadays. My Long time very talented developer brother is now managing a Windows network doing System Admin work(something he has never done before). Even my job functions has changed from strict Unix SA work to Application Administration combined with SA duties as prescribed. The whole IT industry has changed vastly since the boom days as more and more employers want SA’s/Developer/DBA/etc.. type people. The best advice for people wanting to break into the IT industry is to diversify and learn most if not all aspects of IT infrastructure.
While I agree that open source is a wonderful place to get great experience and make good friends (and connections), I do not agree with the premise that a degree doesn’t help in today’s market or that there is a lack of entry-level jobs.
I just graduated from a school that is not very well known with a BS in software engineering. I had two internships while in school, turned down an internship upon graduation, turned down a full time offer with a respectable company, and took a job with a good company with a very nice entry-level salary. It is important to note that this was done only with professors’ help, and no preexisting connections.
The key for me was to be involved, know the material, and get to know the professors and career counselors very well. The jobs are out there, and many companies, especially smaller ones off the beaten path, are more than willing to hire college grads. Many larger companies also like to fill a quota of some sort each year with recent graduates. Be sure to have some real hands on experience, which doesn’t have to be experience with a company, and give examples every time they ask a technical question. Even if you just make network sniffers and 2D platformers in your dorm room, bring it up and show it off.
Lastly, the PhD comment was a bit misguided. What, exactly, is a “pointlessly obscure subject?” This leads me to believe the writer isn’t very learned on academia and computer science.
Off the top of my head, I can think of a ton of things that an enterprising developer could create:
1) Integrated simulation toos with usable UIs. Simulations for things like gas turbines, control networks, etc. Engineers are starved for programs with decent UIs.
2) Tools to integrate engineering design processes. Every big company has to roll their own right now.
3) Utilities to integrate big programs like CATIA or Pro/Engineer with apps like fluid-dynamics modelers, finite elements programs, etc.
4) A compiler that can automatically create threads to run on an SMP machine.
5) Data visualization tools that are easy, intuitive, and have powerful analyses. It’d be a kick if it was integrated into (2) as well.
These are just things that came to mind immediately. I’m sure there is other stuff that I’ve wanted somebody to write. Of course, these programs all require you to know something, but did you really think you’d make any money doing what others have done already?
6) A tool to streamline doing trade studies. Lot’s of people in many professions need to do trade studies to choose optimal parameters for things that need to be traded off, and something to make these easier and more accurate would be useful.
A “pointlessly obscure subject” is one the applications of which (if there are any) you’re not very likely to use while doing actual work.
If your goal is to become a programmer, then being a PhD with little to no experience will scare off almost every potential employer.
Open source is great because you learn the underlying technologies not specific products. It’s unfortunate that this point is lost on 9/10 employers/recruiters.
My buddy and I started our own company which is based on an open source business model… We were looking to hire and I can’t emphasize enough how homogeneous the resumes we got were… the candidates just listed everything that was on their curriculum. In the end, my business partner’s brother – a long time Linux Sys Admin – decided to join us.
Here is a good read that is relevant to this topic – Hiring is Obsolete:
http://www.paulgraham.com/hiring.html
Cheers
Jason
perhaps you could actually look to see what is in demand or has a need and make that software?
only an idiot would remake something that has already been saturated as a field.
How do you think mathematics started?
That should be Mathematica
your comments remind me of a guy who was in my Web Development class. He worked for a company that does crash testing, and he was responsible for setting up the tests and sending the right sensors, etc to the right departments. at the time he started the class, he was doing all that with his own system of e-mails and post-it notes… his class project was a PHP based system that was going to hook into the inventory system and would handle the scheduling of the tests, and assignment of the parts, etc. and notification to all the right people. Even though this would take him a while to do, the company told him that they would pay him (a good sum) to build the system. after that he got some help from a few people he knew and got started working as a consultant.
When I started out, I bought an Apple II+ and learned everthing about it, while selling Camera equipment at a local store. The local university conducted teacher training on Apple II’s and I put up a tutoring notice. I tutored. I can program in several BASIC languages, COBOL RPGII, C, Ada, Pascal, C++, Macro 11, Java, html etc. And SQL, of any variety. sh, csh c, bash. I still learn somthing new every day.
Kinda means I’m flexible, I can adapt. And I can get the job done. 25+ years of Can Do.
change is the only constant
….Your success will be determined by how well you know your own skills and how well you sell them to prospective employers. And, in the IT world, there is a lot more to it than just selling your technical skills (i.e., what languages you know). You have to sell your communications (oral and written) skills, teamwork skills, time management skills, research skills, problem solving skills, and customer service skills. It is all of these types of things that get developed with “experience”. You can take a class to learn a language, but when it comes to learning how to tell your boss that you fcked up, how you plan to fix the problem, and what resources you will need, you need experience. Just being a technical genius does not get you success.
“4) A compiler that can automatically create threads to run on an SMP machine.”
The Intel C++ compiler already has this:
“The auto-parallelization feature of the Intel® compiler automatically translates serial portions of the input program into equivalent multithreaded code. The auto-parallelizer analyzes the dataflow of the program’s loops and generates multithreaded code for those loops which can be safely and efficiently executed in parallel. This enables the potential exploitation of the parallel architecture found in symmetric multiprocessor (SMP) systems.”
in my experience i think there are 2 types of jobs;
* knowledge-based
* intelligence/creativity/analysis based
the vast majority of geeks arein knowledge-based jobs, the more programming languages you knnow the better. the more command line options the better. the more the C++ subtle parsing selection tests you can get through the better. the more lines of code you can type the better.
sadly, the vast majority of recuitment consultants are at that level too.
the few interesting careers demand analytic powers, creativity, ad intelligence. sadly the vast majority of recruiters and HR departments don’t have a clue how get these people.
that is how i see it. i plan to recruit people next year and i’m struggling to find a way to find these good people. perhaps they must have a good Masters or PhD thesis? because most of the knowledge-able geeks don’t have interesting theses or projects of value – they tend to have implementation style projects.
Please contact me… I fall into the latter category, have been grossly frustrated by working in an industry littered by the former. I want out. I’ve been looking into going back to school to get an advanced degree in Cognitive Science or perhaps Experimental Psychology.
I think if I had my dream life I’d work as a psychologist either in research or therapy, run a little indy music store on the side, and open up a small shop/studio where I would build metal sculptures. It’s been a long time since I got to do any metal or machine work… I miss it.
Anyway, we might well be able to help each other out!
Cheers!
-Nathan
“A person with more experience is going to be much wiser at the position and will not be prone to common mistakes someone who is fresh off the boat. An experienced person will know how to handle the toughest deadlines and perform much better under pressure than a newly baptized IT incumbent.”
And yet how many ‘older’ IT people are out of work?
[ NA (IP: 65.197.154.—)]
“If I had any idea what else I wanted to be doing right now you can be sure I’d be getting the hell out of developing software.
Sitting in front of a computer monitor in a quasi-solitary environment staring at the same pages of text making alterations and modifications over and over on the same generalized bits of stuff is a horrible life to lead.
Sure the job stimulates the purely logical and analytical part of my persona… but that is about the sum of it, every other facet of my being goes untapped, unappreciated, and is forced into submission by my responsibility to be a good little software engineer. ”
Try becoming an architect.
Just something you might want to think about. The 90s are long gone. IT sucks these days.
Speaking from very recent experiance in New Zealand.
Open Source experiance got me my current job. I did not apply. I was asked if I wanted a job, and I was working before I even finished my final compsci exam in November. The experiance I had from playing with Linux, and working on some real (commerical, using open source software) projects meant that I was upgraded to a second year salary when my salary came up for renewal*, instead of the normal starting salary.
(This should have been earlier this year, except that darn university changed the requirements on me, and I had to do a completely unrelated paper (Philosphy) to finish my degree. *sigh*)
This might work… but it also could backfire.
For one, if you just work on a project with others, a company will not be able to see how much you really did, only if you did it all on your own would they see some of your skills. And even then they might wonder if you just did a lot of copy and pasting.
The other thing is this article takes the premiss that companies want opensource people. This could be completely untrue. Many companies might very well see this as a major negitive. Highering such a person might cause them to have a person who wants to opensource stuff, or use opensource code, which for many/most is probably not where they want to go. Also if they have any rules about not working on outside projects from work, they might not belive that you will stop working on OSS projects.
I think a simpler thing to do, would be simply work on creating apps or tools on your own, need not be opensource stuff. Be able to show them what you can do on your own. And maybe you might make something a company would find useful, and they would be happy to hire you to aquire what you made.
By showing a strong Opensource side, you are very well limiting yourself to the few companies that are very open to opensource, and then you are competing with all the other opensource fans that are trying to find a job in those same few companies.
I think the issue is that we are hearing more of the boo hooing from older tech people. I’m a young man with strong people skills and its because of this I get reffered for jobs like crazy. I got poeople calling me like gang busters paying a decent wage. Now, yes I am single and what not but I think a MAJORITY (not all trust me I know its all based on geography and other things) of the old skoolers have generated huge bills be cause they thought things where going to be Oh so grand! Well, as my dad says….live like you loose your job tomorrow. Not saying you can’t enjoy that a good wage but don’t gear up soo many long payments and etc.
but anyway, its a whole mish mash of differnet things IMHO and I think that we as a new generation of tech workers need to see whats happening in india and setup up to the plate and say “HEY! guess what…you might get it cheaper there but we ARE going to show you that we are better”. Untill that happens I can’t say that I don’t agree with companies for seeking better help overseas.
this is a challenge that can be won if we are up to it.
The IT industry encompasses more than programming jobs, and not all of us have the ability to code.
Mattchewie, you’ve obviously never been replaced by outsourcing, and by the way, they are not more competent overseas, in fact it’s just the opposite. It’s corporate greed that puts IT workers out of work and nothing more. You have a lot to learn my friend!
It’s kinda like looking at a picture. A bachelor will have looked at the picture from afar. A master from near. And a PhD will have spent 3 years of his life studying the nuances of some 1cm by 1cm piece of the picture.
Quite the opposite, IMO. My girlfriend is going through her PhD in applied mathematics and what she usually tells me is how she has a much bigger picture of things right now – things that she would struggle during the bachelor degree, and she needed to remember equations and demonstrations, but now she understands the big picture and whenever she needs an equation she just “finds it out”, because she understands the “why’s” and “how’s” behind it.
I don’t know how you figured out that knowing less means having a wider view of something. It might be more blurry view alright, but not wider.
And remember that it was a lot of PhD dudes out there that fried his brains out to invent stuff like the cool flat screen you have in front of you, or developed an optimization algorithm to transmit data at the high speeds it happens right now.
I agree that a PhD is not for everyone, some people (like me) prefer to be out there in the market instead of inside the academic environment, but your words sound like you have a myopic view of what happens in the academia. I did too, but now when I see my girlfriend being invited to have a chat with the EEU guys to help them figure out a better algorithm to control the transport network, maybe they’re not so isolated of the “real world” after all.
a:
I just got a Software Engineering job using Sharepoint, Perl, and XML. How do they relate and have you heard of Sharepoint and what’s a good way of learning Sharepoint.
b:
How did you manage to get a Sharepoint job with no experience? Had you worked with PERL before this course? Have you ever worked with XML?
a:
NO. I have not. Any suggestions.
b:
I’d go out and buy book related to all three technologies and work through them.
All three technologies are time consuming to master. How much time do you have before you start?
How on earth did you even get this job?
a:
I’ve got two weeks before I start. I guess I got it because I had a security clearence and at the right place.
You have the right understanding of things. When it comes to mathematics, then yes, they first teach you that X exists and then they tell you why X exists. Quite often you won’t learn the “why” part before you’re out there getting your PhD.
In mathematics knowing the “why” is very helpful. In software development, less so.
99% of software development nowadays (and yes, I pulled that number out of my backside, but that’s how it seems to me) is about using tried and true methods to do some task. If you want an analogy from mathematics, then that 99% is a bit like doing tricky integrals or derivations all day long with some high school math thrown in for good measure.
You don’t have to know why it works, you just have to know the general methods for getting the right answer. Yes, if you are a software engineer, knowing how the CPU works, how the compiler works and how the OS schedules your threads is useful if you want to get that extra performance on the first try without spending a few hours profiling code. But let’s face it, what good is your knowledge of assembler and CPU architecture if you build business applications in Java all day long?
Quite a lot of people have the education required for a simpler than average programming job right out of high school. Yes, they’re the exceptional geniuses, but nowadays that number’s going up.
A person with a Bachelor’s or a Master’s knows enough to do that 99% of programming. Add some actual experience with Open Source software or other projects and they’ll have teamwork experience as well. They’ll fit right in. They’re the people doing the 99% of programming.
For that 1% you need a PhD or equivalent. These are the obscure algorithms, custom high-profile jobs, things based on the very latest research, things that require the very best knowledge.
For that you need a PhD. However, if your interest lies within that 99%, spending the extra 3 years of your life is a waste of time.
Create a portfolio of your works.
Start with printing out some of your code – whatever it is –
* even shell scripts have value!!
* contribute to open source projects and list them on your resume – even if its bug reporting.. Your trench-level skillset needs flesh
* find what specific skills employers are looking for, and get to know them on your own terms. Admin a MaxDB box – just so you can list it as SAP experience, for example. Get a couple of the *cheapest* Cisco catalyst products you can, and get to know IOS. Break it – fix it.
As you define your portfolio, you also define your role. When it’s all said and done, if you’re portfolio has bupkis to do with WebSphere, BEA, Java or Solaris, you can take those jobs off the list and focus on where your head is at – Network, code, engineering, what have you.
When they say, “who are you?”, you can say “I am this.” and plop down a comprehensable display of your skills.
If a hiring manager can see 3-D proof of something now, rather than taking a chance on seeing some in 90 days, you are that much more “in there”.
P.S.
Job hunting sucks.
A number of issues are raised by this article.
(1)
I think the time and effort to get into open source development is underestimated here. The reason is that major software projects are complex and unwieldy beasts. It could take weeks to learn one’s way around source code before the first patch is submitted. Idealistic Open Source users in any doubt should just try to download the source of their favourite open source app and if see if they could figure out the software architecture. For example, I dare anyone to have a go at firefox’s parsing system, even with your grad course in compilors in hand.
(2) Those who want to earn money programming a computer need not be threatened by open source. Honestly, most of us young grads will get jobs doing in-house development. I think the career path model is to learn a company really well by programming it’s specialised software, and then move onto a management position after 3-5 years and away from the computer. What open source does is potentially make your programming time more efficient — get a sourceforge membership.
(3) On the other hand, I would feel nervous working for any company whose purpose is to produce commodity software with closed licences, unless the software is sufficiently specialised to feel unthreatened by open source in the short term.
(4) I think the mistake many people make (including me) is to get the CS degree without getting work experience during the degree. I say start with internships in your first year. Even if that means your degree takes longer. Developing open source wont address the “character” aspect of work experience. An open source project leader can not comment on your personality. You need someone in an established position to say “this girl/guy is good”.
The future is clear. India is going supply the software. The Chinese will supply the hardware. And we are going borrow money to buy more stuff.
Don’t bother studing computer science. Better to get a degreee in fast food management instead. That is where our real future lies. The symbol of America is the eagle but it should be a diet book.
If you want experience…try finding internship while you’re still in school. Some pay nicely too. You can learn a lot also.