Problems vs. Solutions

What’s the difference of problems and solutions? If you asked me, I’d say the following:

  • A problem is a known unknown. It’s our assumption that needs clarity.
  • A solution is a known known. Its the facts we gain from having clarity.

Clarity relies on the fact that our assumption is correct. Most of the time, our assumptions are wrong. Our assumptions might even solve a different problem altogether. Here’s a way you can think about problems further.

Being able to articulate a problem helps us gain clarity.

“A problem well-articulated is a problem half solved.”

Charles Kettering

The other half of the problem is designing a process that makes it possible for you to gain clarity of the problem.

You might notice that the main idea here is the idea of being able to communicate both a problem and solution is how we gain clarity. It is the result of our communication that brings clarity.

You can instead think of it as:

  • Step 1: Communicate the problem well.
  • Step 2: Communicate the solution well.

If you can communicate both of these aspects well, you have gained clarity to the puzzle. You can prove your ability to solve any problem this way.

Focus Is A Superpower

In the modern day of limitless feeds of social media, videos, and streams, we are challenged to rediscover our focus within our work. Every day is a fresh opportunity to do exactly what you want, and how you want it. However there’s something continuously distracting us from ever finding that focus.

Whether it’s reaching for your phone to scroll through Instagram in the mornings, or whether it’s staying up late watching your favorite Twitch streamer, we are clogging our minds with content that may not be overall beneficial to our life’s ambitions.

We have diverted our attention from single tasks to multi tasking, and it’s no surprise that we are less effective in the impact driving towards our life goals. Why would we care about getting closer to our goals when we get daily doses of instant gratification by logging on Facebook or getting a few likes on your latest Twitter post?

Programming, writing, photography, singing, and many more actions requires our undivided attention. Check your phone 5 minutes into any of these actions, and you’re back to where you began instead of where you left off. It’s said that most people focus for roughly an hour at a time and take roughly a 15 minute break to get their mind off what they were doing. This can be extremely effective to reach the next level of mastery to become extremely valuable.

Think of the last couple years of your life. How much did you say you would accomplish vs. what you actually accomplished? Are you satisfied with what you were able to accomplish? What if you instead implemented a framework of focus in your life to rid the limitless distractions in your daily life?

Focus is slowly becoming the new IQ for most. It’s the one skill that separates good from great.

In Chris Bailey’s book “Hyperfocus: How to Manage Your Attention in a World of Distraction”, he talks about two main concepts of focus:

  • Hyperfocus – The ability to focus on one thing. (60-90 minutes)
  • Scatterfocus – The ability to focus on nothing. (At least 15 minutes)

Individuals who are able to combine both hyperfocus and scatterfocus are seen by others as productivity machines. They are the type of people who you might ask

  • “You did that all by yourself?”
  • “How is that even possible?”
  • “How did you manage to do that?”

In a world where everyone is unique and has different daily routines, the best we can do is experiment with various tactics to find what works best for you.

Focus Tactics

  • Write down three to five tasks that you believe are the right things to work on each day. It’s important that they are written before starting the day.
  • Practice awareness of what you’re thinking about to manage your attention. You want to be aware whether or not you’re in autopilot mode or hyperfocus mode.
  • Avoid multitasking. If your attention dwindles, take a break or do something mindless for a little. This is also known as scatterfocus. (Read a book, take a walk, hit the gym).
  • Modify your environment to limit distractions (Eliminate phone, block websites, noise-cancelling headphones, etc).
  • Make a list of each thing that distracts you while in a hyperfocus mode. (Checking facebook, instant message, etc).
  • Get a full night’s rest. Your sleep habits are extremely important to your focus (8 hours typically).

In the end, focus is a skill that you can work on to improve. Focus can be boring and lack stimuli, but with enough discipline, we can get a deep sense of satisfaction from what we produce with our daily focus.

Invest In Yourself

One of my favorite quotes is from Gary Vaynerchuk regarding the ROI of a basketball being zero to most people, but to people like LeBron James, it’s worth billions.

This is how I feel with the investments we make towards our personal development. The ROI of an introduction to programming book to me was invaluable. It pushed me towards a skill that’s high in demand, provided me a career for the future, and fed my economical engine so I can provide for my family.

Think about it, for less than $50 dollars to buy a book, you can be propelled into an industry that you never thought you would be part of. Maybe that $200 dollar continuing education class might inspire you to learn more on your own. Hell, perhaps even a new $1000 laptop will give you the confidence to learn something new.

I’ve struggled with this in my past regarding how much I should spend on myself. How much is just too much though? I would argue you can’t put a price on it. For example, I’ve spent at least $1000 dollars on books last year, and it simply doesn’t phase me because I believe the ideas even from a single book can have this significant ROI for me.

