I am a code-monkey and so are you
Tags: codemonkey
Published: 2021-09-29 09:36:40

We have all been code monkeys. And yes, I admit - I was the monkey too. And now I am the monkey sometimes, code-monkey that is. 
But what is a code-monkey? Is it a person, a role, or a strategy? 
It is a programmer with a simple and basic skill set, according to [Techopedia](https://www.techopedia.com/definition/31469/code-monkey). It's the first step after you finish your education in IT and you get your first job as a software developer.
Now, I am a software engineer with 14+ experience in the industry and I look back to that time of the beginning when everything was simple. 

I didn't have to think about the whole mechanism and how it will work, just one simple gear at a time. It was a time when I have entered the world of professional software development with very little knowledge of anything but the programming language I worked with (C# Love), an entry-level code-monkey some would say. I could focus on my for... loops, my class naming, etc. 

If I had any questions, the "Engineers" had all the answers and the Senior Engineers were like Masters of their craft. When they lift a finger the solution appeared in front of you. And I was like 'I wanna be you...' and it happened, after many many highs and lows and years.

Today I think about mechanisms, systems, concepts, patterns, designs, and coding is the last thing on to-do list for any solution. I love that. I love being an engineer but it is far more than lifting a finger. I have to bleed and also do the monkey code dance.

Everybody in the development community has heard about the concept "Release early, release often". 

In one of my previous jobs, the humans responsible for company vision had a "new" vision, a new application that could sky rock us high in earnings but we had to be quick, we had to prove that idea is good. The plan was to make a few basic killer features the app has to offer, release it and get some paying customers. A typical startup story. We (the team) were excited and started working on the app's architectural design. Then it happened. The architect weighted in: We needed to think about security, data storage, hosting, scaling, UX, etc. 

Short story: we didn't release the app early. In fact, we didn't release it at all. We overengineered the damn thing. Sure, the junior developer who said to hardcode all we could and forget the concepts was WRONG, what a monkey!

We need both code-monkeys and engineers in development teams.
The natural path of learning and evolving as a software developer would be code-monkey (or junior) becoming an engineer. But how do we become engineers if we do only simple tasks with a basic skillset? We don't, we expand our skillset all the time. Learning new technologies, new design patterns, new solutions to our problems. So if we are doing that from the beginning aren't we also engineers? I think we are. 

We are both; code-monkeys and engineers all the time because after we think about big peace, big scope, big ideas, solutions we come down to little parts where we use our simple skillset to make them work. 

When we are pressed by our managers to fix a bug, it's always in a hurry, always some kind of fire we need to put out. Fix it now.. We'll rewrite it like we should… later! Come on, when do we honestly rewrite something if it works? Even in situations when everything is burning around us, we have to try to predict what could happen and how it will work down in the chain. 
Only then we can call ourselves "Engineers". However, correcting that crucial buggy for...loop that started all the mess could be the time when you use the code-monkey.

**Code-monkey** is not a role, it is a strategy, a tool that you use in a day to do focused coding tasks. 

This strategy is used after everything else is completed, the assessment, the diagrams, the planning, the engineering work, and the only thing is left is to code it, make it happen. 
An experienced software engineers would say "that's the easy part", even a monkey could do it - but we do it. All of us, juniors, seniors, architects - no monkeys.

When I don't want to do a task break down, don't want to talk to people, don't want to think about the whole system, and just want to work on good explained task and write code. It's is my time for a Code-Monkey!

My question to you is: Are you a *code-monkey*?