Software Development Concepts

I have always known that understanding the concepts behind things gives one an edge. For example, understanding sequence, selection, and repetition in computer programming makes it easier to learn any programming language. These are fundamental software development concepts. Understanding concepts is what actually gives you the ability for continuous learning. This is true because almost all implementations can be broken down into a few common concepts. Take the internal combustion engine (ICE) for example, every ICE vehicle manufacturer follows their own implementation of ignition and combustion of fuel and air. The actual engine implementations differ but the ICE concepts remain the same across all. It will be easier for someone that understands the common concepts to work on any engine than it will be for someone who only understands the specific implementation of a particular engine.

The importance of understanding concepts remains true for software development as well. It is even more important for developers just starting out, to focus on understand software development concepts first. This page has a collection of my thoughts and software concepts I believe are important. You can view related articles in software architecture

  • Technical Debt Explained
    To understand technical debt, we first have to remind ourselves of the principles of financial debt. Financial debt lets you have the benefit now at the cost of making regular interest payments later.
  • Shared Understanding: 5 Ways Software Teams Can Improve it
    As an individual developer working on a project, you have a very clear vision and understanding the work. The moment another developer joins, everything changes. You suddenly need to start working on shared understanding. The new developer needs to understands as much as you do and get the whole picture.
  • Improper Costing Techniques Could Be The Reason Your Software Development Projects Fail
    Clients that need software built always want to know how much it will cost them, and a lot of times (at least as we have experienced at Intellectual Apps) they want to have this information before work begins. In order to get a “realistic” estimate of how much it will cost to build the piece … Read more
  • Software Developers, RAM, and Maintainable Code
    The software developer’s brain works just like a computer, it has a RAM! When working on a product, the software developer has the product clearly in her RAM ranging from the tasks she has to do, the tasks other team members have to do to the general direction of the product.
  • How to Use the Backend for Frontend (BFF) Pattern in Your Mobile Application Architecture
    This article is a summary of my presentation at the O’Reilly Software Architecture Conference in London. Maintaining an API gateway these days generally involves handling different types of user facing apps such as a web, mobile (of different platforms) and IOT devices. The Backend for Frontend (BFF) pattern specifically addresses this aspect of software solutions.