Why Python is important for Network Engineers

What is Python?

Python is a multi-purpose programming language, used for scripting instructions that computers, machines, and computing devices can follow to perform specific tasks. In the last 30 years, Python has become one of the most popular and widely adopted programming languages. Why? Because Python is:

  • Simple – Python has a clear and simple syntax, that compared with other languages makes it easier to learn. This simplicity also means developers can writer few lines of code to achieve the same goal.
  • Adaptable – Python is described as a general-purpose programming language because it can be used to programme a wide variety of tasks, from calculating complex mathematics in Data Science to building simple websites.
  • Open Source – Python has a thriving global community of users who offer support, help answering questions and contribute to developing reusable Python libraries. This means these is always someone to help solve your problem.
  • Free and reliable – A lot of effort goes into developing and managing new code releases, updates, and bug fixes to ensure reliability is maintained as the new technology landscape evolves. This is all thanks to the generous work of the team at The Python Software Foundation (PSF).
Data Source: TIOBE Index – The TIOBE index is an indicator of the popularity of programming languages.

History of Python?

Python was invented by Dutch programmer Guido van Rossum, and officially released in 1991. Whilst working for the national research institute for mathematics and computer science in The Netherlands, he encountered limitations using the ABC programming language for systems administration. His team needed a scripting language that was simpler than C and more flexible than alternatives at the time: Pearl, TCL, and Modula-3. Over the Christmas holidays, he decided to design a new language, that borrowed many of the good features from ABC and improved on the limitations. Python was born, curiously named after “Monty Python’s Flying Circus.”

Network Engineer learning how to code

Why learn Python?

As the number of data-hungry network devices continues to grow, the job of a Network Engineer is becoming increasingly complex. More devices, means more connections, more configuration, administration, troubleshooting, updating, documentation etc. Tasks and responsibilities are piling up, but work hours remain the same. Python allows Network Engineers to write scripts that automate complex network configuration tasks and processes. This saves time and reduces human error in a way that is highly scalable and easily repeatable.

Cisco and Juniper have both selected Python as the network programming language of choice. Cisco is teaching Python as part of its DevNet programme, and Juniper developed a Python library called PyEZ, for easy automation of its Junos devices, for example. Lots of network automation tools are written in Python. But why Python? Well, compared with other programming languages, Python has a simpler syntax, more intuitive vocabulary, and shallower learning curve. Just as water takes path of least resistance, network engineers (who did not start out as programmers) are looking for the friendliest bridge to cross from the familiar world of hardware, over to the scary world of software development.

What network engineering tasks can I automate with Python?

The reason Python is so popular for network automation is because it is so flexible. You can use Python to select any network interface, IP address, protocol, TCP/IP socket etc. and build literally any automation use-case. Your imagination really is the only limitation! Additionally, new networking equipment includes Application Programming Interfaces (APIs), which specifically allow hardware devices to be configured using software code like Python.

Here’s a brief list of use cases where Python can save network engineers time:

  • Automatically detect new network devices
  • Backup all network devices and configurations
  • Take inventory of network hardware
  • Manage End of Life milestone dates
  • Update firmware on routers/switches/firewalls
  • Automatically update and generate documentation
Example of a Python script interfacing with Cisco routers

What are the alternatives to Python?

  • AnsibleAnsible is an integrated automation platform that uses Playbooks to record and execute automation workflows. Ansible Playbooks are written in YAML programming language, but you do not need to know YAML to use Ansible, making it very user friendly. Ansible is widely used by DevOps engineers to automate, orchestrate, and configure IT infrastructure.
  • Yet Another Next Generation (YANG)YANG is a data modelling language that defines data sent over network management protocols such as the NETCONF. YANG is the main language for programming Cisco’s Network Services Orchestrator (NSO) network automation tool.
  • Stylesheet Language Alternative syntaX (SLAX)SLAX is a programming language for Juniper users to write Junos scripts.

Will Python take my job?

