I've recently been assigned to work on a project written in PHP. I can't change that, and have no intention of really trying.

However, this can't be an uncommon scenario. How do you motivate yourself to work on the project when the code you're looking at and producing constantly makes you want to cry?


It should be noted that this is pretty much the only on-campus job doing anything software related available at the moment, so "just change jobs" isn't really an option :(

  • 6
    You grit your teeth, do your job, and find a way to vent
    – Shog9
    Dec 19, 2010 at 15:12
  • 3
    Are you familiar with the macroeconomic situation lately? Count your blessings that you have a job.
    – Macneil
    Dec 19, 2010 at 15:31
  • @Macneil: Well it's going to be hard to get a job with that pessimistic of an attitude. Seriously though, the main reason I have the job is that it's on campus. Feb 17, 2011 at 17:35
  • 2
    (a) suck it up, (b) try to get it changed or (c) quit. With answers that obvious, this seems like more of a rant than a question.
    – Aaronaught
    Jul 5, 2011 at 1:58
  • @Aaronaught: Plenty of questions seem "obvious" so some people. Obviously I did not think it was "obvious", or I would not have asked the question. Jul 5, 2011 at 2:19

9 Answers 9


My tip would be to endure it, only if you see the benefit of learning anything from the language and all the processes or patterns that the project uses. You might gain something from it.

The alternative, if you're risk-averse enough, is to look for another job. Which is certainly a good idea if your lack of the motivation is dragged down not only because of the technology used, but by the lack of understanding for good practices from your coworkers. There should be better things to do than to have your abilities as a developer stagnate. If you're not learning anything or gain anything from your job: get a better job.

  • Don't have much of a choice on getting a better job -- needing something on campus really limits things. Feb 17, 2011 at 17:35

If it's a contract or short term project, or something you'll occasionally need to support, just bite the bullet and do it, of course.

If not, then look for another job or try to explain why that language could be a hindrance on the long term (if you can).

In the first case, it's about being professional and not whining about personal preferences. In the second case, it's about being happy with your job and life.

If what you need is motivation, I'd say start trying to find bits and pieces you enjoy in the language, and start a personal pet project with it so you have a stronger incentive to learn it more in depth. Try to do things that you like with it. If you like TDD, focus on improving the test coverage, etc...

But in the end, you'll have to bite the bullet.


You design the programming language that you would like to use, then write a compiler that outputs the language you don't like to use.

At least, that's what these guys did:

  • haXe targets PHP, Flash, JavaScript, C++ and Neko; maybe JVM in the future
  • Wasabi targets VBscript, JavaScript, PHP4, PHP5 and .NET
  • Scriptol targets PHP and C++
  • CoffeeScript targets JavaScript
  • 4
    That should only be a valid choice if nobody else works (or will work) on the project in the "normal" language, because the cross-compiled stuff looks terrible. Secondly you only want to do this for fun and with a lot of time on your hands. If you just in to complete a four weeks project, there is no room to write a compiler first.
    – Tim Büthe
    Dec 19, 2010 at 14:18
  • 2
    This is a horrible choice. Have you seen the shit that spews out of these?
    – Josh K
    Dec 19, 2010 at 19:51
  • Add GWT targeting JavaScript to the above list.
    – funkybro
    Jun 19, 2012 at 7:02
  • -1: For the above-mentioned reasons, I don't recommend this except in special circumstances such as automatic parser generation.
    – juhist
    Jul 10, 2017 at 13:24
  • 1
    This is not an option if you maintain existing code.
    – mouviciel
    Jul 10, 2017 at 13:58

Pick up your resume, and start looking for a different job. PHP is a powerful language, however its syntax is shitty and non consistent. At the same time start home project in the language you do want to work in, and if you can join an open source project.

good luck.


Really? You do what you do when you HAVE to work on ANYTHING you hate. You grit your teeth, dig in and get the job done.

..or you learn to be a little more easy going!

  • 1
    ... and you update your resume and put feelers out. Dec 19, 2010 at 15:48

How long is the project? If is it short just grin and bear it and think if it as good resume filler. If long term I would look for another job.


If your employer makes you work regularily using tools that you "hate" (which is a very strong term), then perhaps you are in the wrong job?

Being pragmatic is essential to profesionalism.


Its a learning opportunity.

A couple of things spring to mind:

  • Firstly: how to do better in the toolset you're working with, just because what's already there is less than wonderful doesn't mean that what you produce has to be. You may even find things to like (although I struggle to remember any from Dibol...).

  • Secondly: weight of argument for not using that toolset in the future, if you can say that you used something in a non-trivial fashion, that it has these pros and those cons then you have a far better chance of persuading something that your negative opinion of same has value.

As a professional you have, substantially, to shut up and get on with it - the sooner its done the sooner you get back to using toys you like. That's not to say that you shouldn't express your unhappiness to your management at the start and at the end. But probably not in the middle.


If I'm building something that someone wants with a language that I feel is capable of delivering the project without too many problems, I can get over it. What worries me is when they want functionality that may not be possible/practical or it takes longer than normal.

Not the answer you're looking for? Browse other questions tagged or ask your own question.