– “So you’re a programmer? Can you fix my iron?” – 🙄
Most developers have heard a question like this at least once in their career. An iron or a proverbial printer, a home security network, or a business logic for a startup your friends come up with by the bar at a party. And the coolest part is often times a developer can.
If you look closer, it’s not about the experience in fixing things that allows them to break down every single issue, get to the bottom of the problem and do something with it. It’s a certain type of mindset that won’t let them starve to death no matter what. A mindset that highlights the skills and approaches to dealing with life that all us non-developers can learn too if we listen.
Who they are
There is no single term for the type of job that involves building computer-run programs. The partition is very subjective and the more targeted it is, the more jealously guard it is kept. We’ve tried to solve the naming dispute some time ago and didn’t make a dent. So now we’ll be referring to the job in general. Everyone who’s written code is a programmer. Shots fired.
It’s about the approach to delegating functionality to the machine that pushes the progress. As writers, we are terrified of a perspective that someday a computer will write a comprehensive research, a hearty story, or an ironic product statement. Developers aren’t. They are willing to grant as much control over as many aspects of life as they possibly can. And by doing so, they dig deeper into human nature.
Ironically, those who deal with machines, affect humanity stronger than humanists.
What they do
As a web and mobile development agency, we’ve worked on hundreds of projects different in every aspect. The website development process is especially interesting because it involves two variables that have to be balanced – the cost and the features, plus a clients supervision that has to keep abreast with the technological reality.
So of all the skills and knowledge developers have, problem resolution in general is the most important one. That’s why you don’t need a specific technical background to learn how to think like a programmer.
Thinking inside the box
The earlier you develop an ethic, the easier it gets over time. This doesn’t mean you have to strangle your creativity by resorting to comfortable biases. It means putting every problem in the same framework and approaching the core of every issue instead of creating unique solutions.
“Programming isn't about what you know; it's about what you can figure out.” ― Chris Pine in Learn to Program
From our observation, a good programmer won’t tell which technology stack they are going to use unless they ask a ton of general questions. It’s them locating the task in their frame of reference. It’s a skill that everyone can develop by doing the following.
Figuring things out
It’s only impossible until you do it and the more you do it, the more you understand. A problem described in simples terms has a solution written all over it.
Programmers know this. Front-end web development means writing code for the people. They will actually use it as opposed to the back-end web development where the processes will run automatically. When something works right, it’s easy and obvious. However, the body of work programmers put in behind it, is immense. And it all starts with figuring things out.
How to do it depends on you but visualizing the problem and putting it down on paper or wall is what our developers do and that’s why we have whiteboard walls in the office.
Understanding the audience you are building for, their pain, and delight is a skill to learn.
Planning the work
There are different types of product development methodologies. They focus on different aspects but are about the same – being efficient in the long run. Programmers know all of them because over time they take part in team projects of different calibers which is a hotbed for skills.
In website development, there are two most popular methodologies – agile and waterfall. Agile means a developer has to deliver a working piece of a product at the end of every increment, usually a week. Waterfall divides a process of building a product into stages. Design, development, and testing.
Both include a lot of planning whether it’s on a smaller scale of Agile or huge steps of Waterfall. This means developers don’t get buried under a pile of features with no priorities.
A plan derives from the framework and relies upon understanding.
Splitting and sharing
The production of a web development page, even a simple one can be deceptive. What might look like a comprehensible piece of work, might also turn into the avalanche of sprints and features.
Programmers with experience don’t try to manually control the entire process. It’s just too much. That’s where they split the problems into tangible tasks which they can solve one by one or most importantly, delegate and share.
For example, there have been developers who tried to tweak the design of a product to better fit the technical part. As a result, it might damage the consistency of a product in general. Web designers have extensive UI kits, UX patterns, ready icons, and what not. Instead of fixing and micromanaging that part, a developer reaches out and delegates the task.
Being able to split the issue, divide et impera, and share the load does not depreciate the professionalism of a developer, instead, it contributes to a healthy and painless production.
The ego will keep you restless no matter how good you are. Everything that brings discomfort triggers irritation. And being irritated is not a good place to be in mentally when you are building a product to make people’s lives better. Every obstacle is a challenge. Every problem is an opportunity to become better. Every mistake is a chance to refine the product.
“You either win or you learn.” ― Carlos Gracie
Programmers are curious for a challenge. That’s how they stay scrappy. However, challenging doesn’t mean full of bugs and not working right. Refined doesn’t mean stitched up. A programmer approaches a problem like a scientist. Regardless of the result, they don’t hate it, but study it and extract value from it. What you think you did is not what you actually did.
Putting the issue into perspective helps developers see the big picture. This is important because there are different ways to solve the same problem. This also helps avoid biases and stay scrappy.
A programmer who doesn’t stick to their ways and is ready to start over is scrappy as hell. Major tech companies are never afraid to put projects on ice and even retract products. And think about the impact of a big comeback such products can make if they are restarted.
"Through struggle you will attain your rights" – Social Revolutionist slogan, 1917
You appreciate the trophy more if you’ve fought for it.
All skills are perishable
Just as it is hard to acquire the skills that make programmers successful, it’s even harder to maintain them. The danger here is when you have a cushy job and stay in comfort. For example, we have developers who spend years on the same project and have a hard time after they end.
To maintain every single skill, put yourself in a bad position, help people, do charitable work, take part in contests, debunk things, and so on.
“There are many ways neglect can affect the way you execute your knowledge under stress and how to manage a rebound. Fundamental guidance is key in retaining but nothing comes close to discipline!” – Dave Camarillo
The more you observe the success of other people, the more you can relate to your own. Developers learn from each other and never get tired of refining their skills. This is more of a mindset than habits, but if a mindset is hard to develop, you can always start with habits.
Now let’s make something cool!
All the beautiful illustrations in this write-up are taken from the talented Igor Kozak. Come check out his art!