Ask HN: what was your first programming gig, and how much did you actually know?

53 points by Tycho ↗ HN
Looking at job adverts for software engineers, it seems that life is rosy if you have a couple years J2EE and/or .NET under your belt. By rosy I mean you can be fairly confident of finding a steady job, and can start setting your sights on (much) more lucrative/interesting positions by expanding your knowledge.

But as someone still in the education process, a lot of job postings I glance at and find myself caught in two minds. One half says 'They're looking for a lot of skills. You can't honestly say you're adept at the majority of those requirements. You need to put in a lot more hard work before they'll take you seriously.' But the other half says 'Hell, you don't know TechnologyX per se, but you could pick it up no problem. You've worked on harder problems than they're likely to throw at you. You'd be doing them a favour by applying.'

So I'm wondering what the professional developers here found in their first jobs. Were you under-qualified? Overqualified? Lucky to find one? Blagged the interview? Winged it? Needn't have worried? I'd like to hear the story.

55 comments

[ 4.3 ms ] story [ 105 ms ] thread
I got hired straight out of college by a company that made software for banks. They were just starting on a windows version of their consumer lending product (banks move slow. very slow), to be written in c++.

The regional VP at the company was kayaking buddies with the professor who was my advisor for my senior project. The VP asked the prof if he had any good graduating students for an entry level job, and I was recommended. From what I can tell, this is one of the better ways to get a job out of school.

My first assignment was helping a senior guy track down a bug in some multithreaded C communications code for handling ATM machines. Legacy stuff from the company that had been bought by a company that had been bought, etc., that no one completely understood any more. I had no idea what I was doing, at all, and it was a great situation to be in professionally.

Worked for that company for 5 years, then it got bought and I was laid off because I was still the newest member on the team. Very stable group, learned a huge amount from them.

I got lucky.

I started in a very small web dev shop when I was still in college. I had some programming experience but when I started I quickly realized my experience was irrelevant. The place was a good starting point because I was able to experiment with different technologies, talk to clients, do front and backend stuff and manage 2 small apache servers. During this time I also learned what I like and don't like doing.

It's true companies often put a lot of requirements on the list but they are usually serious about few of them. I think what is important for a lot of them is if you can actually pick up things fast. If I were you I would choose something which excites you and try to get better at it every day. Use it to build something like a prototype or small project etc, and then look for companies with similar interest.

A few of us were sitting around in the Computer Club office, and Steve comes in and asks us if we want jobs for the summer. So Tony, Jim, and I ended up working that summer on a weird research experiment, hooking computers up together. Part of what I did was writing test programs to make sure the computer could talk to this smaller computer, that knew how to talk to others of its kind.

The smaller computer was called an "IMP". The main one was the Sigma 7 at UCLA, host #1 on the ARPAnet. Steve was Steve Crocker, and other folks on the project included Jon Postel, Vint Cerf, and Prof. Leonard Kleinrock.

Last year, I got to mention to Vint Cerf in person, that we had last worked together some 40 or so years ago.

So, to answer some of your questions, 1- definitely underqualified. I was 16. 2- Lucky? No kidding. Right place at the right time.

Now that can't be bad for the CV: 'Helped design the internet'

Or do you just put that down as 'experience of implementing robust, scalable, distributed computing solutions for both consumer and business clients in a challenging environment using diverse technologies, including SOAP and JSON' ;)

> No kidding. Right place at the right time.

"Seventy percent of success in life is showing up." (attributed to Woody Allen)

I showed up at many bars many times in my life, still waiting for that success...
Don't worry about it. In my experience, a lot of the criteria listed in these job postings were done by non-developers and have little to do with the actual job. Also, when in doubt, just apply. Interviewing is a skill like any other. It requires practice. Even if you feel you're not qualified, the interview might surprise you, and if it doesn't, it's still good experience.
My first gig was a FoxPro contract to find a bug in a very messy report generator, written by a recently divorced, overweight diva in her late 40s. That, my friends, is as close to an immersive reality check as it gets. I was on 3rd year in the Uni and had fluent Pascal, working knowledge of C, could solve Hanoi towers by hand and tell the baud of the modem whistle by ear. Quit in one week, earned $40, didn't manage to make a single change to the code, and acquired a life-long dislike to anything database :)
I'm getting divorced at the moment. Curious why you think its relevant
Divorce causes psychological trauma.
After high school I got a data entry role in a Satellite broadcaster's IT department doing Crystal Reports templates for boring subscriber reports (i.e. how many subscribers in this region cancelled last month). I picked up SQL and VB6 doing this, then around 1999 the company decided to start doing everything web-based and I got thrown into learning ASP, Java Servlets, JSP and no one bothered to question my lack of experience. Things grew from there to doing online community micro-sites, TV program webpages (Southpark in Taiwan) etc until the dot-com bomb and everyone left - I went to study engineering.

