Analytical, Logical, Consistent, Resilient and Inclusive Working
I take both a top-down approach to network design, based on industry best-practice and
vendor certified solutions, and a bottom-up consideration of platform capabilities
and the practicalities of delivering & supporting any networked system. This approach
also enables early baseline solution costing.
In engineering the network solution, I either create the network configuration myself or
act in an advisory role to support colleagues, whilst retaining a holistic approach to
project goals.
Modular, Pattern-based Network Design
Successful network design has been taking a modular approach for many years. The art is
in finding the right system arrangement for any given project that balances a number of
(potentially completing) factors, including:
- Functionality. Enabling the right set of system/service capabilities
in each part of the network.
- Capacity. Ensuring the network has enough of the right ports and enough
traffic forwarding capacity for current and growth requirements.
- Ease of Operation. Keeping module functions clear and consistent with
each instance implemented in the same way. This simplifies both network delivery
and support.
- Scalability. Designing the network and each module such that it can be
scaled either by adding elements to an existing module (such as more up-links or
port-adapters), by deploying more module instances or by replacing a module within
an existing architecture.
- Reliability. Building resilience and redundancy into the network to align
with network service reliability requirements.
- Security. Supporting service reliability using traffic control elements
within the network, traffic encryption, log analytics and platform hardening.
- Cost Efficiency. Solution designs take into account a variety of cost
elements including: platform hardware & software, circuit technologies & speeds,
third party support models, equipment placement, power & cooling requirements and
support staffing.
Documentation and Training
Documenting networked systems involves a host of information in different forms, including:
- Network Diagrams. Typically created using Visio, Powerpoint or Google
Drawing, these are the foundation of sharing the physical, logical and service
elements of the network solution.
- Formal Documents. Typically written with Microsoft Word, these include:
the solution architecture, high-level and low-level designs, test plans & reports
and implementation notes.
- Spreadsheets and Databases. Used to support solution costing, Bill of
Materials, IP address templates, requirements tracking and project progress.
Typically using Microsoft Excel or SaaS tools such as Smartsheet for data analysis,
and Access, PostgreSQL and MySQL for network analytics.
- Presentation Slides. Typically created using Microsoft Powerpoint, these
support the verbal discussion of a network solution both as part of the development
and for training.
- Online Resources. Solution and project documentation, progress management
and collaboration tools such as SharePoint, Confluence/Jira/Trello and a project
website. Detailed network documentation using tools such as NetBox.
Network Scripting and Templating
Modern network devices and systems incorporate templates, APIs and scripting languages to
support their integrated operation and automation. I've never worked specifically as a
software developer, however, my work in network delivery and development has often included
elements of programming. A few of the scripting/programming languages I've used as part the
projects I've worked on include:
- Python. I'm using Python to support network automation and IoT integration.
- Visual Basic for Applications. I've been using VBA for over 20 years to support
network design delivery and documentation across, principally, Microsoft Excel, Word, Access &
Visio.
- HTML5/CSS3/Javascript. I'm using these lanaguages to support a variety of
information visualisation functions. This website, for example.
- PHP. I'm using PHP to support dynamic information management, particularly
in relation to website back-end databases.
- Powershell. I've used Powershell for network automation and to support scheduled
tasks on Windows-based systems.
- Platform Scripting Languages. I've used many different network devices and
their associated scripting tools. These are often used to revise configuration based on
network state or report specific operational information.
- Microsoft Excel. In addition to VBA, Excel includes a variety of tools
to retrieve, combine and present dynamic information. These include Power Query, List Objects
and Pivot Tables, all of which I use to support network development project delivery.