Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Wherein I help you get a good job (aaronboodman.com)
185 points by malbiniak on Nov 9, 2010 | hide | past | favorite | 94 comments


An easier alternative - I'm really surprised that out of work graduates from the US aren't getting Australian working holiday visas and flooding down here. Due to a resources boom (thanks China) unemployment is only 5% here. There are skills shortages in most technical areas and particularly mining. The Reserve Bank of Australia just raised interest rates again because it was worried about the economy overheating.

The working visa has some restrictions - you must be between 18 and 30. It's only valid for 12 months and you can only work for a maximum of 6 months for any one employer. The last provision is a bit tough, but there are still plenty of 6 month contracts around.

Why do Americans have such a strong reluctance to travel abroad for work? I've never understood it. It's a great opportunity to get some work experience, live a little and, particularly for the mid-west and east coasters, skip winter!


>Why do Americans have such a strong reluctance to travel abroad for work?

To fully understand this you'd probably have to live in the US. We grow up constantly hearing things like "in America at least we know we're free" and many of us can't help but think "why do they keep repeating this? Is everyone else not?". We're constantly indoctrinated about being the best in the world, so no matter how bad things are here, they must be worse everywhere else right?

We have an enormous amount of people in the US who've never been outside of it and have a completely wrong picture of the rest of the world. It was shocking for me, for example, when I came over to Europe and saw places like Sweden and France. I saw what I knew as socialism, but it seemed to be working! And the more I looked the more it appeared to actually work better for the average person. It was so demonized back home, who could have imagined that it's actually just a trade off like everything else. Some previously good friends of mine now literally think I'm a communist (sadly I'm not even exaggerating).


I'm from the United States, and I never appreciated this country until I spent a year in Denmark! Socialism seems to be working for the most part, but I don't like the conformist attitude and culture it encourages.


Is that a conformist attitude or a "work together" attitude because it seems to me that the US system encourages an "every man for himself" attitude.


There are plenty of reasons why Americans don't like to travel abroad for work. I'm sure other posts will cover them.

However, I don't think many people know about this particular working visa. My sister lives in Australia and I hadn't heard of it until your post. I just looked it up and it looks like it started in 2007. Too bad I no longer fit the age requirements. I'll pass the info along to my younger brother, though. Good tip.


I think you will find the majority of the western world have a strong reluctance to travel abroad for work.

- Working abroad means leaving behind friends, family etc. To many people, this is a big deal

- A large majority of the working population have children. Moving abroad is not a simple process when you have a family and it then also means many people's support network (fellow parents, grandparents) disappears

