今日推荐英文原文：《The 2 Most Important Ways Programming Changed the Way I Perceive the World》
推荐理由：OpenHub 是一个开源的 GitHub Android 客户端应用，支持多种语言，而且快速简洁，能够完成大部分网站上的操作。
今日推荐英文原文：《The 2 Most Important Ways Programming Changed the Way I Perceive the World》作者：Zachary Minott
推荐理由：我们看待世界的方式一直都在发生变化，可能有许多是 CS 所带来的。
The 2 Most Important Ways Programming Changed the Way I Perceive the World
It’s all in the detailsAs I’ve grown as a developer, I’ve begun to see programming as much more than it really is. On the surface, programming can be seen as a technical skill that serves as a utility to create programs and software to resolve real-world problems. But quite honestly, it is so much more than that. Programming is an art form. And similarly to art, the final product of all the code that was written not only serves to change the lives of the audience that the program is put in front of but also the lives of the creators in unexpected ways.
While reflecting on the few years I’ve spent as a developer, I noticed that I no longer follow the same patterns of thought as I used to. I approach problems differently. I respond to failure differently. I think much differently. I perceive the world differently. The consistent practice of programming not only furthered my technical skills, but it also taught me a lot about life.
Here are the lessons I’ve learned from programming.
How to ThinkBefore I started programming, I saw the world with a relatively superficial level of understanding. I didn’t look much deeper into how things actually were. I didn’t read books. I wasn’t curious.
When looking at a program, you can break everything apart into smaller and smaller components until all you have are classes, functions, and variables. We can see with complete transparency what exactly allowed this program to function the way it does. What exactly does this tell me about how the world functions? How the world is structured?
Everything can be deconstructedEvery single thing can be deconstructed into its base components. Atoms and isotopes. The building blocks of reality and the material world. Like the code used to build the beautiful universes we’re able to experience in a video game, everything in our universe functions in the exact way its biological code, chemistry, and the physics of our universe allow it to.
I began to gain a curiosity about the world around me, causing me to look more closely at the smaller details in that which surrounds me. I have come to perceive the world in a more fascinating light. I could look at a simple leaf and imagine how the complexities of nature’s processes have slowly brought this leaf into the state that I’m viewing it in that singular moment.
This made me realize that the world is a product of step-by-step processes and systems in the same way that we build a program variable by variable, function by function, class by class, and component by component until we finally conjure a cohesively complete and functional application. Something that was truly made from nothing. A program that follows the rules and laws that we defined for it.
Why thinking this way is importantWhen I began to think this way, I noticed that nothing in our life can be achieved without breaking apart our goals into specific processes. Everything requires incremental steps and growth. Rarely is anything achieved in one fell swoop. Be it a business, a new hobby, a new skill, or whatever your goal may be, it takes time and patience.
Responding to FailureAs programmers, we have to deal with an immense amount of failure on a daily basis. Some of you may be familiar with the 90-90 Rule of software engineering. If not, it is beautifully explained by Tom Cargill of Bell Labs:
“The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”Basically put, the majority of the time spent writing code is actually spent debugging it. In light of this fact, it’s important to understand that not everything works out on our very first try. Debugging is all about understanding our failures, finding out what caused the failure in the first place, and then making the appropriate adjustments to overcome that failure. Wash, rinse, and repeat. The important thing is that we don’t quit until the code we wrote runs the way we intended it to.
Trial and error ultimately leads to successImagine if every time we ran into an error or a bug in a program, we just gave up. Nothing would ever be accomplished. Nothing would ever be created. If anything is to be achieved in this world, we must overcome the failures in front of us. If there is anything debugging has taught me, it would be this.
Failure can be frustrating. It can make us feel like we’re not moving forward. It can make us feel like we don’t know enough. But that’s the point. Failure should inspire us to learn more, think about different approaches we can take, and adopt a different perspective. It allows us to understand our problems to the point where we won’t run into them again. Trial and error ultimately drives us towards progress and becoming better as people. So don’t be afraid to experiment and be bold in your decisions.
I know that in the past when I didn’t succeed at first, I wouldn’t allow those things to slow me down. I would keep trying and trying until I had a marginally low percentage of error in my performance of that activity. It’s exactly what allowed me to become a Division 1 athlete. It’s what allowed me to become regularly recognized for my performance at my current company. It’s what allowed me to exude the most value I possibly could to those around me. So my advice would be to never quit. Keep trying and be persistent. Learn from your mistakes. And use the reason that you started in the first place to keep driving you forward.
Final ThoughtsThere is so much that we could learn from the simple actions we take and the work we perform on a daily basis. You just have to look closer and notice what you’re gaining from what’s in front of you and exactly how this thing is shaping you as a person. It’ll allow you to see exponentially more value and purpose in your work.
Programming has taught me so much more than just these two things, but our ability to overcome failure and our ability to think differently are two superpowers that I believe everybody can truly benefit from.