Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Average coder at dead-end. What now?
49 points by forcetenhen on June 21, 2010 | hide | past | favorite | 59 comments
Greetings all! I was hoping the fine minds here might be able to help me out a little with the quandary I'm in.

Some woeful backstory:

I'm a (ahem) PHP developer & been doing it for 8 or so years now. I'll be honest, I'm no 'rockstar', 'ninja' or 'action-monk' but I think I'm reasonably good and have always managed to build whatever is required within a decent timescale. Nothing has even blown the heck up on my watch. I've done everything from proper low-end nonsense to working on/building on a few largeish e-commerce sites (nothing enormous but in the $millions taken through site in a year).

Right now I'm earning £18,000/yr (approx $26,708.40 - off the top of my head ;) with ZERO chance of pay rise (it's been 2 years since my last one) and while this pays the rent, that's about it. I can't pay every bill that comes through each month as it stands.

The problems I have are twofold:

1. My current job description looks good on paper (built/manage 8 sites of low-to-high complexity, mailing lists, graphic design, print, server admin, iphone app development..) but if a prospective employer saw half of these sites, I'd be binned instantly. It's the old 'make everything bold and pink' edicts and keyword spam that the bosses love to add.

2. As I said, I'm no rockstar. I can't in good conscience apply for one of these jobs knowing I'm not the genius they are looking for. Plus, I'd be out on my arse after a week once they rumbled me. Unfortunately, the next step down seems to be junior dev, for around the same wageas I'm on now!

So... am I having delusions of grandeur here? Should I be happy that someone with my skillset is getting paid this amount and I have no right to expect more for being average?

Or - am I right to think that I could do a lot better? And it what ruddy way do I go about it? The job market around here is pretty dire unless I make the 200 mile journey to London (not really feasible for several reasons).

Sorry for the waffle, just at my wits end right now and unable to see anything clearly. Please don't read this a pity-seeking tale of woe - I'm more interested in getting out and making something decent out of my life. Thanks for reading and any kick-to-the-head advice is much appreciated!



You need to learn about control and responsibility. See, you have become responsible for your work, but you were not in control of it. Your employers have controlled it, and you let them by not pushing back on their decisions, which is understandable if you need work. I've done it. The problem is you are also now responsible for this work, because your name is on it. You're now screwed because the rest of the world assumes that you were both in control and responsible.

That's how you got in this situation, and the sad thing is, that's how it usually goes. You work on whatever projects you can find, never really getting anything challenging or even in good taste, and then when you go to get your next job you have nothing to show for your work. Cycle repeats.

The way you break out of this pattern is with open source. Open source lets you be both responsible and in control. You choose what you're working on, you do the work, you get your name on it. It's all you. You can start your own project, work on someone else's, and even blog about it. You get the recognition and you get experience with people interested in the new stuff, not the crap you do at work.

This is how I've had to work for a decade or more. Nobody I work for is interested in letting me do something interesting or challenging. I go to work and work on very mundane things, and then go home and write advanced algorithms to create web servers and bizarre protocols for fun.

If it weren't for open source, I'd still be working as an enterprise Java douchebag. Open source and writing literally saved me from the "industry" more than once and kept my love of code alive long past any love of the job.


Another way to say that: you don't break out of mediocrity by learning to program better. You do so by picking what you work on. The craft is only a small part of it, and getting commoditized everyday.


Wait are you saying I have to be content with who I am?

What do you mean I can't expect my employer to validate my passions in life?


> Wait are you saying I have to be content with who I am?

When did he ever tell you to stop bettering yourself?

> What do you mean I can't expect my employer to validate my passions in life?

Because your passions are yours, and yours alone. You could get miraculosuly lucky and get an employer that shares some of your passions and lets you work in them... or you could remove chance from the equation and write code on your own, and open source it.


Sarcasm.... The internet doesn't get it.


Upmodded for enterprise Java douchebag.

(and the good advice)


The typical engineer is not a genius. Don't compare yourself to geniuses. The typical engineer also makes more than you do, and you should find a job and close that gap. If you are feeling like you are unworthy, go talk to any chaps in London about the guys making 50k sterling while being unable to do FizzBuzz. (I assume you have them in London, too.)

If you're worried about your portfolio being insufficiently graphically impressive, well, pick an off-the-rack template which looks pretty, then build an example site off of that. You can reference the case studies of what you've done without actually showing the sites. Just tell people that your previous bosses are uptight corporate types.

The Internets is full of people looking for competent PHP developers, if you can't find them locally. Network network network, develop a speciality, blog, all the usual advice here.