Also I must say, there is a dearth of interesting companies to work for in software / technology outside of the USA (I'm sure someone will now provide me with a nice list and prove me wrong :). I'm in the UK and can only think of a handful of companies I would love to have a job at.

[I'm hoping to do something about this with all the job talk at HN recently and make discovering cool companies to work for easier]


I have no reluctance to travel abroad for work at all. There's tons of places elsewhere in the world I'd love to work. But when the jobs you want are in America (or at least in greater density or number than elsewhere) why would you leave America?


I'm not sure why you were voted down as I don't see anything wrong with your point. My brother lives in Mountain View, works in biotech and has long said that the scene in Australia just hasn't got the critical mass it has there.

But the number of available jobs is the issue here and I wasn't so much referring to established professionals as those who are just starting out and having a very tough time finding their first gig in the current US economy.

In Australia and NZ, the option to look abroad for work is on pretty much every graduate's list that I've met and I guess it's understandable due to our population sizes. I got my first development job in the UK and it was that critical "foot in the door" that I needed to get work when I came back home.


Are you sure that US citizens can get working holiday visas in Australia? I was under the impression that most common-wealth countries had such agreements (and for some odd reason Japan is included in there), but that was it. For example, a US citizen can't get a working holiday visa in Canada, but a Japanese, Australian, or UK citizen can.


Yep. Details from the Dept of Immigration: http://www.immi.gov.au/visitors/working-holiday/462/usa/

You're right that it was previously just Commonwealth countries, but I think US citizens were included as part of the US-Australia free trade agreement signed a few years back.

Also, I can't see any tertiary education requirement on the site (just secondary), but apparently you need to show you have access to $5000 on arrival.


Note that the US-FTA immigration arrangements are reciprocal; in exchange we aussies get an exclusive entry to america for under the E-3 temporary work visa program: http://canberra.usembassy.gov/e3visa.html


Yep, the Australian govt. will literally grab you by the arm and drag you over there if you show an interest.

The skills shortage is, apparently, acute.

When I finished my engineering degree and they had a jobs fair the Australian stand was huge - and the "package" of benefits (i.e. crazy tax breaks, free loan car etc.) was mad.


Apparently not all Australians know this either. I talked to a couple of placement firms in 2008 about the possibility of temp or perm work in Australia as a US citizen and was politely dismissed - "too difficult, no jobs, preference to locals", etc. I had 15 years of software development skills at that point - mostly webdev (php, perl, etc), but some other non-web software skills too.


Why do Americans have such a strong reluctance to travel abroad for work? I've never understood it.

Do Americans have a strong reluctance to travel abroad for work? I haven't noticed one way or the other. When I graduated in 2001, my 'reluctance' was based on broke-ness. The difficulty affording even a $75 fee (for a background check to work for the local school district) meant that the thought of leaving all my connections and going several thousand dollars into debt for overseas relocation didn't even cross my mind.


Do you have any idea how difficult it would be if you found a great employer while on the working visa, and wanted to make the move permanent?


Actually I think you'd have a pretty good chance of getting sponsored for a normal work visa in that situation. Unrestricted work visas here are awarded on a points system. Most IT positions are awarded maximum points and you get more for being under 30, healthy and speaking English.


you must be between 18 and 30

Why the restrictive cutoff at age 30?


I believe it's because younger people are cheaper to support (financially, physically) as a society than older people. More flexible, too.


Actually, that's a 103 step program, but I agree with the advice. If you want to get a job, you need experience... And the internet is full of projects that need bugfixes. That stuff looks -great- on a resume. Take that from someone who interviews hirees.


I agree. As I mentioned on one of my CV reviews from the other week(Sorry if I didn't get to yours yet, I have my list but it takes me 10-15 minutes to do a good one and I've been short on time). When I get a CV I scan it quickly for an idea of what the person is about then throw it out or in another pile for a more in depth read.

A link to github or a blog or something where I can see some of their work "in the wild" (not just a portfolio link) always gets them in the second pile as I find code a far better indicator of a good programmer than a good CV.


But there are a few fields that are hiring like crazy. One of them is mine: software engineering. Major tech firms cannot hire fast enough. It's so competitive that you do not need to have a degree (I don't).

Was this written in the late 90's?

I follow job listing sites almost daily, and I'm just not seeing this. I'm also not seeing it in the volume of headhunters contacting me.

And thirdly, what job listings I do see, they have absurd ideas of what qualifications they require. Yesterday I saw a job listing for perl scripter for system automation tasks requiring a BSCS, MS preferred, and a little while ago I saw a sysadmin job requiring a BSCS.

I'm not in the middle of nowhere, I'm in the Boston/128 area.

So do I have the worst job hunting skills ever or is this guy living in a bubble?


In my experience, mainstream jobsites are awful for software jobs. Jobseekers are sitting there firing off CV's left right and centre, and the recruiters put things like "MUST have a BSc or MSc in Computer Science" to try and stem the tide.

Good companies don't care if you have a CS degree as long as you can code and think. That said, someone may have embellished the job requirements and if you think you'd be a good fit for a job it may be worth applying anyway.

I'm not sure what the situation is if you have no degree at all, or a degree with no scientific or technical element, but it helps to have evidence of your skills, and whatever your situation it really helps to know people who have a good impression of you and your abilities.

For better jobs boards, look at:

Stack Overflow Careers http://careers.stackoverflow.com/Jobs?searchTerm=&search...

HN Who's Hiring threads. Eg http://news.ycombinator.com/item?id=1659409

Also, check local user groups for whatever languages/technologies you're interested in.


While you can get a job (and a good job at that) without a CS degree it is my opinion that you are putting yourself at a significant disadvantage by not having one.

One aspect is the theoretical foundation. You can of course get this by just reading yourself and a transcript doesn't actually prove you know anything but without a CS foundation, the onus is now on you know to prove somehow you're simply a "monkey see, monkey do" cut-and-paste coder.

The other important part is practical. Companies get a lot of CVs. For programming jobs, the most common filter is "has a degree". If you have one, you go in one pile, if you don't, you go in the other (which is often filed in the big circular filing cabinet). What's more, hiring managers may have their hands tied on this one: it could be HR policy or the hiring manager may not even see your CV because HR has already filtered it out (this happens a lot).

After I started working I went back and studied part time to get a degree. I'm glad I did, even if it's major use is to have one less barrier to being hired.


I'm talking about sites like craigslist and jobs.perl.com, and I'm aware recruiters put in all kinds of filters like a CS degree but I'm mindfull of that and I notice that the same problem exists without recruiters involved.

Stackoverflow careers? Seriously? "34 jobs found near boston". How many candidates are looking at these listings? Thousands?


Whilst the average quality on those boards is clearly much higher, the number of jobs being posted is about two orders of magnitude lower than mainstream jobsites; and until they gain more traction, they'll never be the first place I check for any vacancies.


I'm about to graduate BSCS from an engineering school, and every networking job I've seen wants experience + CCNA/CCNP, and the system administration jobs want BSCS + experience. I have 5+ years of part time IT experience and a summer of full time basically admin level experience and yet I can't even get interviews. Pretty depressing. =|


Its just crazy they want a BSCS for sysadmin. That's like requiring a truck driver to have a degree in thermodynamics.


We hire cloud sysadmins. The trucks drive themselves: Your job is to manage the fleet of tow trucks (filling in as mechanic when necessary), to figure out which brand of tires is 0.5% more reliable, and to make sure the trailers are optimally loaded with the correct packages.


Do you know any good places to look for sysadmin jobs that might be more open?


Wish I could help you. My only suggestion is to ignore the requirements. It must be tough though, a programmer can send samples, a designer can send a portfolio, but what can a sysadmin do.


A sys admin can set up a virtual network on EC2. He can blog about it, he can then ask to take his laptop to the interview (check beforehand if WiFi / ethernet is available, otherwise perhaps a 3g dongle) and they can demonstrate everything they can do.

Just imagine a sysadmin turning up with their laptop and demonstrating...

1. Provisioning of servers where they've created the *nix build, deployed a web app, mysql etc

2. They show off their system monitoring capability, take down a few services and then show off their e-mail alerts. Bonus points for twilio integration with SMS :)

