Developers, It’s not all about the code

Soft skills get a bad rap; especially in tech. Code has always been king, but software constantly changes. The need to be good communicators and generally pleasant coworkers will always be there. That’s why it’s important to dedicate parts of your day to improving those skills that don’t involve code. No matter how great of a dev you are, you aren’t going to to be nearly as successful if you are difficult to be around. Here are a few soft skills crucial to working in tech.

Being Accessible

The most successful among us didn’t become so by themselves. They had help along the way from those more knowledge and who were willing to share that knowledge. What does this mean about those C-suiters and founders we greatly admire? More often than not, they view accessibility as a core value.

Let’s bust a myth about accessibility because I do not want to confuse anyone: accessibility doesn’t mean saying yes to everything! It’s understanding the value of building great relationships with those both above and below you to help yourself and others. Being accessible requires being a great listener and having great patience. Listening inherently requires patience, but in this get-everything-right-this-second world we live in, patience suffers. As a result, listening does as well.

Listening is valuable because it’s a way to incorporate learning into our daily lives even when we’re booked solid. When you listen to people —especially when you don’t feel like it or don’t think you need to–you are also laying the foundation for a solid relationship with that person. That’s the key to accessibility: not just being available, but being invested.

Solving People Problems

You probably got into software development because you like computers and you wanted to build cool products. Now that you’re working in tech, I’d be willing to bet your biggest daily job task as a developer is solving technical problems. Most, if not all, developers excel at solving big and small hardware and software based issues; not nearly as many however can solve people problems. I’m not talking about large intergroup conflicts. I’m talking about not knowing what to say in certain situations or attempting to completely avoid talking to your coworkers.

Whether we like it or not, we’ll have to deal with people in any field we work in.. Because we have to communicate with them, we have to also consider them: their feelings, their thought processes, their intellectual and emotional capacities, and they way they communicate with others. Solving “people problems” really just boils down to communicating purposefully and effectively.

The best way to do this is to remember they are human beings. They have families, dreams, and lives outside of those four walls at work. When you speak to people—not just out of necessity, but also because you see the value in those interactions—your conversations will improve.

Keeping Your Ego in Check

Code is king, or so that’s what everyone says. We’ve developed a culture of worshipping code above everything else because that’s what brings in the revenue. Great code nets great results, so it should be the only thing that matters. This thinking is a bit flawed. Yes, code is essential to building awesome products. Great code is not, however, the only thing that matters.

Communication is just as important, as well as your capacity for empathy. In terms of your ego, the main reason you need to keep it in check is because you’ll be better able to learn from those around you. Consistently tying your identity to your work—and then, not-so-gently reminding your coworkers of just how great that work is—doesn’t encourage collaboration. In fact, it destroys it.

Instead of convincing yourself you are the best, focus on learning. Your code may be the best, but there’s always room for improvement, right? How do you make it better? Being the best is often situational; when we find ourselves around those that are quantifiably better, we generally don’t handle the transition to second-string well. When you focus on learning, however, you thrive in all situations because you’re always able to see how to make both yourself and others better.

Considering the Big Picture

We all can sometimes get tunnel vision, and that makes our worlds—as well as our jobs—very small and very tedious. It can also be frustrating to put in so much work on a project you have very little context on. Being curious and interested in how your role plays into the team as a whole is a great way to stay connected to those on your team. Equally as importantly, it signals to your boss you are actively engaged in how the company works and how you can make it better.

That’s the bottom line here when it comes to soft skills: as great as code is, it is only one part of the machine. Being a great developer will net you some success, but being a great human—a great coworker, a great friend, a great boss—will help propel you to jobs and positions that wouldn’t be possible if you just focused on the code.

Handling Conflict: How to Talk to Your Coworker

Turning Conflict to Conversation

Conflict is a natural part of any relationship, especially those people we spend the majority of our time with. It’s no surprise, then, we might occasionally find ourselves in conflict with our coworkers. As uncomfortable as those moments of tension can be, they can be as beneficial as they are inevitable. When you do find yourself in a contentious situation, your reaction directly affects how the entire exchange will play out. This could mean the difference between coming to a resolution or destroying your relationship.

Consider the Common Goal

When conflict crops up, it’s easy to work solely on emotions and say something which exacerbates the issues. The big thing to remember is this: tensions arise when people disagree on the process, not the result. Think about it: when parents are arguing about their children, it’s not because both parties don’t want the best for their kids. It’s because they disagree on how to give them the best.

