My thoughts on how learning programming gave me a second sight and thus a major advantage as well as happiness and fulfillment.
Before I started learning how to program I thought that programmers and computer engineers were wizards who were able to understand some magical language that I could not comprehend. These wizards could wave a wand and bring a tech application to life.
I tried to learn how to program using websites like Code Academy, Free Code Camp, Coursera, and Udemy but as I learned about loops, functions, and FizzBuzz, I couldn’t relate what I was learning to the real world. It felt like I was back in math class, learning trigonometry, wondering when I would ever use this in my life again.
Maybe the biggest problem before when I was trying to learn how to program was the lack of direction. Trying to learn how to program by myself meant that I needed intrinsic motivation and not knowing how I could ever apply what I was learning was a major problem.
When I decided that I wanted to build the MVP for my Amazon software myself, I had an exact road map of what I needed to do. I was automating one of my business processes by translating it into code. I did not know how I was going to do it, but I knew what I had to do, and figuring out the how was a lot easier once I knew the what.
In the beginning it was really hard. I did not understand why certain things were done the way they were. I didn’t understand the syntax or error messages- but the more I coded, the more comfortable I became. The more parentheses or poor indents I fixed, the more error messages I debugged, the more functions and loops I wrote, the more comfortable I got with doing certain things because I had learned how to do them.
For example, in the beginning, I could not figure out how to scrape a website or BeautifulSoup. I could not comprehend how to create a database using SQLAlchemy. I did not know when arrays or dictionaries could come in handy. But the more csvs I imported and exported, the more nested dictionaries, loops, and arrays I navigated, the more websites I scraped, the more functions I wrote, it got easier. And as it got easier to use the tools, I started to understand the patterns and the flow. It felt as I was learning how to program, the programming was rewriting me too. I started to see things differently and I became much more aware of patterns.
I knew someone who was working on his PhD in mathematics and he said that once he learned mathematics, it blew his mind because he could see it everywhere in the world. Or as Jordan Ellenberg, mathematician and author of How Not to be Wrong: The Power of Mathematical Thinking says, knowing mathematics is like having a superpower like x-ray goggles. I feel like learning how to program started to give me a second sight too.
When a friend told me about a part-time job he was looking to fill, I thought that it could probably be automated. He was looking for certain things in an article like quotes and statistics. I thought you could:
- First scrape the website,
- Find a way to make each sentence an array by delimiting by periods or tags,
- Identify all the sentences with quotes or statistics using common keywords or punctuation,
- Return a list of all quotes and statistics in the article.
As I almost got run over by a car I wondered, why can’t we install cameras at intersections and start giving automatic tickets for traffic violations, in addition to automatic suspensions for multiple violations? You just need to collect the data, in this case sensors in the form of a camera, to craft a solution for a problem: how can we identify bad drivers and suspend their licenses? (This could be bordering on big brother dystopia territory.)
But I also started to wonder about what other data and patterns were in the world. IoT or internet of things is great because there is so much data you can now collect. IoT is the hardware extension of programming to get more data whether visual, temperature, pressure, sound, and more.
Like what if you could have a smart toilet that was like- hey you probably have irritable bowel syndrome and you need to get that checked out. Or a tool that helped women track their personal health and aid/avoid pregnancy. Or maybe things I couldn’t even see- I wondered what secrets might exist in our DNA or how our body or nature works. As I watched a bird peck around a park, I wondered what functions or processes the bird might have. How did the bird know where it could find a tasty snack buried in the ground?
I still have a lot to learn but now it’s exciting because I know that everything I learn will be an upgrade for my baby computer vision. Linear regression, machine learning, deep learning, different algorithms, and tools, are all more sophisticated ways of seeing or analysis and problem solving.
I still need to automate my Amazon business first but I can’t wait to discover how I could use my new skills to tackle ethical and environmental problems like inequality, prejudice, domestic violence, poverty, fair trade, supply chains, recycling, and more.
Because in the end, all you need is to find the inputs (the data) to get to your desired output right? Once you know what problem you’re trying to solve and can find a way to solve that problem, programming is simply automating it, and reproducing it at scale.
For example, I’m currently working on writing a restocking program for my Amazon business. Before I would have to make calculations manually, but now I’m close to finishing a software that can calculate everything for me in minutes. Before it would take me maybe 5 minutes per product and my new program when finished will be able to analyze 100+ products within 5 minutes. Not only that but this program is scalable in that if I shared it, it would be able to help any Amazon seller, and that’s the power of automation and programming. Something that used to take one or many people hours, can now be done by a computer faster and better in a fraction of the time and cost.
But the other thing I’ve learned is that the closer I get to the finish line of completing the first iteration the farther that line seems to get because of feature creep or unseen edge cases. But I’m confident that when I complete my projects, if I continue I will be able to solve the problems I care most about, and that’s what makes me feel happy and fulfilled. I know I’m not there yet but I know I’ll get there because I’m working on it every day.