3. They then show the backup process they have and how they verify their backups

4. The sysadmin then runs a series of security tests against a server and shows the results

I would hire that guy in an instant


I just blogged minutes ago with a solution for you: http://blog.fairsoftware.net/2010/11/10/how-to-land-a-job-at...

In the case of a sysadmin job, this is how I would do it: start showing some expertise in configuring Linux virtual instances, discuss why and how you manage them, share tips and tricks you learned. That will do you a lot of good on your resume, help you land interviews, and help you convince during those interviews. Especially if you are competing with other college grads with 0 experience, you'll stand out.


I see two problems with this. One you're expecting them to come to you just because you are there or looking in the worst spots for good jobs(public job sites).

Get out and contact the headhunters yourself and work with them and network with all the people you do know and hit them up for positions. They might not have anything at their work but its possible they or one of their colleagues has or knows someone who does have a position open.

Secondly you are taking the BSCS or MS lines in job ads at face value. When they say "Requires a BSCS" what they mean is "Requires a BSCS or experience".


Your difficulty and this gentleman's relative lack of difficulty finding a job probably has a lot to do with location. Second runner up is probably credibility. Let me explain.

My experience is in line with the author's. Finding a job has always been relatively easy (beginning at a certain point, which I will elaborate on) and I do not have a degree of any kind. It's my opinion that three factors are primarily responsible for my state of affairs.

1. I started working at a local ISP when I was 15 years old. This was around the time that 28.8kbps modems were all the rage. While I was very green I had unbounded enthusiasm and desire to learn whatever I could about technology. The ISP got a super cheap tech support person and I got paid to learn. After a year I got a chance to do UNIX sysadmin work, and my level of experience began to snowball.

The (fairly obvious) takeaway here is that I built experience. Businesses don't want to train you if they can help it. Not able to find a learn-on-the-job opportunity? Take the author's advice and contribute to an interesting open source project.

