You Should Play (A Lot) More

This is a guest blog post from Zach Turner. Enjoy.

Dear New Developer,

Don’t forget to play. I spent the year after undergraduate working and learning. My goal  was to find a job at a company and eventually I succeeded. However my passion dwindled because it was always put second to finding a salaried position. As a result, my desire to play with and learn about new technologies simply because they are interesting has dwindled and my enjoyment of my job has suffered.

Allow yourself to approach the world as a kid again. Buy an electronics kit and only do
the first example experiment. Learn Hello World in 30 different languages. Start a passion project without worrying about finishing it. If you do finish it, try rewriting it in a new language. Think about a tool (software) that you would like to use, no matter how small or silly, and make it. There is so much pressure to know the newest and most popular languages and frameworks, and have a clean GitHub repo full of complete, relevant, and useful projects. That is especially appealing if you’re looking for a job. Yes, you should have a couple projects that are showcase worthy and speak to your desire to competently code. You should also be able to speak to your desire to learn and solve problems.

At the end of the day code is just a tool. No one faults a carpenter for having multiple hammers. I mean have you ever seen the garage of carpenter or maker, they are usually a glorious mess of projects in various states. Play and don’t fear clutter. Clean as you go and organize if you must. I’d rather have the GitHub of Doc Brown over Patrick Bateman any day. You can be a competent, intelligent adult and still play. If you don’t want work to become a chore, you must play.

From,
Zach Turner

During the day Zach Turner is a software engineer at Culture Foundry, a full service digital agency. At night he is a maker of things useful, useless, and everywhere in between.

Maintain work life balance

Dear new developer,

Make sure you maintain your work life balance.

You’ll never know everything. You shouldn’t try. But even if you accept that, there may still be a temptation to work work work. Why?

  • You want to “prove yourself”. You want to over-index in your first few months. Working extra is an easy way to be more productive, for a while.
  • You want to move up. This engineer did the grind:

At night, even if I had went out with coworkers, I would go home and get back to work. I spent a lot of weekends staring at my computer screen while my friends frolicked (yes, I just said frolicked) at Dolores Park.

  • You believe in the mission of what you are doing. Especially when you are a part owner of a company, it can be fun to work on making that company better and better.
  • Building stuff is fun.
  • Uniquely, when you are contracting, you get paid for every hour you work. If you combine that with the feast or famine flow of work that usually accompanies contracting, it can be hard to stop working when the work is there. (Been there, done that.)

Some extra work, some of the time, isn’t a bad thing. Especially if you are learning or if you enjoy it.

However, you need to make sure you set some boundaries. Companies won’t do that (though a good manager will). One of my best bosses once said “work is a marathon not a sprint” and you need to treat it like that. That means as tempting as it is to overclock and work extra, you should save this for special occasions, if at all.

What can you do instead?

So many options: Call up a friend. Go do something fun. Find a hobby (that is not related to computers). Travel. Visit family. Get outside. Get inside. Read a book. Read a magazine. Volunteer.

And, more importantly, decide for yourself how much time and effort you want to spend on work as compared to the other things in life (this can change over time, by the way). And then communicate those boundaries both explicitly and implicitly.

You can be explicit by presenting choices to your manager: “I’d love to work on project X, but last week I understood the priority to be project Y, and I just don’t have time to do both of them well. What should I do?” (This is an example of the “yes, but” way to say no.) You can also ask about this at the job interview. (Yes, that is scary and shouldn’t be your first question, but it’s important to know.)

You can communicate boundaries implicitly by not answering emails or chat messages out of hours, leaving promptly at the end of the day, and respecting the work/life balance choices of your team mates.

Just like you need to manage your career because no one else will, you need to manage your work life balance, because no one else will.

Sincerely,

Dan

This post was inspired by a comment from JB. on the Denver Devs Slack.

The best career advice I’ve ever gotten

This is a guest blog post, lightly edited, from Josh Doody. Enjoy.

Dear new developer,

Let’s talk about jobs.

My first job

