Being a software developer in Singapore
Published 4/19/2024, 10:45:35 AM • Enterprise Software
Have you ever had a dream job when you were younger? Mine was being a software developer, ever since I was in secondary school.
I always wanted to do something related to computers as I had a huge passion for computers and computer games. I was interested in how games were built, I was interested in how computers were built.
However, it wasn’t until Polytechnic days that I started picking up programming.
With no proper mentor or guidance, I starting picking up weird technology stacks. I started with the basis; HTML, CSS, Javascript. Then i picked up Django web framework, which I barely have the chance to touch now, unfortunately (both low demand and because there are much better tech in the market).
The goal at that time was to be able to have the skillsets necessary to build websites for companies; which was what I wanted to do as a freelancer.
Obviously, Wordpress would have been enough for me at the time but i learnt Django and offered Django as a freelancer for a basic website which was a crazy overkill. I didn’t know about any other servers other than creating pages in Django.
I can still remember:
def HomePage(request):
return render(request, “template/home.html”, {posts:posts})
or something along to those lines to return a home.html and a post object… Those were the fun days. I took about 6 months to really learn programming and another 6 months to practise.
I then took up multiple projects as a freelance web developer, mostly corporate sites. To be honest, none of the projects are running as of this instant… hahaha. Most of the projects have been revamped or just not used anymore.
Or maybe they just sucked... Seriously, upon looking back I was doing websites for a marine consulting company, a chicken rice stall, and a mortgage broker firm. None of those projects have turned out positive...
The bulk of the work was actually on the frontend. I used custom CSS and bootstrap most of the time which was really time-consuming. I was also a total noob at UI and UX, thus the website looked like crap and doesn’t have the content that should be in a website.
The most complex project that I’ve built was a logistic management system where you can book for last mile delivery service and the admin is able to assign to specific drivers. In fact it was for another group's FYP. I was paid lol!
Fast forward 10 years later, I’m a web/app developer that is running a software development company with a team of 6.
The stack that we work with currently mainly involved React, as it offers great performance to the users and also great developer experience (DX) in the frontend. I find that it is easy to pick up and once the concept has been picked up, you are able to build great web products and eventually mobile app products with React Native with similar coding syntax.
For React framework, i am a super biased fan of Nextjs. I know that there might be other alternatives out there that might be useful but because it is quite “full-stack-y”, i enjoy using it for normal websites and also complex webapps. I even use it as an API for my mobile apps. It’s amazing, and the deployment to Vercel, EASY (most of the times).
These are the technology stack that we work with mainly:
- Nextjs for web React framework
- Supabase for Auth, database and storage
- React Native for mobile development
- Stripe or hitpay for payment gateways
- Vercel or AWS for hosting
I find this the fastest way to get to market, without compromising on software performance at all. In fact, the performance for using this technology stack allows for almost instant loading for all projects.
Software should feel magical. Everything should feel snappy and should load instantly. Loaders should be a thing of the past instead of constantly looking at the loader.
After ten years, I’ve selected this tech stack to bring me to my next decade of running a digital agency.
Picking up this tech stack is one thing, but applying the latest tools that are available to you is also something that you should consider.
For example, for our case in React and Nextjs, we can use Optimistic loading to first load the data on the frontend before the database query is complete. This is suitable for database queries that seldom will have errors. This allows UI to be updated instantly before the APIs return success messages, making the UX feel magical and instant.
As a software developer, I don’t want to just build software that are normal, I really do want to build software that perform at the highest.
Further to being a software developer, I am also a software designer. Well… That said, yes I am a design engineer… I guess that’s what it takes to stand out in the crowd in the competitive landscapes.
On designs, I like designs of software to be readable, usable and clean. Although it’s cliche, but it’s what work. Many software of the past just looks too clunky and old-school. Being modern and playing around with the right shadows, shades, colour palettes is something that I enjoy doing.
Designs should also include flows, interactions and animations between pages. A simple example of having great designs and user experience is reducing the number of steps to perform a task. Well, of course not till the extent that it is easy to make mistakes.
A good example of decent design will be Facebook. If you notice in the Facebook platform in the web, you don’t have to navigate to a new page to add a new Facebook post. You can do it right in the home page of Facebook.
Aside from designs, we have to bring innovative features into the picture.
What’s the point of great designs, user experience and tech if you don’t have the right features to build?
Many mobile apps and software has already improved in recent years, if they are updated with the current trends.
Trends are hard to describe. Currently, as of this writing, the trends for software products utilises gradients and shadows lightly to make it look bright and vibrant. The trend is also there to use gradients in landing pages to make it look very futuristic. Many SAAS landing pages use this.
Now, what have I learnt over the years of running a software development company and developing dozens of software for companies?
The biggest lesson that I have learnt would definitely be going in small sprints rather than in waterfall style. This is because waterfall method has too many assumptions going on in the project. We will assume that the users want certain features a certain way but that might not be the truth.
In addition, when we make a wrong assumption, it is easier to correct the mistake if the step taken is small. It is very hard to make a change when the project is too deep into the progress, should we use waterfall.
I’ve also found out that you should have someone within the company helping with the adoption of the software. This person trains the people who are using the software, along with collection of feedbacks on the software.
This will help with the quickest adoption of the software within the company.
What do i see in the future of software?
Well, it’s definitely an interesting time in the software space in 2024. We are at the epitome of technological advancement in terms of AI and blockchain technology.
ChatGPT is definitely one of the biggest things happening within the software. With this LLM in place, there are many AI wrappers and AI agents coming up that can be super helpful for the general public. I still feel that great developers do not need to feel threatened by AI as long as you keep moving forward with the tech and times.
In addition to ChatGPT, there are also many platforms that are coming up such as replicate and huggingface that allows you to utilise AI in the form of deploying your own models or integrating it through an API.
I still feel that there is an opportunity to improve software before AI fully takes over. I think that the next step for us will be to integrate AI into our current workflows to produce better products and results for our clients.
What are the plans for SleekDigital moving forward?
As you know, SleekDigital is a custom software development in Singapore that specialises in web development and app development. We take custom projects that clients have planned for weeks or months and bring it to reality.
However, clients only come to us when they have sourced the entire market for a solution and are not able to find the perfect solution that fits them. Our services are also the most expensive as compared to other other alternatives such as SAAS.
Therefore, I will be starting to develop solutions that are industry-specific. More specifically, boilerplate codes that can rapidly be deployed into the clients environment. After minor customisations, they have a working product that can be launched and used.
What do software developers do on a daily basis?
Well, every software developer views the world differently. Some merely just wanna get the job done, some really want to improve the way that work is being done.
For me, i usually start the day with coding and deep work before going onto meetings to share about project progresses. Then i continue with coding or reading of latest documentations or release notes of the different techs that we are using. If there aren’t any, then we just proceed with coding.
There are times where we try out new and interesting packages, e.g. react-dnd so that we can build a wider range of projects.
Anyway, that’s all I have to share about being a software developer in Singapore. Hopefully this shines some light into our thought processes everyday and allows you to understand more.
Maybe I will share more if there are enough requests.