2. Befriending an employee of one of the largest ISPs in the United States ended up landing me a development position on a pretty large contract. I worked damn hard, and ended up contributing in a fairly visible way. Because the job was for a company in the Fortune 50 I've since been able to point to it as social proof that I at least have a vague idea of what I'm doing. Employers love this. This is when job hunting became dramatically easier.

You may think the takeaway here is to be lucky, but I disagree. The takeaway is to get to know people that you can develop mutually beneficial relationships with. To this day I still get contract work and referrals from people I worked with on that one job.

3. Location. Companies will sometimes relocate you, but I've never seen one that will do it without there being a very compelling reason to have you on staff (ie, experience and a proven track record). You have to go where the jobs are. Sometimes you have to suck it up, move away from your family and friends, become a nobody, and start pulling in a paycheck. Once you do you can start planning (and saving) for the luxury of living and working in a desirable place.

The takeaway here? Get away from the crowd. In my experience there are at least two good markets for developers, Denver/Boulder CO (Denver being easier than Boulder), and Kansas City MO/KS. I'm not a big fan of Kansas or Missouri (sorry natives, you're all great people), but Colorado is a beautiful place with lots to do outside your cube/apartment. The job markets in both those places are reasonable and you can be relatively well paid even with limited experience. How do they compare with SF/NYC? Not even close, but it's way easier to stand out from the crowd when there is no crowd. Being in the middle of nowhere can sometimes be a benefit.

All that said, good luck.


Perhaps he's living in the Silicon Valley bubble. His experience looks a lot like mine.


If this article is targeted at people with no experience (ie it mentions learning how to use IRC), is recommending that they fix bugs in C++ code really the right answer?

Why not start with a Python project or something more realistic?


I specifically chose Chromium (or another browser) because it is one of the few pieces of open source software that normal people would have direct experience using.

Seeing your fixes shipped to you and your friends' browsers is an awesome motivational tool.

It's true that it's harder, but it seemed like a reasonable trade-off.

My main concern with picking a browser wasn't the difficulty it was the expense of having a good machine to work with. Sadly this applies to all browsers that I'm aware of. Building Mozilla is terrible. WebKit is probably the best; it just contains less code (you only build the rendering engine when you work on WebKit, not the browser).


Granted, but the learning curve to pick up all that's required to becoming an active committer to the Chrome codebase (command line, VCS, UI programming, OOP, Pointers, C++, and so on) is more like a vertical cliff than a curve.

Out of 1000 non-CS people who try to do this I'd be surprised if even 10 make it through to compiling the Chrome source, and I'll be stunned if even 1 makes it through to the end of your "5-step plan".

It's a noble aim, and the idea in general is right (learn to program and contribute to open-source software) (though I can't quite agree with considering their education a "sunk cost" - you need to build on what you have or you'll always be disadvantaged), but there are better, easier ways to achieve that objective than going straight from "I've never seen water in my life" to jumping into a pool infested with shark, mutant piranhas and man-eating giant squids.


> I'd be surprised if even 10 make it through to compiling the Chrome source, and I'll be stunned if even 1 makes it through to the end

Isn't that part of his goal, though? It's great to find people who are that passionate about the work. Somewhere out there a developer is drooling to work on a browser project and would be in heaven if they could prove themselves good enough to make the team.


I'd argue that in this case, he's not helping them (the 1000) to get a job, he's helping himself (the Chrome developer) to get an extra committer or two.


But everyone of them who does would have proved they have the skill to get hired in the industry we all hold so dear.

Getting a job is what they are after right?


>Building Mozilla is terrible.

you should have tried building it in 1999. Last time i did it - in 2007 - it was a blast compare to 1999.


Learn the difficult fundamentals of programming first (pointers, data structures) first. Experience with C/C++ and user-level systems programming (IPC, pthreads, BSD sockets and/or their Windows equivalents) makes you stand out amongst job applicants; writing database driven web applications in scripting languages does not. If latter is ultimately your passion, you'll have no trouble transitioning: successful web companies seek out developers who understand more than a thin segment of the full stack (see Brad Fitzpatrick's interview in Coders at Work for a good discussion of this).

I suspect there are also plenty of bugs in Chromium et al which require non-trivial scripting to find and fix (who does exclusively manual testing any more?)


I disagree. Work on what you're interested in. If you're an expert on data structures but can't write programs, you're useless. If you can write programs but don't know data structures, you can pick up a textbook and solve that problem in a week.

