I'm not proud that I didn't go to college. And I am not anti-college. I'm just someone who lives in the upper mid-west who found something I love to do, which is web development.
Recently I published an article about how quitting college opened up my future. I encourage you to read that article to learn about my education and some of my background. Becoming a kick-ass employee also goes well alongside this article.
I now want to dig deeper into my working career to see what has worked and what I've learned.
I think reflecting on our past helps us improve our future, and I hope people can take something out of what I share.
Learning to Solve Problems
Regardless of what we do in our career, we are paid to solve problems. Albeit each job field has different types of issues to solve.
Even most of what we do outside our regular job is coming up with solutions. Sometimes these solutions work out well; other times we end up regretting our approach.
The more we can get better at solving problems, the more our financial value will increase over time.
We will get job promotions and pay raises. Our efficiency and speed will increase. Complex problems will become easier to solve. People will learn to depend on our experience and knowledge.
By learning how to become expert problem solvers, we guarantee that some robot isn't going to be able to take our job (or at least that is the hope).
Our employers will bend over backwards to keep us around because they see the value we bring to their company.
Growing through Mistakes
There is one common element with my experience, and that is failing. I've consistently made mistakes throughout my career.
But the types of mistakes I've made, and the complexity of the problems I solved, increased over time.
At the beginning of my working career, I was horrified of messing up. I kept on thinking my job was dependent on me not making mistakes. Maybe that has a sliver of truth. But how many people have achieved success because of the ways they haven't messed up?
Our successes outshine our failures.
And I think we are framing our experiences wrong. We look at failing as a negative when in reality, it's our failures that propel us towards success.
The only way failure becomes a bad thing is if we do the following:
- We don't learn from our mistakes
- Instead of looking at how we are part of the problem, we blame others
- Not thinking about how we can improve
- Ignoring our failures
No doubt, certain mistakes are a bigger deal than others. And some of them could end up costing us our job.
But in most cases, these larger mistakes become easier to avoid as we gain experience. In the past, I grew paranoid about not making massive mistakes that would cause the world to explode. In most cases, however, I think these types of failures are not likely.
If you are a brain surgeon, mistakes can be life-threatening. If that is you, your job is probably much more stressful than mine, and that is reflected in your paycheck. That is why these type of fields require more education and training.
As a programmer, which I suspect is true for most job job fields, 99% of the mistakes I've made were not “utter failures.” Sure, they caused other problems, some of which were more painful than other. But nothing that risked me losing my job.
Focussing on Communication
If we are going to become expert problem solvers, we have to excel at communication.
- We have to understand the problems we are trying to solve
- The context of the issue is vitally important
- Budgets, timeframes, team, roles, etc. all play in figuring out the best options
There were situations where I spent massive amounts of time coming up with a solution to the WRONG problem.
When we do this, we waste time and money. Deadlines get missed, and confusion spreads like wildfire.
Learning to become an effective communicator involves the following:
- Asking the RIGHT questions
- Updating the team on your progress
- Defining the plan as early in the process as possible
- Bringing up potential problems ASAP
- Making sure your team understands what is blocking you
- Establishing your priorities and confirming the team agrees
Over the last 10-years of my career, I've focused on over-communication. My goal has become to get as much information out in the open as soon as possible, so we have the opportunity to make changes early in the process.
Countless times I've witnessed a situation where clear communication is not a priority early in the project lifecycle. People work and focus on solving problems.
However, when communication is not prioritized, the following usually happens:
- People waste time, solving the wrong problems
- Massive issues come up right before the project deadline
- I've seen employees lose vast amounts of time on one problem or trying to solve the wrong problem.
I'd argue that focusing on being a great communicator is vital to the success of your career.
Being light on your feet, and adjusting your focus when needed, can help you work through complex projects.
But I've found that sometimes upper management does not understand what they are expecting from your time.
Especially if people are learning they can depend on your problem-solving skills, you often find that people go to you to solve their work-related problems. It's fantastic when this happens, but it can often lead to stretching your time too thin.
When word gets out at your company that you are the problem solver they've dreamed about, the time management issue get compounded.
The fact of the matter is that you can only work on one thing at a time. Sure, you can look at a list of the things you need to get done, but you have to knock out each one individually. And the amount of time each task requires varies.
To be successful, we cannot let other people abuse our time. We have to limit how much we work in a week, and when people put us under unrealistic expectations, we need to point this out and make them figure out what is most important.
Doing this does a few things:
- Makes people realize that you are awesome, but your time is limited
- Communicates that you are human and can't magically solve all problems at once
- Requires them to define priorities and goals
- Confirms that your time is valuable and limited
In most cases, when upper management gives you more work than you can accomplish in the specified timeframe, this is usually done unintentionally. They either don't know about the other items on your plate, or they think those other tasks aren't going to require much time. Making it crystal clear what you can reasonably get done in what timeframe, protects yourself from getting burned out.
Learning Through Experience
If you can break down your problems, you might find they often are just variations of issues you've already solved.
Experience is the creme-de-la-creme of figuring this out. Through your experience, you can start to see consistent patterns, and start developing solutions that tackle the core issues.
At the beginning of my working career, I had no idea what I was doing. I was thrown into situations where I had to find solutions. This “learning by fire” method was painful, but the experience was life-changing. This experience is why I question if college is beneficial 100% of the time.
When I feel like I don't have a good sense of what I am getting into, a sense of panic overtakes me. This response is a curse and a blessing at the same time. It motivates me to get to a place where I understand enough about what needs to happen. But during this time, my blood pressure spikes and my mind makes me want to run and hide.
I talk more about this stress response below.
The problems we face are often part of a mixed bag of other issues.
Some people enter these situations and get overwhelmed. They don't know where to start, and they get frustrated because people aren't telling them “exactly” what they need to do.
If you want to increase your value, learn how to enter these types of situations and kick-ass. Complex problems are usually not as bad as they look when they are broken down into small pieces. Sure, you might now be looking at 100 small problems vs. one massive problem. But at least now you have a basic plan on how to tackle the larger problem.
My success as a web developer is partly from my ability to figure out solutions to complex problems.
Intelligence is Overrated
Obviously, there is a level of intelligence that is required to tackle complex problems. But I think some people confuse intelligence with “knowledge.”
We can learn what we don't know if we put in the required effort to pursue those things. If we focus on learning from our mistakes, our experience can also be an excellent teacher.
But intelligence by itself is practically useless.
I would argue if you think you are “highly intelligent,” that can easily lead to a place of arrogance where you don't think you can improve. And that my friends, is career suicide.
I've worked with many programmers who are highly intelligent. These people are not only smarter than me, but they understand more high-level programming concepts. They also probably have a CS degree at a prestigious college.
I've noticed that sometimes people who are highly intelligent from a general level, have a hard time converting that intelligence to real-world, practical problems. Sure, if you give them a very generic high-level problem to solve, they might do excellent. But add short timelines, budgets, working with others and unclear priorities, and they struggle to be successful.
Real world problems don't care how smart you are. They just want the solution that will fix the problem, given their budget, timeline, and priorities.
Don't Sacrifice Your Life for Your Job
I've struggled with work-life balance my whole career.
You see, once a problem enters my mind, it MUST BE SOLVED. Even when I stop working, my brain tends to process information and options all the time. There have been times when I've woken up in the middle of the night thinking about a solution to a problem I was working on the previous day!
And this can be a problem. If we can't stop thinking about work outside of our job, we can unintentionally deprioritize the things that matter most to us. When this happens, we can find ourselves working 50+ hours per week and sacrificing too much of our free time to solving work problems.
Succeeding in your job is a great pursuit. But not if it sacrifices what matters most to you.
Since I work in a web development agency, I constantly need to predict how long things will take. Estimating tasks is incredibly tricky.
Maybe this is specific to agency type of work. But I found the following to be true:
- Clients want to know how much a project is going to cost
- To create a rough schedule, upper management needs to know generally how long things will take
- It is rare to have all of the project details when creating an estimate
- Project requirements will often evolve as things move forward, especially if it is a large project
These things make it incredibly hard to estimate your time.
Ultimately you have two options in regards to estimating your time on tasks: 1) underestimating 2) overestimating.
There is no such thing as being able to pinpoint exactly how long something is going to take to the minute, for any task. If this were possible, we would be able to see the future.
Until time travel becomes an option, the best course of action is to overestimate how long you think it will take.
Time estimation is not an exact science. You need to have a good sense about how long something will take. The riskier, more complex, or the less familiar you are with a task, the more “cushion” you should add to your time. For something simple that I think might take 3 hours as the “best case scenario” but has some complexity or unknowns, I might estimate at 4-6 hours.
When estimating the time it will take to complete a task, adding margin and defining an estimated range is your best chance to avoid drastically underestimating your time.
I found it extremely helpful when creating estimates to think about the best and worst case scenarios. What could happen if this turns out more complicated than I think it is? If this ends up being more straightforward than I thought, how long do I think this will take me?
These questions can help you decide what range you are most comfortable landing on.
Stress Is a Mixed Blessing
Some people would say I get stressed out easily. Part of my stress response has evolved seeing how projects can blow up when the details of a task are revealed midway through a project. Or when something appears to be simple, but ends up being complicated.
It is as if the success of a project affects my mental state of mind.
It's not wrong to want the projects you work on to be successful. But when this starts bleeding into your mental health, this can cause issues that don't heal easily.
The best thing we can do is train our minds to separate the results of our job, from our personal worth. I will always strive to do my best in whatever I do, and sometimes things will fail.
I might be able to learn from the experience, but it might fail for reasons outside of my control. In either case, I know I bring value to the team, and my efforts are not made in vain.
I've made more mistakes in my career than I can count.
But overall, focusing on the following things have brought me raises and promotions:
- Learning from my mistakes
- Constantly learning
- Over-estimating my time, especially when dealing with risks + unknowns
- Pushing hard when I need to, but protecting my personal time
- Working my ass off
- Not depending on my intelligence to make me successful
Do these things guarantee I will always be successful? Not necessarily. But they increase the chances I will add value with however I decide to spend my time.
How have you succeeded in your career?