When I say I have spent a long time
workingplaying with code it might seem like a joke for those who have been programmers for 10 or 20 years. My experience is far less but nevertheless it is a long time. The compiler, which could be gcc, the IDE, the browser, or anything that understands code, is the programmer's best friend. You tell it what you want and it does it. Usually followed by satisfaction.
Most of the time, if it doesn't give you exactly what you want it is because you didn't explain yourself well enough. Sometimes you write something stupid, it tries its best to optimize it and still give you what you want. The compiler doesn't question you or judge you. If you make a mistake it simply tells you "I didn't understand what you are trying to say around this line here." (Sometimes in an obscure language). It doesn't try to change your mind about what you are trying to do. It doesn't say you are wrong. It just try its best to make sure, you can write your request as clear as possible.
Who wouldn't fall in love with a compiler. It never tells you your idea is stupid or no one will like it. As human beings we are very susceptible to this kind of treatment. We code for the beauty of the code, we code because it is fun. We distance our selves from people because all we want is a friend that listens. We are excited when we hear a new language is out or there is an upgrade to our current one.
A new language promise: You can do so much with so little code, debugging is so easy and the environment tells you exactly where the problem is, plus it says it in real English.
We lock ourselves in our little cave and spend countless hours programming for the sake of programming. Eventually we learn that coding is not only fun but it can also generate income. It does take years to realize this, but by the time it comes, we are intimately acquainted with the compiler.
We have mastered our tools and we are ready to use it to make us rich. Let's set out to build something awesome. Something beautiful, complex, yet so simple.
There is a little issue we face but we tend to ignore it. Who needs to learn to talk to humans when we know how to talk to a computer. Our code will be so cool and optimized that people will fall in love with our product. Let's build it and they will come. The hell with marketing.
Obviously this is not how the world works outside our little cave. At the end of the day, it is not a computer that will be using our final product. It is our fellow human being. Yes, the annoying fella that just doesn't get what we are trying to do. They can't even register on our website. Look! it is so easy:
- Scroll all the way to the end of the page, click on members
- On the new page, enter a user name with a minimum of 26 characters.
- Enter a password that contain no more then 2 consecutive vowels and make sure you have these characters
!@#$%^&*()+_present and no less than 32 characters.
- on the next page enter your email address and reenter your password one more time.
- wait 1 hour to receive a confirmation email and click on the link provided.
- enter your password one more time and your account is ready.
I have seen more complicated registration forms. We don't create those just to give users a hard time, anyone that understand code should be able to do it. A bot can do this task in a matter of milliseconds. If a person can't do it, maybe he doesn't deserve to use our product.
The more time we spend inside our little dungeon the less we understand each other. The compiler does its job, and it does it well. Our job is not to please the compiler however, or make it tell us nice things. As programmers our job is to bring ideas to life. If code is the tool we use, then we need to make it invisible to users. There shouldn't be any trace of it on the final product.
Here is an example. There are times where an error will occur on the client side and you need to notify the user that something went wrong. Instead of writing
Error: 0xA405FF Binary flip operation collided. Reset System32 driver and flip binary, maybe a more human friendly message would do the trick.
I try to write code everyday, it doesn't matter if it is for work, my side projects or some trivial stuff. If I don't, I feel like there is something missing in my day. However I have to remind myself that I don't write code for the computer. I write code to share my ideas. Like a poet uses words to express how he perceives the world, I write code to translate the thoughts in my head into something concrete that I can comeback to and study. Sure a computer will be the one running it, but the product in the end is for people. Myself or anyone I want to share the experience with.
But how can I share the experience with others else if I don't speak their language. I have to spend time with them. They ask too many of the wrong questions, or should I say, the questions I don't want to hear. They introduce doubt in my ideas, unlike the compiler they challenge me. Which could be very difficult, I can easily conclude that they don't understand me and seclude myself back to the cave with my dear compiler who accepts me for me.
You design your product, you code day and night to bring it to life, you publish it online and no one comes. Maybe if you post it on one of those technology websites you will get people to use it. You post it and they come ... then they go. Some of them tell you the color is not easy on the eye, others tell you they don't understand it, and others tell you that there are 5 other successful company that do a better job. But ask your compiler, it will run the code smoothly. All the unit tests pass and the deployment is successful. You probably get a reassuring green OK at the end.
But for some reason people don't get it. You do your research and the word marketing keeps coming back. Does it mean I have to do some marketing to get people to use my product? Not necessarily. If I was to do marketing today, only
compilers programmers will buy it.
Just because you are the greatest Popsicle salesman in Nevada doesn't mean you would do the same in Alaska. If people are your customers, or your audience, maybe you should learn their language. Having a questionnaire of 20 questions will not give you the answer either, because people never say what they truly think. You will need to spend time with people if you want to understand them.
Your compiler and your code are just tools. Like a language, you will use them to communicate with people.
You code for people.
Thank you for not judging me. You let me know every time I made a grammatical error, or syntax error as you call it, but you never said anything about my ideas. When they were great you went along with it. When they were mediocre, you still went along with it.
Unfortunately today, I need more than that. I know I only take and take, but you are a tool at my disposition so I cannot give you anything. I will still be around and we will still be working together. But you will no longer be the reason I code for. I will be using you to share my ideas and I hope you will still help me do this with as little friction as possible.
So this is not a goodbye, it is just to tell you I had a change in heart. I will always be grateful for all the work you did and still do for me.
Let's get to work now, shall we?