Now, in my current position, I wouldn't hire someone that didn't have a solid understanding of data structures already (unless they were an intern)... but at other places I've worked, I would hire you in a second. The thing that will make you stand out in an interview is a proven track record of writing software. Other stuff can be fixed later.

(A lot of people that work as "software engineers" cannot write or engineer software. They kind of open up the Eclipse project, click shit, write status reports, and call it a day. This is what I want to filter out in an interview.)


> If you're an expert on data structures but can't write programs, you're useless.

I agree here, which is why the author of the original post suggest contributing to open source projectors. The projects that he suggests require getting more than a surface knowledge of how data structures are implemented.

There are certainly programming jobs that don't require knowing data structures, but if you're a good programmer and you understand data structures and algorithm, the total pool of jobs open to you is much higher (and you're much less immune to being treated as a commodity, although in my experience that has more to do with the company and the industry rather than specific work).

But overall, seeing the software a candidate has contributed to (fixing bugs, implementing new features, starting new projects) is a much more reliable indicator than whether they can white board an algorithm to detect a loop in a linked list without using any additional storage. You can minimize false positives and false negatives, but you're going to get them.


Exactly. Do you want to force the interviewer to spend 45 minutes trying to divine, unreliably, if you know what a pointer is, and that you won't go into the fetal position when you see your first segfault? Or do you just want to email some links to the online discussion of your patches in advance and spend the interview talking about something else?


Not to mention Python, Java, etc... still have pointers and memory leaks (at least in Java, everything is pass by value, but with the exception of the primitives, every value is a pointer). They will also suffer memory pressure when you allocate objects without thinking (which is rather easy to do if you never had to think about what the runtime does when you say "obj = Foo(bar)").

I'm not a C/C++ bigot, my "favourite language" is currently a three-way tie between Scala, OCaml and Lisp. Plenty of real programming gets done in other languages (plenty of people also think that C is the secret sauce for performance, but that's not the case), but C is important for two reasons: it's the lingua franca of programming and it's a great language for learning how computers work. Pascal may have been another option twenty years ago, but there are hardly any interesting open source projects being done in it today.


Java is pass-by-reference. Pass in object foo, call smash_with_hammer on foo in the called function, and the caller finds that his foo was smashed by a hammer when control returns to him. You might not have noticed this because, as a Scala, Lisp and OCaml programmer, you don't let your objects smash themselves with hammers :)

(Though it is hard to avoid in Java; seems like everything useful takes a StringBuffer instead of a String. Java -- the high-level language with about as much abstraction as assembly.)


You missed the part in strlen's comment where strlen says that every non-primitive value is a pointer. This also explains the behavior that you describe, with the caller's version of a variable being modified by a callee.

However, this is different than pass-by-reference. With pass-by-reference, if i assign a new value to the callee argument variable, that value also replaces the value in the caller. This is not true in java/python/ruby where it is termed "call by sharing" http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sha...


> Java is pass-by-reference. Pass in object foo, call smash_with_hammer on foo in the called function, and the caller finds that his foo was smashed by a hammer when control returns to him

In agreement here, the state of the object changes according to a message passed to the object. In this case, the value we passed is a pointer to the object. We can't, however, change what object the pointer points to in Java, which is why I call it "pass by value". E.g., I can't do equiv of this Perl code.

sub bar { my $foo = Foo->new(a => "a"); foo(\$foo); }

sub foo { my $arg = shift; $$arg = Foo->new(a => "b"); }

On the other hand, in Perl even though I am passing a reference by value, I can still mutate the state of the object:

sub bar { my $foo = Foo->new(a => "a"); bar($foo); }

sub foo { my $foo = shift; $foo->set_a("b"); }