The barrier to entry towards personal investment is quite minimal when you think about it. However the systems underneath obtaining the ROI is what really matters, and surprise! It’s free. Time is your most valuable resource and you can decide to make the most of your time or not. You can put away 30 minutes a day to learn a new skill like a programming language. You can take that extra hour after work to cook for yourself instead of always eating out. This all requires a massive change in your mindset.

Fighting The Resistance

As you sit down to learn something new like programming, you’re going to have a natural resistance that prevents you from putting in the work. This can take many forms such as more desirable things we could be doing, double-thinking the value you’re providing to yourself, and much more.

The simple truth is that you must treat your dream like a full-time job. If you are seeking a new opportunity such as a career change, creating a new business, or seeing your ideas come alive for first time, you must get serious about it. You cannot treat your dream like a hobby. It must be something you are passionate about. Your life revolves around this dream, and you can’t stop talking about how much this means to you.

However you should know that every single person on this planet struggles with the natural resistance. Tim might struggle with motivation to go to the gym every morning. Amy might struggle with what’s her next big move at work. It’s much like the little voice in your head telling you that the risk is not worth the pursuit, when in fact you are good enough and you can start today in order to make your dreams come true.

Our little voice in our heads manifests itself from fear of failure, procrastination, self-doubt, and uncertainty. You cannot let the voice be the excuse to not pursue your dreams.

You can fight the resistance by ensuring you make the time to work on your dream every single day, and then simply show up.

Your dream will not be the same as others. In fact you have a different calling in the world than most people. Some of us are software developers, some want to perform stand-up, and others want to write books. Finding your territory is key in what defines you.

As you put the work into your territory, you will be seen as an authority. You will gain the recognition in meaningful ways. In other words, you will get back however much you decide to put in.

My Year In Review: 2019

2019 was a huge year of growth for me. Through the various challenges I faced, they helped me gain clarity to my life goals and fueled me with motivation throughout the year. Here is a list of the things I’m most proud of in no order of importance:

1. How Much I Learned

At age 27, I pursued more education in 2019 than I feel I have my whole life. Ranging from writing in the mornings, reading over 50 books in a year, taking classes towards an MBA, running a Twitch stream, picking up a new sport, and more.

Writing Everyday

I’ve never been a daily writer until I came across the work of https://seanwes.com/. Sean introduced me to writing being the “gateway drug” to success. This changed my mindset around how important writing and reading are to my overall skillset. This made me want to become a better writer, and ultimately read some great classics on writing such as:

  • Zen in the Art of Writing – Ray Bradbury
  • On Writing – Stephen King
  • Bird by Bird – Anne Lamott
  • The War of Art – Steven Pressfield

I challenged myself to write 500 words everyday. That shortly became 1000 words, and I’ve slowly come to just writing whatever is in my head until depleted as my goal as it tends to average around 1000 words. Making a small goal such as writing 500 words everyday helped me gain clarity that the number of words doesn’t really matter, but the act of writing does. By scheduling out my writing topics and content ideas, it has helped me battle writers block to which I can generally put down a shitty first draft that I typically can revise to be decent in a future iteration. This has challenged my perfectionism and instead allows me to feel okay with most of my writing feeling like crap on it’s first life.

Reading 50+ Books

Although I considered myself a big reader previously, I would only read about 12 books a year, usually one each month. After seeing the reading habits of people I aspired to be like, I challenged myself and changed my goal to be 52 books in 2019, otherwise known as a book every week. Not only did I accomplish this, but I found myself excitedly adding more books to my list for next year to read.

One of the biggest things I had to learn after reading this many books over the year is that if there’s a book I don’t fancy, I just stop reading it and pick up the next one on my list. I try my best to commit to the books until the end, but sometimes you gain more by abandoning the book if you find yourself dragging your feet or making your habit of reading difficult.

Top 5 Books In 2019

Although there are more books that I read in 2019 that I believe absolutely everybody should read, these are the top 5 books that had the most impact on me this year. The topics range from optimizing your daily routines, life lessons to absorb, and mental toughness.

  1. Atomic Habits – James Clear
  2. Anything You Want – Derek Sivers
  3. This Is Marketing – Seth Godin
  4. Bird by Bird – Anne Lamott
  5. Can’t Hurt Me – David Goggins

Working On An MBA

I started my MBA in 2019 and did 6 courses towards my degree. This was a shock to my system after being out of college since 2013, however it hasn’t changed much other than needing to commit time directly to something in order to succeed. This helped me manage my time more efficiently and allocate just enough time needed to complete the lectures, readings, and homework. I’ve always been more of a technical person, and the insight into the business side has been quite eye-opening.

