Skill Set

When it comes to language choice, I always look at the business use of the project and timescales for the client expects it to be completed. If it's a quick project, usually a start up company with a new idea, then I would normally choose Javascript or Python. I also look at the resources available and team environment when it comes to selection of frameworks and other technologies. If the team members have only a skill set of Microsoft Technologies, then it's better to stick with C# or .NET. If they are coming from large enterprise businesses or an Oracle environment then it's better to stick with Java or Spring.
I usually code either based on object-orientated or event driven practises. I make sure that best practises are implemented, avoid hard coding, repititive, duplicated functionality, nested code and recursions. I use Github for open source projects and AWS CodeCommit for closed source projects. These are some examples of what language I would choose for different applications.
  • Javascript - UI, real time, chat systems or simplified applications
  • Python - Analytical, machine learning, data processing, data mining or scientific applications
  • C# - Fast performance, concurrency, cybersecurity, gaming or desktop applications
  • Java - Enterprise level, finance, IoT, mobile or large systems applications
This all depends on the amount of libraries and support available from the language ecosystem and community.
I structure and design data based on idenitifying business entities and needs for the project. By using ORMs from the backend application, handling data becomes more consistant and the speed of development is faster. If there is a table and form based application, I would normally choose SQL databases because most businesses at its core usually have structured and relational data to deal with operations. If it's gaming, big data or IoT applications, I would choose NoSQL for unstructured data of the application. These applicatons are suitable for databases that have high efficient read/write capabilities. Along with databases, I use caching such as Redis to ease off the load of directly reading data to make applications load faster.
I have worked with both SQL and NoSQL databases for different companies. Each company usually have a budget to spend either on low cost or most efficient databases on the cloud.
I have worked with many API frameworks to deal with data transfer, document generation, email notifications and background tasks. I have worked on tasks where authentication is required to protect and secure API endpoints with user permissions. I normally use a microservice architecture and create small applications for each business use whether it's a department or a particular product for the business. This is to make sure if something goes wrong in one application, the other applications would be available and not disrupt the other departments or areas of business.
For deployments, I use the automation process of pipelines and set up a process to build, test and deploy applications to each environment for its intended use. I use the blue-green deployment approach to ensure that applications are always running smoothly and are not impacted by any issues.
UI Frameworks
UI is my strongest and favourite area of the software cycle. I use React along with NextJS as a default choice when creating an application from scratch. NextJS solves the framework boilerplate which can reduce installing independent libraries for using React and the ease of dealing with pages, routing and many other areas of a full web application.
I have worked in a team of developers where the team are split between backend and frontend roles. I paired programmed with individuals to deal with features on particular areas of a large application.Communication is essential to understand the tasks, build process and end results between each other. There were times when a company needed a backend developer or cover another part of a project while I was in a frontend role. I was able to contribute to those tasks using my skill set. This is a good to have for coverage to speed up development and deployments in fast paced environments.

© 2023 Adam Riaz