avatarElye

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

6664

Abstract

that?</p><p id="0587">Bear with me a little technical illustration to make it clear to you</p><p id="f9b7">In iPhone (iOS), they provide us a text field, where one can enter any key. To make the field just accept the number, we think we only need to do the change the keypad input type to show the number pad only.</p><figure id="6542"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*x0kaiu-MAUV2Ef03.png"><figcaption></figcaption></figure><p id="edfe">Cool. That’s simple right? Not quite. There’re more things to consider.</p><ul><li>In iPhone the input field, the user can also copy and paste on it. Oh… This means users might copy-paste non-number values onto it, which should not be permissible. Ops! To fix it, let’s just disable the Copy-Paste feature perhaps. But then this is not ideal as well. The reason is, if the user copies a number and would like to paste it on it, we should allow it. Tedious.</li><li>What if the user keys in <code>000</code>, is that a number? Ops, we’ll need to avoid the leading <code>0</code>, i.e. no<code>000</code>, <code>0123</code> etc. But we’ll still need <code>0</code> by itself. How could one ensure that? Besides if the users remove all the numbers there, the <code>0</code> should always be visible when there’s nothing left.</li><li>What about the decimal point? How could we ensure there’s only one decimal point? How to ensure it doesn’t appear before the first number?</li><li>… many details more to handle… for such a seemingly simple task.</li></ul><p id="3ee6">As a software developer, these are all the details one needs to tackles. It is not the broad use cases we need to worry too much about, but the corner cases, the unexpected scenarios, things that some users might accidentally do that will potentially break the program we made. A lot of what-if-scenarios one needs to consider. All the tiny details.</p><p id="9ac0">Let’s take a look at another example. This time in an Android phone.</p><figure id="388e"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*l4jRf33tzyWcbj5Jf57FRw.gif"><figcaption></figcaption></figure><p id="8aae">The above shows when one clicks on the top left drawer icon, the menu list floats in from the left. But did you realize that the little drawer icon has changed into an arrow after that? As a user, we might not even realize that.</p><p id="e3c1">But as a software developer all that little details need explicit work to make it happen. Nothing is free. A normal user might not even notice all these tiny details, but they just feel nicer about the app without even knowing why.</p><p id="a88b">Are you excited to get into all these details?</p><h1 id="a873">Responsibility beyond what you can control</h1><figure id="e617"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*w91WEUO7lg3WRgMo"><figcaption>Photo by <a href="https://unsplash.com/@cleipelt?utm_source=medium&amp;utm_medium=referral">Chris Leipelt</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p id="c5ef">Recently Google had a strange bug on its Map, as reported <a href="https://issuetracker.google.com/issues/154855417">here</a>. Any Android App that uses it will crash when the user opens up the map page. 💥</p><p id="2d90">The first impression user has on the issue is, why did the App crash?! Many users got furious and gave a 1-star rating for the App. They might not know it is actually a Google bug and not the App. Even if they know, the users won’t care. To them, the software developer needs to handle it gracefully</p><blockquote id="f661"><p>If you are a Software Developer reading this, thinking try-catch will handle it, unfortumately this case doesn’t seems possible as per the <a href="https://issuetracker.google.com/issues/154855417#comment39">comment</a>.</p></blockquote><p id="3689">When such an incident happens, the management will come after you, asking you how is it? They will expect you to provide a solution or propose a way to avoid the problem. Even though it is not your fault, the spotlight is still on you.</p><p id="a937">Such problems occur is only not limited to Google Service, it could be anything e.g. cloud services like AWS, security hacked by an external party, or a third party library you use that becomes obsolete.</p><p id="cbdc">We rely on external services, third-party libraries, purchased tool-set for our work, as it is impossible for us to create everything from scratch. Such dependencies will fail us at times. It is important to think of mitigation steps like disaster recovery, but there will be no guarantee something outside our control to happen.</p><p id="698d">When that happens, as the developer that is coded for that section that interfaces with the external component, you have to be responsible for it. No one knows as much detail as you do.</p><blockquote id="671d"><p>Sometimes, that is not even the code you made, but by the previous owner who is no longer in the organization. You are still responsible. <i>😊</i></p></blockquote><p id="e6cb">But cheer up, such an incident could make you a hero sometimes, after many hours of the panic moment though.😎</p><h1 id="c8e2">Accept that your product is history after released</h1><figure id="8686"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*fv1iGCDsBYRcSRKa"><figcaption>Photo by <a href="https://unsplash.com/@julesea?utm_source=medium&amp;utm_medium=referral">jules a.</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p id="b4d9">What version of iOS or Android is your phone having now? Did you know anyone still using Android Lollipop or even iOS 9?</p><figure id="e42a"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*qngWucrxWdkNmWlpwbh2MA.png"><figcaption>The version of Android and iOS changes, from year to year</figcaption></figure><p id="b461">If there’s one way to compare the rate of changes and depreciation across different types of products, software products would rank as one of the tops if not the top. In software, there is no material cost to make changes and ship the product. Making change is relatively “cheap” and “quick”.</p><p id="61a8">That’s the reason, as software developers, we are expected to keep making changes and improving the products, shortening the planning cycle, and increasing the release frequencies.</p><p id="be2c">Whatever is officially released, is no longer considered news. Everybody knows about it and expecting it already. What’s in the mind of the user is what’s next, and not what’s available now.</p><p id

Options

="6b2d">A decade ago, software release is a yearly or last yearly event. But it has shortened so much today. <a href="https://en.wikipedia.org/wiki/Agile_software_development">Agile development</a> has been introduced to replace the <a href="https://en.wikipedia.org/wiki/Waterfall_model">waterfall model</a>.</p><p id="fd0c">Just about 2–3 years ago, some companies used to release software on a monthly cadence, and that will follow on by some celebration. To release an app to AppleStore, after the app has been released, it needs to wait for a week before it got published. Hence a monthly cycle makes sense.</p><p id="a114">However, of late, Apple has improved its process to release the App within a day. With additional automation kicks in the organization, now the software app release cycle is shortened to a weekly frequency basis. Every release is now considered just part of the routine. No more weekly celebration. Too many cakes are not good anyway 😅</p><p id="0599">Move fast or move out. There are no other options.</p><h1 id="2e8c">Your competition and support is international</h1><figure id="66dd"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*MKFhZfKnF0vVoliW"><figcaption>Photo by <a href="https://unsplash.com/@kylejglenn?utm_source=medium&amp;utm_medium=referral">Kyle Glenn</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p id="f4bf">During COVID-19, one of the more secured jobs is software development. With the Internet and proper infrastructure in place, working from home is all possible for Sofware Developers.</p><p id="4965">In fact, a lot of companies already have cross geographical development collaboration before COVID-19, either a remote site of the same company or a subcontractor company in another location.</p><p id="222c">This means the pool of resources the company can consider will not be limited to local resources. One can hire from anywhere, as the knowledge of Software Development is a globally available knowledge, anyone can acquire. An organization just needs to ensure the individual is culturally fitting together with sufficient technical competencies, then an offer could be made.</p><p id="e6af">Other than employment competition, product competition is also internationalized. There’s a limited restriction that international software features cannot be used in other countries. E.g. Uber, Amazon, LinkedIn, etc, you name it. The quality of the software you wrote, will be compared internationally.</p><p id="6bee">While the above may seem pessimistic, the below more optimistic view is also true.</p><p id="f7be">As a software developer, you will have more international options to explore. Especially if you are young and single, relocation is not a problem at all. It’s your opportunity to see the world out there.</p><p id="71d1">Even if you’re not that ambitious of making a big move, the benefits of having a global pool of resources are, there is an abundance of knowledge shared globally. Your learning is not constraint to local information. Many resources are available on the internet. Many forums out there you could tap into to connect and learn. There are no limits.</p><p id="8d7d">Larger competition, larger opportunities. Yours to decide.</p><h1 id="3653">Acknowledge that the younger one can do better</h1><figure id="4c27"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*ULRvS2U-McdmZ6gb"><figcaption>Photo by <a href="https://unsplash.com/@benwhitephotography?utm_source=medium&amp;utm_medium=referral">Ben White</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p id="3952">In some jobs like medical and legal practitioners line, the longer you work, the better you will be in your job. The experience weighs more than the mere knowledge one learns. Software development is not so, unfortunately.</p><p id="ff6f">Software development is more similar to the celebrity likes occupation e.g. singers, movie stars, or sports professionals, where the younger generation can possibly do a better job than the veterans.</p><p id="ee2e">If you have just graduated, you are the potential rising star. You have just been equipped with the latest trend and technology, getting into the workforce, full of energy with lots of time to learn, coupled with all the support you can get from the “experienced” developers. Exciting time ahead!</p><p id="c738">However, you’ll learn that as you age, you will have more commitment in life. Maybe you got married and have a family with younger ones demanding your attention. Time is no longer on your side.</p><p id="434f">Now, at work, being a more “experienced” employee, you notice a few new starters coming your way. Young and confident. You thought you could help coach them.</p><p id="48df">To your surprise, one of them tells you that what you said is “dated”. The other question is your knowledge and practices which you held for years, stating that it is no longer relevant. Will your ego be perforated?</p><p id="fb9c">If they are outright wrong, you should explain it to them. But there’s a chance that they are right too. If that’s the case, why not just humble yourself and evaluate those statements. Newer and better techniques are introduced frequently. Chances are, you might have missed out not knowing some.</p><p id="16da">One thing is for sure, no one knows everything in this field. The ability to leverage from both the experience and the younger ones is one way to learn through others. You can’t learn everything by yourself.</p><p id="be4d">It is okay that younger folks know more than you that you could learn from them. Some of them will definitely do better than you, potentially rising to the rank faster than you, and even be your boss.</p><p id="7d21">That’s alright. Let the bright one leads, not the old one. As long as you still have the opportunity to learn and grow… cheer up!</p><p id="b69f">Statistically, most Software Developers transitioned into non-directly development work in the middle of their careers. Some have raised to rank and <a href="https://onezero.medium.com/ctrl-alt-delete-the-planned-obsolescence-of-old-coders-9c5f440ee68">become middle-level managers</a>. Some have transitioned into product managers, business analysts, or delivery leads. Some has changed venture into other business that is not tied to software. Only a handful of developers stay on the course of development.</p><p id="ba60">It is an exciting path to pursue. But it is also a path that has its toil and sweat one needs to go through.</p></article></body>

Software Developer Society

Coding is the future. Are you ready for it?

Don’t do it just because everybody says it is good

Photo by Walther Luecker on Unsplash

Coding is the future. It’s time to jump on the bandwagon. But can everyone code, especially as a lifetime job?

Many got lured into it, in hope that they may be the next Bill Gates, Mark Zuckerberg, Lary Page, Sergey Brin, etc. In reality, most turns out to be normal software developer, sitting long hours in front of a monitor, fiddling the computer keyboard to get something to work.

Nonetheless, it’s not really that bad a thing to be paid relatively well, for just sitting (and standing if you like), making codes through a few (thousands of) taps with your fingers on the keyboard, and getting things done.

Wait! … if sitting and typing are all it takes, who can’t do that job? It’s definitely more than that.

A lifetime commitment to learning

Photo by JESHOOTS.COM on Unsplash

The one field that has evolved so much is Computer Science. Check out the below trend of how many programming languages have been introduced. Most of the older languages are not commonly in use today anymore.

Language year info from https://www.technolush.com/blog/evolution-of-programming-languages

The latest trend of Mobile App development most uses Swift (iOS), Kotlin (Android), and Dart (Flutter). Those who graduate from college 5 years ago, might not even hear about such language, as back then it is still in its infancy. But today, these are the “go-to” language for many.

Within each language, it evolved too. Take for example Java which was introduced in 1995, up till today, there’s already Java 14. Java 15–17 release timeline is already planned. (Wikipedia).

Besides languages, the entire toolset, ecosystem evolved too. Just take a simple example of API requests (connecting the Web/Mobile Application to the Server), it also evolves as shown below.

Images from http://www.soa4u.co.uk/2019/02/a-brief-look-at-evolution-of-interface.html

In another word, the latest technology you learn back in college might be a Computer Science museum-worthy technology five years later.

If you think learning in school is daunting, and learning to code in college is demanding, and hope you’ll get your life back when you start working as a software developer; Or hope five years after working you’ll be an expert in the field naturally… that’s not the way so far, and will not be anytime soon.

Keep learning is a must. Else you’re no longer relevant.

Curiosity and determination to solve problems

Photo by Olav Ahrens Røtne on Unsplash

How many squares are there?

If you get 51, nice! If not, will you try hard enough to make sure you get 51? If you give up, you catch watch the answer on Youtube. Or you just don’t care?

Solving problems is almost a daily task as a Software Developer. Facing seemingly impossible to solve problems happens at least monthly, if not weekly. As mentioned in the earlier point, we learn new things rapidly, hence it is natural we’ll face new problems often.

A competent software developer is curious when facing problems, and determined to know the cause and the right way to solve it. To achieve that, one needs to have the aptitude to break seemingly complex problems into smaller issues and get to the root cause for each of them.

Avoiding the problem with a workaround is only a temporal solution. It will come back and haunt one eventually. The workaround will only accumulate tech debts that will be expensive to pay in time to come.

You may not like challenges. But when it comes, you’re determined to get to the root of it as you know for sure, there’s always a logical explanation to it all. It is eventually just 1 or 0, isn’t it?

Be glad. It is those problems that gain us irreplaceable experience. You let it go, it will come back and haunt you. You handle it, it will add to your medal of honor.

It is the tiny details that make the difference

Photo by Vincent van Zalinge on Unsplash

Let’s assume you are asked to make a simple calculator program for the iPhone.

To make it even simpler, just focus on creating the field where you can enter the number. What’s so hard about that?

Bear with me a little technical illustration to make it clear to you

In iPhone (iOS), they provide us a text field, where one can enter any key. To make the field just accept the number, we think we only need to do the change the keypad input type to show the number pad only.

Cool. That’s simple right? Not quite. There’re more things to consider.

  • In iPhone the input field, the user can also copy and paste on it. Oh… This means users might copy-paste non-number values onto it, which should not be permissible. Ops! To fix it, let’s just disable the Copy-Paste feature perhaps. But then this is not ideal as well. The reason is, if the user copies a number and would like to paste it on it, we should allow it. Tedious.
  • What if the user keys in 000, is that a number? Ops, we’ll need to avoid the leading 0, i.e. no000, 0123 etc. But we’ll still need 0 by itself. How could one ensure that? Besides if the users remove all the numbers there, the 0 should always be visible when there’s nothing left.
  • What about the decimal point? How could we ensure there’s only one decimal point? How to ensure it doesn’t appear before the first number?
  • … many details more to handle… for such a seemingly simple task.

As a software developer, these are all the details one needs to tackles. It is not the broad use cases we need to worry too much about, but the corner cases, the unexpected scenarios, things that some users might accidentally do that will potentially break the program we made. A lot of what-if-scenarios one needs to consider. All the tiny details.

Let’s take a look at another example. This time in an Android phone.

The above shows when one clicks on the top left drawer icon, the menu list floats in from the left. But did you realize that the little drawer icon has changed into an arrow after that? As a user, we might not even realize that.

But as a software developer all that little details need explicit work to make it happen. Nothing is free. A normal user might not even notice all these tiny details, but they just feel nicer about the app without even knowing why.

Are you excited to get into all these details?

Responsibility beyond what you can control

Photo by Chris Leipelt on Unsplash

Recently Google had a strange bug on its Map, as reported here. Any Android App that uses it will crash when the user opens up the map page. 💥

The first impression user has on the issue is, why did the App crash?! Many users got furious and gave a 1-star rating for the App. They might not know it is actually a Google bug and not the App. Even if they know, the users won’t care. To them, the software developer needs to handle it gracefully

If you are a Software Developer reading this, thinking try-catch will handle it, unfortumately this case doesn’t seems possible as per the comment.

When such an incident happens, the management will come after you, asking you how is it? They will expect you to provide a solution or propose a way to avoid the problem. Even though it is not your fault, the spotlight is still on you.

Such problems occur is only not limited to Google Service, it could be anything e.g. cloud services like AWS, security hacked by an external party, or a third party library you use that becomes obsolete.

We rely on external services, third-party libraries, purchased tool-set for our work, as it is impossible for us to create everything from scratch. Such dependencies will fail us at times. It is important to think of mitigation steps like disaster recovery, but there will be no guarantee something outside our control to happen.

When that happens, as the developer that is coded for that section that interfaces with the external component, you have to be responsible for it. No one knows as much detail as you do.

Sometimes, that is not even the code you made, but by the previous owner who is no longer in the organization. You are still responsible. 😊

But cheer up, such an incident could make you a hero sometimes, after many hours of the panic moment though.😎

Accept that your product is history after released

Photo by jules a. on Unsplash

What version of iOS or Android is your phone having now? Did you know anyone still using Android Lollipop or even iOS 9?

The version of Android and iOS changes, from year to year

If there’s one way to compare the rate of changes and depreciation across different types of products, software products would rank as one of the tops if not the top. In software, there is no material cost to make changes and ship the product. Making change is relatively “cheap” and “quick”.

That’s the reason, as software developers, we are expected to keep making changes and improving the products, shortening the planning cycle, and increasing the release frequencies.

Whatever is officially released, is no longer considered news. Everybody knows about it and expecting it already. What’s in the mind of the user is what’s next, and not what’s available now.

A decade ago, software release is a yearly or last yearly event. But it has shortened so much today. Agile development has been introduced to replace the waterfall model.

Just about 2–3 years ago, some companies used to release software on a monthly cadence, and that will follow on by some celebration. To release an app to AppleStore, after the app has been released, it needs to wait for a week before it got published. Hence a monthly cycle makes sense.

However, of late, Apple has improved its process to release the App within a day. With additional automation kicks in the organization, now the software app release cycle is shortened to a weekly frequency basis. Every release is now considered just part of the routine. No more weekly celebration. Too many cakes are not good anyway 😅

Move fast or move out. There are no other options.

Your competition and support is international

Photo by Kyle Glenn on Unsplash

During COVID-19, one of the more secured jobs is software development. With the Internet and proper infrastructure in place, working from home is all possible for Sofware Developers.

In fact, a lot of companies already have cross geographical development collaboration before COVID-19, either a remote site of the same company or a subcontractor company in another location.

This means the pool of resources the company can consider will not be limited to local resources. One can hire from anywhere, as the knowledge of Software Development is a globally available knowledge, anyone can acquire. An organization just needs to ensure the individual is culturally fitting together with sufficient technical competencies, then an offer could be made.

Other than employment competition, product competition is also internationalized. There’s a limited restriction that international software features cannot be used in other countries. E.g. Uber, Amazon, LinkedIn, etc, you name it. The quality of the software you wrote, will be compared internationally.

While the above may seem pessimistic, the below more optimistic view is also true.

As a software developer, you will have more international options to explore. Especially if you are young and single, relocation is not a problem at all. It’s your opportunity to see the world out there.

Even if you’re not that ambitious of making a big move, the benefits of having a global pool of resources are, there is an abundance of knowledge shared globally. Your learning is not constraint to local information. Many resources are available on the internet. Many forums out there you could tap into to connect and learn. There are no limits.

Larger competition, larger opportunities. Yours to decide.

Acknowledge that the younger one can do better

Photo by Ben White on Unsplash

In some jobs like medical and legal practitioners line, the longer you work, the better you will be in your job. The experience weighs more than the mere knowledge one learns. Software development is not so, unfortunately.

Software development is more similar to the celebrity likes occupation e.g. singers, movie stars, or sports professionals, where the younger generation can possibly do a better job than the veterans.

If you have just graduated, you are the potential rising star. You have just been equipped with the latest trend and technology, getting into the workforce, full of energy with lots of time to learn, coupled with all the support you can get from the “experienced” developers. Exciting time ahead!

However, you’ll learn that as you age, you will have more commitment in life. Maybe you got married and have a family with younger ones demanding your attention. Time is no longer on your side.

Now, at work, being a more “experienced” employee, you notice a few new starters coming your way. Young and confident. You thought you could help coach them.

To your surprise, one of them tells you that what you said is “dated”. The other question is your knowledge and practices which you held for years, stating that it is no longer relevant. Will your ego be perforated?

If they are outright wrong, you should explain it to them. But there’s a chance that they are right too. If that’s the case, why not just humble yourself and evaluate those statements. Newer and better techniques are introduced frequently. Chances are, you might have missed out not knowing some.

One thing is for sure, no one knows everything in this field. The ability to leverage from both the experience and the younger ones is one way to learn through others. You can’t learn everything by yourself.

It is okay that younger folks know more than you that you could learn from them. Some of them will definitely do better than you, potentially rising to the rank faster than you, and even be your boss.

That’s alright. Let the bright one leads, not the old one. As long as you still have the opportunity to learn and grow… cheer up!

Statistically, most Software Developers transitioned into non-directly development work in the middle of their careers. Some have raised to rank and become middle-level managers. Some have transitioned into product managers, business analysts, or delivery leads. Some has changed venture into other business that is not tied to software. Only a handful of developers stay on the course of development.

It is an exciting path to pursue. But it is also a path that has its toil and sweat one needs to go through.

Software Development
Education
Learning
Programming
Coding
Recommended from ReadMedium