love for maintaining software
I am sure I have written about this before. I must have. After this post, I will write about the same topic again, probably mentioning the exact details that I outline in this post.
I love maintaining software.
Something about making an existing codebase better, fixing bugs, optimising the codebase, improving performance: all these things excite me.
Developing new features is fun too. But optimising existing ones is where I find most of my enjoyment when working with the software.
In the last ten years, I have been fortunate enough to be contacted/asked to maintain software written by someone else. Everyone who contacted me about the work told me that everyone else they spoke with wanted to rewrite the codebase instead of offering to fix the issues they were experiencing.
I did not want to rewrite it. I enjoyed the process of reading through someone else’s codebase and figuring out why they had written the class/function the way they did. It took a while to get used to the software flow that someone else had architected. After a while, though, I could dive in, fix bugs, make tweaks and deploy to production.
I was recently reminded of how this might not be good for my career in the future. The following company that I choose to apply with would look for the latest tech world knowledge. The industry is moving at a fast pace. If I did not keep up, I would be left behind.
Do I fear being left behind? I do. I do my part of keeping up with the latest and greatest by working on side projects which use the latest frameworks. Rails, React, Vue.js. I am working with all of these. Just not commercially. Not yet, at least.
I hope companies are looking to hire people to maintain existing software while looking at re-building the current project from the ground up. Could I be that person who works on maintaining the existing software? I would love to be that person.
chance to learn something new
If you have been working on a product for too long as part of a small startup, maintaining the software means that you are not keeping up with the latest frameworks and tools that are making their way into the tech space.
When working on Brightpod, we chose a then-popular PHP framework and stuck to using jQuery for the javascript needs. A few years down the line, the whole industry was no longer talking about CodeIgniter and jQuery. Laravel and React / Vue were popular tools of choice.
Being a small startup meant that most of your time was spent working on new features and keeping up with the customers' bugs. Rewriting software was never on the schedule. I did not see the point in rewriting the software. We found it easy to add new features and scale the software to meet customer needs.
If you work with a design agency or as part of a multinational, the choice to learn a new framework or new set of tools presents itself as part of the next project. In a small startup, though, you need to pick your battles between meeting customer demand vs focus on learning new tech. Internally, we did speak about rewriting the javascript framework and making use of the new framework. Something else always took priority, though.
Looking back, I wish we had taken the chance and learnt new tools along the way. Now that I know a lot about these tools, I can see how they can help make software development easier.
none of your business
I was reading through this page today and was quite impressed with how well the page is written. I have never read through a different take on privacy policy page before. Quite refreshing.
I wish more companies made it easier to understand what they stand for.
the unpopulars
jQuery last week released an update to their framework—v3.6.0 with a few changes. I have not been following up on jQuery’s update for a while now. I remember being a frequent visitor to their site to check if there was an update to the framework.
With the introduction of a lot of new frameworks, jQuery stopped being famous, and many people, including me, made the switch towards other javascript frameworks. I sided with Angular and Vue initially and am now part of the React tribe.
There are quite a few tech tools, which I once used, which stopped being popular due to the industry moving forward at a fast pace, while these tools did not keep up and kept making progress at their own pace. I am quite happy to see that these frameworks did not stop and kept on improving. The pace was slow, but they kept making progress.
I have started to appreciate these frameworks a whole lot in the last few years. It’s sometimes hard to keep up with all the changes in the tech world. Maybe we should slow down and build more reliable tools which last for generations and are not projects which come and go each year.
I am going to make a conscious choice of the tools I choose going forward. The un populars will be looked at again. I am ok, not using the latest framework of the year.
not everyone wants to work from home
I would think everyone would want to. You save on travel time and get those extra few hours to exercise, spend more time with friends and family, and get to the tasks that would previously be reserved for the weekend.
Talking to a colleague yesterday, though, I was reminded how work from home might not be the best for everyone. Some people prefer coming to the office. It helps them focus on the job and get it completed faster compared to when at home. When at home, family members asking to pitch in with daily tasks is not uncommon. After all, you are at home. You could help do the dishes, vacuum the house, get groceries. You would pitch in to help with those tasks after work, but now that you are home, it takes away from that focused time needed to get work completed.
I have also heard of people not being motivated to exercise due to working from home. Not having to go somewhere makes people not even want to go to the gym. You get an early start at work and then get onto the couch straight after work. Having the daily routine of going to work helps set a schedule for before or after work to also exercise.
It’s good then that some companies are continuing to hold on to their office spaces. Not everyone joining the team wants a remote company.
money isn't everything
Someone I know recently said these words to me, and I have been thinking about it for two days.
Growing up, everyone around spoke about how much money someone they admire makes. It almost felt like the administration was for the money the person made rather than for the person. Earning six figures plus was a goal almost everyone I knew had and was working towards.
But what did it take to make that six figures? The last few years, from the stories I hear of friends who make six figures tell me that it takes a lot. If a company offers you so much money, they would expect a lot in return. A few people tell me how they are hardly sleeping, how they don’t have time to hang out, how exercising has become a distant dream. The money, though, is great.
Making a lot of money for the sake of making money never interested me. If a job demanded a whole lot and was creeping into my personal life, my travel, my exercise routine, my hangout time, that was a red flag and something I would work hard to avoid. Money isn’t everything. I would take a balanced life over the $10-20K raise if that raise came with a lot of expectation.
user friendly
I have been reading this book User Friendly How the Hidden Rules of Design are Changing the Way We Live, Work & Play the last few days. Something about user experiences as subject of study. I first learnt about user experience as a field in uni and was instantly drawn to it.
A fascinating look at the secrets of user experience and how brilliant design changes everything, by Robert Fabricant, one of the most influential design minds in the industry
I always thought about user friendliness as a concept closely related to software / computer hardware. It is great to read about examples of how non user friendly design also effect almost everything else. My next read should definitely be The Design of Everyday Things.
base project template
I remember reading about it in one of the tweets a while ago. Having a base project template is quite handy at times. How often would you like to have the necessary things setup again and again?
These days, most web apps need a registration system, a login system, a dashboard, session handling, and a logout system. Most frameworks will have this built-in as part of the framework these days, but I usually find myself customising the fields from time to time. A similar setup for setting up servers would be great too. Now with Docker and Terraform, it is possible to have server setup documented.
I have one such setup for Laravel now. When starting a new project, I now copy migrations, a few views into a new Laravel project and save many hours I would usually spend tweaking the system to match my needs.
If you don’t have a base template for your projects, investing time in settings one up is time well spent.
if not this, then what?
I am sure you have been asked this question. If you have not been asked, I am sure it’s a question you have thought about at some point in time. I was asked this question yesterday after a few drinks with friends at work.
If you were not working here, and if money was not an issue, what would you be doing?
It made me also think about a quote from Steve Jobs Stanford commencement speech
“If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been “No” for too many days in a row, I know I need to change something.
It’s good to reflect on this question a few times each year. I have found it best to have a book and a pencil/pen to write down your thoughts as you think about this question.
cheat meal
“Cheat day”. “This is my cheat meal”. I have heard these words more times in the last five years than the previous 20 years combined. I heard it a few times just today.
It’s great to see a lot more people focused on health and watching what they are eating. We should not be regularaly consuming oily or sugary food. After a few months of too much oil and sugar, your body does not react well and will usually show signs of not being at it’s best.
There is no much information surrounding cheat meals, though. A quick google search will return more than 2 million results. I remember reading about cheat meals the first time in The 4-Hour Body . One takeaway from the first few chapters that I did end up reading was to avoid “white” food—sugar, pasta, rice, cheese etc. I wanted to try and combine it with the advice of having that one day where you get to satisfy all your cravings of the week. It did work wonders. I dropped a few kilos in a month.
It was tough to sustain that diet, though. If you have an active social life, having strict control over your diet is difficult. Sticking to only one cheat meal a week became very difficult after the first month of having almost no social life.
Cheat day for me so far has been a failed experiment. On/off days, though, have been working well. On certain days I eat without thinking much while eating the bare minimum the next day or another day in the week while I am homebound.
one more thing to learn
The goal was simple. I wanted to spin up a few servers, a database, a Redis server, an elasticsearch server, and to make it so that it’s easier to maintain these resources in the future.
To set up each of these resources before, I would log in to the hosting companies UI and then onto the server and setup things. If I wanted to set up a new server after a month, I would repeat the same process all over again.
Something had to change, and I wanted to automate the process. I knew there were tools available that would help with the automation. I needed to carve out time to sit down and learn.
And learn I did. For Linode, Stack script. For DigitalOcean, Apps that came with their format on how to set up resources. AWS has CloudFormation, which helps setting up resources. You can also use Docker and containerise the deployment process. I slowly caught up with these tools to learn about Terraform, enabling you to write declarative configuration files to set up the infrastructure.
A collegue at work told me about how the company plans to move more services to Kubernetes. Every time I feel like I have caught up, there is one more thing to learn. Somedays, it is exhausting; other days, it’s fun. I don’t need to know and master all these tools. I need to pick one that I enjoy working with and continue improving my skills with that tool.
taking care of your health?
Are you? Are you taking care of your health? I remember being asked his question multiple times in the last few years. My reply would usually vary from “its a work in progress” to being funny at times by saying, “I will be starting from next Monday”. Haven’t we all done that? If you are not really into a fitness routine, you have tried to dodge this question by answering differently each time you were asked.
I came across this tracker today and was in awe with the use of technology to track blood glucose in real-time so that you can maximise your diet and exercise. I am impressed with companies like these which continue to spend time and resources to build better tech to get data and feed that data to improve health.
There are apps, websites that will guide you on what to eat, which will help you track steps, help correct your form during weight lifting. You tell the app your goal, and it will guide you towards it. The same did exist before technology. You had magazines, people at the gym, coaches you could talk to. Technology made it more accessible.
With so many things to now guide you towards a better diet, better exercise plan, the challenge is to get started. Make that 2% change each day. You don’t have to. But I hope you do.
are you learning?
Are you learning each day when you are at work? Maybe not every day, but getting to work with that particular organisation is a good thing for your life and career path in the future if you got to learn something new this specific week.
But what if you are not learning? What if a few weeks go by and there is nothing new to learn at your workplace. You end up doing the same thing over and over again and somehow going back to the desk/computer/ticket system feels a bit different each day. The motivation to continue/show up the next day slowing starts fading away.
Is there an opportunity to learn? Maybe you can volunteer for a new initiative the company is looking to start in a field of your interest. Perhaps it’s not something that interests you, but you give it a try nonetheless. I have often found new topics of interest by being part of projects that initially did not interest me.
If all these don’t align to help you learn new things and grow, is there another place that could help you achieve these?
sleep
I remember Jason Fried from Basecamp writing and tweeting a whole lot about the importance of sleep. It was the opposite advice to what everyone else as talking about at that time. “You can always sleep later”. “If you are not burning the midnight oil, you are not working hard enough”. There were so many such pieces of advice I would come across when trying to read about startup land.
I love my sleep time and afternoon naps. But the advice on offer said that burning the midnight oil was the way to go if you are working on a startup. That feature needed to be deployed yesterday.
Jason’s words and articles he would link to did strike a chord with me. I kept reading more about how important sleep is and the side effects of not sleeping enough. I did not feel good the next day, after having burnt the midnight oil a few nights in a week. I would be exhausted on the weekends.
I started sleeping more hours and started tracking my sleep hours. Sleeping seven-plus hours indeed made me feel better and made me productive. I was not thinking about the nap as soon as I woke up. I vouched never to go back to burning the midnight oil.
That was four years ago. A lot has changed since then, and here I am today, reminding myself of the importance of sleep. I have not slept six plus hours for a few months now. Apple Watch tells me it’s between 5 and 5:30 hours. Something needs to change. A few things need to change. I will be tweaking my schedule to get at least seven plus hours of sleep from today.
Why You Shouldn't Build a Mobile App
Whenever I have to come up with an example of a cheap app that performs poorly, feels clunky, and frustrates the user every time they use it, one particular app comes to mind. I won’t name the company, but I think it’s important to note that they’re not just in the Fortune 500, but in the top 50. So it’s not like they didn’t have the money to do it right. But for whatever reason, they did not do it right. They did it horribly. And using their app is awful.
I have had similar experience with apps built by some of the widely popular companies. They did not do it right. I wish they would have considered investing in a response web app instead.
If you build backend programmer and I can get you to read one article today, let it be this one:
terraform
I spent all of yesterday learning terraform. As much as I like PaaS products, all of them have that one missing feature which takes them out of the race of being my preferred choice of hosting.
I have set up more than a hundred servers to date. All of them involved package installation’s, users to be added, server configuration, APM configuration, etc. There was a pattern, and I had my list of bookmarked websites to help with the process. I kept doing the same things over and over again. Something needed to change.
I have been reading up on terraform the last few months, and it felt like the best choice to automate the manual steps I would keep performing repeatedly. So far, it has been a joy to use. The configuration schema is easy to understand, and AWS credits from attending the conference have helped deploy and destroy servers.
intel evo
It’s been a long time since I read about Intel processors. I remember being obsessed with Intel and always being up to date with the progress they were making. After switching to Macs though, I almost stopped keeping myself up to date.
I read about intel evo yesterday, and it felt good to see Intel step up and improve their processor line. I am on the sideline rooting for them to succeed.
I am often asked which windows laptop would I recommend, and I have always recommended Microsoft Surface or Dell XPS.
good apps developed in India
Had a great conversation with a few friends today about how the Indian government was pushing for “Make in India” to have Indians use more of apps developed in the country. The government wants an Indian version of WhatsApp and an Indian version of zoom. And a few more categories I would assume. The question here is why? Why do we need an Indian version of “x”?
I have my theories around why the government encourages people/companies to build apps created/hosted in the country, but I will cover that sometime in the future. The conversation got me thinking of some good apps developed in India. I don’t know if they are hosted in India too.
On top of my mind, I could think of these B2C apps:
All these apps cater to a particular segment relevant to the Indian market. All these apps are fun to use and have a good user experience. Do we have a Whatsapp competitor? A competitor for Twitter? A competitor for Facebook? Do we need these competitors? And if yes, should we be only looking for apps Made in India?
cryptocurrency
Money market investment has never been an area of interest to me. I understood the stock market well. I wanted to invest in companies and the people behind the company and the problem they were trying to solve.
There is a lot of advice online on finding the best deals for stocks to invest it. There are WhatsApp groups you can join, and there are newsletters you can subscribe to which will advise you on investment strategies. I have somehow always gone with investing in companies that I used a product of and if that product was well thought. Not the smartest way of investing, but I was not investing a lot of money, to begin with.
There has been a lot of chatter online about cryptocurrency in the last few years: Bitcoin, Litecoin, ethereum, and so many other variations of digital currency. I spent a lot of time reading about a cryptocurrency and even signed up to a few websites that promised a 0.000002 Bitcoin value if you signed up with the service. I have not traded cash for a bitcoin till now. Why not? I still don’t understand it completely. I even don’t see its usage anywhere except for currency being traded against a local dollar value in the exchange.
What could change my mind? I read today that Tesla was planning on accepting cryptocurrency as payment. I wish more companies follow through. That would make it attractive for me to consider investing in the digital currency market. Would it be too late and would the prices be too high by then? That’s a downside I am ok with.