Author: admin

  • Deciding on your technology, frameworks and  architecture

    Deciding on your technology, frameworks and architecture

    The example of Flash

    Adobe Flash has been around for a number of years. The technology allowed for animation, drawing of vector graphics and excellent interactivity in the age of Web 2.0. Many companies built their systems on this platform using ActionScript.

    Sadly, Apple decided to not allow Flash to run on their mobile devices. 

    Android soon followed suit.

    Software development trends follow the consumer – and flash perished in the process.  

    The options are endless

    According to Ray Kurzweil, computers double their capabilities every twelve to eighteen months. Coding and information technology follow suit. We see advancements in cloud computing (such as Azure) that constantly pushes out new features and new coding languages that makes the tech stack of today look outdated. 

    Businesses tend to choose their developers carefully. They put them through rigorous tests, white board problem solving and interviews. Sadly, most startups and  small businesses don’t actually choose their technology, architecture and coding frameworks in the same way.

    It is therefore important that we have a careful consideration when choosing the tech stack and architecture for a solution.

    Without further ado, let’s jump into the definitions and examples.

    Requirements

    If you only have a hammer, every problem looks like a nail

    Taking time to analyse client requirements will assist in making an informed decision in making the right technology decisions. It’s worth taking the time to investigate the pro’s and cons of a few different technologies. 

    For example, a client might require a website that needs ot be updated regularly for their business. As this is not a large component of their core lead generation method, it would not make sense to have a custom web application developed. It would also not make sense to get a developer to regularly update the website on their behalf. Though it might be frowned upon, for something so simple it might be worth using WordPress.

    Some clients require a custom solution with API integrations, custom business logic, data warehousing and machine learning. 

    The technologies used for this will be much different. 

    Frameworks and languages

    Software developers have an array of languages to choose from. Some are widely used, others are specialised. Here are some examples of languages and their strong points:

    • Python tends to handle spatial and geolocation well.
    • C# and Java have big companies backing the technology and tend to be used for business applications
    • JavaScript and TypeScript are used in web applications to make the web application more responsive by having a certain amount of business logic in the browser.  

    Coding languages have frameworks that can be used to accelerate development. A framework contains pre-written code with functionality that is often required in developing solutions. 

    • C# and VB.NET use the .NET framework
    • PHP uses Symfony and Laravel
    • Javascript uses JQuery and Angular

    Technology stack

    Technology stack: a tech stack refers to the full stack of technology that is used to create software. Here are some examples of the most well known stacks:

    • Microsoft stack (.NET Framework with C# of VB.NET, SQL Server) – This stack is trusted by businesses as stable and accurate, as Microsoft is backing the technology.  
    • LAMP stack (Linux, Apache, MySQL and PHP): This is often used as a more cost effective alternative. As the whole stack is open source. The developer has a lot more control over settings and the finer detail.

    It’s noteworthy that these stacks aren’t clear cut. You could, for example use C# .NET with RavenDB. This flexibility allows for companies to have a more flexible solution that suits their needs. 

    Solutions and software architecture

    Software architecture has to do with how the code is structured and strategic optimisations (performance, maintainability, stability). Code could either be optimised performance, making it more extendable, maintainability. 

    It can never be optimised for everything at the same time. 

    Solution architecture has to do with how the software solutions will interact and how the systems will communicate with each other. When starting a new project, the whole ecosystem needs to be understood. This will avoid unnecessary duplication of information, issues in systems integration and reporting problems.   

    Platforms and external services

    It’s worth noting that with the growth of cloud computing, AI, machine learning and mobile applications that the above needs to be considered in the scope of the greater vision of the company.

    As we have learnt from Flash, It might not be in your best interest to grow your business on a technology, service or external party in the long run. Yet, large companies like Microsoft and Amazon have a strong move to digital transformation. These technological giants are enabling business to move forward with them by using Azure or AWS – cloud based solutions.

    Mobile, web or both?

    Web technology has matured well over the last 25 years and the frameworks and languages have adapted to cater for browser incompatibilities and slow connection speeds.

    As mobile apps are still a fairly new channel, it’s not at the point yet where there’s a widespread adoption of a main software development methodology and technology. This fragmentation can cause issues in finding developers to develop features or maintain an existing app. 

    For example, PhoneGap, Flutter and Xamarin do publish cross mobile, but there are a lot of native developers that develop specifically for Android or iOs. If we compare this with how jQuery/Angular as the main trending technology for application front ends, it does call for investigation. 

    For startups, it’s often not wise to go all out and have a cross platform mobile app and web application at the same time. This might cause over-extending. For a large corporate it’s important to have a presence and often to have mobile apps on Android, iOS and the newest platforms.

    Other considerations

    Other considerations:

    • Testing: do the technology choices allow the tester or end-user to test the process thoroughly before releasing, or do I need to trust the word of the developer?
    • Incident handling: Am I able to become aware of issues before they become an incident? How will this happen?
    • Scalability: will the technology allow for scaling the business? For example, document databases are cool, but start becoming slow when doing complicated index queries on hundreds of millions of documents
    • Security: Will my solution have the necessary security in place and adhere to legal requirements? Does the chosen technology allow for this?

    Conclusion

    When developing a new green fields solution, one needs to consider the language and frameworks, technology stack and architecture. 

    These decisions could affect performance, reporting, cost and  future expansion.

    Do sufficient research.

    Chat with a specialist to confirm that you’re on the right track.

    Don’t over engineer.

    Simply be effective.

    Sources consulted

  • How small businesses get ahead when competing against big corporations

    How small businesses get ahead when competing against big corporations

    Two broke students take on the world

    Two students in San Francisco were broke. They were so broke, they couldn’t even pay their rent. As there is a severe shortage of accommodation in the Bay area, they decided to rent out their lounge area by means of an air mattress for extra cash. 

    The idea grew, and today $ 31 Billion.

    It’s taking on the likes of Booking.com and flight centre for booking accommodation.

    The company is Airbnb. 

    This story is not new – it happens in this era of disruption where big corporates are busy doing what they do best – try to move the company forward. 

    The innovator’s dilema

    A cost cutting consultant is called in to analyse the spending and financial landscape of a big corporate company. He looks at at all the projects including those aimed at expanding the company’s reach. He writes a 600 page report on why the business needs to scrap the projects that aren’t bringing in enough cash. 

    In a corporate job, a developer does a demo to his boss about an innovative solution that will outperform the current product. The profitability on the solution is slightly less than the existing one, and thus the manager blocks the innovation and new product.

    This is sound business – right?

    Interestingly enough, studies by Clayton Christensen shows that these innovations often lead to the demise of big industries and corporates. 

    These type of innovations are called disruptive innovation. Personally, I like to think about disruptive innovation as something new that’s not yet 100% ready for corporate use, but will grow into something bigger. 

    Disruptive innovation can often canibalise another product or service – take for example how AirBnB canibalised huge chunks of market share from other booking websites.

    There is a world of other examples – from floppy disks to Uber and the tax industry.  

    Small businesses advantages

    Corporates spend a lot of money to stifle innovation. They have to, as the goal is to make more money. 

    It is for this reason that many small business owners left their formal jobs to start a side hustle or small business. 

    Small businesses have great advantages compared to their corporate counterparts that few confess to being true.  This include agility, lower profit margins required and lower input costs.

    Financial impact and timelines

    As with the image below of the product lifecycle, we know that a product is not always profitable for big businesses until late in the growth stage.

    To illustrate this, let’s look at the process of getting a new product/service idea approved before work on it starts.

    In a corporate setting, it would make sense that the idea, product and service would need to travel through various cost centres before a decision is made on whether to pursue it. In most cases, this would include:

    • legal
    • human resources (or an ethics department)
    • project management
    • the financial department (for costing and viability studies)

    Various (costed) meetings between staff and management would also need to be conducted.

    For this reason, a manager would often just say no. 

    This causes the cost (both monetary and timewise) to be exponentially more than the profit would justify. 

    On the other hand, when a small business owner has a service or product to move people forward, they can sell it without the overhead.

    Agility and learning

    Another advantage is the ability to learn. Eric Ries explains in his book The Lean Startup how the currency of success is measured in learning. When you learn, you can make better decisions for you and your business. 

    It is recommended as a small business owner to have a document with everything that you’ve learnt, you will be able to refer back and not make the same errors over and over. 

    The ability to learn creates an agile environment where owners can change direction quickly and capitalise on opportunities that may arise.  

    For example, as a software developer, you can decide to pivot your company to cater for business to business services. This can be done with very little effort. It is however exceedingly difficult for a company with a name as a B2C expert to suddenly change direction. 

    Conclusion

    Big companies are like shops that take a long time to turn. It can take many years to change direction and adapt to the changing environment. 

    As a small business, you can learn about what your customers really need and adjust how and what you offer to clients.  

    Be effectively simple.