(Please excuse my Perl, I haven't written OO Perl in over a year now).

In any case, I think this is a pedantic point. Both of us agree that other than in few cases (algorithms/data structures that are difficult to express in a functional way), objects shouldn't be smashed by hammers: whether internal or external.

I also don't understand why Java's standard library authors didn't do what Scala did and provide both mutable and immutable versions of collections. Java 5+ added great lock free data, concurrent data structures, but much like they have a ConcurrentMap, they could have added a "ImmutableMap"/"ImmutableList" interfaces (especially given the fact that some data structures e.g., CopyOnWriteArrayList behave like this internally). I really like Scala's "functional objects": objects that upon receiving a messages, create new objects. In Java, an object may be final, but it will still (as you put it) "be smashed by a hammer" as long as the hammer smashing was invoked by a message. Same thing happens in C++ with const methods, in objects passed as const& references which contain objects that mutate their state upon a message being passed. Rich Hickey discusses this much better than I do in his famous talk: http://www.infoq.com/presentations/Value-Identity-State-Rich... (although I may not agree with all of his conclusions)

> seems like everything useful takes a StringBuffer instead of a String

That's a textbook example of premature optimization :-) The compiler will convert string concatenation to StringBuilder. See: https://gist.github.com/670577 It does makes sense to use a StringBuilder when you are doing concatenation inside a loop (and don't want the overhead of allocating a new StringBuilder inside), but otherwise there's no advantage to it.

(Oddly enough, in this example the default optimization level did not unroll the loop itself. OCaml, on the other hand, despite having a much more compiler-friendly type system than Java, doesn't perform the equivalent optimization on string concatenations with the '^' operator. I am pretty sure g++ will do both, despite C++ being lower-level and having weaker typing than OCaml and Java).

For another example of this kind of premature optimization, see people using inline in C++ code when the gcc/clang will have a much better idea than the developer on when to inline a function call and when not to :-)


My friend is quite impressive at the guitar despite never having lessons. He says the day he went from beginner/average to pretty damn good was when he decided to learn a Hendrix part way beyond his then skill level.


This would be a great story if the ending was, "read a music theory textbook and proceeded to mint his first Platinum album" :)


C++ isn't that hard, I got a pretty good hang of it after a couple months on my first project out of college. Why is a Python project "more realistic"? the learning curve is probably similar.


Memory management.

I think this makes it about twice as difficult to get up and running in c++. Not saying it's better or worse or going to make you a better programmer or not, but I don't think anyone could argue that it's easier to learn C++ than python/ruby/php/etc.

Also see: http://www.joelonsoftware.com/articles/fog0000000006.html


Twice as difficult? Not likely. There are 14 year old kids making million dollar apps using Objective C and managing the memory. It's not that hard, you just have to learn a few rules. I'm not saying you'll be an expert but you should be able to start fixing simple bugs in an open source C++ project within a month unless you were born without that part of the brain, as Joel says.


I think you have an unrealistic view of 14 year olds. Just because 1 in 100,000,000 can do this does not mean C++ is as good a language for a beginner as Python.


I'm going to agree here. C++ is the first language I really did anything with (a sierpinski-trinagle generator for KDE, when I was in 7th grade) and simply didn't understand, at the time, what the memory-related issues were. I allocated stuff, and it worked. I returned pointers to the stack, and the code worked. Sometimes I got segfaults, but if I changed the code a bit, they went away.

This is not the sort of understanding you want people you're paying to write software to have.

(And yes, I do see this from time to time. "Do you know anything about programming!?" "Yes, just enough to be dangerous.")


But C++ doesn't require you to know memory management or use pointers, those are all wrapped up in the STL containers. Those can be towards the later part of the learning curve, rather than at the beginning.


More accessible high-level libraries (C++ probably does have more total, but they'd be harder to find and get working) and no compiler flags / link options to get wrong. You don't have to specify your types, which makes small programs easier to write (but makes large programs more painful to get right).


Advice is to contribute to Chromium, fixing 50 bugs over the course of a year or so. Might not be an easy path though, personally when I tried to compile Chromium, it took my PC 8 hours compiling before coming up with a fatal error. Been thinking about getting EC2 instances to compile it, has anyone tried that? Software license costs for Visual Studio put me off a bit.


Might not be an easy path though, personally when I tried to compile Chromium, it took my PC 8 hours compiling before coming up with a fatal error.

Welcome to software development. :-) Seriously, I probably spend at least 10% of my time dealing with broken libraries, badly documented build processes, and other depressing obstacles.

If you can get past these kinds of problems—and more importantly, if you submit fixes to spare the next person the pain—then you'll make a great developer.


Been thinking about getting EC2 instances to compile it, has anyone tried that?

Sounds like a good idea to me, esp. for people working on a laptop.


You can download a compiled version :-)

Seriously, do you have to compile the whole program for every code change? I suspect that is not necessary?


This is merely one of many questions you will end up learning the answer to if you pursue this program.


