Settings

Theme

Ask HN: Average coder at dead-end. What now?

49 points by forcetenhen 16 years ago · 61 comments · 3 min read


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!

zedshaw 16 years ago

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.

  • akkartik 16 years ago

    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.

  • BinaryPie 16 years ago

    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?

    • tordek 16 years ago

      > 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.

  • SkyMarshal 16 years ago

    Upmodded for enterprise Java douchebag.

    (and the good advice)

patio11 16 years ago

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.

  • mbenjaminsmith 16 years ago

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

    • aerique 16 years ago

      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)

    • ebtalley 16 years ago

      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.

      • patio11 16 years ago

        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.

      • pyre 16 years ago

        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
        • chipsy 16 years ago

          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."

        • robinduckett 16 years ago

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

      • robinduckett 16 years ago

            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
    • Uchikoma 16 years ago

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

    • ceilingfish 16 years ago

      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.

    • wgj 16 years ago

      Yes. Yes.

    • mechanical_fish 16 years ago

      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

    • krakensden 16 years ago

      That's why it's so popular :(

MrFoof 16 years ago

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.

ryanwaggoner 16 years ago

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.

Kaizyn 16 years ago

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.

  • crpatino 16 years ago

    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?

jac_no_k 16 years ago

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.

GavinB 16 years ago

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.

  • berntb 16 years ago

    >>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.)

    • hga 16 years ago

      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!

    • GavinB 16 years ago

      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.

      • berntb 16 years ago

        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.

awt 16 years ago

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.

ieure 16 years ago

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.

vishaldpatel 16 years ago

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.

  • squidsoup 16 years ago

    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.

forcetenhenOP 16 years ago

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 :)

alinajaf 16 years ago

£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.

SingAlong 16 years ago

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

semanticist 16 years ago

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.

tynan 16 years ago

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.

skybrian 16 years ago

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.

nl 16 years ago

Learn to manage other developers.

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

loewenskind 16 years ago

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.

adam-_- 16 years ago

£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...

briandoll 16 years ago

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.

  • mikeytown2 16 years ago

    +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.

fretlessjazz 16 years ago

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

hartror 16 years ago

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.

robinduckett 16 years ago

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.

starkfist 16 years ago

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...

ericflo 16 years ago

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.

olalonde 16 years ago

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.

tbone28 16 years ago

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

amanuel 16 years ago

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.

  • mhd 16 years ago

    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.

keefe 16 years ago

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

aaronblohowiak 16 years ago

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

  • aymeric 16 years ago

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

stiggz 16 years ago

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!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection