Okay, let’s say you’re convinced you need to learn to programme and you don’t want to be left behind. The earlier you start, the more you can pick up (and the sooner you’ll become consciously competent) at a pace that suits you. Hopefully, you’ll be able to blend this into your schedule with whatever else you need or want to learn and other skills you wish to master. As discussed in the Why Bother? article comments section, don’t think you’re about to become a programmer; your networking skills are still your core and most important and valuable asset. How you apply your knowledge is what is changing; the tools of your trade will eventually be replaced and you’ll need to code to some degree with the new ones.
It’s quite a mind shift and with SDN, virtualisation and other fundamental changes all in play right now, it’s a heady mix that might be hard to get your head around. It’s probably going to be even harder to unlearn some of the things that have been fundamental to your work for many years. I’ll leave that to another post (or a psychologist, perhaps) but for now, I’d like to be pragmatic and focus on how to prepare yourself to enter the world of programming, assuming you’re willing. I’ll move on to more specific programming subjects in the next article in the series: “Which Language?”.
I see some of the following things as essential skills for most workers in the IT field; they are more about general efficiency and effectiveness (there is a difference) than anything. These will make you a better and faster worker regardless of what you do, but will also provide additional benefits when you start to explore the programming world. So, what things are going to make your journey easier, what should you know before you dive in, and what tools will come in handy?
- Learn to touch type! This bugs me in a big way; the single most important thing you can do to make your digital life at work and at home easier and more efficient is to learn to type. You can probably get the hang of it in a week, and it’s likely to save you at least an hour a day for the rest of your life. So, why wouldn’t you want to learn? Ultimately, if you can’t touch type, any written documentation (or email or whatever) you produce will take you at least twice as long to create as someone who can. It’s probably not going to be as good either, as you’ve had to focus far too much on the typing and had little energy left for considering the actual content. Transferring thoughts from your mind to paper or screen is going to be a slow chore for you, and it’s very likely that a fair deal will simply be lost as it takes so much effort to get it written. Wise up and learn.
- Use keyboard short-cuts. Along with touch typing, this should be an essential skill used by all – there’s no good reason not to. When you save a document in Windows, if I see you slowly move the mouse to click Menu and then Save rather than use [CTRL]+S, you have lost my respect. If I see you use the left arrow key 15 times to get to the start of the line at the Cisco CLI and not [CTRL]+A, I really don’t ever, ever want to work with you again in any way whatsoever. If you can’t use basic and simple tools well, if only to make your own life easier, then there is no hope for you. Sorry to go all Simon Cowell on you, but you’re a problem, not a solution.
- Use a good text editor. An advanced editor will save you a great deal of time and make your life much, much easier, especially where programming is concerned. It won’t cause copy and paste issues and will also support copious time-saving keyboard short-cuts among other features including syntax highlighting and auto-completion. A terse yet visually appealing editor is the best of both worlds; it’s like a CLI but more colourful and helpful. I’m currently really enjoying using Sublime Text; I know Greg uses it too, but has some complaints. I also still use Context for its file comparison function, but it doesn’t come close to Sublime in other areas.
- Learn about glob pattern matching (supported by most languages). This is a 10 minute task at most and will save you a good deal of time when your searching/matching needs are fairly simple; globbing is also less CPU intensive than regular expression processing.
- Learn about regular expressions (regexs) which I think I can safely say are supported in all languages. This really will save you time, especially if you really make the effort to understand them, whether it’s dealing with and manipulating data in a programme or searching a configuration file for ‘all interfaces that have an IP address starting with 10′. Regexs will literally save you years of work through sheer efficiency, if of course, you formulate good ones. Don’t expect to become an expert overnight. This site provides a reasonably non-nonsense introduction: http://www.regular-expressions.info/quickstart.html.
- Learn about common as muck, long in the tooth but awesomely powerful Linux tools such as grep, sed and awk (actually a programming language in itself). The utility of these tools cannot be understated. The formatting is old school, but I found these very useful introductions to Sed and Awk; http://www.grymoire.com/Unix/Sed.html and http://www.grymoire.com/Unix/Awk.html.
- When and where you can, take an interest and improve your understanding of applications and their operation. Not only are the flexible and dynamic networks of the future likely to be controlled and defined by applications, it’s inevitable that flows across these networks will be handled and ‘routed’ based on application level context and parameters. Exploring a simple request-response protocol like HTTP would be a great start.
- Keep an open mind. This is hopefully something all those in IT do, but with the inertia in the industry over the last decade, perhaps you’ve become set in your ways and decided you don’t want to learn new tricks. If you’ve read the article this far, I doubt it. Anyway, just remember if you’re not open to new ideas, learning new things, understanding industry shifts and trends and all the rest you’re going to have a hard time over the next few years. Think flexibly.
- Understand what OpenStack, NSX and other platforms and technologies are all about. Expand your view…
- Stay in the loop. This is something else you probably already do, but if not, start. No man or woman is an island, and in keeping with the previous point, you can’t begin to understand even the current (let alone the new) unless you keep yourself informed. Get following every useful or interesting company and blogger or similar on Twitter, Linkedin and Facebook, and make use of a good RSS reader and get subscribing to sites like this one. This will help you more than you might think with immediate benefits, as well as help you plan and lay your own path to the future.
The next article in the series will explore what languages and technologies you might want to explore along with their current and likely usage and utility. Then, I’ll finally get around to discussing basic programming elements, terminology and structure, as originally promised. If there’s anything you think I’ve missed in this piece, do leave a comment below.
Other articles in the series;