The Mindset Of A Productive Developer
Being a professional developer is much more than just being able to push quality code everyday, that is of course a part of it but this is only the beginning and in order to really progress and improve in a fast moving industry there are many skills required to not only survive as a developer but to thrive and it all comes down to mindset and attitude.
There is no denying that working as developer has some speculator high points it also has some horrible lows and as a result early in your career you will get tested with this cycle. It is one that never really gets easier as you develop the complexity only increases, or at least it should be else you may have gotten yourself stuck in the first dangerous area, the comfort zone.
The Comfort Zone
I've seen many good developers get trapped in this nice and comfortable place and it is very alluring and easy, especially after working hard to get to where you are, you are comfortable as you know the project, the people and you are getting a decent wage. As a result you decide to jump on the easy tasks or the tasks you are very aware of the area, you know usually what is required ahead of time and this allows you to take your time and slowly move the tasks just enough and this is a very dangerous place to be in.
It is important to always be expanding your skills and pushing yourself to push past the absolute minimum and take pride in your work, most importantly you are doing this for yourself not for your boss or company. I believe learning to work for yourself is a vital skill in any profession but it really shines in tech as there is always more you can do to improve your work, be it adding in some additional UI flourishes or some heavy refactoring every project has areas you can work on to improve, the important factor is to not detract from the main work and objectives with these extra tasks. Now it is great if you add in an additional ten unit tests but it is a waste if those tests are poor tests with no real purpose; It is great if you refactor a messy and complex class into smaller classes, it is not great if you add additional 1000+ lines of changes that over shadow your 50 line change PR.
It is all about balance and finding meaningful ways to add extra value, test new ideas and generally expand your own understanding in a reasonable framework. Of course having outside personal projects is also a brilliant way to explore a lot of new tech you don't get your hands on during the day or push you to learn additional areas you are not so up on.
Side Projects
I know a lot of great developers who don't really do side projects so I am never going to say it is something everyone has to do, but if you making programming your hobby as well it not only shows the passion you have but you will develop and advance in ways you otherwise would never be able to. When you spend time building projects, deploying projects playing with CI/CD pipelines, although you may be using much smaller scale items and probably not even the same technologies as your company but you are learning valuable skills which you probably would not be getting in your normal day job and it is expanding your knowledge across the stack which further deepens your knowledge and allows you to start thinking more.
Another thing with side projects is usually it will just be you, or maybe a small group but you usually have to rely on yourself a lot more as you can't just go find someone more senior to fix the problems you face, it will force you to take ownership of your work and grind through those errors that slow the progress to a crawl. A lot of working in development boils down to how tenacious are you? Eventually you will crack the problem it just depends how long it will take you and the reality is this never gets easier as once you crack one thing the next thing further down the road is even more complex a bigger and you will have to grind it down as well. There is good reason people burn out or exit the industry and this is the reason, it is never easy.
I do believe personal projects help you grow greatly and providing you set yourself clear goals and don't try to do everything in one go you will only learn and grow from them. This all comes down to one of the key mindsets you need in development which is a grown mindset.
The Grown Mindset
Technology is an industry built on imperfect solutions, there is very rarely an objectively right solution, there is probably many that are down right bad but the important thing to always keep in mind is if a case can be made for that solution it will have some merit. A grown mindset puts you in a place in which you understand you don't know everything and realistically never will but this is fine because you are aware of what you don't know and as a result you don't push an air of over confidence. Once you start to believe you know everything you start to face bigger problems and end up in a situation in which you just can't grow because you won't let yourself.
It is of course always important to put across ideas you have with conviction, however it is equally as important to take criticism and if others come back with logical discussion points around it to re-evaluate, now of course people don't like to admit they are wrong, especially as they get more senior but admitting when you are wrong gracefully is a vital tool and very important to allow you to grow meaningfully especially into more senior roles. A common view is you will be reflected by the company you keep and this is a common idea and one that is important to ensure you are moving in the right direction.
The Company You Keep
It is a common held belief that the circles you move in will dictate to some extent the direction you take. If you spend time with millionaires you are more likely to be more financially successful; you spend time with smarter people you will raise your own intellect. Now the converse is also true and to what extend this plays into things is always up for debate but it is easy to see how clusters in all society move in similar directions showing that the company you keep is important. I firmly believe in order to improve in development you need to find people better than you to somewhat learn from, it doesn't have to be a direct mentor although that is ideal it is even great to just find smart people to talk about new technologies and general areas to improve your own knowledge and understanding, it is always a surprise how far a few conversations with interesting people will take you.
Compete With Yourself
The fact of life is there is always going to be someone better than you, there is also always going to be someone worse than you that shouldn't matter to you because you are neither of the other people so why care too much about their trajectory? It is of course easy to fall into one of two mindsets of looking at people way above where you are and seeing that as an unattainable goal which can be very disheartening. It is equally as easy to say you are doing "good enough" as John over there is doing a worse job then you. Neither of these views are really that useful to have as you will not progress and just languish in mediocrity.
The reality is the only thing you should be benchmarking youself against is yourself, usually your last year you and viewing how far you have came. I always find this important in December to look back on my year in a personal introspective retrospective and view what have you acheived? Did you acheive as much as you had planned to, if not why not? How can you keep pushing forward in the new year? I believe it is always important to have some high level idea of where you want to go be it starting your own company, getting a promotion or moving to certain companies I believe you always need some target to keep you on track. It can be reasonably vauge but it is something you need to check in on every year and ensure you are still on course and if not correct that.
I believe this is the only way you can actually keep motivation and focus, some perspective on the bigger picture and when you achieve these goals reconsider the next step. When it comes down to it it is up to you to push yourself along your career no one else can do that for you and it really just comes down to how motivated you really are in achieving your goals, but first you need to create those goals.
Photo by Benedikt Geyer on Unsplash