Four years ago, and eager to drive transformation and change in the Telco Industry, I embarked on a transformative journey: evolving from Network Engineer to Network Automation Engineer. This transition wasn’t merely a change of roles but a comprehensive learning experience that reshaped my professional perspective and challenged my technical prowess.
During my initial training as a Telecommunications Engineer, the focus was on understanding various network protocols like OSPF, Spanning Tree, BGP, MPLS, and many others that serve as the bedrock of network engineering. I remember being struck by the shared fundamental concepts underlying these diverse protocols, despite the differences in syntax.
As a Network Engineer, I perceived a marked tension between the comparatively static, multiprotocol, and rule-driven world of network engineering and the dynamic, ever-evolving sphere of software development and automation. This realization sparked a complex question: How could these two seemingly conflicting domains – the methodical precision of network engineering and the innovative fluidity of software development – be reconciled?
Navigating this transition necessitated a unique fusion of these disciplines. While challenging, bridging the gap between these two fields became a crucial stepping stone in my journey from a Network Engineer to a Network Automation Engineer. The real challenge was incorporating software development principles into my deep-seated network engineering knowledge to create an effective and efficient synergy.
To tackle this challenge, I charted out and implemented several key strategies. These strategies became the guiding pillars of my transformative journey, playing a significant role in my evolution. In this post, I am eager to share these insights, lessons, and strategies that have been instrumental in my transition. My hope is to shed light on this path for others who might be embarking on a similar journey, navigating the complex but rewarding world of network automation.
Start small: “Hello, World!”
When confronted with new technologies, it’s natural for your imagination and expectations to rise and envision complex solutions. However, it is essential to differentiate between the overarching global strategy for advancing company projects and determining the most effective individual training strategy. In this sense, I’d advise you to begin with the basics, the equivalent of a “Hello World” exercise in coding. This seemingly humble starting point might appear overly simplistic. Yet, I assure you it forms a strong foundation and offers insights into the tool at hand, revealing possibilities you might have overlooked.
Start network automation with a basic task, such as configuring a single device or retrieving specific information. This can help you understand key concepts like API interactions and scripting languages before tackling more complex scenarios. Small automation tasks provide quick feedback, validate scripts, and build confidence. With gradual progress, you will be able to handle larger-scale challenges and expand your capabilities over time. Network automation is a continuous journey of skill refinement.
Cheat: Hardcode it.
Let’s discuss hardcoding, mockups, and prototypes – invaluable allies when full testing scenarios are lacking. They enable you to simulate custom scenarios and begin in the simplest way, with room for progressive improvement and expansion. Hardcoding allows you to embed specific data or logic in your code, testing fundamental functionalities with minimal dependencies. Mockups and prototypes provide visual representations or models of your software, offering stakeholders and users a glimpse of the final product. I can assure you these tools will help you explore possibilities, validate assumptions, and refine designs before investing extensive resources. Starting with these techniques offers insights and sets the stage for future advancements.
Learn that “Production” and “Perfection” are not the same.
An important lesson I’ve learned is that we should not fear production. Often, we postpone implementation, hoping that our code reaches absolute perfection. However, this approach can be counterproductive. Instead of seeking elusive perfection, we should strive to launch a minimum viable product (MVP) as soon as possible. The key is to verify its functionality and, at the same time, ensure that any potential error does not compromise our productive network. Embracing this mindset allows us to iterate, progressively improving and expanding upon our initial release.
KISS – Keep it Simple and Solid
The famous KISS acronym, highly regarded in software development, holds significant relevance here. I recommend you begin with a simple yet robust approach. However, as you introduce complexity to your development practices, you must ensure it remains solid. Remember the wise words: “First, make it work, then make it work well.” This principle emphasizes the importance of prioritizing functionality over perfection. Focusing on achieving a working solution first establishes a strong foundation upon which you can subsequently optimize and refine. Keeping simplicity and solidity at the forefront will contribute to the long-term success of your development endeavors.
Teach everything you’re learning.
Never underestimate the power of sharing your knowledge. Becoming an evangelist for a paradigm shift accelerates its adoption and solidifies your own learning. The DevOps movement has long emphasized the importance of evangelizing what works, and the same holds true for Network Automation today, drawing inspiration from these principles.
As a demonstration of “leading by example,” this blog post from Iquall Networks aims to share our valuable insights and experiences with the broader telecommunications community. While some readers may find value in these words, others may not resonate with them as much. Nevertheless, if even one person discovers this information useful, it brings me joy. And still, crafting this message has allowed me to reflect on how to communicate my experiences effectively to readers.
Remember, sharing knowledge not only benefits others but also reinforces your own understanding. By spreading what you know and believe in, you contribute to the growth and evolution of the industry, fostering a collective environment of learning and improvement.
Leave your local environment, scale.
Lastly, while the local environment serves as an excellent learning and experimentation space, we must recognize that a successful implementation needs interaction with the productive network without compromising its stability. Striking a balance between innovation and sustainability is paramount. Do we genuinely desire phone calls during our vacations due to faulty code? Would we prefer to dedicate our energy to new projects or maintain the old ones?
The solution to these dilemmas lies in scalability. Transitioning our network automation initiatives to an environment that guarantees secure, agile, and scalable continuous development, integration, and deployment (CI/CD) is vital. This approach enables us to implement incremental improvements, test them as we progress, and safeguard the integrity of our network. By adopting this approach, we can focus on driving progress, expanding our projects, and nurturing a dynamic ecosystem of growth and innovation.
In summary, my journey towards Network Automation has been both challenging and immensely fulfilling. I firmly believe there is a great deal to be learned by fostering collaboration between network engineers and software developers, and I am enthusiastic about the boundless possibilities this convergence holds for the future of our industry.
Until we meet again, I encourage you to remain agile, curious, and open to continuous learning. Embrace the ever-evolving landscape of technology and let it inspire you on your path of growth and innovation.
By: @Facundo Coacci