You can read part one here
Learning how to program was one of the hardest things I have done in my life. Over the past 8 months I have spent most of my waking hours either programming, reading about programming, or listening to podcasts on programming.
I wanted to learn as much as I could, as fast as I could, to put me in a position where I would be hireable as a developer. Little did I know nothing in those books or podcasts would prepare for many of the most challenging aspects about my current job.
Ahhh… the remote life, what a dream. For the past three years I had fantasized about how great it would be to have a remote job. I imagined myself starting my work day at a cafe in Hawaii over-looking the ocean. Or maybe winding things down after work by grabbing a drink with the locals in Bali. Basically I thought having a remote job would equal unlimited travel and a lifelong vacation.
Reality of Working Remote
Where I had envisioned myself relaxing on the beach with a mai tai and my laptop, was now replaced by sitting in my office screaming profanities at either Slack, Skype, or Screenhero…especially Skype…YOU NEVER WORK PROPERLY!
Where I had imagined getting coffee in an excotic cafe in Costa Rica, was now replaced by sitting in an over crowded Starbucks, mean mugging anyone who sat too close to me. Basically my dreams of remote life vs the reality of remote life were pretty far out of line.
There are plenty of small nuances that pop up in the day to day life of a remote worker that you won’t think about until you encounter it for yourself. Today for example I went to a local coffeeshop to work for a few hours. After getting my work space all set-up I found that their WIFI was down. I ended up having to give $3 to Comcast, AKA the devil, to get an hour of internet access.
This is not what I had in mind when I was reading all these awesome stories about digital nomads living out their vagabond dreams. The technical issues may be annoying but my biggest challenge with working remote was struggling with communication.
(Remote work is not all that bad, I am saving my full pro/con breakdown of the remote life for another post)
When I got my first job as a developer I lived in constant state of fear.
These were thoughts that were constantly in my head. I was so excited to get the opportunity and I wanted to make sure I didn’t screw it up. Due to the nature of my personality I would spend a lot of time trying to figure things out by myself and avoided contacting my coworkers for help. This lack of communication began to cause some serious issues.
The first time I ran into this problem was when I was showing off my first project, Less Tweets, to my bosses. I had spent the past couple of weeks building Less Tweets and was excited to show them what I had done. The call went something like this:
Me: *Giving a quick demo of the app* So this is what I have built!
Me: *Waiting for all the glorious praise I would be receiving*
Allan: What is this?
Steve: This is the app we had talked about him building.
Allan: I don’t remember asking for anything like this.
Steve: This is not really what I was looking for either, why did you build it like this.
Well that was not how I was hoping for my first project review to go. I felt defeated knowing that I had spent so much time on something that seemed to be so wrong. I had wasted a lot of time building out features that were not wanted.
As the call progressed we discussed what needed to be changed with the application and I took notes on how to improve it. I eventually ended up reworking the application to be more like what my smart and handsome bosses had in mind.
I learned two important lessons from this fiasco. First, communication is key. This is especially true for a remote job. I needed to make sure that my bosses had a better idea of what I was working on and why. As long as I kept them in the loop they would be able to tell me when I was going astray and what I should be doing.
The second thing I learned was you can’t take criticism personally. I was very proud of what I had built so it was hard to hear that it was basically all wrong. I had to realize that this was not some sort of personal attack against me. They were just trying to help me become a better developer, and build a better product. Even with these two lessons under my belt I still found myself struggling to overcome one last hurdle, imposter syndrome.
Imposter syndrome is defined as “A collection of feelings of inadequacy that persist even in face of information that indicates that the opposite is true.“
Basically it boils down to feeling like a fraud.
When I first started my job I could not shake the thought that I might not be cut out for this line of work. I would worry that since I did not have a CS degree I would always be looked at as a subpar developer. I would worry that since I got such a late start in the industry I would never catch up with my peers.
Basically, I spent way too much time worrying. The thing is when you first start programming you have this overwhelming feeling that you know nothing and that everyone else knows more than you.
It is hard for you to recognize your accomplishments and progress because you are comparing yourself against others who have been doing this for years. These are all bad habits to fall into and will do nothing but hold you back. Here are a few things that helped me overcome my imposter syndrome.
The biggest step for me in overcoming my imposter syndrome was to realize that this happens to everyone! No honestly, according to this report 70% of people suffer from imposter syndrome. I found that reading about others journeys to overcoming imposter syndrome really helped me with mine.
Another thing I found to be helpful was reviewing old code. Reading old code is a great way to visualize how much you have progressed. I often find myself disgusted with a lot of the old code I have written. The more sickened I am by the code the better I feel about how much I have learned since then. “Hey self, good job!”
The last thing that helped me overcome my imposter syndrome was trying to help others learn to code. If you attend a local meetup you are likely to find a few people who have just started coding that month. Reach out to these people and try to teach them as much as you can.
You will realize that this person was just where you were a few months ago and now you have all of these tricks, tips, and information to share with them. Not only does it feel good to help them out, but it will clearly show you just how far you have come since you started.
You can try answering questions online as well
It takes more than just a strong set of technical skills to become a successful developer. There are many things that the books, courses, and online tutorials are not going to be able to help you with. Hopefully after reading this you will have picked up some important tips to help you manage the softer skills involved in succeeding in your first job.
If you wanted it to build a product you’d find a way to get time to work on it. If you really wanted to start that new hobby you’d sacrifice something to find the time and money to do it.
I'll define a "Wannabe Entrepreneur" as someone who has never made money from their businesses. Here are the different types of wannabes.
In the past few years I've built go-carts, built a 200+ sq ft workshop, written several eBooks. How do I create a life where I have time to work on side projects?
Receive 5 Software projects mistakes we have made over the years and how to avoid them.