Have you gotten really excited about a new technology, but when you dug into the nuts and bolts lost interest?
Honestly, I can’t tell you how many times this has happened to me and this phenomenon isn’t limited to new software development techniques. The psychologist in me has to ask:
Why is it that stop ourselves from mastering these really cool and lucrative skills?
This is even more frustrating to software developers who’ve learned to program before and *just know* that the new tech is very very similar to what they’ve done before (just different syntax and scope).
I’m not talking about the things out there that are ultimately just a novelty. What I’m talking about are those technologies you know are compelling and will have a direct impact on your career. In my past these included: Javascript, web services, Ruby on Rails, Android and so on. I’m sure you have your own list. Maybe even iOS and Mac development are on your list.
Anyway, I’m assuming that we are talking about a new platform (like iOS) that is very interesting and truly compelling and that you have a very good practical reason to learn. Then, the only explanation that I can muster as to why you are not getting up to speed on something like iOS is that you are experiencing these 3 overwhelming roadblocks:
- Confusion
- Disengagement
- Doubt
All of these things are really just in your head and have very little to do with the reality of learning the new technology. What you really need is a little bit of help to deal with each of these. Here’s some ideas on how to do that.
Overcoming Confusion
If you’re like me, your first instinct when getting up to speed is to look to the blogosphere to see what your peers are doing. Sometimes you will get to your first Hello World app and if you’re lucky, you’ll get a taste of what’s available to you. However, the reality with blogs is this: you either get very specific answers to very specific questions or you get long exposes on novel edge cases. That’s great and all, but when you have no context all this just leads to lots of confusion and disconnected facts.
The problem with this confusion is that it leads to inaction,
because there are so many little bits of disconnected information coming at you that you just don’t know where to start. Of course, if you don’t start with the platform you are not going to be able to move on to master the platform. Honestly, I believe that this initial confusion enough to stop most new developers right in there tracks especially when learning this tech is competing with all the other life demands we have (family, jobs, kids, social life).
To Overcome: use the experience of someone else who’s been through the process and can help you focus of what is important right now. Accept that you won’t learn the entire platform overnight. If you just focus on the subset of information that you need to actually build something using the accepted best practices then you’ll be well on your way. This is the key to get past the roadblock that holds the other 90% back.
Overcoming Disengagement
Let’s assume that you have access to exactly the right type of content which simply lists out all the facts that you need to be a successful developer. Maybe an experienced developer handed you his or her playbook. This, by itself, probably still isn’t enough for you to succeed.
Chances are that you’ve been to conferences and left filled full of facts and you probably felt like you could just rush back to your hotel and pound out a new app. Of course, you most likely would have sat down at your desk staring at the blinking cursor not knowing where to start specifically. Or you may have gotten stuck in one place and had no idea how to move on. Why?
Being exposed to information is not enough.
The problem here is that while you are being passively exposed to information, connections are not being made for you. You are simply disengaged and we know that to learn something well our minds must be engaged and actively processing and generalizing the information being presented.
To Overcome: software developers needs skills and skills are information that is internalized. To get skills and really learn something you must be engaged mentally. The only way to do this is to actually do the work. You need to form muscle memory. What you want to do is first work on projects that relate to the information that you are attempting to internalize.
Another thing you can do is what I like to call playful engagement. You may think of this as hacking – its that point where you are starting to understand the code and want to see how far you can push it. Or you just want to see if you can make Objective-C print out pictures to your console log. Playing with code is another way to stay engaged.
Overcoming Doubt
Doubt creeps in when you are struggling to learn something, but you just can’t seem to get the simplest thing working. This is why trainers like me always have students start with a Hello World app. Right from the beginning, we want you to get over that nagging doubt and get you to the point where you can test the information that we are presenting to you.
Of course, coding your “first app” to say Hello World is one thing. But, real world apps need to be able to do all sorts of things: user interfaces, web services, databases, background processing and more. Each of these topics need their own “Hello World”. Not only that, but you want to see how to put all these pieces together in a coherent structure; to really overcome the doubt roadblock you need a Meta Hello World app that shows you the application architecture.
To Overcome: the only way to get over doubt is to build competence. Remove doubt by writing the code. When you are going through a training program or working through a new technology, don’t move on until you can actually solve the problem that you are reading about. For iOS apps, I also believe that the best way to get over this doubt is to just work toward publishing your first app (even it the app idea sucks). The best way to get over this roadblock is action.
Let’s Recap
So, when you want to master a new technology and your smart and motivated but you still can’t seem to get going its probably because of: Confusion, Disengagement and Doubt.
The fastest way to overcome these three roadblocks is to get help from someone else who can guild you through this process in a way that will provide:
- Focus
- Engagement
- Competence
What’re your thoughts? In the past, what has held you back from mastering new tech or other new skills? Feel free to respond to this post, I get every post comment and I’ll respond to you personally.