Streaming Every Week

I’ve always been into live streaming, and in 2019 I decided to give it a real shot myself. Every week I would help aspiring software developers with various aspects of how to grow your technical skills, preparing for an interview, applying for programming jobs, and much more. Creating a live stream is very creative and similar to building your own television channel where you’re responsible for the weekly programming. I’ve since expanded by streaming equipment and will be streaming much more in 2020!

2. Getting In Shape

I’ve always been in relatively decent shape. However this year, and especially becoming a new dad, I realized my fitness had dwindled and I’d gained over 30 pounds putting me upwards of 270 lbs at my heaviest. Although I was still weight lifting 3x a week, I realized that my diet and exercise routines needed to change to make a difference.

Needless to say, I took a break from exercise for a couple months completely to focus on my diet. After my diet was in order, I went back to my old routine of lifting weights.

I then went from lifting weights 3x a week, to going to the gym an additional 2x a week. This helped me shed over 40 pounds over a couple months, and introduced me back to the sport of basketball, which I play regularly to replace my cardio in the gym.

I’ve learned that the act of going to the gym used to be something I dread and would put off indefinitely. Instead, I commit to going to the gym by ensuring I have clothes ready, and block out time on my calendar everyday to go. Additionally, I’ve found that having an accountability partner who goes with you to do wonders in terms of motivation.

3. Finding My Focus

Outside of work, I tend to work on a number of side projects. Those side projects range from writing a book, twitch streaming for aspiring software developers, blogging my thoughts on the software industry, creating a mobile application for lawn care, performing & writing comedy at a local black-box theater, and much more.

This year I decided to downsize everything I was involved with, and gave myself a couple of projects that I would pursue instead. This not only helped provide me with clarity and focus, but it allowed me to make more meaningful contributions. Next year, I plan to change my focus to be a single project until it’s completed or abandoned.

Lessons Learned This Year

  • Perfection is a mindset. It’s okay to refuse to accept mediocrity and know what is good enough to you.
  • Instead of just doing, show and tell for others who may be in the same shoes you were once in to learn from.
  • You have to make the time to do what you want in life happen. This is especially important as your responsibilities grow.
  • Knowing who you are and what you stand for is your secret weapon.
  • The most rewarding path is the path with a tremendous obstacle. What stands in the way will become the way.
  • Ask all the questions you need to ask without apology for what you don’t understand while putting in the time to learn what you don’t know.
  • Taking ownership of failures and mistakes will make people respect you more and show it’s okay to make mistakes so long as they are corrected.
  • Don’t invest in things that eat up your time and resources with little to give back.
  • Creating wealth is a skill that needs to be practiced just as much as other skills.
  • You aren’t the only person who can do your job. Lift others up to your level and beyond.
  • Instead of taking all the shots given to you, go for the long shots instead. They are often closer than you think and more rewarding.
  • If you can think it, you can do it. The power of thoughts are indestructible.
  • Meditation can help reduce stressful situations, provide mental clarity, and bring a sense of calmness.
  • Practice mental toughness, it will help you master the decisive moment.
  • If you can’t measure it, you can’t manage it or improve it.
  • Only deal with matters that are within your control.
  • Prepare your environments to provide a path of least resistance.
  • Enjoy the present and love everything that happens.

The Demand for Software Developers

As you evaluate your career options, you might come across various data sources or articles that help paint a promising or unfavorable future.

Software Development however is a very promising future as the skills required are useful skills in many fields outside of the software industry. According to daxx.com, software developers are forecasted to grow from 23 million jobs to ~29 million by 2025.

In the United States, the Evans Data Corporation believes there are about 4.4 million programming jobs as of 2016.

This data is well supported by the bls.gov in which they believe that the number of jobs will increase by 24% by 2026. However the bls.gov shows a more realistic number of actual software developers being close to about 1.25 million.

However this goes to show that there is also a shortage of individuals with the skills required to become a software developer. It is estimated that about 40,000-50,000 computer science college graduates are generated each year, however similarly looking at the bls.gov source, there are upwards of 300,000 jobs being added within 10 years to the software industry. This would suggest approximately 30,000 jobs per year that may hint that there are more graduates than jobs added each year. This however is a bit unclear given that not all computer science majors end up in software development positions, but rather the possibility of data science, research, teaching, management, and much more.

As a software developer looking for a job, it is typical to be interviewing for multiple companies, evaluating multiple offers, and being looked at like a hot commodity with extra incentives. The reason being is that most companies are looking to retain their developers for as long as possible given the talent shortage and difficulties in hiring highly qualified individuals.