Reminding yourself that ultimately you are all working towards the same goal is the hardest part of conflict. Nobody wants to find common ground when they are upset, and we all want to prove ourselves to be the victor in a contentious situation. Introducing the concept of agreement, however, helps move the conversation from conflict to a solution. Often that solution is agreeing just enough to push the discussion forward; find your common ground This brings us to the most important action item all: talking.

Discuss the Problem

Maybe you’re nonconfrontational. It could be that you can’t find the necessary words to explain your side of the situation. Possibly, it’s because you don’t see the value in “starting an argument.” I understand how it feels to not want to initiate conflict. However, it’s extremely important to hash out differences of opinion. This is why you should talk to your coworkers when problems occur.

Before I discuss how to talk about issues further, I want first to highlight what not talking does to a group dynamic. Bottling things up makes us weak; by this, I mean we are more likely to give a little attitude here or slip in a snide remark there. If you’re the true silent type, then the silent treatment brings its own set of problems. Namely, refusing to talk halts any discussion on important topics. Probably the most telling, though, is the blow-up. Eventually, all those bottled up emotions we aren’t sharing are going to come out, and it will more than likely be in a way that will not help drive solutions.

Whether it’s an eye roll, a rude throwaway comment, or a full-blown burst of anger, all of these things chip away at a group dynamic. Consider how difficult it is to build trust on teams; it can take months or even years. When you avoid talking about conflict, that trust is in jeopardy.  When you don’t trust your team members, collaboration wanes. If the collaboration isn’t there, you aren’t working at your best.

Instead of avoidance, choose discussion. Talking about problems means they are more than likely to be resolved. Here’s why: the chances of the person you are angry with knowing why you are angry are quite slim; telling them helps you get it off of your chest and helps them understand what’s going on. Conversing with your dissenter will also lead to a solution.

Speak With the Solution in Mind

How do we approach these conversations? After all, disagreements happen for any number of reasons. When you determine where the conversation went awry, you can then discern how to guide the conversation to a solution. More often than not, you disagree about something with an end goal. Take a moment to compose yourself and then propel the conversation forward. You do this by re-engaging that common ground you share: the final result.

The biggest takeaway here is this: talking is always better than silence. When you consider your common goal and speak with the solution in mind, you can advance the conflict towards a conversation and therefore a resolution.

Finding Suitable Work: Landing the Job

Suitable is defined as “right or appropriate for a particular person, purpose or situation.” Suitable work means thinking about more than just skill level. It’s about the strengths you possess beyond the technical talent. How much communication is involved? Are you comfortable with that? Do you have to face clients or lead a team? Will you be performing in a group or working as a solo contributor?

Suitable work as a software developer often means you must put more weight on the non-technical aspects of the job than the technical ones. To land the position that’s most suitable to your entire skillset, you must also consider where you are in your career and what managers need to see from you to hire you.

Your Early-Career Job

If you’re looking for your first or job as a dev, focus on the actual process of the code. Most companies don’t expect junior developers looking for their first or second job to be as proficient as someone with several years—or even one or two years—of experience. They want someone who is thinking the right way and willing to learn. To that end, smaller companies are going to focus more on the ability to learn and be taught. That’s why highlighting your thought process is so important.

Most companies hiring junior developers expect to invest a decent amount of time into leveling them up. When you are doing your technical interview, walk through how you would solve the problem and explain why.. Don’t be too put off if you don’t know what the answer is; the hiring manager knows you’re a new dev. What they want to see is how you would solve the problem.  

Another thing managers are going to take into account is your trajectory. We live in a time where people are more prone to job hop than to stay somewhere ten, or even five, years. Know what your goals are, and know how those align with the company you’re interviewing with short and long term. Most managers don’t expect employees to be with a company for the long-haul, but they do want to bring people on that have an idea of where they want to be in five, ten, fifteen years, and beyond. With that in mind, let’s talk about the manager job.

Your Manager Job

Being a manager requires more than just a great handle on the technical aspects of the work. To be a people manager, you need to know what your people are capable of and how to get those capabilities out of them. Before we get into the specifics of what makes a good manager, here’s a few stats I want to point out:

  • Companies fail at choosing the right talent for open positions 82 percent of the time (according to Gallup).
  • Only 30 percent of U.S. employees are engaged at work (worldwide, that number drops to 13 percent).
  • About one in ten employees have what it takes to be a good manager.

These numbers are important because they highlight how difficult it is to find a good manager; how hard it is to be a good manager; and how many actually have what it takes to manage people. Companies fail at choosing talent so often because managers have a difficult identifying potential employee’s strengths and their current employee’s weaknesses. Perhaps they can’t see those weaknesses because there is a high rate of disengagement. It’s also possible, though, they were promoted to a manager position and are part of the 90 percent who are ill-suited for it.  

What do those ten percent have that the other 90 do not? How can you be a good manager? According to Gallup, great managers have the following talents:

  • They motivate every single employee to take action and engage employees with a compelling mission and vision.
  • They have the assertiveness to drive outcomes and the ability to overcome adversity and resistance.
  • They create a culture of clear accountability.
  • They build relationships that create trust, open dialogue, and full transparency.
  • They make decisions based on productivity, not politics.

Notice that nowhere in those five traits does it say “be technically sound.” It’s obviously crucial to have a grasp on the technical work you’ll be overseeing. Great technical managers, though, know that the code is king. They need to be articulate and patient leaders. To land that job as a manager, you need to demonstrate those qualities.

When you’re in the interview, emphasize your ability to build relationships and engage in open dialogue. Show that you are capable of motivating others to work together more efficiently and you aren’t afraid to confront conflict with compassion. Talking to people, especially when the conversations are difficult, is imperative to being a successful manager.

You Can Be Successful as an Individual Contributor

Maybe becoming a manager isn’t for you. Maybe you want to continue to climb the ladder, but don’t want to have direct reports. There is a huge misconception out there that you can’t be successful without leading a team of tens, hundreds, or thousands. Let’s debunk this right now: you can absolutely have a wildly successful career as an individual contributor.

If you do choose this path, keep in mind the communication skills discussed in the post are still in play. You are going to have to talk to people. Often, they’ll be non-technical, and you’ll need to explain technical work and ideas. You’ll have to occasionally work with people which means you’ll need to be a good collaborator. Individual contributors need to work just as well with others as managers do.

The main takeaway to finding suitable work is that it isn’t only about technical ability. You must be a well-rounded contributor and look for work suited to your strengths.  

Finding Suitable Work: What Hiring Managers Are Looking For

A large component to finding suitable work is being a proficient interviewer. One of the things many devs lean on when landing a better paying job is their ability to do well during the technical interview. They put so much emphasis on the code and think it’ll be all they need to secure that next opportunity. However, nailing the technical interview is only the first component of finding suitable work as a developer. To be qualified for most higher-level positions in tech, you need to be well-rounded.

What do I mean by that? Working for a company is more than just coding. Whether you’re helping build something from the ground up; maintaining an established product; or stepping away from code to focus on strategy, hiring managers need to know you can truly handle all of the aspects of the job. They need to see you are capable of communicating effectively and working well with your coworkers. Beyond that, they need to be fairly certain you aren’t going to make their lives harder.

Here’s what we know about managers. First, they need to be good motivators; great managers know how to engage their employees to get the most out of them. To this end, they need to build solid relationships with each of their team members while also holding those individuals accountable. In short, a manager’s job is twofold: to complete their technical tasks and ensure their team members are completing theirs as well. That’s why when managers are looking to fill out their staffs, they want people who know the value of putting the team over the individual.

We are living in a world which is increasingly more connected. The internet and ever-advancing technology has given companies the chance to truly sell anywhere. Huge, well-funded companies have always had access to the world beyond their city or state. But now, local mom-and-pop shops can put their products on sites like Etsy and go global. They can do it in the time it takes to fill out a profile and upload a few pictures. What this means is most of the work we do, we cannot do alone. We need to be collaborators.

And that’s why great managers are looking for people that value making their team successful. They know team success trumps individual success every time. Take the example above of the small local company going global via Etsy. Etsy is created and maintained by a team, just like the small artisan selling their wares online. Even if they are solopreneurs, they had help along the way from people that believed in them. Those people helped by asking questions about what was needed and how they could assist.

Do you see the pattern? Teams of people can achieve more than individuals can by themselves. No one becomes successful alone; and for that reason, we are truly all collaborators. And to be good collaborators, we need to be good communicators.

When looking to add a few more people, great managers value strong communication skills. I can’t tell you how many times I’ve heard this sentence: “They were a great developer, but I couldn’t hire them because there’s no way they I could put them in front of a client.” It’s no longer enough just to be smart; being innovative and having good ideas are great traits. However, if you can’t communicate those ideas, all of those wonderful qualities are worthless. There is indeed a time and a place for hacking away in a corner; situational solitude can result in a significant push when necessary. A lot of the time, though, you’re going to have to talk to people.

This is the reason communication matters even more than talent. Conflicts will arise. Differences in opinion can escalate to full-blown arguments. Brainstorming sessions need to take place. Presentations occasionally happen. Having a good command of code will only get you so far; you need to be a solid communicator. When you have command of that, collaboration will become a lot easier.

I’ve talked about a lot of big picture concepts and examples, so let’s relate this back to getting hired on a great team. Good collaborators propel projects forward. They do this by knowing their strengths and how those strengths relate to their place on their team. You can show this in an interview by highlighting your ability to work well with others. Maybe you played an integral and specific role on a big project recently; tell them how you articulated your role to your team and what you accomplished.

Good communicators speak eloquently to their team members and managers, and they tackle problems head on through empathetic communication. Showcase this in your next interview by describing a time you were involved in a conflict at work and how you handled it successfully.

Bottom line, hiring managers are looking for people that play well with others, communicate effectively, and can do the technical aspects of their job well.

Just-In-Time Knowledge: How to learn what you need to know and forget the rest

Technology—including the web—moves insanely fast. It can be intimidating (often annoyingly so) to try to not only consume the content constantly served to us, but also retain it. After all, isn’t the point of sharing information to learn from it? This just-in-time knowledge can be an unfriendly reminder that, no matter how hard we try, we will have a difficult time keeping up with the newest trends and tech.

Doctors are especially impacted by this dire need for one-off knowledge. Primary care physicians need to know a million facts and those million facts are constantly changing depending on the season, the patient, and their location. If they’re wrong about a diagnosis, the results could be fatal. Research shows as many as 98,000 patients die each year as a result of medical errors.

We work in tech, so our just-in-time knowledge isn’t nearly as cataclysmic. However, not knowing the latest trends or being unfamiliar with specific updates can be harmful to our careers. Luckily in tech, most of us have to keep up to date on software and hardware to be successful at work. But what if we’re swimming in a project at work and don’t have time to look into the new technologies? What if it’s nearly impossible to bake new knowledge into our jobs?

Here’s where retention comes into play. We all have a few minutes daily to steal away for a bit of knowledge gathering, whether it be a quick scroll through Twitter or skimming a post on Medium. These moments of quick consumption don’t have to be throwaways. You can use them to keep up to date on the ever-changing web and tech. To make knowledge gathering time more valuable, you have to have great retention.

What influences retention? Two things specifically: sleep and training. Regarding training, knowledge influences memory by affecting retrieval. Knowledge also helps us relate the new information back to already stored information, elaborate on the stored info, and strengthen our ability to remember the new information.

The second major factor influencing retention is sleep. Research shows the more sleep someone gets, the more they retain. The opposite is also true; the less sleep we get, the less we’ll be able to remember certain details. And this makes sense. We know lack of sleep impairs a person’s ability to focus and learn efficiently.

Then there’s the impact sleep has on making memories. Studies have shown that, although both acquisition and recall take place when we are awake, sleep is required for consolidation of a memory.

As we all know, however, it can be difficult to get a full night’s rest and also attempt to have a life as well. Many of us counter the lack of sleep with coffee. It turns out, caffeine’s effect on memory is positive. A team of scientists at Johns Hopkins found that study participants that took 200 milligrams of caffeine after studying had better long-term memory retention than those that did not.

This information is very useful in relation to just-in-time knowledge. We all are constantly consuming information; some incredibly valuable, some to be tucked away for possible use later, and some incredibly useless. How do we retain the information we need and forget the information we don’t? Further, how do we determine which info is necessary and what’s not?

A great place to start is with the research. Retaining info is more likely when we are well rested, so get between seven and nine hours of sleep a night. Even when you do get enough sleep—and especially if you get less than recommended seven hours—drink at least 200 milligrams of caffeine a day, which is the amount in roughly one strong cup of coffee. Third, strengthen the newly introduced concepts by relating the new information back to the already stored info you have.

Increasing retention is the easy part. How do we know what information to keep and what to throw away? This is entirely debatable. A good place to start, however, is looking at the info you consume daily through the eyes of what you would naturally take with you. For example, skimming through the latest update of Laravel will net you info you’re going to bookmark and probably utilize that day. Skimming through articles on HuffPo or TechCrunch, however, will be info you probably won’t need to retain but will just be nice to have.

