So I have been graduated from university 10 years back, so I have been actually working in the field for around 10 years. Not exactly a long time, I know people that work longer than this. So this is my personal achievement for working on this for so long.
Here’s what I found from my various misadventure in IT.
- Things change, and that is the norm
We have changes from the way we deploy software to the type of application we build. Mobile SDK change their API every few years, we have different ways to deploy a web application now.
In the IT industry we always have new things out to use. Some company is slower, for example banks. Some faster like startups. The adoption rate varies, but change is inevitable. Even banks have to build mobile app now.
So things change, and fast. So don’t get attached to your favorite tools. Constant learning is a must. There is always something new around.
2. Because things change, chasing trend is futile
Every time you heard some company start a trend by adopt a tools, often people want to adopt said tools. Well sometime those tools solve their problem, problem you don’t necessarily have. Or it is a problem you have, then you realize you didn’t invest enough on other things to make it possible to adopt a trend.
Often some of the trendy tools hide the fact that it take effort to use the tools. As you adopt said tools, now you find out things you need to do to make things happen. Still it can be helpful to adopt some of these trending tools. Just remember it take effort.
Also adopting a trend is a bet, sometime it work and sometime don’t. Python is ignored for most of Malaysia for sometime, until people start taking notice of their data science library available. People look at nosql for possible scalability, now many fallback to relational until there is some specialize problem. Tools is a bet, sometime it work for you and sometime it doesn’t work for you.
Doesn’t mean trend is not helpful, it help guide to see what people are using and how. But it is not the whole story.
3. Tools are there to solve problem, problem should be the focus.
As a nerd I tend to like tech tools, new language, new software etc. Often the tools might be interesting but it doesn’t improve on existing situation well enough. But that depends on case by case basis.
So when we talk tools we talk about what the problem it is solving. An example is docker, it solve deployment issue. Cloud services solve cost when hosting app the 90’s ways etc.
Also sometime it is better to start discussion on a business problem first, instead of saying we need a technology. Often when we say we want certain tech, now we need to learn the tools, we need to test if it solve the problem, or how much the cost etc. If we discovered we don’t need to adopt some new tech, we just save some money!
So focus on problem first, if problem require specialize tools, then we evaluate.
4. Software development is about people as much as code.
I almost never work outside a team, there is some form of collaboration. As a result it is important to communicate, failure to do that means delay in project, conflict, bad code etc.
Code is not just meant to be run, it is meant to be read. A piece of code is not just a code, it encode knowledge of a business. So a code must be readable, if it is complicated then be commented. Code that is designed for job security almost never ends well, ends up rewritten anyway. So code must be readable.
Outside of code, I learned that we need tools like version control, issue tracker, monitoring system, just to name a few. All these is to facilitate communication. Who build what, what happens in production, what is the problem we need to solve. Learn to use it well, do it correctly it make building software easy.
5. Fundamentals is useful
The IT industry is so successful and making things easier, we often have better tools that is easier to use. We use less static language like c to dynamic language like python. We have http request that can get things work in few lines. Machine learning library that can just used in code.
As a result we have self taught software developers joining the industry, which is a good thing! More opportunity to people, more people in the talent pool. Most of the work in IT is different variant of the same type of work. We don’t need deep knowledge, most of the time.
But it helps to know things like Big-O. I don’t expect software developer to implement common algorithm. It helpful to know which data structure in library to use with these knowledge, why some loop can be more optimized. Another area where CS knowledge is useful is the field in machine learning, it helps to take some class to make it easy to understand how things work.
You don’t need a CS degree to program, but having some CS knowledge is useful, which you can pick up from books!
This is just few of my observation, and often I still make new observation. The thing is IT keeps changing. Some of the thing I shared might even be expired. There is always change, I am not surprised if I change my mind on some of these point in the future.