Is FizzBuzz actually used as a coder test? Are their really paid coders out there who can't solve that in a couple minutes?


Yes.

On a bad day can't solve some of those interview problems. (and I think of myself as an average coder although I try to mitigate that handicap by building from the ground up and testing those components well)


I just got thrown the FizzBuzz test a couple days ago. First time I had ever seen it. Startled me that everyone else knows what it is too! I don't know if it would be blindingly obvious without the mod operator.


Let's see: x / y * y == x iff x % y == 0, if your language handles integer division like most do.

If your language doesn't do integer division that way, the naive approach is even easier if you know how to round: x / y == round(x / y) iff x % y == 0.

There are many, many other approaches which will work, too. I saw one guy hand-build an array of ints, initialize to zero, loop over it once with arr[i++] = 0; arr[i++] = 0; arr[i++] = 3 to set the multiples of 3, then do the same thing with the fives except checking to see if there was already a 3 there, then looping over the array a fourth time to handle the actual printing.

That is the kind of competent, worksmanlike programming that runs the world while the can't-do-FizzBuzz guys are hopefully not touching the code too much.


I would consider the mod operator to be pretty basic though. (Feel free to call me out if I'm just being naive.)

Outside of the mod operator, you could always use a combo of floor() and ceiling() (which I assume most languages have in a standard library). e.g.:

  from math import floor,ceil
  def divisible_by_3(n):
    result = n / 3.0
    return ceil(result) == floor(result)
Or even more basic:

  def divisible_by_3(n):
    result = n / 3.0
    return int(result) == result


The main danger with using the mod operator is that you can get an off-by-one if you aren't in the habit of using it and forget the exact definition. If that's in doubt, rolling your own thing with a division or a while/if makes for a stronger guarantee of success on the first try.

In an interview you could explain your reasoning for such a detour as well, which might work out better than just "knowing the answer."


I used the old int(i) == i (or even, int(i/2) == i/2) way before I knew about the mod operator.


    var s = require('sys');
    for (var i = 1; i < 101; i++) {
      if (i%3 == 0 && i%5 == 0) s.puts('fizzbuzz');
      else if (i%3 == 0) s.puts('fizz');
      else if (i%5 == 0) s.puts('buzz');
      else s.puts(i);
    }

    node.fizzbuzz.js


Yes, about one third I interview can't FizzBuzz (thank god for http://typewith.me/ )


One test I commonly use in interviews is to ask candidates to write a function to sum up an array of values. A scary volume of them can't manage it at all.


Yes. Yes.


Of course.

If you can't understand how this can happen you need to read The Peter Principle.

http://en.wikipedia.org/wiki/Peter_Principle


That's why it's so popular :(


Been there. Got out. It took 95% burning determination and hard work, and maybe 5% luck.

1) You've identified that what's in your project portfolio isn't impressive. This is fine, as there's lot of people working for Cardboard BoxCo. My recommendation is to create a side-project that you think might be impressive to potential employers. It doesn't have to be a real website. Think of those "Contoso, Inc." examples that Microsoft likes to use. Just create something that you feel demonstrates what you're capable of and could show either on an inexpensive VPS solution ($20 USD/mo) and also could bring in via a laptop for a bit of show-and-tell (I've had plenty of candidates do this).

2) Even if #1 doesn't lead to an immediate job, keep playing. Keep learning. At the very least you can make your life easier in your current situation. Possibly you might be able to raise an eyebrow for at least something of a pay raise. If not, you're learning skills that could prove useful elsewhere. Don't give up, just dig in. Keep aiming your sights higher, never be complacent with what you're capable of. Keep learning. Keep outdoing your best.

3) Network with everyone you know to look for opportunity. I got out of a similar situation to yours via our hardware vendor. His son used to run a fairly impressive IT firm, and one of his old high school buddies had went to work for a startup that they were providing hardware to. Over the years they knew what I was capable of and could be doing better (they had an idea of what I was getting paid), and that startup needed someone who could get things done. That ended up being my ticket out and eventually on to better things.


There's lots of good advice on this thread, but I'll just say this: you're getting raped at that salary? I have a very close friend who had a very similar background as you except only about three years of experience programming, period. He got a job making almost six figures, 100% remote. I've got 4-5 yrs of PHP experience and I can easily pull down six figures doing freelance work part-time.

Perception is everything. If you think you're not worth much, that's what you'll make. If you think you're worth $75/hr (or much more), you can definitely[1] find clients to pay that.

