We all have our reasons to (hopefully) love our jobs. Some developers love the end results, seeing their products come to life and bringing value to users. Others are passionate about the nitty-gritty, solving complex algorithms for the sake of solving them. I would assume most developers are a mix of both with a little something extra on top. I’ve mulled over this for quite some time. This article shares my thoughts on this topic.
I'm a passionate person, I want to love things for a long time... but the truth is that passion fades.
I'm not talking about relationships with people, but our relationships with projects and products do change over time. Working on a social media platform might've been what drove you out of bed in the morning two years ago. Now it could be working with a non-profit is what would make you smile at standups.
How do you handle losing passion for a product when you love the people and the setting you work in? We see it often, people want something else assigned to them on JIRA and so they jump ship, hoping to get those tasks that'll get them to smile, while enjoying their morning coffee.
Dev Shops (software development agencies) are the opposite. We take time out of our lives to create something, maybe something small and of no emotional significance or enormous and taxing, then we give it away. It's never ours to begin with but it sure feels like it. The odd thing is that we don't fully decide what we work on. We don't choose who comes into our office with an idea and a passion but we take it on regardless. It's a cycle of discovery, comfort, joy, then loss.
If you love something set it free. Then what remains isn't just the next set of tasks but the people we've worked with, the connections we've built and that shared knowledge and experience that's been building up for every notch on our belt.
Cars move fast to people standing still.
I've often wondered about how long our hard skills really last. At my first software job, I was told that great programmers never get outdated, they adapt to the world around them. The brutal truth is that most of us developers aren't "great". We don't spend 20 hours a week reading the latest engineering book, nor do we go out of our way to always be at the forefront of whichever new tool piqued the interest of the most people on social media either. We implement the specifications we are given with moderate success and make sure we know just enough to get through to the next iteration. So what happens when the business changes? When the needs of the company aren't aligned with what you know?
That's where shops are advantageous for those who can learn continuously, it puts them in a moving express bus. We move forward without having to drive.
Jumping from one project to the next is... difficult, to say the least. Stress management is a required skill alongside the proper management of the mental overhead. But once it becomes a learned skill, once adapting becomes the norm, we're moving forward at the speed limit.
The old adage "jack-of-all-trades, master of none" could be tattooed on the foreheads of every Dev Shopper and no one would be surprised.
The simple reason: becoming great at one thing is hard when you have to be good at everything. Advanced skills take time and energy to develop and with Full Stack 2.0 where developers must understand (at least) web frontend, mobile, backend & ops, energy and time devoted to reaching mastery is distributed pretty darn wide.
But concepts don't move too much, do they? The design/architecture patterns that we're all so excited about now (ahem CQRS) are not so young or new. From learning everything when we start off to mainly learning the latest tools as they come in, the playing field gets easier and easier. In my experience, developers in a dev shop can start to go T-shaped around 3 years into their careers.
Beyond proficiency in software development, there’s significant growth to be had in other areas. Understanding cost beyond what was poked last sprint. The soft skills to deal with partner companies. Learning how design and project management work.
Now, what middle-manager worth their salt would want developers who don't just dev? They're being paid to code, not to chat! Grumble grumble.
I firmly believe there's a limit to how far ahead a team can get when we don't understand what other people do. My team isn't just the other developers, it's the designers, the project managers, the accountants, the architects, etc. The whole team, nay the whole company, grows when we understand each other.
The most important aspect of a dev shop in my humble opinion is what they sell. I can't speak to other shops but here at Osedea, it's not our time but our culture.
Sure, we output code. We're software developers after all! But, I think that's only part of the solution and part of what makes us great. We care about our work and the people we work with, we go far because we move together, we move fast because that's who we are, we embrace diversity not just with people but with ideas and solutions. We don't have clients, we have partners who we work with to make big things happen.
The sum is greater than the parts and that's why I work for a dev shop.
Photo credit: Chris J. Davis