Over the last year, I've been learning to code, and more so, learning about the community. What does it take to be a programmer? What qualities to programmers have? What do I need to focus on so that I can be a good coder?
With all these questions in mind, I've done a bit of research and it boils down to this…
There is no secret formula.
Programming is just like anything, it comes more naturally for some than others, but at the end of the day it's just like any skill, you have to just do it and learn how you learn best.
I boiled it down to really 3 major concepts that I think will help any new programmer start approaching the world of software in a much more positive light.
Programming is all about problem solving.
Engineering is all about taking an idea, and make it in real life with the tools you have at your disposal.
When you approach a project or an idea, often times the first step in creating this is planning.
Breaking down an idea into smaller pieces to start to work to figure out how to actually create and implement those pieces.
Programmers are just like craftsmen. A carpenter has saws, hammers, rulers, sanders, or whatever tools they may use to create everything from a fine table or rocking chair, to massive ships to sail the seas.
Programmers use different languages, frameworks, algorithms, and whatever problem solving they can harness to create a piece of software capable of dazzling audiences.
Just as a craftsman table is sold for a high price for having the time, effort and attention they put into the detail of the table. From picking the very tree that will become the table, to making the cuts, and finishing off the exterior to make it picture perfect to be displayed in someone's home.
Programmers, (at least the good ones) give their code the same level of attention to detail as any other craftsman would. With extensive planning, drawing out designs, choosing languages and frameworks best suited for the project. And like a craftsman has an image in their head for what their piece will look like for the customer, a programmer has a finished product they have in mind, and develop a user experience that a customer would enjoy.
The attention to detail with a user/consumer in mind, coupled with the extreme attention to detail and a pursuit of excellence for the project all mark the traits of a craftsman.
Mastering a trade takes a certain determination and curiosity to pursue a trade to its fullest extent. A desire to learn not just what, but why and how.
Curiosity is what ignites the fire for discovery, innovation, and determination.
Combining the micro and macro
Micro being semantics, syntax, and actual building blocks that create the larger picture or program.
Macro being all of the more abstract concepts that relate to one another. They all add up to create the project itself, it contains features, interactivity, a uniform body or concept containing all of the smaller pieces that all work together to create a larger thing that performs tasks.
Think about it like a clock. Inside you have all the tiny gears turning and using one another, together, to achieve a larger task. Without the proper planning, and without each piece working simultaneously, the integrity of the whole is compromised.
The same could be said about programming. Programmers take all their time and effort into making sure each one of those cogs is in place and functioning properly just like a master clock-worker would focus on the gears to make sure the clock functioned properly and efficiently.
Creativity is what inspires us to pursue or create something greater than what already exists. Creativity is what sets people apart in how the approach these skills. From artists, craftsmen, writers, painters, photographers, and many more.
Creativity is how we think outside the box, how we create new ideas, how we find new ways to approach problems, and how we find new ways to solve those problems.
Programmers are creative too, just like a painter chooses which colors to convey their message on a canvas, a programmer chooses their tools, strengths, and weaknesses to convey their message into software.
In the movie Ratatouille, a famous line states that “Anyone Can Cook”. The misconception that cooking is exclusively meant for people with “god given talent” or “prodigies” or the idea that any skill or trade is exclusive to a particular group is completely false.
In programming, a huge misconception exists that all programmers have to be geniuses, that just spew out algorithms and math all day, and are somehow super smart and stand out from the rest.
The fact is that programmers are people too. With strengths, and weaknesses, and we all use those strengths and weaknesses to help us learn how to do a thing. We just happened to pick programming.
I think we need to start believing the phrase “Anyone Can Code” just as much as we can believe that a rat can believe that “Anyone Can Cook”.
The misconceptions about programming are just that, misconceptions.
Great chefs standout for not only cooking, but taking food to its farthest stretches, and creating divine dishes that blow the human mind. Great painters don’t just throw paint on a canvas, they work hard to perfect their craft and they try and pursue a vision beyond just the canvas.
This being said, programmers can be the same way. Not every programmer is going to build the next big social media app or online streaming service, just as not every painter is working to paint the next Mona Lisa.
That doesn’t stop people from painting, cooking, or programming.
The misconception that a programmer has to be a genius is about as true as every painter has to be a visionary, or that every chef has to be a 5 star chef with insane never before seen dishes.
We’re all just people exploring trades, skills, and learning more about the tools we have at our disposal as humans.
Programming takes problem solving, curiosity, and creativity just like any other trade or skill. It takes practice and there’s definitely gonna be plenty of people “better” than you. But has a 5 star chef ever scared you into not cooking food for yourself? Or an exhibit at the museum suddenly make you never pick up the brush again?
You don't have to be a genius to program, you just have to start.