Note: I am not a professional developer/programmer, although people pay me money to do software development

Care to explain the note?
Since 2001 I haven't had a programming job. I did not finish my engineering degree (got a Finance/Mandarin degree instead) I work in an unrelated industry (real estate) so I placed a caveat on my story for the OP who requested 'Professional Developers'. But, I have done part-time/freelance work and got paid for it.

Nice site and portfolio, BTW

I took a very normal College career path: Go to internship/career fair -> Get an internship at a big company -> Get hired.

The thing to remember is that you're not going to be applying as a tech lead, you'll be applying as an entry level engineer. As an entry level engineer, you are not going to be expected to have a bunch of skills (in the X years of experience with J2EE sense). Companies know that it will take time for you to learn the skills you need. My last manager estimated this time period to be about 3 months for someone fresh out of college, which is why he hated getting summer interns.

What will be expected of you is to:

- Have a good GPA

- Be generally technically competent

- Be generally socially competent

- Be excited for work

- Want to work hard

I've recently moved on from my first post-college job, and my new job may expect me to do android and rails development, even though I've no experience with either. They knew this during my interview, but I was able to prove that I can and want to learn. That was enough for them to feel confident in me.

TL;DR: There are many jobs that don't expect you to know everything before hand, especially when you've just graduated.

I was given a task to finish a webshop with online payments and hotel room reservations for a spa in 1996ish. It was started in perl, though I moved it to PHP a bit later.

I was 16 and was doing an actual summer job at the time (hard labour, 8-12 hours), so doing that was a good balancing thing. But the outcome wasn't very good, I had quite little concept of how to structure the program well. But I did finish it and the shop went into production.

I'm pretty sure, or at least sincerely hope they threw all of it away in the next iteration :)

Microsoft, as an intern right after my first year of college. I thought I was hot shit. Got schooled a few times by those more wiser. Pretty humbling, but I learned a lot and grew a lot.
When I was feeling homesick in Thailand, I basically ended up hiding in my hostel for three days learning Qt. I came back (4 months later) and interviewed for a student IT job. The guy who was interviewing me saw Qt on my resume and said he knew someone in another department who was looking for students who know Qt. The interview with my current boss was actually kinda funny. He briefly mentioned that he had seen the stuff I had on Github, and then we talked about Asia for half an hour. Then I was hired. Lesson: homesickness can be a good thing.

Edit: I forgot about the underqualified part. Hoo boy. I've been working on Qt for 6 months now and I'm still digging deeper. The guys I'm working for are really, really skilled. Just watching them work reminds me how much more I have to learn...

I did 5 years in the Navy as a UNIX server admin, and the extent of my programming experience (aside from two community college classes in QBasic and Visual Basic) was making some small changes to a PHP-based trouble ticket system.

After I got out, I found out through a friend that his mother-in-law's boss wanted to build a scheduling system specialized for TMJ doctors. I did a few hours of research on the Internet and put together a presentation proposing a PHP backend with AMFPHP connected to a Flash front-end. I didn't know how I was going to do it, but I knew that I could figure it out.

It probably took about twice as long to build as it should have (and knowing what I know now, the code was terrible and I would love to re-write it with Rails and SproutCore), but it worked and ended up costing the client a lot less than it would have cost him to have someone else build it (I only charged $30/hour).

That gig gave me the confidence to know that no matter how hard the problem is I can figure it out, and I was able to take on gigs that other people at my experience level would have balked at. I've been a professional programmer ever since, both as a freelancer and as a salaried employee.

Gig: Hackin' Lisp.

Qualifications: Nietzsche, Wittgenstein, Hume, Sartre and others...

Honestly, they hired me as a technical writer and it turns out I write code, that writes code, that writes code, really well.

What the fuck I'm going to do for the rest of my career, I don't know.

Honestly, I don't really care given my meteoric rise from lowly philosopher to lisp-dev uber alles.

Very interesting. All those nested clauses in philosophical texts, I guess they're good for something!
I guess I will probably be one of the "weird" ones here.

I have never actually applied for any job and began programming very simple video games for myself as a kid (about 12) instead of using flash cards etc because I thought it helped me remember things better.

When I was in college I played division I golf and was on a scholarship with school paid for and no real reason to leave

A guy who was a tour pro from the town I grew up in asked me to come look at the computers at a business he had bought. I went by mapped a few network drives explained file/printer sharing and on my way out made a passing comment about how they should check out a databasing system rather than just making copies (they were a copy company).

Next thing i know I was working 60 hours a week developing custom sharepoint systems for his customers on a contract basis. Eventually I dropped out of school "officially" started my first software related company and have never looked back.

As I said, I have never actually applied for a job, BUT it is VERY fair to say I was (and to some extent still am) very under-qualified for what i was doing, but I can think of no better learning experience than getting in over your head and knowing you have to meet a deadline.