1. I'm assuming with 8 years of experience, you're good with Drupal, Wordpress, CakePHP/CodeIgniter/Symfony, etc. If not, I'd recommend learning them. It's not hard and all my clients ask for them. Learn APIs as well, like Facebook, Twitter, etc.


Any advice on how to find fairly paid freelance work?


If you can write code that has been put into production, then you are way ahead of many so-called developers on the job market. This is the sad state of our industry.

Since you say you know design and programming but the actual sites you've had to put together for your employer(s) are atrocious, why haven't you built a portfolio for yourself? For very cheap, you can get yourself a virtual server or even some shared hosting site along with a domain name or two and put up whatever you want. One site at least should include your resume and contact info along with anything else you feel is good to post with that info. After that, it's up to you how you want to present yourself. If your portfolio of sites under your control are attractive, have good usability and present well, then it will be obvious to any prospective employer that your work sites are bad because you were doing what your employers told you to.


Could you please elaborate on that one?

I understand it is true for every rookie, but how is it possible to remain 8+ years in the payroll if you do not ship anything to production? By job hopping every year?


As mentioned in other suggestions, it's time to just try your hand on the job market. In my opinion, you are being too critical of yourself.

Perhaps you should be looking for jobs that isn't coding? Perhaps roles like project management is a better fit. You know enough code to push out eight projects to production. You have an understanding of the effort involved. You have dealt with management and translating requirements into code.

I've always recognized my strength is not in development but in gluing things together. In my day job, I get teased* for using Perl and the simple ways I get to solutions. But I point out I've pushed to production multiple projects within the corporate bureaucracy. I've seen many other projects just experience heat death as they get very complex with features. With the success I've had, I'm making my way to middle management as someone who is more useful at getting things done then squinting into a code editor.

In summary, I'm a poor developer. I can't create an algorithm to punch through a wet paper bag. But I can glue things together, my other brain is Google + Safari Books, and I have the stubbornness to push projects through to completion. Therefore I'm getting out of the developer role I never really was good at.

(*) The teasing is in good nature.


You sound conscientious, competent, and reasonably experienced. That's worth a lot more than what you make. Apply for PHP development jobs in the geographic area to which you can reasonably commute. Network locally, but forget the blog stuff unless that's something you think you'd enjoy.

And make sure to give your current employer a chance to bid against the firm that makes you an offer. You'll be surprised how much your bosses are willing to pay to keep you from leaving.


>>And make sure to give your current employer a chance to bid against the firm that makes you an offer.

I agree with the rest, but not this.

1. I think bosses are taught that: After this kind of negotiation, most people leave soon after, anyway.

2. The bosses underpaid him. In my experience, there seems to be a bit of strategy to keep employees self confidence down. He should leave that place, no good will come from staying with them. (This might be my own history speaking.)


Agreed. Never, ever even go down the road of counter offer (unless you're someone at the level of reporting to Bill Gates or thereabouts). To amplify on 2., if the company was worth working for things wouldn't have gotten to this point and expecting them to change is unrealistic at best, delusional at worst.

While I'm at it, the people who pointed out that you've put systems into production (1/2 of which it sounds like you can show to others, is the glass half-full?) are absolutely right in saying this puts you head and shoulders above a lot of you would be competitors.

Good luck!


People get other offers and counteroffers and stay at their jobs all the time. In most of corporate America, this is one of the primary ways to get ahead. Maybe not at the most enlightened employee focused development shops, but most programmers don’t work there.

There are a number of good reasons to give your current employer the opportunity to give a counteroffer: 1. It’s the polite thing to do. Even if you say no, your former boss will appreciate being given the opportunity. 2. You may be able to use it as a bargaining advantage in setting your compensation at the new job. More bidders = higher pay for you. 3. Your current employer may decide to make you a really good offer. I’ve seen it happen. They may even create a new job description that didn’t exist to accommodate you.

Ideally we would all work at places that properly valued our skills and contributions, and updated our salaries to reflect our value every year. In the real world, there’s nothing wrong with a little negotiation and competition.


Interesting.

It isn't true in the US then, about "they'll leave anyway, if they did so much work that they applied, did the interviews and got an offer"?

Is it a general philosophy in some areas?

I've heard that in more "active" work markets (London is the closest to me) that people have their CVs going around continuously.


A lot of people are recommending writing some open source software. I would advise against that. Instead I would advise writing some software that you find to be useful. That does not rule out contributing to an open source project, it just makes it less likely you'll waste your time. It's really really hard to figure out if people really need the features they ask for in open source projects -- and I think there are a lot of bloated FOSS products out there. Write something for yourself and it may lead you down a surprising path.


I sympathize; I was in a simliar situation around five years ago.

There are three things I've done which have been responsible for literally every job I've had in the last decade. In order of importance, they have been:

1. Know people. 2. Engage in the FOSS community. 3. Challenge myself.

That's it. Now, the interesting thing is that if you reverse this list, you get the steps you need to get a new job:

3. By challenging yourself, you will increase your knowledge base and become a better coder. 2. Find an project, tool, or subject that interests YOU. Something YOU would find useful and rewarding. Whatever it is, write it and RELEASE IT. If there's a project that already does what you want, start contributing. Help other people use it. Write documentation. Anything. Whatever it is, RELEASE IT. Doesn't matter if it's something a hundred people worldwide will find interesting - you'll get their attention, which leads to… 1. Knowing people who can get you jobs.

I cannot stress this enough: RELEASE CODE. The great thing is that you can usually get your employer on board with this. If other people use it, they can contribute features and bugfixes back, which they can make use of. It's like having programmers work for them for free.

The fact that you have this ambition at all puts you at a significant advantage over other programmers. Keep hold of that drive.


Time to become a rockstar, mate. I say fill in whatever holes you think you have in your skill (if there are any) and market yourself as a rockstar. You're only a rockstar if you act like one.


Please don't market yourself as a rockstar - rockstars tend to be characterised by egocentricity, rudeness, and childish intractability.

Do market yourself as a skilled craftsman that can contribute to a team.


Ok - long delayed response since I lost my damned login :)