My guess is that you only have to compile the build target that your code change was part of... you can build just Chrome, or just unit tests, or whatever else is part of the package...

Also a common way to speed up build times is to build in release mode.


No. That's why make(1) exists. You do usually have to compile everything once though.


Compiling Chromium crashed my box by overheating it. Definitely not a newbie-friendly project as so much of it is implemented in C++. While Mozilla's build may be equally terrifying, at least they have the good sense to implement good portions of the UI in Javascript.


Out of curiosity what are the specs of your box? If anyone else can answer, I'm also curious what kind of box you need to safely compile a huge project like Chromium.


Took a bit under an hour on my machine.

Core i7, 12GB of RAM, 10k RPM HDDs.

The built executable worked first time too, which was impressive for a project of that size, given that it was the very latest bleeding edge trunk source code.

For comparison, I tried to build Mozilla three or four years ago, and gave up. The Chrome build environment setup instructions, while long and tedious (especially on Windows), are excellent.


It was on my 1.8 GHz Core 2 Duo laptop. I ended up able to compile it by putting my laptop next to a large fan, but it was pretty ridiculous. The worst part was that I had to perform this whole song and dance just because I wanted to change some key bindings. (Using Alt+number to change between tabs like every other Linux program.)

This serves as a nice textbook example of why implementing things like menus and keyboard shortcuts by hardcoding keycodes in C++ is a horrible idea.


I've never contributed to open source before - this might be just enough of a 'its easy just do it - like this' type tutorial to get me started.


you really needed someone to tell you that it's easy to contribute to open source?


Yes. Don't be a jerk. Even knowing that it isn't technically difficult, it can be socially difficult, and this is a useful guide. Knowing the social protocol of how to get started in the community lowers the mental barrier substantially.


Stereotypically it's not very easy. Open source projects are frequently schizophrenic about the code they will accept, saying one day that it's a great idea and the next day rejecting your patch because it's not something they want to do. (This is standard for multi-agent systems, but it's still quite discouraging.) And then there are the attitudes involved. To say nothing of the overall difficulty of writing software.

It's not merely a question of needing to be told that it's easy to contribute. That's not even the right way of looking at it. The question is whether it is easy at all, and I say no. If someone told me it was easy to contribute to open source software I'd know they were either lying or delusional.


I've found few projects that are even close to schizophrenic.

I think the thing that people often miss is that getting a patch that works is really only 50% of the process of getting a bug fix/feature merged into an Open Source project.

In a company, the hiring process is an initial crap filter (or at least is supposed to be). In an Open Source project, the filters work very differently. You won't find a lot of (community driven) projects that spend a lot of effort putting together detailed documentation about how to build a project and submit patches. That's because figuring this out is the first level filter.

The second level filter is figuring out the architecture of the project. This can be difficult in a subtle way. In a company, you can usually sit in a conference room and have someone explain to you all of the details of the project such that you have a pretty good idea of how a patch or feature should be implemented.

In most Open Source projects, you generally have to code up an initial version of the feature and then you'll attract enough eyes that you'll get the feedback about how to do the feature properly. If you're a long term contributor, you skip most of these steps and the process is fast. If you've never contributed before, it's almost certainly going to take a lot of effort.

It's all about scalability. Open Source projects significantly reward people that are self motivated and can figure processes out without a lot of hand holding because that's the type of person you need to build a successful project when there aren't any managers, program managers, or formal architects.

I think that's probably the biggest value of the proposed plan. If someone has gotten 50 patches into a major project, it says a lot more about the individuals personality and motivation than it does about their programming skills.


That's because figuring this out is the first level filter.

Absolutely not. It's because it's boring and it's time for bed now so let's do that tomorrow. Eventually it does get done, though; all the big-name open source projects have this sort of documentation available.

(And now, thanks to Github and the implicit fork-and-pull-request model, so does almost everything else. Reuse++!)


Don't get me wrong, I think the plan would work just fine. I just don't buy the view that it's easy contribute to open source projects. It's not, nor should it necessarily be.


Not really. You are confusing code and ideas. People like to discuss what they "will do" or what they are "almost done" with, and these ideas get approved and rejected fairly arbitrarily. But small, simple, easy-to-understand patches that come with a test case? Thanks, applied. Always.

