Forum Discussion

Y4ssine's avatar
Icon for Nimbostratus rankNimbostratus
Aug 12, 2022

F5 network automation: Python vs Golang

Hello everyone. I always have a passion for F5 and I see myself becoming an expert in this field, only thing I am currently struggling with is choosing my network automation programming language. I ...
  • AaronJB's avatar
    Aug 23, 2022

    IMHO, if you are early in your career, I would caution against specialising in either language - build a working understanding of both and make sure you are at least conversant in them and every other language you can get your hands on..

    Speaking to current BIG-IP products (LTM, ASM and so on), Python is an easily accessible route to automation - as xuwen says, it makes it very easy to talk to iControl REST. It's also a great language for quick & dirty pentest tools, doing analysis on datasets, knocking together quick web apps for testing or internal use etc. What it's not so great at (IMHO) is talking directly to the network stack..

    Moving forward into cloud orchestration then Go can be a useful tool. It's also better (again, IMHO) at dealing with the network stack and more easily extensible if you need to put together a tool to test out very specific corner cases (like hunting for SSL stack vulnerabilities). It helps that Kubernetes is mostly Go, of course.

    While I'm here, though, I'd say more important than thinking about language use is thinking about where you want to go in your career. 


    If you want to focus on automation (network automation, F5 automation etc) then I would lean toward Python. Make sure you have a strong understanding of bash scripting as well!

    If you want to focus on security and look toward penetration testing then the deeper you want to go into this topic, the more languages you're probably going to want to be familiar with - at least until/if you pick a specialty. A lot of people are never going to be in a position to specialise in a single language, however, so get famliar with at least the big guns: C, C++, Java. Having an understanding of assembly language will also take you a long way as you get deeper into pentesting and exploit development (x86 is relatively easy to learn, ARM is coming on strong of course).

    Finally.. Rust is starting to gain some significant traction, so keep your eye on that one, too!

    When it comes to security, it pays to be a polyglot 🙂