What's worked for me v1.

Posted by Jake Corn on December 5, 2019

A computer science student recently reached out to me and asked how I've achieved what I have in the last 5 years. In my response, I tried to give absolutes -- often the hardest thing when starting is knowing a strong direction. What follows isn't all of what has worked, but it is a relatively short list of what I have found is important

Hey <person>.

Thanks for reaching out.

I'm still learning too so I don't know if I'm any kind of authority but I can tell you what has worked for me.

I don't recommend a course specifically but look for what defines a pro and learn it. It won't be a perfectly straight forward path but there are some guidelines.

0.) Spend time with your family and friends. (yes my list in 0 indexed) In my experience, this is something most devs have trouble with. It's worth mentioning that since becoming a dev I have trouble remembering to do important things for my friends and family.

1.) Read the books - the ones everyone recommends. Books offer more curated content than online courses.

  -- Clean Code - Uncle Bob (clean arch is also a great one)

  -- Pragmatic Programmer - Hunt, Thomas (My second favorite)

  -- Code Complete - Steven McConnell (my personal favorite)

  -- Refactoring - Martin Fowler

  -- Structure and Interpretation of Computer Programs - Abelson.

  -- Working effectively with Legacy Code - Michael Feathers

  -- Extreme Programming -- Kent Beck


   These are some of the thought leaders in the tech space. Their insights will teach what is signal and what is noise. Also, just because a book is old doesn't mean that it is out dated. Even in tech. An old operating systems book can still teach a large portion about modern OS. What's more... the power of context - you'll understand more about modern tech by comparison.

2.) Start building. Find someone who needs some problem solved by tech. That is what I wish I had done in your position. Building a project and satisfying a real customer will teach you about how tech solves problems (and in many cases, creates more). The lifecycle of software is understood by working with users, shareholders, and getting feedback from them.

3.) Ignore the new hot thing. You need to have experience with recent tech, but no company has a 100% modern tech stack. I can't tell you how many times someone invites a new problem to solve. I think of this as "Meta Work". It's the work we do about work. It's always more interesting than actual work and always more expensive. You could ignore blog posts completely and probably be just fine.

4.) Test your code. I could have said only that. It is the single most important thing you can do while coding. It removes all guesswork when done correctly. It separates pro from hack. If your code works well, is easy to understand, and you can verify it works through automation, you have done 90% of your job.

hope that helps.

- Jake