Computer Science Concepts as Life Lessons: Reflections of a Beginner
I recently reconnected with a friend who I hadn't seen in over a decade. We both discovered a passion for data and coding, despite having very different jobs when we first met. While catching up, we dove into a series of nerdy conversations about programming languages, AI, and CRUD - an acronym I learned when I first tried to learn SQL from my ex.
When I made a comment about CRUD, my friend replied with a chuckle:
…CRUD is life. Nearly everything is CRUD!
His response got me thinking. It's not just CRUD, but many other computer science and programming concepts that offer significant parallels to life. I first noticed this in the Harvard CS50 course taught by the renowned computer science professor, David J. Malan. 😍
Computer Science isn't just about technical skills; it offers many valuable lessons that can be applied to different areas of life. In this blog, I want to focus on three key concepts that illustrate this point:
- The Power of Iteration
- CRUD: Creating, Reading, Updating, and Deleting
- The Art of Problem-Solving
Let's dive into how these concepts can help us navigate not only our technical projects but also the challenges we face in our personal and professional lives.
The Power of Iteration
Iteration is a foundational concept in programming. It involves repeating a set of instructions until a specific condition is met, often using loops like for or while loops. The power of iteration lies in the incremental progress it creates through continuous improvement and feedback.
Many people expect to make a leap from one point to another without identifying their goals. Or, they set specific targets but expect an immediate move from start to finish. However, life doesn't work that way. Progress happens incrementally, and we must listen to feedback along the way to make necessary adjustments.
Persistence is essential when it comes to iteration. At the start of a new goal, progress can be slow or even seem nonexistent, which may lead to the temptation to give up or start over entirely. I understand this feeling all too well. However, it's important to recognize that even if we haven't reached our destination, we have made progress beyond our starting point. Instead of starting from scratch, we can make minor adjustments to our approach.
Learning Tableau was a significant challenge for me, and I almost gave up several times. The fundamentals were overwhelming, and I had to repeat them several times. The concept of dimensions and measures, the blue and green pills, and the Level of Detail calculations were all confusing. Nonetheless, I persisted and adjusted my approach each time I revisited these topics. I also realized the importance of understanding the data structure and how data works, which isn't often emphasized in Tableau training.
It took me almost two years to (semi)master Tableau, and the first 80% of my learning journey felt painfully slow. Nevertheless, I didn't give up, and eventually, everything clicked. I understood what Tableau was doing under the hood and now I can create dashboards and charts that previously seemed impossible. So, remember to be patient and persistent, take one step at a time, and don't be afraid to adjust your approach when necessary.
CRUD: Creating, Reading, Updating and Deleting
As I alluded to earlier, the CRUD principle is another fundamental concept in computer science. It is commonly used in database management systems. It stands for Creating, Reading, Updating, and Deleting. These represent the four operations that can be performed on data. In programming, CRUD is used to manage the lifecycle of data, from its creation to its deletion.
CRUD can be applied to real-life situations in many ways.
The first step in the CRUD principle is creating new data. In life, this can translate to creating something new or starting a new project. This is important because it helps us move forward and progress in life. Without creating something new, we can become stagnant and complacent, an ingredient for unhappiness. Whether it’s starting a new job, learning a new skill, or starting a new hobby, creating something new can bring excitement and purpose into our lives.
Next step we have Read. In life, this can translate to gaining knowledge and learning from past experiences. Reading and learning from our past experiences can help us make better decisions in the present and future. It can also help us avoid making the same mistakes twice, or thrice (in some cases). Whether it’s reading a book, listening to someone’s story, or reflecting on our own experiences, reading and learning can help us grow and improve.
The third step is updating existing data. In life, this can translate to making changes and improving ourselves and our surroundings. Updating and improving can help us become better versions of ourselves and create a better world around us. Whether it’s updating our resume, improving our communications skills, or making our home more comfortable, updating and improving can help us achieve our goals and aspirations.
The final step is deleting existing data. In life, this can translate to letting go of things that no longer serve us. Deleting can be difficult and can require significant courage because it often involves letting go of things that we are attached to or have invested time and effort into. However, deleting can also be liberating because it allows us to create a space for new opportunities and experiences. Whether it’s letting go of a toxic relationship, decluttering our home, or quitting a job that no longer aligns with our values, deleting can help us move forward and create a better life for ourselves.
By applying the CRUD principle to our daily lives, we can navigate life's challenges and create a fulfilling and purposeful existence.
The Art of Problem-Solving
Problem-solving is a fundamental life skill, but I dare say not many of us have good problem-solving skills. I, and many others, believe that programming teaches you about problem-solving. Here are several ways in which it achieves this.
Firstly, programming requires you to break down complex problems into smaller, more manageable parts. This process is called decomposition, and it’s a crucial aspect of problem-solving. By breaking a problem down into smaller parts, you can more easily identify the root cause of the problem and come up with a solution.
Secondly, programming teaches you the importance of logic and reasoning. You need to think critically about how to approach a problem and identify the steps you need to take to solve it. You need to consider how different elements of your code interact with each other and be able to predict the outcome of different scenarios.
Programming also requires you to be persistent and to experiment. You won't always get the solution right the first time, so you must be willing to try different approaches until you find the one that works. You must be willing to experiment, make mistakes, and learn from those mistakes.
Finally, programming requires you to think creatively. There are often many ways to solve a problem in programming, and being able to think outside the box and come up with creative solutions is an important part of being a good programmer.
In closing, computer science concepts offer valuable life lessons beyond technical skills. The power of iteration teaches us to make incremental progress and listen to feedback to make necessary adjustments. The CRUD principle reminds us to create new things, learn from past experiences, update and improve ourselves and our surroundings, and let go of things that no longer serve us. Finally, problem-solving is a skill that can be applied in every aspect of life, helping us to tackle challenges and find solutions. As we continue to navigate life's ups and downs, let's not forget the lessons we can learn from the world of computer science. Ciao for now.