Computers are actually very dumb Pt. 1

      Computers are actually very dumb Pt. 1

      What is the basic process of developing software, and why do you need to know about it?

      The software development process is similar to the process that you would follow to bring almost any type of creative project to life. The stages described here will seem very elementary and obvious. They are:

      • Planning
      • Analysis
      • Design
      • Implementation
      • Maintenance

      These stages, or phases, are what’s known as the Software Development Life Cycle or SDLC. In software, unlike building a house, the difference is the phases happen over and over again for each set of features that are added to the software. That is why we call it a cycle.

      It’s important to note that the SDLC is just a description of the phases. It’s the “what,” not the “how.” We’ll get to the “how” shortly.

      So why do customers need to know about this?

      Put simply, customers are the most important part of the process. They drive the process with their input. As a programmer, my job is to continually clarify your business objectives so that I may translate them to useful instructions for the computer. Computers are actually very dumb. They have no intuition at all and need explicit instructions on how to deal with any possible variation in the plan.

      That is why we strive to work very closely with our customers and stay in constant communication with them. So, what does this actually mean, to work closely with our customers? It means putting our team (product manager, designers, and developers) in direct, daily contact with the decision-makers in your company. This is important because what happens if too many people are placed between decision-makers and the people building your software? It’s the same thing that happens when you play the children’s game Telephone Operator – lines get crossed, and the wrong message is received! Unfortunately, this is not as fun when it happens on projects that can cost tens or hundreds of thousands of dollars or more.

      Close communication is just one of the factors that you need to know about, which will impact the success and the timeline of your project. Let’s talk about another important factor – knowing what you want and being decisive.

      Get your house in order…

      As with any creative endeavor, knowing what you want – what drives your need – is just as important as technical execution. We stake our reputation on your success, so we want to fill your needs as greatly as you do. However, this means that you need to have your house in order before embarking on this journey with us.

      We don’t doubt that you know your business. Running a business means making a lot of decisions. When you start building software, though, you might be surprised by the number of decisions you’ll have to make about the project. Here are a few different examples of the types of non-technical decisions you’ll have to make, which will allow us to shape our work:

      • What’s the most important aspect of your project?
      • How many people do you expect to be using the software?
      • Who is in charge of keeping the software running when it’s finished?
      • Where will the software be hosted?
      • When do you need it done?

      Aside from these non-technical decisions, we may consult with you on the plethora of technical decisions that need to be made. Many times we can make technical decisions by simply knowing about your needs, but other times we will present the differences to you in a way that you can understand so that you can decide. If you’re a technologically oriented customer, we will shape our work to fit directly into the types of technologies that you have expertise in.

      So, it’s important for you to know what you want and to be decisive. We don’t expect you to know everything that you want upfront, though. There’s a saying in our industry that is often attributed to Steve Jobs – “People don’t know what they want until you show it to them.” Henry Ford also once said, “If I’d asked customers what they wanted, they would have told me, ‘A faster horse!’” Of course these industry giants were mostly talking about the common consumer. They themselves had to figure out the answers and as a business manager you must do the same. This is where decisiveness is valuable. Once we build mock-ups and process descriptions of your software to show you what it might look like or how it might behave, it’s up to you to decide if we should continue down that path.

      To do this effectively here at Bitbean, we subscribe to a set of ideas that I will describe next.

      Agile Software Development 

      At Bitbean, we try our best to follow the Agile software development principles. They are:

      • Attain customer satisfaction with early and continuous delivery of working software.
      • Welcome changing requirements, even late in development.
      • Deliver working software frequently.
      • Close cooperation between business people and developers.
      • Projects are built around motivated, trusted individuals.
      • Face-to-face conversation is the best form of communication.
      • Working software is the primary measure of progress.
      • Sustainable development, able to maintain a constant pace.
      • Continuous attention to technical excellence and good design.
      • Simplicity – the art of maximizing the amount of work not done – is essential.
      • Best architectures, requirements, and designs emerge from self-organizing teams.
      • Regularly, the team reflects on how to become more effective.

       This is a high-level view of how we do things. I hope that by reading this, you can see the importance that we place on the customer/developer relationship.

      In the next article, we will delve a little more deeply into these by giving you a demonstration of our software development practice and building an actual working piece of software with you.