42

Programmers tend to talk about being a "code monkey" in a derogatory way. "Don't work there, you will just be a code monkey!".

I have two offers for jobs, one at a small company, one at a very large company (same salary). My friend just told me I will be a code monkey at the large company, and knows from first hand experience that the small company will be more rewarding than reducing me to a "code monkey".

I don't really understand the distinction between a "code monkey" and a "real" programmer. Please elaborate. I love programming, so to me the idea of sitting at a computer programming (i.e., code monkey) doesn't seem bad. What does a programmer mean by "code monkey" if he/she enjoys programming?

5

7 Answers 7

37

Code Monkey means doing coding so simple a monkey could do it

It's often used to refer to the lowest-level programming jobs, but can also be used to refer to someone who does nothing but coding. No UI designing, no architectural input, no development decisions, etc

There's nothing wrong with being a code monkey (I call myself one sometimes), but chances are that if all you are doing is coding you'll never move up in the chain and see those higher salary figures that come with being able to see and understand the entire software development cycle.

26

"Code monkey" describes coder from whom zero creativity is required. Such coder would do repetitive, boring, often tedious tasks, like clone form and change one filed etc.

What you call "real programmer", would be a person, who actually participates in designing logic of the application, and actually uses creativity do to the job.

2
  • I'm not sure if I say this correct, but is it "real programmer's" job to work on the business logic of the software development? Example: assume we have a web application, would it be developer's responsibility to design (the logic of) a widget for showing some stats, or someone else who should give all required information to developer (i.e what we need to display, would it be accessible to everyone, or authorized users only etc) and then the devewloper would design the database schema, the code etc? Do I make sence what I'm trying to say? -sorry for my bad english-
    – ltdev
    Nov 24, 2017 at 10:02
  • I agreee hermanos i mean Callan is a thief and Seth - leave me alone while I work - pamadora matadorssss json Norman Oklahoma jumped a bull and he and odeelll and me and dev Bryant our commercials and warmups and hype max -preps classified reports
    – A-Dubb
    Aug 28, 2021 at 5:54
19

To me, at least, the distinction is that a code monkey merely produces code without really thinking about it, where as a "proper" programmer is a professional. They use engineering techniques to produce higher-quality code and have an awareness of the system as a whole, do better planning and more thorough design.

For example some features of a "proper" programmer (although be aware of cargo cultism) might be:

  • A programmer is involved, to a certain extent, with the entire software development lifecycle, not just coding. Code monkeys may be coding up designs or to requirements that were dumped on them, rather than created in consultation with them.
  • Programmers create extensive designs (including tests) before writing any code. They are fairly certain that the design is good (fast, efficient etc.) before they start writing it. Code monkeys jump straight in. They don't know if the design is good until they run it.
  • Programmers take responsibility for planning their own work. Code monkeys just do what their manager tells them, when they're told to.
  • Programmers are valued as an individual for their creativity and skills. Code monkeys are seen as interchangeable black boxes that output code.
  • Programmers are adaptable; they can apply their skills to numerous areas, languages etc. Code monkeys over-specialise, and get lost if they have to work with a new framework.
  • Programmers always look to develop themselves as a professional. Code monkeys stay where they are in terms of skills and experience.

I've used two points at opposite ends of a spectrum here - I suspect most jobs will lie somewhere in between. In addition, it's unlikely that an entire career will stay at the same place - a good company will strive to move its employees towards the programmer end of the scale through training and professional development. It may be worth taking a junior programmer job at the code monkey end if the employer has a graduate scheme or similar that will result in "proper" programmer status eventually.

3
  • Someone obviously disagrees with me, since they downvoted - I'd love to know what about.
    – Scott
    May 29, 2011 at 15:49
  • 2
    I've encountered two breeds of code-monkeys. One of them being the "old dog" that just codes, is reliable and gets the job done. But at the expense of cludgy design and with code filled with old-paradigms and years of "cruft" experience that has made them see everything as a nail, and their "cruft" as the hammer. Probably one of those that downvoted you :) Aug 25, 2012 at 16:25
  • You could add that programmers also strive to learn in detail about what the end users want to achieve with their software, and potentially how that affects the wider world, and use that knowledge to take some role in the process of making the organisational decisions about the product they develop. I recommend watching a video of the Martin Fowler talk 'More Than Code Monkeys'. A programmer sometimes decides for themselves what work is good to do, and either does it autonomously, or attempts to persuade their management to agree.
    – bdsl
    Jan 27, 2017 at 22:18
7

"Code Monkey" 'code mon.key' (/koʊd/ /ˈmʌŋki/)

A "Code Monkey" is a derogatory term used to describe a programmer that:

  • Preforms programming tasks that are considered extremely simple or of no real challenge.
  • Not really allowed to solve problems, or take part in design of the application.

Now "real" programmers sometimes also have preform these types of coding from time to time.

However the main difference is that a "code monkey" doesn't have a choice in doing anything else.

A "Code Monkey" could be used to either imply a programmer's position OR ability

5

According to the jargon file a code monkey can refer to:

  1. A person only capable of grinding out code, but unable to perform the higher-primate tasks of software architecture, analysis, and design. Mildly insulting. Often applied to the most junior people on a programming team.

  2. Anyone who writes code for a living; a programmer.

  3. A self-deprecating way of denying responsibility for a management decision, or of complaining about having to live with such decisions. As in “Don't ask me why we need to write a compiler in COBOL, I'm just a code monkey.”

According to Jonathan Coulton a code monkey:

  1. If confronted with unfair criticism about their code, they'll build up quite a rage against the critic, but at risk of hurting their job status will keep the rage pent-up and not say anything (They'll claim that they're not crazy, just proud.)
  2. Likes Fritos, Tab and Mountain Dew.
  3. Have a sensitive side they'd rather not, or more likely don't know how to, show (they have big warm fuzzy "secret" hearts).
  4. They know they're working a dead-end job and instead of coming in to said job would much rather just wake up, eat a coffee cake, take a bath and nap.
  5. Tries to convince themselves that their job is "fulfilling in a creative way," but deep down they know that's such a load of crap.
  6. Not so good in social situations.
  7. All things considered still have a bright outlook on their future.

In all seriousness, a job cannot make you a code monkey only your behavior and attitude can do that.

3

There is a whole chapter about types of programmers in Pete Goodliffe's "Code Craft". All aspects of what "Code Monkey" means are mentioned in the other answers. What I'd like to emphasize (and what Goodliffe's text shows), is that you can find pros and cons for all kinds. Depending on job and personality, it may be good/desirable/fullfilling to be the code monkey of the team, who makes the ideas/concepts/plans a reality by producing "Beautiful Code".

1
  • I don't know what definition you're using. But a code-monkey will almost NEVER produce "Beautiful Code", in any sort of sense other than the sarcastic one. Aug 25, 2012 at 16:27
0

As far as being a good programmer is concerned you will be a very good programmer no matter where you go, my suggestion would to be a developer by the way. On the note of being a code monkey, well it is a relationship that you build yourself or the company forces you to do. Being a code monkey means that all you do is stick around a simple tool or technology and you are kept in a single mode of development of minor things, you know your potential resides in doing much bigger things, if its your first job, go for the bigger company, even if it keeps you at the monkey level for some time and trust me if the company is big and I am sure if you work hard, you will be come a code Godzilla!!! If your friend says the company is big and you will be kept in code-money manner, he is wrong. Companies grow big because they tend to tackle large problems of industrial scale and they work on larger design and development issues. Small companies rarely do that but this does not mean small companies will not grow or you will be a team lead in a couple of months, like all of us, you will climb the ladder.

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