Knowing this information can shift your perspective while looking for jobs and provide you an overall better outcome given that you are in demand and you can use it as leverage within your negotiations. Don’t settle for less, but rather take advantage of market and situation you’re in today.

How To Negotiate Your Software Engineering Job Offer

Negotiating a job offer is hard. In fact, many people do not want to deal with confrontation so they accept the first offer they are provided. What if I told you that there’s a better way to negotiate?

Keep a paper trail

Every minute detail about your job offer needs to be on paper. This means any email about communication of the offer, anything discussed over the phone, any benefits, signing bonuses, or other items that were mentioned to you to get you to interview with the company.

Keeping a paper trail will provide you with information that holds people accountable to their word.

Open doors, don’t close them

Until you are absolutely positive that you will not accept a job offer, keep the offer on the table. Not only does this create a sense of urgency for the recruiting efforts of the company, but it can lead to further negotiations down the line. Majority of the time you will be pressured into making a decision to which you’ll need to stay passive regarding your commitments such as kindly delaying their urgency while you’re evaluating.

Know your worth

The more information you know about how much you’re worth, the more room you have to play with. Lookup the respective market rates for the job you’ve got an offer for, look up the respective company’s salary range on a site like glassdoor.com or levels.fyi, and generally talk to other people in the industry to get an idea of a realistic range based on your experience.

Knowing your worth shows that you have confidence in an offer and sets the bar for the playing field with regards to negotiations. This does not mean you disclose your current worth, but rather that you know what you are worth both on the market and in your heart.

Put the ball in their court

When it comes to negotiation, you always want to put the ball or last communication in their court. What this does is puts pressure on the company to make a decision of improving the offer or playing hardball. You may notice that whenever pressure is put onto you, they are trying to put the ball in your court.

Have a backup plan

While negotiating, you’ll always want to have a backup plan. This can mean another offer on the table or even a backup ultimatum if the negotiation does not work out. This gives you leverage to satisfy your wants and needs in a deal. Whether that is communicating that you have another offer currently (showing you’re high in demand), or that the offer is not enough to make you move from you current employment (showing a lack of negotiation).

What’s your motivation?

Provide your underlying motivations for why you want to accept the job offer but cannot under the current conditions. This could be the mission/vision of the company or another aspect such as the way they build software or another aspect you really value that this company offers over the other offers.

Be human

Show that you are human with basic wants and needs. While negotiating, use statements to show that your wants and needs are not being met. This helps show your feelings regarding the current offer and provides an emotional tone to what can improve the offer.

Show how they can win you over

When making a deal, be able to give in and show what it will take to win you over with regards to an offer. After-all you’ll be working for this company for a chunk of your life and you’ll want to ensure you’re comfortable going into the position rather than potentially going into it with resentment / regret.

JIT and AOT Learning

Computers are no different than humans when it comes to learning. One of my favorite ways to learn about learning is to think of our brains as an interpreter and compiler, just like your favorite programming language may have.

Unfamiliar concepts are inputs into your compiler to which they are then translated into a familiar concept. However it depends on when the compilation takes place, in such that the time is either as you need it, or before you need it.

Just-in-Time (JIT) Learning

Just-in-Time learning compiles your learning as you need it. This might be learning about something while working through a problem, and you may not have a background in the topic. With JIT learning, you need a concept of an interpreter, to which can tell you if you are on the right or wrong path with regards to understanding. JIT learning is a common form of learning as we learn as we do, rather than learning for the sake of learning.

Pros:

  • Does not require previous investment.
  • Practical learning opportunities.

Cons:

  • Lacking subject mastery / preparation.
  • Prone to more failure.

Ahead-of-Time (AOT) Learning

Ahead-of-Time learning compiles your learning well before you need it. This might be learning about something well before you ever use that knowledge to solve a problem. AOT learning doesn’t require an interpreter, because you can already gauge the correctness based on understanding prior.

Pros:

  • Subject mastery / preparation.
  • Improves future learning.

Cons:

  • Upfront investment.
  • May never be used in a practical setting.

JIT or AOT Learning?

You’re going to encounter both types of learning every single day as a programmer. One day you may need to know about regular expressions to implement an email validation form, however how many of us would go through the gauntlet known as learning about regex when we may not regularly use them? However this marks an opportunity to take JIT learning as AOT learning. You can take the knowledge of what you learned while JIT learning to make a choice as to whether investing more time into the topic will be fruitful in the future. Either way, you’ll want a balance between these two types of learning. You don’t want to constantly learn everything, especially if you may not use majority of it, and you also don’t want to be unprepared by doing everything as it comes your way.

