Build things right or build the right things?

Build things right or build the right things?

Why personal growth makes better teams

By Dina D'Avirro Varacalli

You’re a developer. It’s what you were hired to do, it’s what you do every day, it’s what you’re really good at and it’s what you what to keep doing. So why do people keep talking about growing and changing what you do? That’s not what you signed up for. Well, I have good news and bad news for you. The bad news: it probably is the job you signed up for. The good news: it’s probably the job you actually want. Let’s take a step back.

Back in first grade, you probably had a class call “writing”. But it was grade 1, you started out by learning how to hold the pencil. Then you learned how to draw each letter. Eventually you wrote out words. Regardless of how proud your mom was, not many would have considered you a writer yet. Years later, simply writing legibly wouldn’t make you the star of writing class or get your assignment posted on the fridge. At some point, you had to go beyond simply drawing letters out and spelling words correctly, you had to compose a written work. You had to imagine your storyline or research your background facts, you had to outline a beginning, middle and end, you had to actually write (legibly), edit and re-write. That’s not to say that we all became Hemmingways, but we certainly had to grow beyond legible and venture into literate.

The same is true of being a developer. There are lots of factors that make a good developer, only one of which is the ability to write quality code. A good developer solves problems, anticipates issues, is insightful, creative, collaborative and innovative to name just a few. When people talk about growing, they mean moving beyond just churning out code every day. Just like drawing out legible letters doesn’t cut it any more, being a code monkey, albeit a good one, isn’t really what you were hired for. Let’s call someone who grows beyond writing compilable code a “strong developer”.

Developers are professionals, not monkeys. You weren’t hired to sit in your cube, receive exact specs and churn out code – that job doesn’t exist. Your team was assembled and given problems to solve, now you’re expected to put out a quality product. Code is a tool and you are skilled workers who can wield those tools, but more importantly you are specialized professionals who can solve the problem. You were hired, not because you can code, but because you can think. Being a code monkey means you churn out code without thinking about what you’re doing or why. Code monkeys end up being the jaded, burnt-out programmer in the corner who hits Facebook a couple times a day – that’s not the job you want. Growing into strong developer means you become the problem solver, the innovator, the creator, you get to meet challenges, solve problems and have fun writing your code – that’s the job you want.

Growth might not happen overnight, it needs motivation, and it needs some discipline to adopt a few new habits and skills. The good news is that growth doesn’t happen in a vacuum. Individual growth sparks growth of the whole team, and team growth fuels greater individual growth.

Put your silver spoon in your memory box, and start using skills from your professional tool box. Imagine if your 7th grade English teacher asked you to write a short story and stopped there. You would probably have been a little adrift and would likely not have hit exactly what the teacher wanted and so not gotten a very good grade. But your teacher probably gave you a theme, a required length and possibly even some specific requirements, like details about the protagonist or the setting. Now as a developer, you should move beyond being spoon-fed those details. If you’re motivated to produce the best result, you need to be involved in sussing out those details yourself. Start by asking questions. Ask why a particular approach is being taken. Don’t be afraid to admit your ignorance and ask for clarifications of ideas. Don’t hesitate to call a customer directly to clarify, or even to negotiate a requirement. You should have an understanding of the root problems before you fire up your favorite editor. When you do get down to coding, stay focused on the software instead of getting sidelined by tinkering with tools. Even in 7th grade, if the teacher forgot to mention the deadline for your assignment, you would have raised your hand and asked when it was due. Now as a professional developer, you should be gathering all the needed information, clarifying requirements and understanding goals on your own.

Strong developers grow out of a rich, fertile and supportive company culture. You need space to grow and a team that is supportive. If your teacher never allowed raised hands, that would have been a problem. If your team shuts down your ideas or isn’t receptive to discussion, you might have a hard time growing beyond the code. A good team will be open to discussions and ideas, better yet, a good diverse team will naturally embrace different perspectives and encourage deeper analysis of problems. You should encourage your team to grow into a better, diverse team by openly talking about your team culture. Discuss how well people are working together and how much trust there is. Discuss how team communication can be improved and other ways team members can help each other out. Don’t expect team culture to be on the agenda for the next team meeting, just start talking. Talk about it, and others will respond. Growing the team culture means you create an environment that fosters everyone’s growth.

Get your boss on board. When you wrote that A+ short story, your teacher was happy. They didn’t feel threatened that you achieved your goal or that you rose to accomplish a high-quality product. They were likely impressed with your motivation, persistence and hard work. Talk to your boss, let them know that you are working on growing into a better developer. Ask for a one-on-one, get feedback. Make sure to discuss your current projects, specifically asking all those clarifying questions and coming to an understanding of the issues. Discuss upcoming projects and start asking those approach and framework questions upfront. Discuss the team culture and steps that can be taken together to continue the shift to a supportive culture. Taking these steps to grow into self-lead programmers and self-managed teams is the ultimate goal of agile teams and your boss should be happy for his new agile, high performing team.

You’ve worked hard to get where you are. From learning to hold a pencil, to writing your name legibly on your 7th grade English essay exam. Growing into a strong, self-lead developer working with a great, self-managed team is the next step. You don’t want to be the monkey, hacking out code to build the product right. You want to be the developer who thinks about how to build the right product. So, grab your pencil, flip over your exam – you may begin.