I was 25, and I wanted to move my career along as quickly as possible. I had my first real job, and had gotten three raises and a promotion in only two and a half years, nudging my salary up 12% from when I started. I was feeling pretty good.

Then two things happened that changed my career’s trajectory. First, my boss told me that striving for big raises and promotions would get me nowhere. “The way things work around here,” he said, “is you might get a big raise one year, or even two raises, but they’ll eventually work out so that you’re right back at the average. It’s hard to get ahead or fall behind.” He meant that I might be on top now, but eventually I’d regress to the mean. My boss had been working at the company for 30 years, so he knew what he was talking about. Ouch.

Second, I had been begging for a new challenge and just hadn’t gotten one. I had been looking for ways to stay interested, but got more and more bored, so I asked my boss for a new challenge. He eventually offered me a new opportunity: the same work I had been doing, but in a crummier location. I asked if we could keep looking.

A couple of months later, my boss came to me with yet another opportunity: I would move to a different building and redraw schematics for a 20-year-old piece of test equipment. I could hardly believe it, but he’d actually found a worse position than the one I’d already turned down.

But he made it clear that I couldn’t keep saying no to these opportunities—I was being too picky, and it was making both him and me look bad—so I reluctantly accepted the position.

I moved from a building where I had tons of friends and a 10-minute commute to a building where I had no friends and a 40-minute commute. The clock was ticking on my time at that first job.

Looking for something new

I started looking for a new job for two reasons: first, I needed to get out of there; but second, I wanted to know if I was over-valuing my abilities. I was young but self-aware enough to realize that one very plausible explanation for my frustration was that I just wasn’t very good at what I was doing. Maybe my boss was in the uncomfortable position of having a really ambitious, but really ineffective employee on his hands. Maybe he had done everything he could to pacify me without putting me on an important project that I would just screw up.

Around this time, a friend reached out asking if I knew any web developers looking for work. I told him that I did know someone…me! I had a little bit of web development experience and after we talked, he suggested I might be a good fit for his startup’s client services team. I interviewed with the company’s CCO and he offered me a job as a Project Manager. I had also been interviewing for a managerial position in a different city and, although I didn’t get that job, those two opportunities reassured me that I was a valuable enough employee to take seriously. I happily took the Project Manager job at the start-up.

Before I could start my new job, I had to wrap things up at my old job. Ironically, my manager on my temporary project (redrawing old schematics) had been the best boss I’d worked for my whole time there. On one of my last days, as we were looking over some schematics, he gave me the best career advice I’d ever gotten:

Josh, your first job is where you get your first job. Your second job is where you get experience. Your third job is where you get paid.

My second job

My second job meant a career change from electrical engineering to project management. I took a small pay cut, but that was completely reasonable considering I had no client-facing experience. I went on to work there for five years, scratching and clawing my way to a slightly higher salary than I’d been making as an engineer.

Of course, the money wasn’t what I was after—I wanted experience, and I found it by pursuing unusual opportunities, including a “special project” that ended up being crushed after nine months and getting me laid off. But they soon hired me back to work in a different capacity, which again provided great experience for slightly less pay. This position marked my second pay cut since starting my career, and I was making exactly the same salary I’d made as a test engineer, five years earlier. But by then, I had amazing experience and was in a position to move nowhere but up.

After five years in my second job, I finished up my MBA, which I’d been pursuing on the weekends. I decided to quit and take some time off to travel, relax and recharge.

My third job

After my hiatus, an old colleague from the start-up reached out from a different company: “You looking for work?” I was, and my experience landed me my third job, where I would make almost 30% more money than I had been making when I quit the start-up eight months earlier. Just like my sage manager said, my third job was where I got paid.

I’m glad I heard that advice during my first job, because it allowed me keep putting in time when things got tough. I knew that getting paid was inevitable if I continued to do good work and gain experience. That advice allowed me to stop obsessing over raises and promotions and start focusing on trying new things and building my resume so that when I did encounter a lucrative opportunity, I would be ready.

Sincerely,

Josh

Previously published on JoshDoody.com