So, Tell Me About Yourself

One of the hardest questions to answer in an interview is the “So, tell me about yourself” question. Although it’s fairly easy to talk about yourself given there’s no wrong answers, but rather this question gives you the free reign to respond as you wish. You could…

  • Talk about your life.
  • Talk about your job history.
  • Talk about your future plans.
  • etc

However, you should treat this like the same question you might be asked from a complete stranger. How would you communicate to someone you’ve never met to give an idea of who you are, what you stand for, and what you’re passionate about? You’re not going to tell them about every single job you had and your responsibilities there. Rather you are going to tell stories about how you struggled and how you came to be the person you are today.

You can think of this like your personal elevator pitch.

Introduce Yourself

As with any introduction, give your full name, provide a smile and extend yourself to an introduction such as a handshake, a wave, or greeting.

Provide a Summary

Without going into too much detail, give a brief summary of your background such as where you went to school, your work experience, and a couple things you like to do in your free time. Be prepared to touch base on the highlights you put on your resume when talking about each of these items.

Give Your Why

This is the time that you get to go into detail as to why you believe you are the cream of the crop. You will explain the value you can bring, why you’re a great fit for the job for both the workload and the culture, and generally what they can expect from you.

Finish with a Call To Action

As per any elevator pitch, you will need a call to action to let those know that if no action is taken, they will be missing out on what you have to offer. This can be as simple as setting up a future call, following up on email, or even scheduling another in-person meeting. If they agree upon the request, make sure to follow-through and the rest will be history.

Summary

As you start to figure out your personal elevator pitch, you’ll start to notice that it becomes second nature. As with anything, practice makes perfect, so try to get out of your comfort zone and talk to people you normally would not talk to, and give them your personal elevator pitch while asking about theirs. You’ll be surprised how natural it will feel as you do this a few times.

Ultralearning

I recently came across Scott Young’s work on a concept he coins “Ultralearning”. It was so interesting that I picked up his book and read it in a couple days and wanted to share his framework with how you might apply it with regards to learning to program.

Why Ultralearning?

Imagine having the ability to acquire hard skills effectively and efficiently. Now think about how valuable that makes you compared to others.

Ultralearning is a strategy for acquiring skills and knowledge that is both self-directed and intense.

There is a difference between those who have a skill and those without a skill. This is what separates many professionals in the workplace. Generally speaking, the type of people who obtain a skill went through a very rigorous learning process to obtain it. They may have gone to college, worked on tough problems, delivered impressive projects, and much more.

In a day in age where there is a skill gap between low and high skilled work, ultralearning is especially important in the software industry.

You do not need to be a naturally gifted learner to use ultralearning, but you need to have a persistent and deliberate mindset.

Whether you are looking to land a developer job, get a promotion to the next level, or build that app you’ve always dreamed about doing, ultralearning can help.

Ultralearning Roadmap

Metalearning: Draw a map

Before you can start, you need to learn about the subject or skill you want to take head on. Do some diligent research and draw on your past successes to learn new skills.

Focus: Segment Your Time

Divide your time into segments of purely concentrated time to dedicate to learning. No distractions, purely focusing on learning.

Directness: Be Straight-forward

Become hands-on and learn exactly what you want to be good with. Do not settle for less even if it’s more convenient.

Drill: Find Your Weaknesses

Know the areas that you are proficient in, but more importantly, know the areas you are lacking in. Spend majority of your time improving the areas you are lacking in. Break down complex skills into smaller, more manageable ones.

Retrieval: Teach To Learn

The best way to recall information is by teaching it. Whether that is teaching yourself by testing yourself, or by teaching another who may not know about the skill you’re learning.

Feedback: Honest Feedback

People avoid confrontation, and feedback can make you very uncomfortable. Be willing to take feedback (good and bad) to heart and make change. Learn how to extract the signal from the noise to make sure you’re improving in the areas that matter.

Retention: Space Things Out

Don’t pack in everything at once. Pace yourself so you can retain more information. After-all, you want to learn these things forever, not just temporary.

Intuition: Understand How Things Work

Explore with the concepts and skills you’re learning. The goal is to deeply understand what you’re learning. Don’t settle for memorization.

Experimentation: Get Comfortable With Being Uncomfortable

Although you can follow the beaten path, you should make your own path. Be creative and experiment with new ways to learn, apply, and master what you’re learning.

Conclusion

Ultralearning gives you insight as to the many steps it takes to master learning any skill. Each of these areas have room to be creative in, and it’s up to you to create your ultimate Ultralearning system. If you’re interested in learning more about Ultralearning, check out Scott Young’s latest book “Ultralearning”.