Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

Tuesday, July 4, 2023

Unlocking the Coder Within: A 5-Step Journey for DevOps/SRE/Platform Engineers

 


Many DevOps/SRE/Platform Engineers, despite possessing extensive knowledge and familiarity with a variety of programming languages, often refrain from identifying as coders. This phenomenon may seem perplexing, given their technical expertise. Is there a way to shift this perspective? I propose a 5-step plan to guide any DevOps/SRE/Platform Engineer on their path to embracing their potential as proficient programmers.

Step 1: Unearth Your Passion: Solving Problems that Matter to You 

DevOps/SRE/Platform Engineers often exhibit a tendency to comprehensively explore tools, striving for a deep understanding that empowers them to solve potential problems rather than simply applying solutions. This enthusiastic pursuit of knowledge frequently leads to a broad but surface-level familiarity with many languages, epitomized by the ubiquitous 'hello_world' exercises. To deepen this proficiency, one effective strategy is to identify a genuine problem, one you encounter in your own work or interests, and apply your skills to solve it. Aim for practical, tangible outcomes rather than abstract, theoretical mastery.

Step 2: The Power of Persistence: Embracing a Language Wholeheartedly

DevOps/SRE/Platform Engineers are often praised for their ability to adapt quickly to various programming languages. However, this skill can sometimes lead to a premature transition from one language to another before a deep understanding of any particular one is achieved. To truly master a language, it's essential to choose one and persistently engage with it, even in the face of obstacles. Try to resist the temptation of shifting to a new language merely because it's currently popular. An effective strategy to support this learning process is to create a multitude of small programs that exercise different facets of the language. Saving these programs in a source control repository will enable you to review and track your progress over time.

Step 3: Beyond Scripting: Recognizing the Depths of Programming

For DevOps/SRE/Platform Engineers, scripting often comes as second nature, acting as a powerful mechanism for linking disparate tools together. However, it's important to distinguish between scripting and programming, as the latter involves a broader scope of tasks and complexities. This differentiation tends to become clearer when one starts programming in a non-shell language, where the challenges and the depth of understanding required go beyond the customary tasks associated with scripting.

Step 4: The Art of Leveraging: Using Modules and Libraries Isn't Cheating

Leveraging modules and libraries in your code is far from any form of short-cut or dishonesty. Rather, it exemplifies smart and efficient coding practices. These pre-existing pieces of code are akin to building blocks that you can assemble to effectively achieve your objectives. So, feel empowered to use them confidently, as they are vital tools in your programming toolbox.

Step 5: You Are Your Own Benchmark: Ignoring the Noise and Coding Your Way

A significant obstacle to coding can often be the apprehension about potential criticism or the fear of making mistakes. However, the key is to maintain focus on your primary goal: creating functional programs. Place your emphasis on solving problems effectively and efficiently, rather than conforming strictly to a particular coding style or syntax. After all, the utility and effectiveness of your code is the paramount consideration. As your confidence and skill grow, adherence to common practices and style will come naturally.


Tuesday, June 6, 2023

Level up your Automation Game

Here's a strategic plan I've been following to help improve my automation programming skills, primarily focusing on Python but also [trying] incorporating some Go.

The efficiency of this plan, similar to many others, hinges on two primary pilars: Deliberate Practice and Consistency

  1. Python Basics and Advanced Concepts: Start by revisiting the Python basics (variables, data types, functions, loops, conditional statements). * Gradually move to more advanced topics (OOP concepts, file handling, exception handling, generators, decorators).

  2. Dive Deeper into Python: Understand Python's standard library. It's broad and powerful, and a lot of what you might want to do for automation might already be covered. * Learn about working with databases, APIs, and web scraping as they are common in automation tasks.

  3. Automation Specific Python Libraries: Learn libraries that are frequently used in automation tasks, like Selenium for web automation, or Pyautogui for GUI automation.

  4. Practice, Practice, Practice: Regular practice is key to mastering any programming language. Try to automate simple tasks that you do daily. It could be anything from organizing your files to web scraping news articles. * Websites like Codewars, LeetCode, and HackerRank provide Python problems that you can practice on.

  5. Go Programming: Once you're confident with Python, start exploring Go. Go is known for its simplicity and efficiency, which can be particularly useful for certain automation tasks. * Begin with the basics (variables, data types, control structures, functions) and move on to more complex topics (pointers, structures, interfaces, concurrency). * Start writing small scripts, then slowly move onto more complex tasks.

  6. Projects: The most effective way to learn is by doing. Apply your skills to real-world projects. These could be work-related or personal projects. * GitHub is a great place to find open-source projects where you could contribute, or get inspiration for your own projects.

  7. Continuous Learning: The tech world is always evolving, so it's crucial to stay up-to-date. Follow relevant blogs, forums, or influencers who can provide insights into the latest trends and best practices.

Remember, it's perfectly okay to feel overwhelmed when learning something new. Be patient with yourself and celebrate your progress, no matter how small it might seem. The key to becoming proficient in any programming language is consistency and practice. Happy coding!