Your Skillset Isn’t Enough
Lately, I’ve been doing a lot of thinking about what makes a developer great beyond their skillset and knowledge. I am now unemployed for the first time since I was 18, and when I got the news that the startup I was employed at was closing its doors, I didn’t worry or panic (too much). I am in the very fortunate position to have a career in an industry where jobs are many and talent is scarce. But despite this, jobs aren’t always offered to those who possess the greatest or most impressive skillset. I am certain that there are many developers more skilled than myself, but who also have more trouble finding a job than I do.
While this is by no means an all-inclusive or decisive list, here are some things that I’ve discovered along my 8-year career as a developer and designer that have helped me become a well-rounded developer and member of the community.
If you take a peek at my resume, you’ll see that I’ve worked in a menagerie of industries: education, marketing & advertising, online retail, startups, moving & transportation, fashion, and gaming. While not necessarily at all to be a successful developer, there is something to be gained by working for so many widely different companies and industries.
For example, while working at my university, I got great insight into how the education industry functioned (as well as the politics that went along with it). The marketing agency I worked for taught me how to manage several different projects at once and how to adhere to client timelines and budgets.
At Zappos I learned about version control (which isn’t something I’d used when working on such small teams). I learned how to code for a high-traffic website. I learned that larger companies also mean more overhead and more politics, which means less productivity.
Startup life gives me the freedom and productivity that I crave, but I also learned that they are high-risk (I’ve lost my job twice now). I learned a lot about creating MVPs and A/B testing that I wouldn’t have otherwise. I also learned how much I enjoy distributed teams and working async.
Being industry-agnostic has given me the experience to know what it’s like working at companies large and small, profitable and not, fast-paced and slow. Most of all, it’s helped me understand exactly what makes me the most happy and productive.
Big Names Matter
If possible, work for a company whose name you’ve heard of and who is famous for its tech. Think Apple, Facebook, IBM, Twitter, etc.
Having a big name on your resume can say a lot more to a potential employer than you think. For example, having Zappos on my resume tells people that I have experience working on high-traffic websites (which says that I’m probably familiar with caching and minification techniques), that I have experience working on large teams within a large organization, and that I was deemed a culture fit by a company well-known for great customer service.
Perhaps it’s coincidence, but the number of headhunter inquiries I receive multiplied tenfold once I had Zappos on my resume. It doesn’t have to be a “forever” job, especially if big companies aren’t your thing (they’re not mine).
Be A Jack Of All Trades
This one is a toss-up. There are great arguments for being good (not great) at many things, and also great arguments for being a master of just one or two things. But because this is about that path that led me to where I am today, I am going to include it.
While I don’t consider myself advanced or an expert in anything except for perhaps CSS, I know a good deal about a lot of things. If you were to hire me (and only me), I could: take business requirements and translate them into wireframes, design the site or app in Photoshop, make educated UX decisions backed by data and research, cut the template into pixel-perfect html/css, develop the front-end into a single-page app (AngularJS) or via Ajax/jQuery, write an API that retrieves and stores data into a relational or nosql database, and deploy the site. Sure, my designs may not be as cutting-edge as a full-time designer may have created, and my back-end architecture may not be optimal, but everything works and functions as it should. And you just saved yourself from having to hire a separate designer and possibly another developer.
I am always upfront with potential employers and clients that while I have a wide range of skills, I am not always the best fit for a job if they are looking for an expert. Pretending otherwise will just get you in trouble and cause a lot more stress for yourself.
One thing to note is that I really enjoy both design and development. If you hate design (or development), it’s simple: don’t do it. There’s nothing wrong with being a front-end only developer, or being really good at back-end and databases but sucking at design. It’s all preference. But I will say that once I began dabbling in and improving my design skills, a lot more job opportunities came my way.
Participate In The Community
This is probably the most important piece of advice I can give, and it has absolutely nothing to do with development or skillset. Become a part of the community you’re in, whether it’s your workplace, your school, or your city. Participate in hack-a-thon competitions, go to meet ups, attend conferences, give talks and presentations, and work on side projects. Share your work with others and ask others about their work.
There’s something to be said for word-of-mouth recommendations, and nearly every job I’ve gotten has been because of a recommendation from someone I’d previously worked with. But none of those recommendations would have happened had I not built those relationships with the people in my community.
Be A Good Person
You would think this one is a no-brainer, but it isn’t. Here are just a few tips for being a decent human being:
You may very well be the smartest person in the room, but letting everyone know so on a consistent basis isn’t doing you any favors. Believing that certain work is “beneath you” don’t make you look smart – it makes you look like an asshole. Some of the best people I’ve ever worked with were people who are incredibly smart and talented, but who would never admit it or feel the need to be validated by others.
Don’t wait for someone to ask for help: offer it. If you’re short on work but see someone else struggling to keep up, offer your assistance. If someone expresses an interest in learning Photoshop and you happen to be a Photoshop whiz, offer to meet over lunch to go over a few basics. Share articles with people who might find them interesting. Give lunch-and-learn presentations on something you think would be interesting or helpful to others. Answer questions on stackoverflow if you can. If you can’t help, find someone who can. And never, ever, expect anything in return. One day, if you ever find yourself needing some help, you’ll find a line of people at your door ready and willing to return the favor.
Do what you say you’re going to do
Did you promise to give your client a project estimate? Did you tell your manager you’d have that project done by Friday? Did you agree to give your coworker a code review? Did you make lunch plans? And did you actually do all of those things when you said you’d do them? I hope so. Don’t be a flake. No one takes flakes seriously.
Get to really know people
Ask someone how their weekend was. Invite the new person on the team to lunch. Find some common topics and interests to discuss with your deskmate. Ask if your coworker’s sick child has been feeling any better. Smile. Say hello. Make jokes. Remember birthdays.
Get to know the people behind the computers. And do it because you want to.
A Few Other Tidbits
Learn (and use) proper grammar and spelling.
Accept that everyone has different tastes. Just because you’re a hardcore Apple user doesn’t mean that you have to poke fun at or bash those who prefer PC. If someone likes coding in PHP, let them enjoy it. You may have a million reasons why you don’t like it (and some of them are likely very valid), but unless the topic is up for discussion, leave it alone.
Work hard, play hard, and learn to take a joke.
Keep in mind that not everyone you work with is going to be a developer. You’re going to be working with designers, project managers, finance and marketing experts, and more. Leave out the programmer terminology and jargon when communicating to non-developers and never make anyone feel dumb because they don’t understand. Every job has its purpose.
Do things that need to be done, whether it’s in your job description or not. Are you a back-end developer who found a styling bug? Fix it yourself, or if you can’t, at least point it out so that it’s not left for someone else to discover later on. If the product manager comes directly to you instead of your manager to ask some questions, answer them. Do what needs to be done to get the job done, and done well.
Don’t write long and boring blog posts that no one will read. jklol. But seriously, if you did make it this far, thank you. I hope at least one thing I wrote was useful (especially to those who may just be starting out). If you have any additional advice or experiences on what makes a great developer, please leave a comment!