My best friend is amazing for a ton of reasons. She’s smart, sciency, compassionate, creative…. She’s been dabbling in code for a couple of months and recently decided to delve into Swift. She even has a great iOS app idea that she came up with after helping her kids with school.1
The other day, she told me, “I think my fear with [getting started in] coding/design is that I know I’m not good enough.”2
Whoa there! That’s a heavy statement, right? As much as I understand where she’s coming from, I’m here to say that this particular bit of knowledge is completely wrong. Here are my thoughts:
Learning is hard
It is really hard to learn how to code. Picking a language and learning the fundamentals on a level where they actually make sense is difficult and overwhelming. In my own journey learning Objective-C, I’ve often felt like someone has dropped me in the middle of deep water when I don’t even know how to dog paddle.
However, this feeling lessens as you learn how to quickly search Stack Overflow for answers and the more you practice by actually writing code.
*Image used with permission from [Daily Parallels](https://instagram.com/dailyparallels/)*
Perfect code is a myth
In all my years working with developers, I have known exactly one who has ever claimed to write bug-free, perfect code. It will likely come as no surprise to anyone to learn that he wasn’t a very good programmer and he was really difficult to work with.
Even the most well-known developers write bad code. I’m sure that some of them write nothing but bad code. They don’t let that stop them from creating apps and making them available for others to purchase because they know that there is no such thing as perfect code. At the end of the day, what really matters is that your app (or website, or whatever) is able to do the thing you want it to do without crashing or being slow.3
Professional design isn’t necessary
Take a gander at the mobile apps available right now. For every well-designed, beautiful app out there, you’ll find hundreds or thousands that look like they were created by kindergarteners who have no clue that some colors clash. You’ll download one and poke around in slack-jawed wonder as you try to figure out how this is really the best knitting row counter you could find (not that I’m projecting). I still go to “modern” websites for relatively new products that look like they were built with Dreamweaver 2.0 and a prayer.
Making sure your product makes sense is far more important than making sure that it looks like it has a team of professional designers. You can always change your assets later.
Operating in a vacuum is a mistake
You definitely can sit alone, hammering away at your keyboard, but that’s probably the biggest mistake you can make. Find community, ask questions, and even have people look at your code. Other developers will have suggestions for different ways to approach things. You’ll have the opportunity to level up your knowledge while making your end product even better.
One thing I love about working with a team of talented software engineers is being able to see pull requests. It isn’t uncommon to see comments like, “Try Method A instead of Method B. It’ll work better because….” By having a collaborative mindset, the programs we produce are better than they would be if everyone was left to their own devices.
Present you is the enemy of future you
If you’re doing it right, you will continually learn. This is a journey. There will definitely be milestones along the way (you built a website! a script! an app! an Apple Watch complication!), but there’s no point at which you’ll be able to put your fists on your hips and proclaim, “I am the Master of the Development Universe!”
This means that you will constantly write better code. When you need to look at your old code, you will cringe and wonder what you were thinking. Sometimes, you’ll need to rip it all out like bad electrical work and start over again. This is normal.
For perfectionists, it’s also paralyzing. “I’m not good enough to start now. Maybe in a few months, after I’ve learned more.”
Sorry, Charlie. With that attitude, you’ll never be good enough. Get started now. Slog through, write bad code, delete it all, start over again. This is learning. This is growing. This is development.
You can do it.