Developer Advice To Myself

There are some many things I've learned over the years, a few, I wish I would have learned and applied earlier.

Summary

There are three main points I bring up in this article

  • Be practical
  • Don't get too comfortable
  • Keep learning

Be Practical

There are so many ways to create things as a developer, and there is not one right way to accomplish anything. Rather, there are infinite ways to create a feature and it is up to you to balance the effort of your chosen path with the requirements of your project that you've been assigned. You need to ask the right questions to multiple parties as you continue moving forward working on your assignment. Be sure to gather your requirements, execute on a minimum viable product, and then polish and improve on what works.

Gathering requirements is absolutely critical to the work you will doing for the next chunk of time. Many points of the success of the project depend directly on having accurate requirements when you start. One way to gather good requirements is to get enough details so that you understand exactly what problem is going to be solved by your work. If you can't describe the problem, how will you come up with a good solution? Frequently, you will also be asked "how long will this take?", and you can't answer that question at all without understanding the problem. So please, gather good requirements, and don't start work or promise a deliverable until you understand the problem. (yes, this has happened for real in the past, and it's not fun to deal with)

Once you have valid requirements create an MVP (Minimum Viable Product) as soon as you can. Also, know that estimation is ALWAYS hard to get right because there are so many paths you can take. You will always be wrong, and that is ok. Your first goal after giving an estimate to a stakeholder should be to create a MVP. What this means is that it solves the problem, even if some of the bells and whistles are missing. Maybe the styling is off a little bit, or maybe that one extra feature hasn't been implemented yet that they asked for. That's ok at this point. At first, you just want to solve the core problem and then add to it.

A frequent problem I have had here, is that I get stuck in doing a project the right way, the industry standard way, or the popular way, etc. My best advice is to do what feels like it will work for the MVP. If needed you can always refactor your code later because no software is ever "done". It will get changed and reviewed by you and others later anyway. Your job is to deliver a solution to a problem, so focus on that one thing first and try to not get hung up in the "right way". The stakeholder cares more if the problem they have is being solved.

Polishing your code can take some time. You can refactor your code, write tests, and restyle your components all day long, for weeks, or months. Pump some extra estimation time into the project for all the back and forth that you'll do here. Hopefully by this point, your project has solved the core problem, and it is mostly deliverable already. Use your time to make it feel good to you in the code, rename variables so you can code search more easily later when you find a bug (trust me, it will happen). Make it as easy for your later self as you can. If it feels dirty, clean it up, you probably won't know how to read through it later if you can't even read through it now.

In a few bullets, let's summarize

  • Remember to gather your requirements for more accurate estimation
  • Build an MVP and don't overthink the design too much. Find something that will work and commit to it.
  • Polish with the remaining time that you have, clean it up for your future self and other developers.

Don't Get Too Comfortable

This sounds like a downer section, but it does have some good pointers at the end at least. These opinions may reflect only my specific experience, and might not be the same for other companies, so take this section with a few "grains of salt".

This was one of the hardest lessons I've learned in my career. DO NOT get too comfortable with your great position at any company. Once you've landed a job, don't sink in and forget about yourself outside of that position. If a company has a need to let people go, for better or worse, they won't hesitate to keep their business flowing without you in that position. Finances win in a business, and if you're making too much of a dent on their payroll, cuts will be made, and you have to be ready when that happens.

Something to consider...

Companies hire you with many promises and benefits coming your way.

  • They might say over and over how great they treat their employees.
  • They promise that you'll "be taken care of", and that they treat employees like family, etc.
  • You might receive many great benefits that you feel like you couldn't live without.
  • On site gym, insurance, etc...
  • Competitive Salary
  • The list goes on

All benefits grouped together are just Golden Handcuffs, and you have the power to wear them, or not, you have the key. A company keeps you employed by enticing you with these things that are very desireable to have, so you may willingly keep the handcuffs on, and I kept mine on for too long.

There were multiple times where I considered moving positions, mostly just to try something new because I was starting to feel stale in my position (I wasn't learning much of anything new). But, every time I was really thinking of leaving I'd somehow get a raise or a promotion, or I'd consider the value of the Golden Handcuffs and decide I was fine where I was. I felt like the company really valued my work, and in turn I felt very loyal to the company. They were taking care of me, and I was doing my best to push the company forward.

But, hard times came, and I was ultimately let go, even though I thought I was actively making a difference and that they said they were very appreciative of my work. This can happen to the best and worst of employees, and it was a complete shock to me and my family when I came home jobless. I was not ready for starting a job search... So I want to share some tips to avoid the pain that I went through.

My tips for avoiding some of the harsh reality of being let go when you thought you were safe and comfortable

  • Always be ready to enter the job market, comfortable job, or not
  • Practice software development OUTSIDE of work (all my portfolio work was in private repositories so I had nothing to show to potential employers...)
  • Create and update a public portfolio to showcase your best work
  • Journal or blog about what you've been learning

Your goal in a job application, or interview, is to reduce the risk a company takes in hiring you, so show your work and progress in any way that you can!

Keep Learning

The biggest game changer of my entire career, which has completely changed how I feel about myself as a developer, has been creating a habit of daily developer practice outside of work and blogging about it. The goal here is that you are able to share all of that development experience with potential employers once you hit the job market again. Don't stop learning, once you do, you'll get comfortable, and as I explained up above, getting too comfortable can be a scary situation if the stars align wrong.

I try to work on side projects before work, for 1 hour a day. Do what works best for you, but find a good consistent time so you are always improving yourself and improving your marketability.

Ok, so, you want to keep learning, but what should you build?

  • Build something that provides you with experience in the tech you're interested in.
  • Solve a problem you currently have, with code
  • Do extra practice similar to a difficult work project so you can excel during work hours (might get you noticed at work).
  • Combine a non-technical hobby with tech. (Example, I created a parallax learning project with images of Pokemon Cards to figure out how perspective works in CSS).

If you can keep learning, you are employable, and companies will be lucky to have you.

Conclusion

I hope you were able to grab a few good tips from my thoughts. Just a a reminder and recap...

  • Be Practical with your work
  • Don't Get Too Comfortable at one position and company
  • Keep Learning new things

As I do these three things, I'm finding myself happier and consistently becoming a more capable developer.

Cheers!