I don't know that I will ever take a "real" job since I am constantly working on projects or creating my own companies, but at this point no matter what they are looking for I feel that i bring a great deal to the table and have an uncharacteristic ability to learn quickly.

Confidence is key in this field. I am more apt to hire someone with a good air about them then a guy who cant look you in the eyes but has a great resume.

"Confidence is key in this field. I am more apt to hire someone with a good air about them then a guy who cant look you in the eyes but has a great resume."

Are you hiring programmers or used car salesmen? I simply don't buy that confidence is more key in programming than in other fields.

I am not talking about hiring people who have no grasp of a concept. I am saying that not unlike many other fields programming has a good bit to do with what you believe you are capable of.

If someone has 5 years experience at Microsoft but does not believe in their work and/or are not confident in the product they put out but a guy fresh out of college has a great Github presence and a passion for programming I am certainly more apt to hire the latter.

Depends on the environment - in a customer facing/consulting role it is probably the key success factor. What clients often want is certainly - even if the reality is usually "it depends".

However, for work on an in-house software team that same level of confidence can often lead to disasters as the borderline between confidence and plain pig headed arrogance is paper thin.

What's your blog's address?
lots of people have asked me that as of late presumably from looking at my profil, so I just added it there
My first programming "real" job was at a technology incubator in Japan. I got hired on as a translator. At the time my Japanese skills were not exactly stunning, but technical translators do not exactly grow on trees in Gifu. (Try finding a bilingual Japanese/English CS major in Kansas. It is about that hard.)

Now, here's the rub: they had five translators locked into generous long-term contracts and they only needed really one-fifth of a technical translator, plus some utility translation for ceremonies and the like. So I went mostly unused. After spending far too much time on the Internet (shades of things to come) and getting acclimated to working there, I started trying to make myself some more work.

Example: we had a website with brief bios of ~200 companies at the incubator. This was static HTML written in DreamWeaver, and got updated once every year in Japanese and English. This was an absolutely mammoth undertaking, primarily because the data was first compiled into a Word document, then translated, then laboriously massaged into HTML in DreamWeaver. I thought "Wait, this is just string processing... and I have gawk." I did not, in fact, actually have gawk, but my university terminal account was still open, so I wrote some scripts and shaved two man-months off the schedule. The bosses were happy.

Later, after getting a little more political capital, I started getting the R&D group I was attached to to use me for their grunt work R&D. For example, I made GUIs which called their command line tools for robot vision work, begged off implementing fast fourier transforms in C ("I'm a Java programmer! Egads!"), did some grid computing and spam filters, and the like. My work product was atrocious. Demos I pronounced "done" functioned maybe one time in three. We didn't use source control, which is probably for the best, because if we had someone might be able to still see the code I wrote. However, my bosses chalked all of it up to "Hey, we get the budget for a translator whether we want it or not, might as well get some work out of him."

