No Time to Keep up With Ever-Changing Technology?

Wednesday, December 30, 2015 by Rainer Stropek

Image source: https://flic.kr/p/dcZaG7, Creative Commons License

The software business has been changing at a daunting speed in the last years. Technologies, programming languages, frameworks, project management approaches, etc. we use today have changed so much compared to e.g. five years ago. This is especially true if you are developing on Microsoft's technology stack (e.g. C#, .NET, Visual Studio, TypeScript, Azure) like we do. During workshops and trainings, I often get asked how I find the time to learn all these new technologies. In this blog article I would like to share some thoughts about this topic with you.

Stay Curious

Try to stay curious instead of being frustrated by new tools appearing constantly. A big advantage of being a software developer is that life is never boring. New tools are new toys, play with them, have fun! Many people don't look at new things because they are afraid of the consequences they would have on their habits, teams, products, processes, etc. Don't walk into that trap. If you played with a new tool and you don't like it, you can put it away at any time.

Stay Open to New Ideas

Don't take new ideas as a personal affront against your way of working. For me, this is a hard one. If somebody tells me about a new technology, it is hard to stay open and list. Many times I find myself arguing that the new technology is just a fad because I feel the need to justify my usual way of working. That's wrong. In such situations we should listen closely to see what we can learn.

Stop Hesitating, Decide!

Does it make sense to deal with this new framework? Will it stay relevant in the future? It makes sense to ask this question once you are about to invest a serious amount of time in a new technology. However, don't let this question stop you from making any progress at all. When I read about a new thing in software development that sounds interesting to me, I invest a little bit of time exploring the general concept. If I like it, I watch some videos or do simple tutorials. At that stage, this is just playing around and having fun with new technologies.

After you made yourself familiar with the big picture, decide whether you want to take further steps. If not, don't feel bad because you wasted time. You found out that the new technology isn't relevant for you and that is an important finding.

Favor Regular, Short Learning Sessions Over Fewer, Longer Ones

Beside your full-time job, your family, and all your other hobbies, you will usually never find longer blocks of time you can invest in learning some new technology. Don't feel bad about this.

Psychologists have proven that learning and practice is more effective if it is broken up into a number of short sessions (see Distributed Practice on Wikipedia).

Mass practice with fewer, longer sessions is less powerful. So it is fine and rewarding regularly investing time e.g. when traveling to/from work in reading a technology book, watching Channel9 videos, doing a tutorial, etc.

Remember: The Cost of Failing is Low

If you want to learn skydiving, it would probably be good to learn the basics first. However, when it comes to software development tools, the cost of failing is low. Nowadays, all relevant development technologies are either open source or freely available during a trial period. You can dive in headfirst without knowing the basics.

I found it useful to always have infrastructure available that makes it simple to try things. I use the cloud (e.g. VMs in Azure) for that but you can also use locally installed virtualization tools if you prefer.

Make Confusion Your Friend

Do you know the feeling of being completely confused when you start to deal with a noteworthy complex, new technology? Don't let this discourage you. Learn to manage confusion. The "aha!" effect will follow. Annie Murphy Paul has written a nice article about his topic: Feeling Confused Will Help You Learn Better

Force Yourself to Dig Deeper

Books, videos, conference sessions, step-by-step tutorials etc. don't learn you how to program with a new technology, they just teach you the theory. If you want to really learn a new technology, you have to practice and dig deeper. Whenever I found a new technology that I want to take a closer look at, I have to create a situation where I am forced to practice. If I don't, I never reserve the necessary time. Here are three examples for what I mean:

  • Write articles (e.g. for blogs, magazines) about the new technology. You don't have to be a master with long-time-practice to do that. There are other people out there who are looking for high-quality, well-structured, entry-level content.
  • Start a side project using the new technology. It should be something that is allowed to fail. However, it should be something that you cannot postpone forever (e.g. registration site for the next event of the soccer club you participate in).
  • If the technology you are interested in is open source, start to participate. As a newbie, you will likely not be able to provide new features deep inside the kernel of the technology you are exploring. However, all open source projects I know look for volunteers who write documentation, provide entry-level tutorials, create learning videos, translate content in other languages, etc.

Don't Forget Breaks

Technology can be fascinating. However, there is more to life. Don't neglect family, friends, your body (for me, running is perfect for reflecting on new ideas and concepts), sleep, your job, etc.

comments powered by Disqus