Unlikely. Network Engineering is a highly-skilled profession. As network capacity and complexity increase, so will demand for network engineers. The main business case for Network Automation is relieving network engineers from low-value, repetitive, admin-heavy tasks, so they can focus on high-value tasks like designing, building, and maintaining better networks. Recent network outages (Facebook, Oct 2021) or Cyber Attacks (SolarWinds, 2020) have highlighted just how critical network infrastructure is to technology dependent operations of modern businesses.

Network engineers should view the adoption of Python by their industry as an opportunity! Those with the foresight and initiative to learn Python early, can separate themselves from the crowd and place themselves in the way of the most exciting job offers and highest salaries on the market. The networking industry is known for its modest pace of evolution; use this to your advantage. Learn Python now, so when the demand for Python heats up, you already have the skills and experience to take advantage of new opportunities.

How to I get started in Python?

Learn Python, the way that works for you!

This depends on how you learn. For some people, the first step may be reading a book to understand the theory, then applying it. Some benefit from the structure and human interaction of a course. Others like to dive-in headfirst and figure it out as you go along. Learning by doing, so to speak. At any rate, here are some resources to start you on the right path:

Books:

  • Network Programmability and Automation: Skills for the Next-Generation Network Engineer – Jason Edelman – Jason founded Network to Code, one of the leading Network Automation firms globally.
  • Mastering Python Networking: Your One-stop Solution to Using Python for Network Automation, Programmability, and DevOps – Eric Chou – A bestselling guide to mastering Python Networking.
  • Automate Your Network: Introducing the Modern Approach to Enterprise Network Management – John W. Capobianco – Provides fantastic background to why and how enterprises are implementing Network Automation.
  • Automate the Boring Stuff with Python: Practical Programming for Total Beginners – Al Sweigart – More generalist book focusing on how Python can be used to automate anything!

Courses:

By doing:

What is Network Automation?

Internet of Things (IoT) Communications Network

By 2032, world population is forecast to increase approximately 10%, from 7.9 to over 8.6 billion. As self-sustaining ruralites continue marching toward data dependant cities, Internet of Things (IoT) is expected to double the number of internet-connected devices, totalling 30 billion by 2030. This growth will place unprecedented demands on current global network infrastructure, and it’s a big problem!

Even with bigger and more Sci-Fi like machinery, there’s only so much physical cable we can lay in the next 10 years. The key word here is ‘physical.’ Physical networks are expensive, time consuming and labour intensive to install and manage. At a time when telecom balance sheets are ladened with debt and interest rates increasing, investment into physical network infrastructure is likely scaling-back when it’s needed most. Throwing money at the problem is no longer an option; it’s time to innovate!

Ever since Western Union began building the world’s first telegraph networks in 1856, almost every human on the planet is now connected via an atmos of radio waves and millions of miles of subterranean and subsea fibre optic cables. That is some feat!

Fibre Optic Internet Cables

But roads of the past don’t always lead to the future. Like meeting your partner for the first time, two very different worlds are colliding: software and hardware.

Traditionally, these worlds have been distinctly separate. Network behemoths like Cisco and Juniper made hardware products like routers, switches and servers and software companies like Microsoft built applications and programmes using languages like C++, Java and .NET. However, with practical and physical limitations to extending global network capacity, and an insatiable appetite for data, software is being necessitated to improve the efficiency of the network. Essentially, by getting more data through the same pipe. This is achieved using intelligent management systems, which act like a brain controlled by software telling networks what to do.

Most of the networks that transport data across the internet today are dumb networks. That’s not my opinion of them, that’s a genuine term describing the TCP/IP pipeline that moves data from one IP address to another. It’s dumb because no intelligent processing is done to the data, the network simply facilitates its journey like a pipe.

Because it’s so dumb, the network requires lots of human intervention to manage it. For example, when a new device is added to the network, it must be manually configured so the data knows exactly where to go. On a global scale, these constant configurations, changes, and upgrades induce great complexity, managed by humans leading to a lot of human error. This is expensive, slow, and ultimately results in a very inefficient network.

Network Engineer Configuring Routers

The purpose of a software driven network management system is to relive humans of repetitive, manual configuration work by developing a set of programmes that control the network and tell it what to do automatically. Hence the term, Network Automation.

A variety of programming languages have been adopted or invented for programming network systems. This include YANG, Ansible, Go or C/C++, but the language that seems to be the most popular and offers the greatest degree of flexibility for networking products, is Python.

Python is an open-source programming language that provides engineers the freedom to target any attribute of any network device, and programme functions that run automatically.

Like programming a route into a satnav, the driver simply follows the script. Gone is the creased AZ, wrong turns, stops or dangerous glances at the map. The decisions are already made!

This code, or scripts that perform specific functions, can be stored in online repositories like GitHub and recycled repeatedly, saving a huge amount of time. These libraries are also called Playbooks, and they help network automation teams, quickly and efficiently develop, and deploy precise automation strategies. That’s the beauty of software, it’s highly available, easily accessible, and compared to building a new network – cheap! You can wait 6 months for new network kit to arrive, before it’s even manually installed and configured. Software Automation strategies can be delivered in a few days!

Software Programming Code

The main challenge with all of this is bringing the software and hardware worlds together. Network Engineers are rarely provided the opportunity to learn coding, and software engineers rarely know enough about networks to know which parts of the network to target with their code, and which network functions to programme.

This is the problem HireWave are solving. HireWave is a specialist recruitment consultancy that is helping to close the software / hardware gap, exclusively in a networking context. Whether you’re looking to implement Network Automation strategies, hire Network Development Engineers or are an engineer with these skills looking for opportunities to fully leverage them. We have relationships with some of the best Network Automation vendors and service providers globally and hundreds of talented engineers across Europe and USA.

For more information or a discreet conversation, please send an email to: .

We are looking forward to hearing from you!

How to write a CV

Clarify your goals

How to write a CV

As the job market roars back to life after COVID, I’m receiving more and more requests for advice on how to write a CV. During my 10 years in recruitment, I’ve easily seen over 1,000,000 CVs. On a good day, I can push over 1000. At these volumes, it’s helpful to know what recruiters are trained to look for and 1 Million anything is enough of a sample set to draw some universal conclusions.

There are many articles written about how to write a CV, but not many adequately cover the ‘process’ of ‘how’ a CV is reviewed. As the author of any communication, it’s helpful to have an intimate understanding of your audience. This article aims to give you the candidate, the job seeker, an insight into how your CV is reviewed by a recruiter today, to help you stand the best chance of securing your dream job.

CV Planning & Approach

Before writing any important document, it’s important to know – what you want to communicate. The primary objective of a CV is not to secure a job; it’s to secure an interview. Like a good film trailer, its purpose is to motivative its audience into action, not tell the whole 2-hour story. Save that for the interview.

The first question to ask yourself is the most important – what job do you want?

It’s imperative you have a direction. Curriculum vitae is Latin for “course of life,” and the job market is simply too competitive to permit good luck alone to pilot this course for you.

Good communication consists of 2 main elements:

  • Content – The facts (it’s your CV, so hopefully you agree there’s not much you can do about this).
  • Context – How those facts are presented.
Tailor your CV appropriately

If the content is you, context would be like your clothes. You wouldn’t turn up to a corporate interview in a swimsuit, it may give the wrong impression of you. Yet, it is still you. Isn’t it? It’s the same with your experience. It needs to be tailored in clothes appropriate to the job you want. From your literary wardrobe, you will choose the language, vocabulary, structure, tone & style, but you will only be able choose effectively once you know what job you want.

Like many who traverse the great course of life, you may be at cross-roads or just starting out and simply don’t know what job you want. If that’s the case, you’re beyond the scope of this article, but let me make some suggestions.

Plan before your start

List your current skills. All of them. Including ones you’ve developed outside of work. Grade them out of 10, until you’ve got a clear list of your top 5 skills. It could be for example:

  • Communication
  • Influence and salesmanship
  • Subject matter expertise in telecoms and networks etc.

You may have a long list but keep grading each one until you have a clear top 5. Get on Google and use these skills as keywords to search for jobs descriptions that contain them. You’re looking for jobs that provide the opportunity for you to contribute your top 5 skills. Once you overcome the initial resistance, you should enjoy the process, particularly when you begin to read job descriptions that inspire you. The more inspired you are reading a job description the more likely it’s something you’re naturally inclined towards, and therefore want to do. Give yourself 2-3 days if necessary, to research job descriptions, watch corporate videos, browse LinkedIn etc. You should then have a clear job title you want to apply for.

Your next planning task is to mentally revisit each of your roles and ask yourself, “What was I most proud of during my time there?” and “What did I contribute?” Future employers want to know how you made a difference to past employers, and these questions are designed to cut through the noise and focus your attention on what really mattered. Note the first answers that come to mind, using the first words that come to mind. The answers that matter most are usually in plain sight, but overthinking can lead to us missing them. Doubting what comes up for you only takes you away from what you meant to say; so keep it real.

Continue asking these two questions for each role and recording your answers for the last 10-15 years. Detailed experience for each role prior to this is relatively negligible, particularly in innovative industries like Technology. You should now have a chronological skeleton of your CV, with core points for each role.

CV Structure & Content

Like any communication, CVs are most effective when they’re simple, clear, and straight to the point. Your immediate audience will likely be a HR department or recruiters viewing over 100 CVs per day. With these numbers in mind, you want to make your CV as easy for them to read as possible. When reviewing a CV, a good recruiter is trained to look for the following, in more or less this order:

  • Overall layout & presentability
  • Job titles
  • Companies
  • Dates of employment
  • What you actually do

Earlier I mentioned I’d seen over 1 Million CVs; from that data here are some Golden Rules worth adhering to:

Font colour – Black & White is a simple, neutral colour pair. When eyes are blurring after 8 hours screening CV’s, the last thing you need is Lime Green font. Ugh!

White space – Make your CV at least look friendly to read. Most recruiters are simple folk, most likely we haven’t got PHD’s, and seeing a page rammed full of size 8 font makes it too tempting to click ‘next’.

Structure – Single column, linear structure. This goes against many CV templates and online CV advice. However, resist the temptation to add too much complexity to your layout. Why? Almost all companies parse CVs through an ATS, CRM, Database, Content Management System etc. The simpler your formatting, the less chance for error. CVs not saved correctly on our databases, will not appear in searches, meaning you and your over-engineered CV may miss out on that dream opportunity.

Artistic expression – Refrain from adding too much artistic expression. Even if you work in UX/UI/Creative Design; hiring managers are more likely to appreciate a good online portfolio of your work, than a CV destined for the Tate Modern. Additionally, the software systems mentioned in the point above usually have zero tolerance for artistic expression.

Neutrality – Also linked to the above point. Yes, adding colourful, creative designs may make your CV stand out, but equally it may offend some people. You want the audience to focus purely on the good work you have done for others in the past. Don’t add any unnecessary decoration, that risks diverting attention away from this.

Simplicity – Most of us live in multicultural towns and cities. The first language of the person reading your CV may not be the same as the language you’ve written in. Chinese read from R-L, 30% of the world’s population use a completely different alphabet than Latin derived English. Keep it simple for all to interpret.

Uniformity – I can never understand this one. Size 14 font here, size 10 there, 12 over there, all in the same paragraph! All text of the same category and type should be the same font and size. Period.

Length – Ideally you want to aim for 1-3 pages. One page CVs containing 5+ years experience, usually leave me wanting more, and more than 3 pages may tell too much of your story before the interview.

CV sections explained

Name & Contact Details

Write your full name, even if it’s a long one. E.g., Maximilian Andrés Mustermann, instead of MA Musterman or Max M.

Include your email & phone number. Typically, recruiters have a short time frame to submit CVs for a vacancy – if we can’t contact you, you may miss out.

You don’t need a full address but it’s helpful to include your current location and willingness to relocate, if that’s a genuine option.

Profile

Short paragraph (or 3-5 bullet points) summarising your experience to a future employer. It should include your core job title e.g., “Successful Telecoms Account Manager” or “talented C# Software Developer.” Some CVs, I read for 5 minutes and am still not clear on what they do. A Google search will help you get the ball rolling here, with some templates and good buzz words. This is a chance to really sell yourself and no time to be shy.

Key Skills

It’s very important to include a list of Key Skills that are relevant to your core job title. Not only are recruiters’ eyes trained to spot these Key Words, but they also act as ‘search terms’ or ‘search queries’ once your CV is in the database.

Experience

Now is the time to evolve your skeleton of core points from your planning session into full bullet points. Bullet points are generally preferred over paragraphs, as they are easier to read and as the name suggests, each bullet is designed to convey a major point. Therefore, you will be less tempted to write fluffy sentences, that don’t really convey any factual information. E.g., “Continuously seek innovative solutions for all customers.”

Here’s an example:

Bad: “Built a Content Management System using Python.”

Good: “As part of a small Scrum team of 5 Python developers, I built the core back-end functionality of the HR department’s bespoke Content Management System (CRM). The system processed 100k transactions daily and was deployed into 8 international subsidiaries, supporting 4000 employees.”

As you can see, the first example leaves the reader with too many unanswered questions. Rather than an interest in finding out more, you are left with annoyance at the lack of understanding.

The second example paints a picture. The reader can visualise the team, imagine you working there developing the system. They can glimpse the scope and impact of your involvement and are naturally curious to found out more. This stimulates unanswered questions like, what challenges did you face? You’ve also included some metrics and abbreviations that double as searchable key words/queries (HR, CRM).

It’s a good idea to add some numbers / quantification – team sizes, improvements etc. From personal experience, people who are clear on the metrics they measure success by, and who readily volunteer these numbers for potential scrutiny during an interview, usually indicates someone on top of their game.

The number of bullets for each role should be appropriate to the tenure. Don’t write 4 bullets for a 3-year period and 25 bullets for a 6-month contact. Equally, don’t expect 2 bullets to satisfy 5 years recent experience. What have you been doing for the past 5 years? In general, 5-10 bullets should be appropriate for a 3/5-year tenure. Adjust accordingly.

Bullets should always be factual. They will be discussed during the interview, so they better be!

Bullets should also be in order of impact!

Remember to clearly state the dates of your employment (month & year), the company name and location of your employer (if different form the job location you’re applying) and your job title (ideally one that reflects what you did; ‘consultant’ helps no one).

Ideally you should write in the past tense, this indicates to a future employer you are ready to move on.

Avoid overuse of ‘I’ and ‘My.’ Instead begin sentences with verbs like, ‘Managed,’ ‘designed,’ ‘owned,’ etc.

Of course, don’t include negative things. You will no doubt get asked about this during an interview.

What to do about gaps in employment? I would suggest anything longer than 3-6 months should be explained. Even writing ‘planned career break’ is sufficient but be prepared to elaborate during an interview or vetting process.

Oh, yeh! Don’t copy and paste job specs – we can tell.

Education

Dates of study (month & year), name and location of education institute, and course title and result.

You should always display university or higher education but leaving your GCSE’s or high-school results displayed after a 20-year career is questionable.

Personal Section

This section really is up to you. I would certainly list any awards or achievements you’re proud of, particularly if they help sell yourself to a future employer.

One of my first managers in recruitment instructed me to remove hobbies before sending CVs to a client, as you never know how a client would react. This goes both ways of course, as a client may share the same hobbies as you. Use your own judgement, if you’re into Fox Hunting and have the foresight to appreciate this may offend some people, then leave it out.

Should I hire a professional CV writer?

Remember, the job of a CV is to secure an interview

A good CV can take a few days to write from scratch. If you dread expressing yourself through writing or simply don’t have the time, then of course you should seek help from someone who has the skills to help you. There is no shame in this and providing the facts are accurate, taking the initiative to ask for professional help should never preclude you from securing your dream job.

Conclusion

This article was written to provide some useful advice and best practice on how to write a CV. I sincerely hope it’s been helpful. Like many important things in life, CVs are something most of us never really receive any formal education on. Yet a good CV, can be the difference between a door opening and a door closing. For someone determined to secure their dream job, you owe it to yourself to make your CV is a polished as possible. Feel free to share this article, particularly if you have children who may be entering the work force for the first time, and don’t yet have a clear yard stick on what a good CV looks like.

Good luck!