
Ask HN: Average coder at dead-end. What now? - forcetenhen
Greetings all! 
I was hoping the fine minds here might be able to help me out a little with the quandary I'm in.<p>Some woeful backstory:<p>I'm a (ahem) PHP developer &#38; 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).<p>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.<p>The problems I have are twofold:<p>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.<p>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!<p>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?<p>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).<p>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
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.

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

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

------
patio11
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
Is FizzBuzz actually used as a coder test? Are their really paid coders out
there who can't solve that in a couple minutes?

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

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

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

~~~
aymeric
Any advice on how to find fairly paid freelance work?

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

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

------
forcetenhen
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
£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
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
The average UK salary is looking more like double what you're getting.

[http://www.itjobswatch.co.uk/default.aspx?page=1&sortby=...](http://www.itjobswatch.co.uk/default.aspx?page=1&sortby=0&orderby=0&q=php&id=0&lid=2618)

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
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
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
Learn to manage other developers.

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

------
loewenskind
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-_-
£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...](http://www.fasttrack.co.uk/fasttrack/leagues/tech100supplement.html)

------
briandoll
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
+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
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
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
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
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
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
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
Light a fire in your bones now. What inspires you?

------
amanuel
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
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
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
You have built successful businesses for other people. Now do it for yourself.

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

------
stiggz
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!

