Hello there! Let me introduce myself briefly. I currently work as an IT specialist, specifically as a DevOps engineer, at a prominent German food retail company. My focus is on automating software lifecycle processes. Although my experience in the software engineering field is relatively short, I canât help but wonder if my career growth might reach a plateau if I continue in the same job role and industry.
Speaking of career development, it seems like everyone is buzzing about it these days, especially with the rise of impressive AI tools like ChatGPT. Count me in on the excitement! Iâm constantly contemplating how I can elevate my skills. And letâs face it, committing 10,000 hours to become a world-class developer in a specific area? Thatâs a whole different level of dedication! đ
Recently, I had the pleasure of diving into David Epsteinâs captivating book, âRange: Why Generalists Triumph in a Specialized Worldâ Let me tell you, it was an eye-opener! It got me thinking about the key to success and how I, as an Engineer can enhance my skill set for the future. Today, I want to share my experiences and insights on the topic of ârange and skill developmentâ from the perspective of a software engineer who has managed to not just survive but thrive over the past three years. The best part? These findings arenât limited to the realm of IT. They can be applied to various areas and job roles as well. Join me on an exciting journey of growth and professional development!
Range
What exactly does âRangeâ mean? In essence, Range refers to the âbreadth of knowledge,â encompassing a wide range of knowledge and experience. Epstein emphasizes the importance of expanding the breadth of our knowledge and experiences.
In his book, Epstein highlights the significance of expanding our knowledge and exploring different areas. By doing so, we have the opportunity to discover our unique âmatching qualityâ, which refers to the intersection of our skills and interests with the needs of the world. Through repeated trials and errors, we can uncover our own âmatching quality.â Epstein suggests that learning occurs not through extensive planning, but through active experimentation and taking action.
In general, I share the belief that being a generalist is key to achieving success. Personally, I as an IT specialist find it beneficial to prioritize identifying a specialization and building a strong knowledge base before branching out into other domains overtime. In my personal experience, I embarked on my journey with an e-commerce startup, where I honed my skills in web development and digital marketing. Building on that experience, I transitioned into the role of a digital analyst in an agency and delved into learning Python programming along with the fundamentals of data engineering.
As I continued to explore different areas, I discovered a genuine passion for DevOps engineering. It became evident to me that this field possessed my unique matching quality - a combination of productivity and enjoyment in my work, particularly in deploying infrastructure components, creating data pipelines, managing cloud security, and automating the deployment process of software applications. Embracing DevOps has allowed me to leverage my existing skills and knowledge while diving into a new and exciting domain.
Continuous learning
During my learning journey, I made it a habit to set daily small goals and diligently work on them step by step. I discovered that Developer Roadmap provides a wealth of role-based roadmaps filled with comprehensive skills and expertise. Itâs truly a goldmine for beginners.
Every day, I dedicated myself to completing the roadmap assignments while leveraging resources such as books, YouTube, Udemy, and LinkedIn Learning to expand my knowledge.đ¤ If youâre looking to learn DevOps, I highly recommend checking out the website KodeKloud. They offer a wide range of DevOps skills courses.
In order to maintain a continuous learning process, I actively seek to establish a positive feedback loop. Once I receive input, I solidify my comprehension by writing test programs and delving into a deeper understanding. Witnessing this positive snowball effect boosts my self-confidence and fuels my motivation to persist and progress even further.
Once I secured a position as a marketing data engineer, I decided to make a career switch in order to delve deeper into the field of data engineering. When contemplating a job switch, it is essential to consider two significant factors: the industry type and the skill type. Specialists often find it easier to switch industry types since the change primarily involves transitioning to a new employer while maintaining a relatively consistent job workflow. Conversely, generalists typically find it less daunting to transition between skill types due to their versatile skill set and ability to adapt beyond specific job definitions. It is imperative to ascertain whether you identify as a specialist, generalist, or specialized generalist.
Soft Skills
Up until this point, I have primarily discussed hard skills. Broadly speaking, skills can be categorized into two types: hard skills and soft skills. As an IT Engineer, there is initially a greater emphasis on acquiring hard skills. However, to evolve into a successful software engineer, it is equally crucial to master soft skills. Within the realm of software development, triumph hinges on effective teamwork, characterized by collaboration, communication, a shared vision, and collective effort, which leads the way to success.Occasionally, it is necessary to persuade your Product Owner (PO) or team members, simplify intricate technology stacks, and provide guidance and mentorship to fellow developers.
The developer shapes
The concept of developer shape models is valuable for considering the career growth of developers. These models provide a framework to understand and develop unique skills. By embracing models like T-shaped or I-shaped, engineers can cultivate a wide range of skills while specializing in specific areas. This enables them to grow professionally and contribute effectively in different situations, setting them apart from their peers.
A T-shaped developer refers to someone with deep knowledge and specialization in one area (the vertical bar of the T), complemented by a broad understanding of various related disciplines, while the I-shape signifies deep expertise in a specific area. Depending on your specific situation, you can choose to scale up (vertical scaling for I) or scale out (horizontal scaling for T) your knowledge.
One of the remarkable aspects of continuous learning is that as you accumulate knowledge, your learning speed increases exponentially. You can apply your existing knowledge to grasp new concepts more effortlessly, enabling you to continuously expand your expertise at an accelerated pace. Striking a balance between breadth and depth of skills can greatly benefit a software engineerâs career growth and adaptability to different projects and teams. In general, large enterprises seek specialists with strong skill sets, while small companies and startups seek all-rounders with diverse and wide-ranging skill sets.
Step 1 - Acquiring I-shape knowledge with scale up
Letâs consider my own example: when I could only write Python code, I was an I-shaped developer. I began filling out a section of the skill hex chart to gain a comprehensive understanding of the job requirements. Focused on learning specific Python frameworks used in data engineering and familiarizing myself with their main functionalities. Following this process, I expanded my knowledge to similar frameworks for each aspect. This approach enabled me to quickly evaluate whether I found the data engineering field appealing before investing significant time in mastering all its facets.
Step 2 - Acquiring T-shape knowledge with scale out
After acquiring a solid understanding of specific data engineering Python frameworks, I transitioned from being a junior Python developer to a small I-shaped developer, expanding my skill set beyond the confines of a single language. The next step was to scale out my data engineering skills by learning various tasks and responsibilities within the field. In the image below, you can see that my focus shifted towards acquiring specific knowledge that was relevant to my role as a data engineer.
Step 3 - Scale up again
Once I gained confidence in deep data engineering, I decided to expand my specific knowledge to a more general understanding of the field in data engineering. This involved implementing the same functions using Scala or Java instead of Python, which surprisingly brought me a sense of enjoyment that I hadnât experienced during my studiesđł.
Hereâs an example of how you can scale out your knowledge:
- dataproc += Spark, Kafka
- Python += Scala, Java
- Json += Avro, YAML, gRPC
- BigQuery += Snowflake, Redshift
- Airflow += Dagstar, Cronjob
- PostgreSQL += MySQL, MongoDB
During this process, I could gain insights into the advantages and disadvantages of each technology, making it easier to learn additional tech stacks once you have mastered a specific one. It allowed me to quickly test, iterate, make mistakes, and gather feedback.
Step 4 - Acquiring pi-shape knowledge with scale out
Building upon my foundation in Data Engineering, I expanded my expertise in automating backend services for data-driven analytics. This enabled a seamless transition from Data Engineer to DevOps or better say Data Engineering and DevOps.
Understanding data engineering laid a strong foundation to grasp CI/CD pipelines and deployment workflows. Leveraging Python, I automated processes for efficient and reliable software delivery. Moreover, my knowledge of data management and security integrated robust practices into the DevOps pipeline, safeguarding applications and infrastructure.
The journey from Data Engineering to DevOps was a natural progression, showcasing the value of a solid knowledge base and continuous skill expansion. It exemplifies the ability to embrace new opportunities and challenges in the ever-evolving world of technology. This makes me a pi-shaped developer.
Step x - Iterative learning
In order to gain a deep understanding of DevOps, To become an M-shaped developer, one approach would be to broaden skills in frontend tech stacks and gain practical experience as a full-stack engineer. Another path could involve acquiring proficiency in various cloud platforms such as AWS, Azure and GCP, leading to a role as a Cloud Engineer. Additionally, learning about software architecture could pave the way to becoming a Software Architect. By continuously repeating this process, I continuously broaden my expertise and enhance my capabilities.
Donât waste your time
Time is money. Avoid wasting time. It is important to focus on mastering approximately 80% of the skills with 20% of the effort, rather than striving for 100% performance. The main challenge in learning is the limited time and misplaced priorities. With our time constraints, it is crucial to learn effectively and embrace the non-linear nature of the learning process, considering the rapid evolution of technologies. If you feel confident in your understanding of a topic at around 80%, it is beneficial to shift to a new topic, with the intention of revisiting the previous one when you identify knowledge gaps.
Follow tech trends
It is also important to be aware of the current stage of technology trends (such as AI, Blockchain, web3, AR, and VR) before considering a switch to another industry or job. The diffusion of innovation model, represented by a bell curve, illustrates the five stages of market adoption: innovators, early adopters, early majority, late majority, and laggards. Understanding these stages can help you gauge the level of market acceptance and determine the potential opportunities and risks associated with emerging technologies.
In the tech world of 2023, sectors like VR and AR are still considered early adopters, as the usage and development of these technologies are not as widespread compared to mobile apps or web2 technology. The AI industry, thanks to advancements like OpenAI, is currently experiencing significant hype and is positioned in the next trend stage (early majority). On the other hand, container technologies like Docker and Kubernetes have reached the late majority stage and have become the de facto standards for software development today.
The advantages of learning innovator or early adopter technologies are that you could become a pioneer and have the opportunity to shape and influence these technologies. However, there are also disadvantages to consider. These technologies can be challenging to incorporate due to limited documentation and a small community. Additionally, there is a risk that the technology may not sustain in the long run and could potentially be replaced by another emerging technology.
InfoQ reports valuable insights into the current trends in tech architectures, providing regular updates on the status of various tech stacks and Thoughtworksâ radar is also a useful tool for exploring exciting modern tech stacks in the early majority or late majority phases. While learning innovative technologies can be challenging, acquiring knowledge in early adopter or early majority technologies is relatively straightforward.
Summary
In todayâs fast-paced world, it is crucial to start small and adopt a mindset of continuous learning. By devoting time each day to learning and self-improvement, individuals can stay ahead of the curve. Whether they choose to acquire a diverse set of skills or specialize in a specific area, striking the right balance is essential for success.
Leveraging smart AI tools can greatly enhance the learning process, providing valuable resources and guidance. Additionally, having a supportive mentor who can offer guidance and support is invaluable in oneâs career journey. I hope that this blog has not only provided valuable insights but also sparked inspiration for personal growth in your developer life. The tech world is ever-changing, but with the right mindset and continuous improvement, we can thrive and excel in our career.
Happy coding and continuous growth, fellow developersđ