Josh Doody is a salary negotiation coach who helps experienced software developers negotiate job offers from big tech companies like Google and Amazon. He also wrote Fearless Salary Negotiation: A step-by-step guide to getting paid what you’re worth to help software developers navigate job interviews and salary discussions to earn more throughout their careers.

Preparing for a recruiting event

This is a guest post from Jeff Beard, lightly edited. Enjoy.

Dear New Developer,

Preparing for a university job fair or similar recruiting event is very important if you want to make an impression that results in a phone screen.

A hiring manager and their recruiters receive an enormous number of contacts and resumes from a variety of channels so you have to be able to stand out from the crowd in a very short amount of time, often measured in seconds.

However, when you are at a recruiting event you have a unique opportunity to make an impression since you will get to talk directly to a recruiter or even a hiring manager. So you need to be fully prepared to exploit that short window of opportunity.

Here are a few important things to prepare in order to make the most of that moment:

  • Resume
  • The Introduction
  • The Conversation
  • Appearance

Resume

A resume is something of a pitch deck that you use to get attention and tell your story. It’s also a notepad and reminder for a recruiter or hiring manager to go back to in order to find you in the huge pile of resumes they collect. Or, sadly, to figure out what goes into the recycle bin now versus later (it’s no joke: a desk covered with hundreds of resumes requires triage.)

To begin with, make sure that you have complete basic information such as address, phone, email, GPA, and graduation date (for students) at the top of your resume.

There are a few important attributes that a hiring manager is looking for and that you want to show with your resume:

  • Motivated
  • Passionate
  • Skilled
  • Adaptable
  • Collaborative
  • Articulate

Since you are early in your career you won’t have as much work experience so you should make projects the centerpiece of your resume. In fact, even later in your career, a highly informative discussion can be had around projects that reveal the attributes noted above. For any project on your resume you should be able to speak to:

  • The purpose of the project
  • Why it was important
  • Did you work on a team
  • How did the team self-organize
  • How you overcame challenges
  • What was the outcome
  • Why you liked the project

Importantly, what a good hiring manager is looking for is intrinsic motivation. We want folks that are naturally excited about the domain they are looking to enter for their career.

So put your favorite project at the top of the list and drive the conversation to that project if you can. The person you are talking to needs to see what lights you up and there is native passion for your favorite project that you need to let shine through.The project description should be brief and to the point, with a focus on the “what”, “why”, and the outcome. A project description doesn’t need to be burdened with the tech used unless it adds to the overall narrative.

Projects don’t have to be school class projects or work experience. They can be side hustles, Open Source, personal interest, or Hackathon projects.

If you haven’t done a lot of projects, take the initiative to find a couple of projects to work on. If you are in school or in your first job and it’s not producing projects that engage you, seek them out or invent them yourself. This will be reflected in your resume and will send a signal that you are curious, passionate about the domain, and look beyond what you are doing day to day for interesting problems to solve.

One final bit of advice on resumes, is that you can have more than one resume for different audiences. For example if you are equally interested in DevOps and software development, craft two different resumes that highlight projects and work experience in each category. You can also optimize resumes for different industries to highlight aspects of your experience or interests that cast you in a good light for that market.

The Introduction

The introduction is a critical face to face interaction that is your opportunity to form a connection with a potential hiring manager or recruiter. There is an incredibly short window of opportunity to impress the person which means you need to say a few impactful words, delivered with confidence.

When you approach the company representative, reach out to shake hands while you say hello and start your introduction. People receive signals from a handshake so don’t go soft and don’t be aggressive. Just a firm, confident handshake will do the trick. Practice with friends.

I personally will listen for about a minute before I interrupt and direct the conversation to, say, the resume in a candidate’s hand but it’s important to have a story that is concise, to the point, and well rehearsed.

The introduction should contain your name, your college program and graduation date (if appropriate), what you are passionate about, what role you are looking for, what your interest is in the company, and why you would be successful. It’s a brief statement of intent and a value proposition signal. You should practice saying it out loud often enough that you can deliver it with a practiced confidence, energy and restrained enthusiasm while looking the person straight in the eye.

Don’t make assumptions about the person you are talking to; ask them what their role is at the company. If they are technical, this is an opportunity to signal your depth. If they are not, you can tailor the conversation accordingly.

Also don’t launch into a description of every item on your resume; exercise restraint and stay focused on a concise introduction that will lead into a conversation.

Finally, like resumes, you can have more than one introduction crafted for different audiences.

The Conversation

Your introduction will lead into a very short, general conversation which you also need to be prepared for. If the introduction is the hook, then this conversation is closing the deal on a phone screen. (Note you are not closing the deal on a job or an interview, that’s later. You just want a second look which is what the phone screen is.)

You get it by handing the recruiter or hiring manager your resume to scan and ask their questions. Have a ready answer for everything on your resume including any questions about whether or not things went bad on a project or an obviously short tenure at one of your jobs.

You should also seek to align your interests with what the company does which requires research.

At most career fairs there is a list of companies available ahead of time so you can research them and target the companies that do work that best aligns with your interests. If you aren’t sure about what your passions are or it’s hard to figure out what the company does, be prepared to put that out there right away. Some of the most awkward moments are when someone tries to improvise what they think my company does. Don’t improvise, do the research. It’s easy, and pays dividends.

Just identify a few things that the company does to show interest and then ask about other things the company does and what market they operate in. What’s important is that you show that you are interested and motivated enough to do the research. This also helps with the common question you may get: “why do you want to work for Willard’s Widgets?” If you’ve done the research you’ll have a good idea of whether you can honestly say that whatever they do is super interesting and you’ve love to help the company be successful.

Other questions you can ask are “what is the culture like?”, “tell me about an exciting initiative at the company”, and as you wrap up the conversation you could ask “when can I expect to hear back?”

To get extra credit educate yourself on the industry that the company operates in. If you can speak intelligently about the major trends in a market and tie it to what a company does, you are instantly distinguished from your peers. Very few early career candidates pay much attention to the business side of things but it’s important to understand the industry you work in, especially as you mature in your career.

Appearance

No need to wear a suit; it’s not the norm for our industry except for executives (and even then there are a lot of hoodies and t-shirts in the wild). But don’t wear pajamas with bunny slippers either. Casual clothes that are clean and not shredded, a folder full of printed resumes, and a cell phone are what you need when you step up to the table to confidently deliver that well-practiced introduction.

If you are comfortable with it, you can add something colorful, or otherwise visibly interesting or memorable, to your outfit that makes you stand out from the blue jeans/black leggings and t-shirt crowd. Don’t be silly or obnoxious, just wear or add something visual and unique to your outfit or just make it more colorful in general. It provides something else for the hiring manager or recruiter to associate with a good conversation when they’re digging through a pile of resumes, trying to decide who to call.

Finally, job fairs can be taxing so make sure you take breaks and have access to snacks and drinks to power you through the event and keep up your energy levels.

Sincerely,

Jeff

Jeff Beard is a director of software development at Oracle Data Cloud. He would also like to acknowledge Caitlin Hickey and Mridula Natrajan for their help editing this post.

You know more than you think

This is a guest post from Cara Borenstein. Enjoy.

Dear new developer,

A couple of years ago, I started my first job in Silicon Valley. I was a junior software engineer at a fast-moving company and I was so excited to have the opportunity to learn. I worked hard. I looked up terms I wasn’t familiar with. I was constantly asking “how?” – “how do I do this?”, “how does this work?” I was shipping code and learning fast.

Only after a number of months, did I realize I was doing something wrong and letting my team down.

It came to my team’s attention that we had chosen the wrong type of core technology for one of our main projects. The team leaders wanted to understand why we had chosen this technology.

I had no idea why we had chosen this technology because I had never asked. Had I asked, we would’ve realized pretty quickly that this technology wasn’t a good choice for our system. But I was confident that my senior teammate always knew the right choices to make.

I didn’t think I knew enough to ask. I had what’s commonly referred to as “imposter syndrome”.

My failure to ask why wasn’t just a missed learning opportunity for me. It resulted in my team making an expensive mistake of choosing a wrong technology.

Now I can see that I did know enough to ask why and it was my responsibility to do so. The same goes for you, new developer.

Software engineering is a lot about tradeoffs – choosing one software design over another. Design trade-offs are often not completely clear cut and they warrant a discussion. You don’t need to have decades of experience to be able to understand the choices you and your team make. You just need to do your part to make sure your team has these discussions.

When you ask your teammates why you push them to explain their thought processes. This helps your team to more thoroughly evaluate different options and to eventually arrive at better decisions.

Moreover, these whys create some of the best documentation for future engineers that join the team. If the thought process behind a choice wasn’t obvious to you, it will likely be confusing to many future team members too.

How to ask “why”

Here are some tips that have worked well for me.

First, make sure that you are asking “why” with a mindset of learning and understanding, not blaming. This will shape how you phrase your question. For example, you can start your question with “I’d like to understand why we…” or “I’m unclear as to why we…”.

Then identify one person who is likely best to discuss “why” with. More often than not, you’ll want to start by asking one senior engineer on your team or your technical lead. After speaking with them, if there’s further discussion or changes needed, you can bring this to the rest of your team together.

To initiate your question, bring it up informally without an expectation of immediately discussing it. This can be in an informal conversation, at your team’s daily standup, or in a Slack message. For example, you might ask – “Hey teammate, I’m confused as to why we’re… Do you have time later today or tomorrow to go over it?” With this approach, you can communicate your question while being respectful of your teammate’s time.

How to document “why”

Now that you’ve asked “why,” you may have driven some changes in your team’s plans, but you definitely have learned something interesting. Write it down! This is some of the most useful documentation your team can have.

When writing down why be sure to include

  • your question
  • a summary of what you discovered
  • any constraints that impacted your team’s choice
  • any other options your team considered and the pros/cons
  • any action items for your team given what you learned

Ask your teammate to review your written “why” to make sure you didn’t miss anything and are on the same page. Once it’s approved, share it with the entire team.

If your team currently uses a wiki or shared drive solution for documentation, you can

  • create a “start with why” folder
  • write a new document for each “why” within this folder
  • add a hypertext link to this document from each software doc that’s impacted

Start asking “why”

So, new developer, asking “why” will help you learn faster and help your team make better choices. And writing down “why” will provide your team with useful documentation for future work. So get started now. Start asking “why.”

Sincerely,

Cara

Cara Borenstein is a founder at Bytebase – a collaboration tool for lightweight knowledge sharing. If you’re interested in a faster way to capture and organize your “why” learnings, you can try out what we’re building at Bytebase.

Why software engineers are grumpy

Dear new developer,

I thought that this post, “The care and feeding of software engineers (or, why engineers are grumpy)”, from 2012 was still relevant today. It’s a long one, so I won’t excerpt all the interesting parts, but this really resonated with me:

Both engineers and product managers tend to think, incorrectly, that product specifications or requirements are equivalent to the furniture manual from Ikea. In reality, these documents rarely contain enough information to build an actual thing. They’re usually just the starting point. And that presents a unique problem to the engineer.

The author explores the metaphor of the house, and how you really should fully define such a structure before you start building it. And yet, sometimes software is “just started” and defined and re-defined as needed changes are discovered

The author doesn’t let software engineers off the hook either:

Software engineers are put into a difficult position every day, but we are not victims even though those of us who are more melodramatic tend to act that way. Part of our grumpiness actually comes from within, with something that for some reason is deeply ingrained in the majority of software engineers. We have a tragic flaw and that flaw is that we overestimate our knowledge and abilities..

In addition to all the complaints engineers have, it also has a few suggestions about ways to help (including appreciate the engineer’s effort and cross functional training). Well worth a read as someone who either works with software engineers or as someone who is one.

Sincerely,

Dan

How to manage one to ones

Dear new developer,

Hopefully you’ll work in a place where you’ll have regular one to ones with your manager. I find these helpful for building a relationship and engaging with your manager and your reports (if any). I even did them with my co-founder when I founded a startup.

These meetings tend to be 30 minutes and on a regular cadence (weekly, biweekly or monthly, typically). If you are face to face, you can have them in the office, but going for a walk or to lunch is a great way to mix it up as well. If you are doing them over video chat due to being in different locations, it’s best to have a great internet connection, a quiet space and video turned on. There are nuances you pick up via someone’s face that you’ll miss if you only have their voice.

The purpose of these meetings is to keep communication lines open for both parties. It also helps both parties get to know each other as people. People generally react poorly to surprises and stress, but building the relationship and communication practices before any of these situations arrive (and they will) will help the team to navigate them.

It’s worth stating that as a new developer, you probably don’t have a lot of influence over many things. In fact, you might not even have a one to one. If you don’t, the first step is to ask for a regular meeting with your supervisor. You can start with a monthly 30 minute meeting, which shouldn’t be impossible to schedule. I’d frame this request in terms that are helpful for the company and your supervisor:

  • I want to understand where we are heading
  • I want to know how I can best help you and the company
  • The insights I gain will help me be more effective in helping the team

If you do have a one to one, you can use it to share knowledge and gain understanding. Here are some tips for making the most out of your one to ones as a new developer.

First, schedule (or ask for) regular meetings at a time that works for both of you. Be cognizant of each other’s schedule (does someone like to get up early or work late? Are you in the same time zone?). Scheduling these back to back can be helpful for a manager. And scheduling them outside of “in the zone” blocks of time can make sure that there’s time for other work to be done.

The fact that the meetings are regular is important. They don’t have to last the entire scheduled time, but the manager should never cancel them, and if they must be rescheduled, do that promptly. (This meeting is very important for you as a new developer, and the manager should treat it that way.) If your manager is stretched too thin or is for whatever reason not treating this like an important meeting, suggest decreasing the frequency.

Regular meetings establish the relationship. If the only time you are meeting with your manager is when there are issues, you need guidance on work to be done, or at your performance review, that relationship won’t have the time to grow.

As the employee, come to a one to one with your agenda. I use a google doc in reverse chronological order, with the current meeting at the top. If you can, share this with your manager. Over the week or weeks between your meetings, add items to this doc. This can include items such as:

  • How should I have handled situation XXX?
  • I’d like to learn more about NoSQL databases; what are the opportunities at this company?
  • I’m struggling with XXX, do you have any suggestions?
  • What are the challenges you see facing our team during project YYY?
  • I heard a rumor that we’re opening a London office; is there anything you can tell me about that?

In general, topics should be about professional challenges, discussions or opportunities. Some chitchat about what you each did over the weekend is good social lubricant, if you both feel that way. (I’ve struggled in the past with connecting to reports, but found that discussing their out of work interests can lead to good conversations and a stronger relationship.)

I like to record action items for myself and the other party right in this google doc (sometimes the action item may be as simple as “bring this up again in three months”). This means that when the next one to one comes around, I can see what we discussed last time and if there was any progress. This doc is also great for preparing for your performance review, sharing with a new supervisor, or even just to see what you’ve done or been concerned about over time.

Another thing that I’ve had to learn over the years is that one to ones are a great place for me as an employee to ask for what I want. It’s awkward for me, because I’m a people pleaser at work, but if I don’t ask for what I want or need from my supervisor, how will they know? Now that doesn’t mean you can ask for the moon, but if you see opportunities in adjacent areas to your current work, ask for them.

If you see technologies that you think would make everyone’s lives easier, ask if you can investigate them. If you see a conference or other educational opportunity, ask if there’s money for you to attend. I remember at my very first job, I was interested in learning about databases and database administration. I asked my supervisor about doing a three month internship in that group, and they let me do so. I learned a lot about the data driven mindset during that time.

What is said in a one to one should be kept private, unless sharing it is discussed and both parties agree. Keep the agenda doc between the two of you. I think this article, “The 1-on-1 Disclosure Framework”,  covers the levels of privacy very well.

Finally, it’s worth acknowledging that there’s a power differential in every one to one, based on the fact that the manager influences and/or controls the employee’s role, salary, and job. This meeting isn’t about being buddies or friends, but rather about building the person to person relationship that will allow both parties to thrive and help the company with its goals.

Sincerely,

Dan