img
  • By Jonathan Terrasi
  • 22 Aug 2024
  • 0 Comment
  • Tech Stacks

Strong Basics: The Building Blocks of Software Engineering

One of my most influential teachers, a university music professor, posed a memorable question: “How good would you be if you did everything your teacher told you to do?” His point wasn’t about blind compliance but about recognizing that once we understand a discipline, we already know what actions lead to improvement. Yet, we often avoid the hard, foundational work, opting instead for the flashier aspects of our field. This tendency, often stemming from laziness, can leave our foundations weak—like building a skyscraper without securing its base.

The Importance of Fundamentals

To address this, I’ve revisited some essential practices in software engineering that have proven vital to success. While drawn from my experience, these principles apply universally:

  1. Question Assumptions
    Assumptions can be dangerous if left unexamined. Effective problem-solving starts with identifying and validating assumptions to ensure your plan doesn’t rest on shaky ground. For example, while working on a deployment project, questioning unique term definitions prevented me from overlooking critical requirements.
  2. Clarify Terms
    Don’t rely on guessing or context when encountering unfamiliar terms. Taking a few minutes to understand them can deepen comprehension. Early in my programming journey, I dismissed the details of object-oriented programming, only to later discover how its core principles shaped its strengths and limitations.
  3. Vet Your Sources
    Not all advice is reliable. Start with trusted documentation and cross-check other sources. When generating RFC 4122-compliant UUIDs, many suggested using third-party libraries. Research revealed the built-in cryptographic library was sufficient, reducing dependencies and risk.
  4. Take Detailed Notes
    Capturing ideas and observations, even those that seem minor, boosts understanding and productivity. Documenting configuration criteria and creating a flowchart for an application project turned my notes into a resource for others as well as myself.
  5. Test Everything
    Testing isn’t optional—it’s the only way to uncover the unexpected. For instance, testing a program with varied data structures exposed edge cases, leading to improvements that ensured reliability under diverse conditions.

Why Basics Matter

Mastering the fundamentals has enabled me to tackle more complex challenges, improving my work over time. Moreover, with businesses focusing on productivity through advanced tools like generative AI, it’s easy to overlook the value of refining existing skills. Before adopting new tools, we should first maximize the potential of the basics.

As the Pareto Principle reminds us, 20% of our skills often account for 80% of our results. Mastery is simply the result of perfecting these basics. They may seem unremarkable, but they are the foundation on which all progress is built.

    Leave a Reply