Can you be an expert developer in 10,000 hours?

Back in 1993, psychologists K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer said that 10,000 hours of deliberate practice of a specific skill will make one an expert. Fast forward 15 years, and Malcolm Gladwell’s Outliers made the 10,000 hours rule famous. And in 2012, Macklemore solidified it’s fact status: it officially takes 10,000 hours to be an expert at anything.

How does this rule correlate to coding? If you’ve been working full time as a dev for five years, you’d be considered an expert by the parameters of the rule. I don’t know many devs that would consider themselves experts, however, and I know several that have been doing this for decades. I know even more that got degrees in computer science and have steadily worked their way up the food chain. Yet I haven’t met anyone that embraces the title of expert.

Let’s say you started tearing apart computers and building websites when you were ten years old or younger. Are you an expert then? That questions begs another one: what makes someone an expert coder? Before we attempt to answer this question, let’s look a bit deeper at the 10,000 hours rule because people have been questioning it for over a decade.

The problem with the 10,000 hours rule to excellence is that most domains aren’t static. Unlike golf, chess or similar activities where the rules aren’t going to change much – if at all – over the course of time, tech is ever changing. Companies are producing new hardware annually, and software updates happen more often than that.

To reach that required 10,000 hours, one must practice and complete the same activity with the same set of rules consistently. Want to reach that as a dev? How about we look at Laravel’s framework as an example. Laravel released its beta in June 2011, with Laravel 1 released a few weeks later. The latest update, 5.3.9, was released just over a month ago. Many other languages have the same timeline.

According to the 10,000 hours rule, no one using Laravel – or any other framework – will become an expert because changes happen regularly and swiftly. This fact wasn’t blind on scientists, and the pushback began.

A 2014 Princeton study on what it takes to become an expert somewhat debunked the rule that Gladwell popularized. The study conducted a meta-analysis covering all major domains that have been either suggested or proven to need deliberate practice. The scientists found that practice counted for, on average, a 12 percent difference in performance – and in some cases, much higher. Other factors also made a difference in how much of an expert one can become at something no matter how many hours they practiced the skill. Things like starting age, personality and baseline smarts play a major role in our abilities to become experts. Bottom line: though important, deliberate practice isn’t as much of the foundation for expertise as once marketed.

So if you can’t become an “expert,” what does it take to just be good? And by that, I mean good enough to get your first job as a developer? Or your second job as a dev? Or to branch out on your own to start your own company? Author Josh Kaufman says 20 hours. In his TEDxTalk The First 20 Hours, he breaks down the four-step process to going from incompetent to proficient.

First, deconstruct the skill. By this, he means to the most crucial parts of this new skill and learn those first. Next, self-correct yourself so you know exactly when you are making mistakes and how to fix them. Third, remove barriers to learning. Shut down Netflix, close Twitter and stay far, far away from that abyss of an inbox. Focus. Finally, practice for 20 hours.

Let’s translate this to software development. The most crucial parts of coding that cover the most ground would be learning PHP, HTML, CSS, GIT, and the MVC pattern. For Laravel specifically, getting an understanding of the framework is also necessary. Stage two is easy for devs; self-correcting is a major component of software development. Most coders are doing this anyway, and everyone will tell newbies to get used to making this a part of their process.

Removing the barriers to learning, though, is where a lot of people falter. The great thing about the internet is that it connects us all through social media, email, Slack, chat and so many other channels. The bad thing about the internet is that we are constantly connected and given many opportunities to be social over being productive. Removing those barriers of focus (turn off the Slack notifications, folks) will make you a better, more precise dev. When you have all of the basic tools – and the determination – 20 hours of practice flies by.

So what next? Greatness? How long does it take to get great at something? How long does it take to be a great dev and not just a functional one? Though this is an open-ended question, we can all agree that deliberate practice is a necessary component. That also takes incremental exposure and consistent engagement in things that push your limits. It is possible, however, that we’re focusing on the wrong end goal.

Maybe the real question here is instead of trying to be an expert software developer, what aspects of your job can you improve in 20 hours of practice? Maybe the focus shouldn’t just be on the code; after all, your job is more than just staring at glowing screens all day. Identifying specific areas of weakness that you can devote time to strengthening every week may be the key to becoming that expert that you desire to be.