If you are getting a lot of pushback on your changes ("it's not indented right"), there is probably something else that's wrong. And sometimes, there is administrative triva to deal with.

(The other day, someone sent me a patch for ibuffer-git via a github issue. I'd prefer a pull request, but fine, whatever, easy to apply anyway. The problem is that I need to keep a list of contributers in case I decide to contribute the extension to the emacs core. This person had no contact information, so I couldn't just apply his patch. I really needed the fork-and-pull-request so that the author information would be properly recorded. Annoying for a 2 line patch, but a necessary evil. And even then, the patch is applied in my repo, it's just not pushed yet :)


No - I've got enough shit to do that I haven't really made time to give my effort to someone elses project. Maybe this is why.


yes, it is necessary to be told it is easy to contribute top open source when it is against a backdrop of being told how difficult it is to produce good code, and the difficulties around software development that are frequently reported


It's great that the community is giving advice on what steps to take for getting a programming job, but I would like to add that finding a job is a short term fix. If one is only trying to work out how to get a job for the sake of getting a job, it will only be a matter of time before one is bored. But then again, you'll probably only realise this only having gone through the process. Try to find something that interests you, which may or may not be programming.


Great advice, but two caveats:

1. Employers are often focused on hiring very specific skills sets. Having fixed a C++ bug in Chromium should impress them, but if they need a Django expert they still see you as a novice. It can be hard to present yourself as a well-rounded candidate if all your experience is with one project.

2. In a couple of interviews I've had, I've noticed a distinct bias towards valuing paid work more than open source contributions. It's often hard to get interviewers to understand that something I've done for free is on the same scale (or greater) than things I've been paid for.


This article is like a breath of fresh air. One of the few things you read about the industry that doesn't make you feel vastly underqualified. I'll definitely take aboodman up on his offer (coincidentally I logged onto freenode for the first time in my life a few hours before reading this...), although I expect he's inundated with responses right now so I'll leave it a few days.


This is an interesting path to get a good software job. I agree that when it comes to software jobs, a good resume with a lot of techno buzz words does not mean anything. An interview that gives coding puzzle can easily tell a person if he's capable or not. But a non-tech hiring manager will not be able to carry one out, a few references of open source projects, bug fixes definitely boost up your scores quite a bit. I've hired some good people and some bad before, at the end of day, your project success is not based on how many PhDs there are on the team, but how many coders that can deliver.


What's the most effective way to mention open source work on resumes? I generally mix it in with other non-school- or -work-related stuff in a "projects" section, but is there a smarter way to emphasize it?


If you've got a lot of it, make it its own section. If you don't, but you think it's significant work experience, I'd put it under 'work experience'.

Last time I wrote a resume, I didn't have enough that I felt it was significant, so it went down as a relevant hobby, just like volunteering at the computer shop in and winning awards for computer knowledge high school.


For code, the best way is a URL to the bug tracker or commit log which shows all of your contributions. Use bit.ly if need be. A surprising number of people will list projects they've barely contributed to, using languages they barely know.

If you have 2 or 3 projects to list, an "Open Source Contributions" section is fine with me. The main thing to avoid is fancy formatting. How you divide things up into sections is not a big deal.

I like this article because I got my job this way. :)


Part of me loves this kind of inspiring advice ("you too can grow up to be president"). And it certainly is true for some people.

But the truth is that most people who try this will fail. Very few people have the right combination of aptitude and attitude to do this (especially considering that the intended audience is people without an IT background).

[edit] Perhaps the message to take away is that there is a low barrier to entry in our field, so it's worth giving it a shot.


"Work for me for a year w/o salary and I'll help you get a job." /jk

There are better routes for new programmers IMHO.

Start at http://rubyonrails.org/ and build a website you find useful.

Learn SharePoint or BizTalk, those are boring but in very high demand now.

Even more boring, sing up for a cheap 6 month Cobol course in India.


I agree that learning how to get a website up and running is an easier way to go (and hence more likely to succeed and be morale-boosting). Even if web development isn't considered as "hard-core" as working on compiled applications in C++, there are still a decent amount of jobs available.


A good complement to this would be to work through the exercises in K&R.


Can't help wondering if CodingHorror.com posted this because they were running out of material.


learned my lesson... any attempt at humor loses karma lol


let me give the humor police one more to downvote lol




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: