--- Begin Message ---
------- Original Message -------
On Monday, October 2nd, 2023 at 14:26, Michael Sims via uknof
<[email protected]> wrote:
Hey Mick,
> I am new to network design, I have mainly come from an operational
> background. Honestly I’m struggling to wrap my head around all the parts you
> need to consider in all designs. I feel I’m back to square one and need
> mentoring. How did you all get confident with the designing role overall?
This is such a huge topic I’m not sure how to address it in an email but, here
are some starting points...
Firstly I tried to get a good understanding of the technology I was using:
1. I spent a lot of time in the lab (still do) really getting to know whatever
technology I would have to work with. By “lab” I mean that sometimes I’m
working at a company with a lab I can freely test stuff with, sometimes I’m
working somewhere with no lab and have to “test in production”, sometimes I’m
able to test on my home lab (which these days can just mean some virtual
machines or containers on my laptop, gone are the days of physical home labs).
2. It meant (still does) reading the RFCs to understand how the technology is
supposed to work. When I started out I found them intimidating but, you quickly
got used to them, and now they are usually the first place I look.
3. It also meant (still does) reading the vendor documentation in great detail
(because, they don’t always follow the RFCs, and because, RFCs are the theory
but, vendor docs are how you implement it). The first time I had to set up some
L2TP tunnels and terminate some ADSL subscribers on a Cisco 7200 during a
maintenance window, I feel asleep several nights in a row in the run-up, with
my laptop balanced on my chest, reading the Cisco documentation in bed until my
brain couldn't take any more.
Having said all that, you can never know everything about a specific
technology, you just need to get to a point where you feel you know what is
needed to make something work, and that you can recognise when something
probably isn’t going to work. Then you can flag it with your vendor, or during
lab testing, and make it clear to all that need to know, this needs further
clarifying.
Secondly, you need to gather the requirements for whatever you have to design.
Requirements gathering and confirming is a key step; kick out much as you can
to simplify the design (simplicity scales better, is easier to deploy, easier
to support, easier to upgrade/migrate/decommission, etc). This also helps to
meet your probably unrealistic due date and/or financial target. Whatever
requirements you’re left with, apply your technical know-how to come up with a
design that meets those requirements. Many customers and sales people like to
overestimate what’s “needed”, and by when. You can usually either remove
requirements entirely or stagger them, so that your initial design doesn’t need
to be so burdening.
Thirdly, use every resource that is available to you; ask your vendor if your
idea will work, ask your vendor if they have case studies from customers who
have done something similar, ask your steak-holders (the support teams,
deployment teams, your customer), try to test it in the lab, ask if others have
done this before, if anyone sees any problems. Don’t think of design work as “I
need to produce a perfect design, on my own”. No one person can know everything
or foresee everything. I think of it as some sort of technical project manager
type role (even though I’m the one configuring and deploying the devices), I
try to get eyes from all the steak-holders/customers/vendors on the design, to
find faults, and then address them together. So eventually I bring to the table
this mature design but, it took input from many to get there (and I usually
write that in there somewhere too, that the on-call engineers/the NOC/the field
engineers/the vendor/the customer, have all seen and approved this design).
> And any suggestions for home revision?
If you work somewhere with existing designs for other “stuff”, start by reading
those. At every company I have ever worked at, I have spent a non-trivial
amount of time reading through the designs of stuff I’m not working on, to get
an idea of how other networks work, to expand my horizons, to see if there is
anything I can re-use in my own work. I also contact those people to hear their
thoughts.
Also, do some Googling, you can find network designs freely available for
download on the Internet. Also search for content related to the Cisco CCDE
course, people publish their practice designs. You also don’t need to see “full
designs” (whatever that means), if you’re working with technology X but, you
don’t understand it, I’ve found some great blog posts over the years that
helped me to understand it better than the RFCs or vendor docs. They blog post
might be based on someone's real life experiences which means they open your
eyes to issues you wouldn’t have foreseen until deploying in production, so
there can be great lessons to learn from blog posts.
Interact with communities like UKNOF, NetLdn, NetMcr, LONAP meetings, LINX
meetings, RIPE meetings (either by attending the events, or watching the
presentations online, or joining the mailing lists, I’ve had some truly
enlightening exchanges with people on the c-nsp and j-nsp mailing lists over
the years).
> I feel operational you can fix problems but when it comes to designs and you
> need to build a full hld/lld it’s a whole different world.
If you need to produce a HLD and then LLD, then the HLD is where I would try to
identify all of my customer’s requirements / my business requirements. Try to
gather as much detail for the requirements as possible, the more detailed
requirements you gather, the fewer options you have for meeting the
requirements, which I find makes things easier. Then you can provide a high
level design in the HLD which meets the requirements, without going into the
nitty gritty of how it’s implemented. Once that is agreed upon, the LLD really
just becomes the implementation details. If possible in your scenario, get both
documents peer reviewed as early and as often as you can, don’t wait until
you’re 95% done because, your own mistakes are always the hardest to spot.
> Commercial variance of designs? For an example how did you all learn how to
> approach these in designs?
The same as the technical side of things; by getting repeated input and
validation from my vendor/supplier of their prices, by getting repeated input
from my customer if these options are viable for them, and from anyone else
with an interesting in the cost of the project (such as sales and finance).
People are rarely pissed off because you gave them a chance to check something
which affects them, before going ahead and doing it :)
I will stop there because, this is turning into an essay. I hope some of my
ramblings are helpful somehow.
Cheers,
James.
--- End Message ---