00:00:19.880
Thanks for coming to my talk.
00:00:25.320
I have a lot of material prepared and I know I talk very fast. When I prepped, I aimed for 15 minutes, but I'm now aiming for 30. If you realize I'm speeding and it's too fast, just give me a note. This talk is for you, after all, and I'm aware of the content. So please feel free to give me feedback.
00:00:50.059
If you want to follow along on your device, just scan that QR code. It will lead you to the same board that I'm using. You'll also find some Easter eggs on the board that I won't have time to explain, as I've had to cut some material out of this talk.
00:01:15.180
This is a mirror board you can tag along with. I trust your ability to decide whether to focus on the board or to listen to me as I walk you through it.
00:01:37.200
When I was 18 in 2006, I spent a lot of time online, playing as a level 60 holy priest in a game. We were one of the first to defeat Ragnarok, and I was incredibly invested in that world. I was so focused that I didn't even finish high school.
00:01:47.820
Who would have thought that, 20 years later, the skills I picked up at that time would actually come in handy? That's essentially what I want to talk about today.
00:02:00.300
I joined a company called Ian Simple in 2016, and that's when my journey began. Although I've been a software engineer for much longer, this is where my ideas started gaining momentum.
00:02:19.379
At Ian Simple, we help you manage and register domains automatically. You can use our API to manage these tasks. If you're interested, feel free to talk to me or my co-worker Juan about the domain part of our services.
00:02:31.140
What I will discuss today pertains mostly to Ian Simple’s internal processes, rather than the products we sell. I’m part of the registrar operations team; and no, we’re not sitting in a cellar, as this was the only place I could find server access.
00:02:43.140
Our responsibility is integrating with the different registrars we work with. A year ago, I became the engineering manager of this team, and I learned a few things along the way.
00:03:02.340
Becoming an engineering manager is not merely a promotion—it's a career change. It requires a different skill set, as you are now leading people who are doing the job you once did.
00:03:15.060
When I think of skills, I like to think of them as tools. Each skill I have solves a particular problem. However, unlike a toolbox where tools are sorted, the way I have ordered my skills hasn’t always made sense.
00:03:30.420
For a long time, I didn't categorize my skills; I didn’t think of compartments or buckets to place them in. I was stuck in the metaphor of a toolbox, returning to it whenever I faced a problem at work. I'd reflect on what I knew and which skills I had that could help solve the issue.
00:03:48.780
Someone may need a hammer to solve one problem, while another might require a more precise tool. Part of my job as an engineering manager involves helping people grow. One of the significant tools I learned about is called 'Career Vectors.' This concept isn’t something I developed; it comes from Marie Williams, who also runs workshops.
00:04:06.659
This tool helps categorize skills into six vectors: Hands-On, Strategy, Delivery, Management, Commercial, and Domain Depth. Hands-On refers to the tasks you perform daily as a software engineer, like writing code and using your editor. Strategy involves the skills necessary to move the company forward over the upcoming months.
00:04:26.160
Delivery combines those skills—it’s pushing code out, moving the product forward, and finally shipping progress. Understanding how your organization operates is integral to management. Commercial aspects involve grasping how money is made at your company.
00:04:46.440
Domain Depth is the knowledge about the industry in which you work. For us at Ian Simple, it's about domains, but for other companies, it could be different.
00:05:02.640
Seeing this reminded me of a familiar concept—Final Fantasy 10's skill tree. I suddenly realized that I could categorize my skills into this skill tree, and I wanted to explain this to you. For those who haven't played Final Fantasy 10, it's a great game and worth your time.
00:05:27.600
This skill tree allows various characters to play and level up, and as you gain experience, you unlock new abilities. It's a great metaphor for how we can build our skills over time.
00:05:44.400
The skills we acquire can be akin to leveling up in a game, where we may not all progress at the same rate, but ultimately, we have the potential to learn similar things, albeit at different speeds.
00:06:02.760
This concept led me to a personal experiment: I wanted to draw a similar graph or tree to illustrate the skills in software engineering and organize them effectively.
00:06:17.340
Before we dive deeper, let me mention a fantastic vacation spot: everything I'm sharing is from my perspective. I recognize that experiences may differ, and if you have insights that challenge my convictions, I'd love to have a one-on-one discussion after the talk.
00:06:36.420
But as I discussed my ideas during this rehearsal, I found it hard to fit all the content in, which may still happen today—but we will skip some obvious topics.
00:06:54.540
What I want you to take away from this talk is to get an overview of various skills and practices covering our discussion today. Each topic is rich enough to deserve a dedicated talk.
00:07:18.840
I'd like you to walk away with a list of things you want to explore further. It's essential to empower yourself to search for these topics and learn about them, even if we can’t cover all of them in detail today.
00:07:46.440
The first branch I want to discuss is the Hands-On branch. Starting with the basics involves knowing your editor, Git, and also studying Computer Science essentials such as algorithms and databases.
00:08:02.640
One critical area is data structures—something I wish I'd focused more on during my education. I've come to realize that writing code primarily involves lists and hashes, solving nearly all the problems I've encountered over the years.
00:08:23.580
Debugging is another crucial skill. Let’s be honest, debugging can be frustrating. I categorize debugging into three stages: the first is putting print statements throughout the code to track variables.
00:08:44.160
If that doesn’t solve the issue, you might resort to using more advanced debugging tools, such as GDB or graphical debuggers in modern IDEs.
00:09:01.260
I want you to remember one principle that I find crucial for code quality: the SOLID principles. These are not just patterns; they encompass structures that lead to high-quality, maintainable code.
00:09:17.520
Problem-solving, of course, is at the heart of software engineering. We're paid to find solutions, and part of that involves providing meaningful code reviews.
00:09:35.280
Reviews should focus on providing insights that automated tools can’t offer. It's critical to leave your ego at the door when writing comments during reviews.
00:09:53.700
Also, learn to prioritize not just which problems to solve, but which problems to tackle first. Good programming means solving the right problems, and I want you to pay attention to those areas throughout this presentation.
00:10:07.920
Next, I want to address the delivery branch. This area involves getting code out the door, moving the product forward, and managing the necessary processes that accompany this.
00:10:33.660
Project management is an essential skill with existing methodologies like Scrum, Kanban, or Shape Up—something we’re currently embracing at our company.
00:10:52.560
Understanding Agile principles is vital as well, as we often end up creating our own mix of methodologies that resonate best with our team’s needs.
00:11:02.960
Delegating work is essential, especially as you advance in your career. Working in teams involves understanding how to break down large tasks into manageable pieces.
00:11:22.620
Proactive communication is vital—giving updates to your team is key to keeping the project moving and identifying blockers early.
00:11:42.340
A valuable skill is finding your personal productivity hacks. There are countless tools and methods out there. For me, planning my day through a more sophisticated version of a to-do list has worked well.
00:12:02.520
However, productivity is personal, and I encourage you to explore what works best for you.
00:12:21.580
The next category is commercial—a broad notion that encompasses understanding your company's money-making mechanisms. What are the value propositions? Why would a customer want to buy from you?
00:12:40.860
You may need to delve into budgeting and finance as well, but you needn't go too deep unless it aligns with your role's requirements.
00:12:58.920
User experience and interaction design also play roles here. It’s quite fascinating how design tactics can influence purchasing behaviors.
00:13:17.420
Understanding product thinking is quintessential. Every change you make should factor in its impact on the user and overall product.
00:13:37.040
Another aspect that comes into play is public speaking—it's integral to sales, as I’m doing right now. Promoting your company serves as part of your commercial functionality.
00:13:55.640
Effective communication through writing is also vital. Adapting to your company's voice and producing engaging documents can leave a lasting impact.
00:14:13.020
Conducting competitive analysis to understand how competitors are performing can provide insights that shape your product direction.
00:14:32.200
The second half of commercial development involves active listening to customer feedback—truly understanding their issues while objectively pushing your vision.
00:14:44.900
Having vision can set you apart; customers only see part of the picture.
00:15:03.020
Now, let's discuss strategy, which entails providing long-term value over the upcoming months. Effective project planning and understanding Agile strategies are crucial components.
00:15:15.720
Understanding and defining company culture is also important. Culture is not just written down; it's something that is lived daily.
00:15:38.640
Kaizen—an approach to continuous improvement—is significant for teams. Implementing a plan, checking its results, and taking action based on findings is essential.
00:15:57.500
Good reporting that offers accountability in both directions is crucial. Making tough calls and staying focused on what truly matters is paramount.
00:16:16.500
In June, I spoke at a conference in Dublin. One speaker recounted his experience implementing a boring credit card form. Instead of treating it as a mundane task, he made it an enjoyable challenge—a true lesson in mindset.
00:16:40.660
Even the most tedious tasks can be transformed with creativity, and doing so can lead to improved employee satisfaction and user engagement.
00:17:03.700
Understand your company thoroughly. This insight comes from the belief that your understanding is a crucial part of your ability to succeed.
00:17:24.380
Understanding important business metrics means not just focusing on what’s easy but digging deeper for insights that genuinely matter.
00:17:45.420
This leads us to Domain Depth, which is essential for grasping the finer details of your company and industry. The focus here is on continuous learning through experience.
00:18:06.020
I recommend taking notes frequently. Often, I let my cognitive processing happen through writing, even while I might not recall the specifics later.
00:18:28.140
One of the most vital components of mastering domain depth is fostering a growth mindset. Embrace challenges and view failures as opportunities to grow.
00:18:49.120
The next category is Organizational Development, which I consider extremely important. Every team member articulating their thoughts effectively is crucial.
00:19:10.200
Understanding the team 'clock'—the phases of forming, storming, norming, and performing—is essential for navigating team dynamics effectively.
00:19:27.700
Cultural differences among team members require sensitivity and adaptability, recognizing how individual backgrounds influence workplace behavior.
00:19:45.080
Retrospective meetings are a beneficial practice, allowing your team to agree on areas for improvement.
00:20:00.320
Communication is a branch that I want to focus on. Nonviolent Communication is a powerful technique I've found beneficial for professional and personal relationships.
00:20:16.420
This model enables one party to influence the conversation, helping clarify needs and fostering understanding.
00:20:34.320
Another model I appreciate is the Four-Ears Model. It's enlightening to understand that the way a message is received can differ based on perception.
00:20:54.320
Lastly, I want to highlight the importance of listening actively. Being a great listener can enhance your overall effectiveness in teamwork.
00:21:12.620
Understanding the difference between management and leadership is critical, as is the notion of leading by example.
00:21:31.280
In conclusion, building your career is your responsibility, and ensuring your career satisfaction requires active engagement.
00:21:53.200
So remember, career development isn’t a simple linear path from junior to senior roles. Complexity and nuance shape your individual journey.
00:22:14.420
I hope you found value in my talk today. If anyone has questions, I'm happy to discuss them. Thank you!