Thanks very much for all the replies, MUCH appreciated - and it seems to have given me the big kick I needed.

Since I posted, I managed to wangle a £10k raise. Basically gave a polite ultimatum with a well sourced list of equivalent jobs ~£30k. It's a good start!

I also took on board some of the Rentacoder type tips and have started to build up a rep on there. Did a few all-day $20 jobs, which was horrible, but I've just now finished a couple of jobs at $150 and $250 with around $500-800 due to complete soon. On top of that, I dug out a couple of old contacts and emailed on a whim. Could have £2k monthly coming in from their project overflow.

I'm also gonna look into doing some FOSS stuff if I can somewhere I'll make a good fit.

tl;dr: thanks an effing million. I was wallowing in self-pity and knew it. I really needed something like this. Now I'm slowly getting rich :)


£18,000 for a development position is absolutely horrendous. You can get 21k for a non university educated PHP developer position. With 8 years you could easily crack £35k if you spin your CV the right way.


I'm still in college, but I've found myself in similar situation.

I was/am a jack of a lot of trades but master of none. I manage to code in whichever language that comes by or feels good to do the job at hand in the easiest and best way. I've to blame my nature for that. I like variety.

At the end of the day, I had nothing to show off on my portfolio that's fashionably cool. Only a bunch of apps that most average coders would have. I realized that most awesome ideas I thought off still rested in my head or I discarded them with the reason that the idea's implementation required tech skills way above mine.

So I just charted a schedule for my normal day. I spent half the day learning and half the day working. I code when I'm fresh from sleep (early morning or after the afternoon nap). I spend the other boring time learning. I'm able to learn things very quickly. I hope this trick will help you learn more.

And I totally agree with patio11 says. I can't help myself from stumbling atleast 10 "php developer wanted" job posting every day. Since you said you've been doing it for 8yrs now I assume you are really good at what you do and you are way better than half the php crowd if you've done it right for most of those 8yrs. So maybe continue your niche (small sites on cheap hosting) while the rest is busy learning/doing rails.

P.S: read this http://news.ycombinator.com/item?id=1438983 for another bunch of tricks


The average UK salary is looking more like double what you're getting.

http://www.itjobswatch.co.uk/default.aspx?page=1&sortby=...

Check what it is specifically for your area, since it does vary a lot and London salaries pull the average up. Then raise the issue with your boss, and be prepared to give notice if they're not going to pay you more.

£18k is a mediocre salary for full-time helpdesk work, nevermind eight years of experience at dev. You're being proper fucked here, and you need to get away from it.

If you're too scared to walk from your current job right away - and I'm in much the same position and can appreciate how you feel - pick up some easy PHP dev work from RentaACoder, Elance, or guru.com on the side. You should be able to give up some weekends for a month or two to make money on the side, which will prove that you CAN make money on the side and give you some headroom for when you quit.

Oh, and the sites you've made don't really matter. You just make what you get told to make, right? Everyone understands that.


Stop being average, stop calling yourself average, stop caring about your job description.

