I’d like to apologize for my long absence, I’ve been occupied by work, personal projects and family. But I will make up for it all with this juicy and informative post! This will be useful to all of you ambitious start-ups who don’t have the programming skills to guide their developers. It will plant the seed for you to think within the system of programming to help you navigate your way with developers and understand proper structuring of your project in terms of relations, modularization, utilizing open-source software and frameworks. My goal is to help you frame your mental model on the subject of programming to help get the proficiency to get your vision created properly.
Let’s start off with software architecture, or in actuality start off with you, since it’s essential you know fairly well how you want different functions to relate to each other. This allows your developer to select the proper data structure, create algorithms accordingly, and at the same time separate concerns. One method I found useful is to mind map all my features and try to list out as many relations myself and include that usually with the RFQ.
Once you understand your requirements, take it a step further if you have the time and understand the developer (or the team). Find out what past work they’ve done, how they built it, and what they learned as a result of doing the project. It’s essential to find out what language your project will be coded in, how they will structure your database, and what tools they like to use.
One of my favorite topics is frameworks! Specifically web application based ones, mainly since they remove many of the nuisances of programming, and allowing better time use. Majority of the frameworks are based on the model view controller pattern (MVC), this allows separation of data models from presentation component(Interface), which makes two essential things possible modularized code, and ability to reuse code.
I prefer using CodeIgniter personally, since it’s the one I’m most familiar with, and it provides a slew convenience such as a small footprint, php-based, documentation, and community behind it. Although, there are so many frameworks out there ranging from PHP based ones such as Zend and Symfony to Ruby on Rails and Django on Python. Honestly, it just depends on your needs, your programming basis and type of support you need. In my experience, no one framework is better than the other.
One thing I wanted to elaborate on was Modular programming, which pretty having several lego peices that are interchangeable instead of one giant brick. Structuring it within this paradigm allows to main benefits 1) Separation of concerns and 2) Easy to Maintain. It comes down to having the fewest amount of dependencies(or coupling) as possible, which allows you to resuse modules instead of starting all over if you had one large monolithic structure. Some disadvantages you’ll face if you go against this is more effort in making changes to the system since, the risk of a ripple effect on other parts of the system, and the obvious performance issues you’ll face.