There were two projects of note in those three years. One was a massive translation of CAD training software manuals for a company affiliated with the incubator. It was 3,000 Powerpoint slides. I got it done right before any further mention of torque would have caused my internal springs to snap. The guy who requested it made it clear that he owed me one. When my contract expired, I sent him an email saying that I wanted to stay in the area a while longer and wondered if he could perhaps ask around to see if anyone needed an engineer. He called up a large company in Nagoya and informed the division chief, who owed him a favor, that there was a bilingual American engineer the company should hire. So they shook on it, and that was that. (We later had a job interview -- with my patron in the room and doing most of the talking -- which was mostly a formality. The line which sticks with me is "Oh, you're white. Not that there is anything wrong with that." Nobody had thought to tell my new bosses my name prior to the interview -- it wasn't really relevant to the transaction.)

The other significant project is a long story. It starts with an email from a teacher in the prefecture asking "Is there a good way to make bingo cards?"

For some reason this comment read like a longer more elaborate blog post with some pizzazz powder sprinkled all about it. Well done sir.

Actually... I think the way you finished with a cliffhanger (even though I already know the story) is what won me over. The perils of being a cliffhanger junkie I guess.

Gotta love the Japanese way of business. You owe me one = job!
You seem to be under the impression America does not work this way.
I got hired midway senior year in college by a startup that had just filed for an ipo. They were 100% a java shop and at the time I only knew c, c++, php, mysql and absolutely no java. Throughout college, I did programming jobs for small businesses and my university, making hardly any money. I studied my ass off on java, ended up being able to handle any of the simple java questions they asked and sold them on all of my experience that I put into working fulltime programming meanwhile pulling in great grades in college.

They knew I was under qualified from a java dev aspect, but was hired because of the dedication I showed from working throughout college. At the start I was definitely under qualified and I'd say truly knew nothing of how tech businesses run. However, with lot of dedication (and late nights) I learned a ton and quickly was tech lead of a major part of their business.

That was 5 years ago and have since left for more exciting opportunities. FWIW, Now I can't stand doing java dev, nor the people associated with it, but that experience opened up tons of doors and am grateful for the opportunity.

Some guy I knew asked me if i could write him a programme to help manage his clients' investment portfolios.

Because I was too young to know I was in way over my head, I was able to complete the task and do it well. Pretty proud of it, actually; 16 bit windows (3.1) and the code was rock solid. I figured out on screen graphing, good db design, reporting (I wrote all the reporting and printing libraries, incl basic graphs (pie, line and bar)) etc etc. Now-a-days that sort of thing's a lot easier, but back then there was very little. oh, and no internet either, just the local bookshop.

There are many jobs we take on thinking we fully understand until the bigger picture of the problem we are trying to solve starts unfolding : we will always be inadequate, and even forget what we once knew, that is why we keep learning to remain hackers.
When i was in grade 12, I taught myself PHP/HTML/SQL and some JavaScript. I set up a forum (Which was a modified Simple Machines Forum) to stuff around in at school because i always managed to finish projects and tasks in computer studies early.

A few months before I finished year 12 I was having real trouble actually learning any more in the field of web development, because I had nothing to code. I walked into a web design place with a resume and some code samples of what i already did and they said they may have something for me to do, and a few days later i was given a job submitting links to websites to up the page rank of a site.

When I left school, I was asked if I wanted to say there full time and do some web development. I agreed.

That was about 4 years ago now. I'm 21, and I'm still in the same job. Id say i was quite under qualified for my current position, but I'm really glad I was given a chance.

My degree has a year of work experience stuck in the middle. I responded to a posting and got into http://www.squiz.net/ (small-medium CMS development company of about 80 people). During the three years I was there, I fell in with a crazy Russian developer who taught me half of what I know, met @DmitryBaranovsk, and worked under a fellow who, though a bit abrasive, ran a really tight ship (unit tests and automated build, for example).

Given it was a student position, the entry requirements weren't terribly strict (PHP, HTML, CSS, ideally some JS). I knew some PHP4 (enough to put up http://insanitymanga.net ), but only some OO, and definitely no PHP5 (this is all back in 2004).

I thought I blew the interview; I was nervous, and the lead dev spent a good five minutes in silence looking through the coding example I brought with me on my laptop, but I got through (with a couple of other students).

In any case, I'm not sure there's much to lose but your pride by going for a position you're underqualified for. If you think you can pick it up, then do some prep beforehand to at least get a basic handle on it, and see if they're willing to give you the time of day and have a chat.

I've been programming ever since I was a kind in the 80's with the Commodore64. In high school I was all about BASIC and C++. Then in college I got into Java & PHP.

While I enjoyed it, I never really thought of programming as a career until after I completed college when the web finally started getting fun (2004'ish).

In the fall of '04, having been fired from my job in computer sales (I was horrible), I went for any programming job I could find. I got in with a Voice over IP startup. I made so many mistakes, but learned from every single one of them.

Over lunch one day, one of the secretaries randomly told me how much $ she made, which was a few thousand more than me / year. Here I was, with a university degree, and she was still in school at a community college. While I knew I wasn't making much, that really showed how much this company was taking advantage of me. But I knew I was desperate when I came in, so I thanked them, and moved on.

Next up was an ad agency, then lead developer at another startup, and now currently working at as an engineer & developer evangelist. It's been a fun ride, and I owe it all to that first programming job.

I started out as a tester/functional designer at a job ( did some network / helpdesk stuff before that) since they didn't have a lot of developers and none that could program in a modern languages (MUMPS programers) I took 2 weeks off and learned Python after that c#. I went back to school in the evenings where I learn't some Java/SQL etc. and when't to a Cache course

now I work at a different company programming Flex RIA's and learning Clojure.

So when I started I didn't have experience or formal training but I was some kind of a computer geek BBS/FidoNet FTW! ;)

(comment deleted)
Dropped out of university, 3 months ago after bumping into someone at university who needed a Rails and iPhone programmer. Had no knowledge of rails and only a little bit of iPhone experience. App was accepted last week!
My first programming job was ASP (back when it first came out) - I was ok with HTML, but knew nothing about ASP, having spent most of my time using things like dBase and Pascal.

The company that eventually hired me gave me an asp book and a week's wages and asked me to build a sample app as a kind of extended "interview". I got the job. We wrote some great code back there.

My first job was at a national laboratory where I wrote an application to extract data from text files using FORTRAN. I started when I was 17 - it was a school program where I went to class in the morning and went to work in the afternoon.

Of course, knowing what I know now, the fact that I was using FORTRAN for data mining is rather embarrassing, but I was young and stupid, and my boss gave me a bunch of functions to help out, so that's what I did.