Do what you want to do, do it awesomely, live small, be patient.


If you can honestly say that you get always get everything done on time then that's huge. If you say that the design on these websites isn't your idea then I think potential employers would be understanding, but better would be to build something simple on your own that shows what a website looks like when you do it your way.


Learn to manage other developers.

If you do that well (and it's much harder than programming) then your upper salary is unbound.


IMO the biggest thing that's going to hurt you is actually how long you've been in the same place. Don't do that again. :)

If you've been doing software development for 8 years then you shouldn't be a junior and shouldn't settle for it. Highlight the points you mentioned and don't show any links for it. You could have been doing company internal sites for all they know.

>2. As I said, I'm no rockstar. I can't in good conscience apply for one of these jobs knowing I'm not the genius they are looking for."

How do you know? Employers often end up asking for more than they want, so just try and let them decide if you're good enough. You're going to need more confidence though. If you don't think you're good you're going to have a hell of a time convincing someone else that you are.


£18,000 is pittance - you should get more than that just for reading Hacker News!

Apply for a junior position at a more interesting company if it's the only job around. It's the same or possibly more money so who cares?!

Check out things like NMA Top 100 [1], Times Tech Track [2] etc. to try and scout around potentially interesting companies in the area.

[1] http://top100.nma.co.uk - you have to register but it's free. [2] http://www.fasttrack.co.uk/fasttrack/leagues/tech100suppleme...


With your attitude, I wouldn't hire you either. Buck up, little camper! Welcome to the internet!

You made no mention of open source apps you've written or contribute to. You also made no mention of any side projects you've done that don't have that 'bold and pink' your work projects do.

With no drive to improve your skills, you're destined to stay in this dead-end job, if you're not replaced soon by someone who will do it faster and cheaper. GET ON IT, MAN!

A much better job awaits, but you're certainly not going to get it by sulking and not doing any quality work.


+1 for Open Source

Since you have a php background I recommend looking into Drupal. It's in high demand right now & with Drupal 7 I see the demand for talent increasing even more.


I suggest focusing on something that many (web) programmers don't have, don't think about enough, and are paid a heck of a lot more if they do:

How are your design skills?

Edit: by design I mean aesthetics and user experience


Build a side project you can be proud of! Will allow you to get your skills up in the areas you think are lacking and give you something you can show to prospective employers.


Ouch dude, I'm earning £17k/yr and I thought I was getting stiffed (Two years experience). If I'm still earning this kind of money in six years time I will be most unhappy.


If you're only making 26 grand a year, why don't you go try to be a real rockstar or ninja instead of the PHP version? You would probably make nearly the same wage...


You're not stuck. You've just got to become a better developer, which you can do by practicing a lot and learning everything you can outside of work.


How about working on a startup in your free time? Even if it fails, you will gain experience and have something interesting to add to your C.V.


Light a fire in your bones now. What inspires you?


By your statement....you are no rockstar. I would argue that...you are no rockstar YET. You need at least two things to become a Genius/Rockstar/whatever:

1. Challenging work that forces you to improve your c0ding ski11z.

2. Time.

There is no shortcut and your eight years so far count quite well. It is time to take it up a notch and start challenging yourself in your current job or trying some side projects.

If you don't believe that you could become a rockstar coder, I'd suggest reading Bounce by Matthew Syed.


I would say that you also need "3. Groupies". I really dislike the "rockstar" moniker, but positive reinforcement is important, especially if it appears as if you're stuck. That's one of the good things about the open source world, where it's easy to have a small, popular project. The sheer amount of project and time management skills teaches you is much greater than the improvement in coding ability (which really isn't that linear).

If you do a decent job of presenting and updating such a project, people will like it and probably let you be aware of that fact. And even the most lone-wolf programmers need that, whether they admit it or not.

This could be done at work, too, by making some utilities or introducing new features for the benefit of you co-workers or customers. Most of the time, the feedback isn't as direct, though.


damn dude it's not like you can't learn to be way above average if you're really just so dim you can't get better, it's time to become a manager. I'm not even joking loyalty + mild tech skills + don't question it = great middle manager get an mba or stop being lazy and do the work to get great


You have built successful businesses for other people. Now do it for yourself.


The technical side of a business is usually the easiest (for a developer).


Quit & take a junior dev position preferably working with other languages (ruby, perl, jquery, ms visual studio, w/e) to mix up your skill set- then you'll have ten years of experience in varied environments, much more attractive as an employee. Even if it pays less, it gets you on the right track. Good luck!




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

Search: