Category Archives for "Programming Careers"

I Google Simple Functions Daily… Am I A Bad Developer?

“Help! I Landed A Job, And I Have No Idea What I’m Doing!”

Do you feel like you don’t know what you’re doing… like you’re a fraud?

Impostor syndrome is common in our industry.

Wondering when you’ll “just know” something and not be so reliant on Google & Stack Overflow? That day never comes.

Anxiety comes from chasing an ideal that doesn’t exist. Everyone relies on external resources. There is no “10x” developer that just knows the documentation from memory, that doesn’t have to reference.

Every single developer makes mistakes every day. Every developer has moments they have to reference the language docs for a particular function, even if they’ve used it 1,000 times before. (It was probably this one.)

What you know isn’t what’s important. What you get done is. Shift your mindset from “how good am I?” to “what can I get done?” It moves your focus from internal to external. Stop worrying about yourself, start worrying about others

Break the problem down. Solve the smallest part. Get something done. Start writing code before you understand. You don’t have to commit. Work with others, it’s a good reminder that everyone deals with the problem.

Most of your job is novel. You do things you have never done before and solve problems you have never seen for a living.

Everyone Googles. You can Google. I’m giving you permission.

All you have to know is the next actionable step, And go for it. Don’t read and study and noodle around the problem. Take action. Find answers as problems arise.

Why You Should NEVER Walk Out of A Job Interview

Have you ever had a disastrous interview experience? My worst: Three years out of college, working in web development, I was struggling with a linked list problem. The interviewer pauses, looks me in the eye, and says:

“…are you sure you studied computer science in college?”

spoiler alert: I didn’t get the job.

Doing well in a job interview is a skill in and of itself.

Sometimes, it can be a determining factor is whether or not you get a job. That may not feel fair, but that’s how it is. Likewise, being an interviewer is also a skill. Sometimes you’ll run across an interviewer that does something you might not agree with:

  • They make questions with rude assumptions
  • They ask you to solve a problem on a whiteboard, and then zone out to smart-phone-land
  • They interrupt you when you are trying to answer a question or solve a problem.
  • They are a straight-up jerk.

If this happens to you, how should you respond?

Whiteboard interview questions have problems, but they exist. If you are interviewing for jobs, chances are you’ll run into one from time to time. Recently, I wrote about how to survive whiteboard interview questions. I was met with several responses of people saying they would walk out of the interview. This thought is gobsmackingly wrong-headed. I’d like to explain why, and what you should do instead. If this is the mindset of the other people applying for these jobs, then shifting your paradigm a bit is a surefire way to get a leg up on the competition.

The Paradox of Software Careers

The good news: If you want a software development job, you don’t have to bury yourself if student loan debt. You can attend a coding boot camp, or take courses online. There are even free options out there like freeCodeCamp. You don’t need a license, only a chance. You can publish work online, from your home, for free.

But, this lack of gatekeeping means there is a burden on employers. How do you know that candidates have the skills they say they do? Resumes can be polished, and portfolios can be faked. That’s why you have to take tests to prove your skills. I’ve been on the other side of the table, and people come through that don’t know how to program at all.

That’s one among many reasons why all these interview practices exist that are both frustrating to experience and absent from other fields.

Succeeding at interviews, even if you don’t want to.

Earlier I said interviewing was a skill. How do you get better at any skill? You study, you practice, you get feedback, and you repeat. (Amy Hoy has a great in-depth write up on skill mastery)Writing code is great because you can efficiently complete learning cycles at home, 24/7. Write code? Got an error? Experiment or Google the fix. Repeat like your a while loop.

Some sites help you practice interview-style questions, but those will only assist with the technical side. They won’t help with the standing-in-front-your-potential-boss jitters. You could ask friends to help, but they can be kind to a fault, and likely aren’t interviewers themselves. The only way to steel your nerves is to step into the arena & live or die by your actions.

Every interview is an opportunity. Not just for employment, but to learn. You can get practice at the skill of solving real-world problems.

“Wait, how are those high-pressure algorithm riddles anything close to the ‘real world’?”

They’re not, but that’s not the point.

It’s solving problems, in unfavorable conditions, for people you don’t know, for reasons you don’t fully understand.

That’s what programming as a professional IS.

It’s not about your “technical skill,” it’s about your resilience. Do you have the creativity, the optimism, and the confidence to tackle problems you aren’t sure how to handle? Because at some point, you’ll need to find those traits in your career.

“But putting pressure on people to solve common problems is a toxic practice and a red flag. By walking out, I’ll send you a message.”

You won’t. Or at least your interviewers won’t hear it.

Every company gets good and bad candidates. If you walk out, it doesn’t tell the company they follow poor practices. It shows them you couldn’t handle a challenge. Instead of trying your best,  you quit. Which perspective do you think people having will help your career?

“But the interviewer was a complete jerk!”

I’ll concede that if someone was rude, vulgar, racist, sexist, belligerent, or just behaved in a way that was far outside acceptable professional norms, and I probably would excuse myself. But sometimes people seem rude in an instance, or there was something else going on. I wouldn’t write it off. Dealing with jerks, people who appear jerkish, or people who are generally lovely but are having a bad day and are exhibiting jerk-ish behavior in the one particular instance, is another real-world skill that will have to develop soon or later.

“This strategy seems like a waste of time.”

Deliberate practice at a skill you want to get better at is never a waste of time. Even if you don’t want to get better at interviewing, it’s a skill that increases your likelihood of getting what you want: A good job, a nice salary, and security as prosperity for you and yours. Isn’t that worth investing another ten or twenty minutes? What were you going to do instead?

“What About their time? Isn’t participating in an interview for a job I don’t intend to accept selfishly?”

Is a waste of your time when a company completes an interview with you and doesn’t hire you? No, it isn’t. Job interviews are like experiments: You expect and budget for failure.

“What if I get an offer?”

It’s rare that you’ll get an offer for a job that you didn’t want.  It’s a problem like getting “too bulky” at the gym on accident. But if you do get an offer for a company that you aren’t keen on working for, you can always turn them down. Tell them you are exploring opportunities and decided to go in a different direction. But not so fast! If you are interviewing with multiple companies (which I hope you are), you can walk into the salary negotiation more confidently. You can tell them you have multiple offers and see if they can offer something more competitive.

That job interview, you almost walked out of, because who needs to know how to traverse binary search trees these days anyway? It could be a bargaining chip that puts another $5,000 in your pocket every year.

Still, think sticking it out would be a waste to time?

Still, want to send them a message?

Still, want to quit?

Why I’m Quitting Freelancing

After a second full-time stint, I’ve decided to seek full-time employment opportunities. I’ve had a few people ask me why I’ve made this switch, so here’s my reason why.

First, to clarify:  I don’t mean to put freelancing as a profession or those who make that career choice on blast. I have plenty of friends running a business where they are happy, profitable, and thriving. This is me thinking through a decision based on my personal context.

So let’s start with a question:

”What did I hope to get out of running a service business?”

It seems like the ceiling on earnings is higher…

A salaried senior level engineer can earn a salary of ~$100,000/year. Over 40 hours x 50 weeks, that’s $50/hour. Freelance rates of $75-$150 in some cases are standard. Therefore, the potential earnings are much higher. I know other consultants who say they pull in $250,000 per year. Sounds good to me!

However, there are a lot of other variables in this equation.

Jobs come with benefits such as paid leave, a 401k, and health insurance. And ugh,  is health insurance a big one in the US. The comparison between my plan and my wife (who works a full-time salaried position) is insane. Switching to her plan meant I was able to receive much more coverage at a much lower price.

There’s also the point that other financial institutions, such as banks, don’t think so highly of the self-employed. It’s more challenging to get a mortgage as a freelancer than as a “traditional” employee.

On top of that, for this math to make sense, you’d have to keep a steady pipeline of billable hours. Doing that requires sales and marketing work, so you’re now either working fewer billable hours or more hours than a comparable salary job.

Instead of the equation looking like this:

(effective hourly rate of $50/hour) vs. (effective hourly rate of $100+/hr) 

It looks more like this:

EHR of $50
better health insurance 
paid leave
EHR of ~$100
worse health coverage
responsible for taxes/retirement
working more hustling to fill pipeline

And when it comes to filling the pipeline, that brings me to my next point:

You Can Diversify Your Risk By Working With Multiple Clients

Full-time employment is putting all of your eggs in one basket. One person can remove 100% of your income. By working with multiple clients, you can spread out that risk. If you rely on 4 – 10 people for your income, no one of them leaving is completely breaking for you.

But here’s the rub: In my experience, finding this kind of work as a freelance developer has become damn near impossible.

Almost every opportunity I’ve come across was of a full-time nature. Clients wanted 40 billable hours per week, and commitments of months, not weeks. Sometimes as much as 12-18 months! Employee protection rights laws be damned.

Working with multiple clients was more akin to doing 2 – 5 full-time contract gigs per year. You get all the risk of working for a single company, with all the fun of getting zero benefits!

So why bother? There’s one other reason:

You’re running your own business though, right?

Am I though? Building a business is all about leverage. As a service business, there are two ways to go:

  • You can scale up as an agency, and get to a point where you are no longer fulfilling the work.
  • You could develop products that you sell.

I explored the agency route but ran into some issues. A lot of the opportunities I mentioned earlier explicitly wanted individuals, not agencies. Beyond that, I never cracked the code of balancing time & money, either hiring ahead of demand or getting a full enough pipeline to justify the work. Maybe with more time, more money, or more gumption, things would have been different. But 90% of business ideas fail, right? I try not to beat myself up about it.

Then there’s the second one. Creating assets. Running a service business requires designing services, and then marketing, selling, and fulfilling them. To build a product, you’ll also need to design, market, sell, and source that.

Building assets while freelancing is running two business at once. Also, working a job does not infringe on your ability to create products. My ultimate goal financially is to build assets that generate value and are worth something. It’s the only way to build wealth I know of that takes less than 40 years.

I never intended client services to be a permanent solution, but a bridge to something else. But after taking stock, I realize that freelancing is actually in direct conflict with that goal. It looks like my freelancing operation had left me:

  • No more money than a full-time position…
  • less security due to lack of benefits…
  • less time to work on products because I have to hustle to keep the pipeline full…
  • and less energy, because all of that is fucking stressful.

So I asked myself: “why am I doing this?”

I couldn’t come up with an answer.

So if you know anyone who is hiring, hit me up.

Freelancing vs. Employment — When to Go Solo and When to Join a Team

Most creatives freelance at some point. Either as extra nights-and-weekends work, filling gaps between jobs, or building your own business. I advocate for learning the basics of doing client work. It gives you immutable job security. If you know how to find clients and profitable work, you’re never unemployed. The ability to fend for yourself provides freedom.

At some point, you’ll face the decision: should I freelance or work full-time? It’s a personal decision, and there is no correct choice. The only wrong choice is being indecisive and not moving forward.

I’m Talking About Building a Business, Not Just Side Gigs

First I want to distinguish between freelancing and building a service business. Freelancing could mean taking side gigs here or there and making a quick buck. If you are considering client work as primary income, then you must approach it as building a business, not gig hopping. You’ll need consistent sales and marketing processes, and the ability to manage your cash flow.

The Factors In the Decision

Long term, my goal is complete financial independence. I’m aiming to have assets that generate enough cash flow so that no longer have required work. The simplest, most conservative strategy is to have enough investments such that 4% returns pays for everything. In the interim, work is finding the quickest path to that solution.

From that perspective, we have a starting point. “Will freelancing help me reach independence faster than full-time employment?”

 But that’s just one factor. If all we did were optimize for retirement, we’d all end up working in finance, fueled by a diet of rice and beans. In the interim, it’s about optimizing both cash flow and lifestyle until you are at a point you are no longer required to work to sustain yourself.

But wait, doesn’t freelancing provide more freedom? After all, that is the origin of the term, Although I prefer the Westerosi version of Sellsword. In some ways, it does.

But it’s complicated.

What Are Some of the Benefits Freelancing Offers Over Employment?

Control Over Your Time & Schedule

One of the reason’s people see freelancing as appealing is they see it as working whenever they want as much they want.

Spoilers: it’s not.

Freedom isn’t a lack of structure; it’s the ability to build the structure. You have 50 hours of work to do this week. When are they?  You are working with clients and will need to be available to them at some point. You aren’t completely divorced from the 9-to-5 world.

But deciding how many of those hours you work and when is still under your control. You also don’t have to ask anyone for vacation time or over time. If you want to make more, work more. If you need a break, scale back the client work you’re taking on. Which leads to the other part of freelancing freedom:

Control Over Your Income

If you want to make more money at a full-time job, how do you do it? Overtime isn’t an option for a salaried creative, so you’ll have to ask for a raise. You may be able to get a few percentage points, but that doesn’t substiantially move the needle. Usually, the only option is to make a  diagonal leap to get a higher paying version of your job at another company.

When freelancing, you set your rates and capacity. Nothing is stopping you from doubling your rate on your next project. You also have more say on how you get paid. You can get paid upfront or net 60. You can bill hourly or with fixed fees. Sometimes changing your pricing strategy is all it can take to increase your revenue by 70%.

But neither of these are the real freedom most freelancers are looking for. What you really want is…

Total Control Over Your Process and Your Clients

Who you work for is often the biggest factor in job satisfaction. If you work at an agency that takes on cheap toxic clients and then attempts to get profitable with volume, you’re gonna have a bad time. When you’re running the show, you get to decide who you work for and what kind of work you do. If you enjoy working with clients in the music industry, you can build a pipeline focused on them exclusively. Don’t want to write PHP anymore? Don’t have to.

There’s A Higher Ceiling on Your Income

“You’ll never get rich working for someone else.”

This quote holds true in freelancing since you are working on assets owned by other people. But you can make more working for yourself than you can working for a company. I know several freelancers who make between $150k – $250k per year, and they don’t live in Silicon Valley.

Freelancing Gives You Opportunities To Gain More Leverage

If you’re freelancing and your only billing hourly, you’re doing it wrong. With your independence, you should be finding ways to leverage time and money, not just trade time for money. If you charge a flat fee, you can shave hours off of development buy shopping the shelf instead of building something from scratch. You can outsource tasks to virtual assistants or subcontractors. These tasks allow you to skyrocket your effective hourly rate.

You Get to Be An ‘Entrepreneur-Lite’

Owning a business means owning assets and systems that generate revenue. When your freelancing, you are still responsible for some of the work. In some ways, freelancing is more akin to designing a job for yourself and not building a company. You still learn a lot about marketing, sales, and self-discipline. Being a freelancer means less time working on your craft, but more time sharpening your business acumen.

Freelancing is Lower Risk Than Employment

Contrary to popular belief, employment is the highest risk professional position you can put yourself in.

When you are an employee, it only takes one person deciding that they don’t want you to work at your position anymore and POOF, there goes 100% of your cash flow.

When freelancing, you have a diverse set of clients. In one of them fires you, you should only be losing a small fraction of your income. If you have systems for finding clients, you also have a quicker recovery system.

So What Are The Benefits of Employment?

(Note: much of this part is based on my personal experience and is U.S.-Centric. If you live in a country where health care makes sense, your mileage may vary.)

The Literal Benefits.

You can often get better health insurance at a lower rate than you could being self-employed. There are also some tax benefits if your employer offers you a 401k.

The World Was Built For The Employed

Laws and banking systems aren’t set up with the self-employed in mind. Want a fun challenge for yourself? Apply for a mortgage while self-employed.

If my wife weren’t traditionally employed, we likely would not have been able to buy our first home. It’s easier to get good credit when the bank sees that you have ‘stable’ income. The combination of credit score, a W-2, health care, and a tax-preferred investment account means that full-time salaried employment provides you with a lot of life infrastructure.

You Have a Smaller Burden of Responsibility…

With great freedom comes great responsibility. Sometimes for 100% of a project. On a tea,  people have specialized jobs, and you have a support system.

Which Grants You Greater Focus

I knew a freelance developer who was frustrated with all the hours he had to spend hustling. “I wish I could just put on headphones and code all day,” he said.

The, he should get a job.

If you’re a full-time dev, that’s what your boss wants. This means more time focusing on your craft.

There’s Less Variance

