This post is about certain things that I have learned and realized over the past year and a half working professionally right after college.
These things are reminders for the future-me because it is very easy to not follow them, so I am talking to myself as much as the general audience with this post.
Participating in communities is a huge motivation for any sort of work that you do. The community helps you when you stumble, brainstorm ideas, and in general makes your work very much a social activity.
The community can be your local community through meetups, Discord channels, Twitter, Reddit, etc. One of the interesting things that I have personally noticed is that when you don’t feel like getting something done, involving yourself in discussions (just by reading them too) can be a huge push to start trying out things yourself. I have been part of a few communities over the last year. I have been a listener for most of the part and will be looking to contribute more and in different ways.
One of the reasons that pulled me into React was the amazing community. Check out the Reactiflux discord channel, the community on Twitter (the React core team, Ryan Florence, Kent C. Dodds, among others), the FunFunFunction channel on YouTube etc.
As an aside, MPJ was one of the biggest reason for a lot of open-minded thinking that I started doing after following him. You should definitely check him out!
Knowing just the API of a thing is good but trying to understand the reasoning for the concept can be more fulfilling many times. It helps you to see why something was created or developed and how it fits in the larger picture. It also makes you realize that a lot of what you learn is readily transferable to various other things. And that can enable you to concentrate on building solutions rather than keep worrying about the tools.
Another advantage of this, that I have picked up, is that it makes being empathetic towards a library’s (or anybody’s) decision easier. Being interested in why something was done a way it was will encourage you to not dismiss things quickly (which I notice a lot of people do, rudely at that) as you’ll be eager to know the reasoning behind it before you form an opinion.
This does not mean that you try to learn EVERYTHING in the world. I think that is impossible anyway. This is not even implying that you try to learn everything about your project that you’re currently working on at work. But I think it is highly beneficial to understand how different moving parts of your application interact with each other and how information is passed from one module to another.
Not only does this make having a conversation with different teams and people easier and more holistic, but it also gives you immense empathy towards everyone who’s working in your team because you realize the importance of their work.
This is not for résumé padding but rather for having richer conversations.
Read things that you don’t get 100%. Or things that are currently beyond your skill level. You may understand only 50% of it or maybe even less but it feeds your curiosity and makes you struggle through the content. You will do your own research, look for things, ask your own original questions.
This is also a humbling exercise because you will realize that there are things that you don’t understand and have to work towards it. But there is a fine line between that excited feeling and a feeling that says that you suck. Whenever you’re going to read/learn heavier stuff, consider it a judgment-free zone. Know that it is okay to stop at any time and that if you takeaway even one thing from the whole exercise, then that’s a win!
This is probably the most personal point in this whole article and it may not work out the same for many of you.
The biggest reality hit you get going from college to a job is the realization that a lot of work is not that fun always. You end up doing a lot of boring stuff or at times just doing random things or not being assigned any work many times. A lot of my friends from college who started working also faced this.
This can start getting on your nerves, and give a sense of unfulfillment, especially if you’re not that mature in this space (as we generally are when starting out).
I have found that having your own thing off-hours is absolutely crucial to a healthy mental state. This doesn’t necessarily mean just coding after work. You can indulge in your hobbies, learn something new etc.
Your office work does not define who you are but it is still a huge chunk of your day. The kick of it is that it is unstable and can change anytime. But doing your own thing is in your control and you choose what brings you satisfaction.
There have been many times when I have felt like shit for not being as productive as I would have liked to be. Be it related to coding or music or poetry et al. And I think many people feel so from time to time.
I want to tell you that it is completely natural to feel so. Go out, do what you like. Please go easy on yourself. Along with the feeling of not being productive is this strong feeling of worthlessness as you feel that you’re not improving at all. Please go easy on yourself.
People learn and improve over a period of time but we generally are unable to assess such progress which makes us think less of ourselves. Just breathe and come back to the problem after a day or two. Bear the burden of one day at a time. No more, no less.
If you feel that such a low bad feeling is persisting over time, PLEASE go and talk to someone and seek out help. Depression is real and a very ugly thing.
This one is probably something that requires major discipline because even relatively good intentions hamper sleep. The temptation of working on something and being productive also makes us feel that we should stay up and continue working.
We feel that we are trying to work hard and hone our skill but it just hampers our progress in the long run. I used to stay up a lot in college and after a point, I realized that I just felt tired a lot all the time. I wasn’t fully fit any time during a day. I have seriously started getting regular sleep and I feel fresher and my concentration levels have also improved. You need to find the right amount of sleep for you, some people need 6, some need 8. Don’t listen to anyone else on this.
You’re not saving 2 hours if you sleep 2 hours lesser than what your body needs, rather you’re trading in 2 hours for lower efficiency throughout the day.
Caring for the code that you write is a very good thing. It allows you to write code that is readable and maintainable. But you need to stop caring about it as soon as you close the editor. Realize that writing code is just one part of shipping the product.
This has two paths to it. First is about holding the code you write too close to your heart. This makes taking feedback difficult and code reviews seem like punishments. There are people who know more than you and these are people who are looking at it from a different angle (think of how wise you are advising on your friend’s relationship but suck on your own). The code is just the implementation detail of achieving an end goal which is the product that you’re trying to build.
The second scenario where we fail to realize the bigger picture is when we don’t care about writing tests and documentation, rush through the deployment workflow, look down upon discussing solutions and such and such in favour of just writing hamfisted code and push features as fast as possible (managers and programmers both suffer from this).
I have struggled with both these scenarios, the former one especially, and I have noticed that not only does it hamper the quality of the product that you’re building but it also makes it difficult for you to grow.
Deciding what to learn is a difficult choice in today’s world. Everyone has an opinion about what you should do or which path to follow and many of these opinions should be respected. You can choose what to learn next, based on the current trend or based on the job market space etc etc. But that should not deter you from following your curiosity.
I am not advocating being unemployed and learning a dead technology because that isn’t pragmatic. But once you are in a job and are looking to learn something, go where your curiosity takes you.
Sometimes satiating that knowledge thirst is so much more important that it doesn’t matter if no one is paying you. This is true for tech, as it is for any other skill that you want to learn. Many times I worry that learning something isn’t going to pay off in any form in the future. This is a regret waiting to happen.
Besides, learning anything will help you grow and make you a well-rounded person. Aim to be that person.
This is something that I had to learn the hard way. For the first 2-3 months of my career, I would try to learn in different verticals. Whatever sounded cool that day, I would try my hand at that. Buy a course, watch a youtube playlist, read up a tutorial series etc. While there’s nothing wrong in doing so, the pain is that such a practice doesn’t stick in mind and fades away quickly.
I barely remember any python despite buying two courses and doing 80% of one, which included three or four projects. I am starting to forget the details of the machine learning course that I completed just last April.
The core reasoning for this is the lack of persistence. Learning less but being persistent in what you’re learning is infinitely better than putting in 12 hours a day on different things every day. Be involved in what you want to learn over a considerable amount of time.
That is pretty much it. I am still very inexperienced and have a lot to learn. I have trouble following the above points consistently and I’m hoping that I get better as time goes on.