People think that freelancing is higher risk, but in reality, it’s higher variance. You may have lean or fat months, busy and slow seasons. Everyone isn’t cut out for variance. Jobs tend to bring more consistency: you work roughly the same number of hours with the same group of people forever and ever. You get roughly the same amount of money every two weeks, which makes budgeting simpler.

Choose Your Adventure Time: Read The Section That Applies to You To Help You Make The Right Decision

Questions to Ask Yourself If You Are Employed and Considering Going Freelance

  • Do I have 3 – 6 months runway in the bank?
  • Do I have a lot of consumer debt?
  • Do I have a list of connections I can reach out to?
  • Do I have a plan to get my first clients?
  • Have I ever freelanced before?
  • Do I have at least two years experience working in my field?
  • Do I want to build a business or a better job?
  • Do I know how to protect myself legally and get paid?
  • Do I have the discipline needed to take complete control over my time and schedule?
  • Can I make more money (eventually) freelancing vs. working at my job?
  • Will I be happier working for myself compared to working at a job?

Questions To Ask Yourself if You Are Freelancing, And Considering Taking a Full-Time Job

  • Will I learn skills at this job that will make a more valuable asset in the long-term?
  • Do they have a good benefits package?
  • Will I enjoy being a part of the team at this company?
  • Do I agree with the team’s core values?
  • Will I harm professional relationships by breaking client relationships?
  • Can you go back to a ‘team player’ mindset?
  • Are you willing to sacrifice the current amount of control you have over your time and energy?

Breeze Through Your Next Whiteboard Interview

When applying for a development job, especially if it is your first, you may be faced with a horrifying request: Stand up, grab a marker & get ready to code on a whiteboard.

No internet. No IDE. Not even a keyboard. Just you & the awkward silence of the interview room.

The Case Against Whiteboard Interviews

Whiteboard interviews are a debated technique. There are two problems; Firstly, they typically involve tackling questions that don’t connect to real-world work. They tend to be algorithmic trivia that many developers haven’t thought about since college. Secondly, you’re used to having access to tools that automate parts of your job like IDEs, as well as information resources like Google and Stack Overflow. If you will have access to these tools on a daily basis, why should you be tested on your skills without them?

Whiteboard Interviews Are Designed to Make Your Squirm. 

The primary function of a whiteboard interview isn’t to judge your technical capabilities. It’s to test your mental fortitude. People complain that whiteboard interviews are unfair & distressing.

That’s the point. 

When an interviewer asks you to stand up at a whiteboard, they want to see how you approach problems while under pressure. There are two crucial mistakes you can make here:

  1. Don’t give up, even if you have no idea how to solve the problem. Remember, this is a test of grit more than technical knowledge. Try different approaches, ask questions.
  2. Remain calm. All jobs come with moments of pressure. Make sure that you don’t get flustered.

The best cure to fear is preparation. Here are some resources to practice whiteboard style challenges.

Whiteboard Practice Resources

  1. Hackerrank. Hackerrank is a place to take practice questions online.
  2. Interview Cake. Another resource for practicing coding challenges. This one features specific questions from the Big Four tech companies.
  3. Project Euler(pronounced “oil-er”) A bit more challenging, but the problem space is interesting and pushes you to think about problems differently.
  4. Programming Interviews Exposed. A book that includes challenges along with more specific interview advice.
  5. Awesome Interviews. A curated list of interview prep articles.

“Ugh, I’d rather leave than deal with such a bad practice.”

Getting frustrated is understandable, but it’s worth it to shift your mindset. Working under pressure, talking to people, and being interviewed are all practicable skills. Instead of getting frustrated, try to be grateful for the opportunity. It’s worth it to stick it out, and you should never walk out of a job interview.

Next Steps

  • Instead of fretting before, or God forbid during your next job interview, block out 30 minutes on your calendar, and try to tackle a problem or two from one of the links above. For additional practice, try talking out loud as you work on them so you can also practice explaining your thought process for others.
  • If you’re feeling good about your interview game, consider taking some time to beef up your portfolio.
  • Want to continue the discussion about job interviews 1-on-1? Come over to my weekly letters, where I regularly have personal conversations with readers.