The day you stop learning is the day you begin decaying.
- Isaac Asimov
I strongly believe in this quote by the Isaac Asimov. So much that I have made it a habit to constantly nudge myself for any learnings that I could take out from any scenario. I don't know whether it has helped me in some profound way or not but I can say for sure that now I am more aware of the mistakes that I did in past and make sure that I do new mistakes rather than repeating the old ones.
Big projects have a lot of things inside them which sometimes don't make sense to a newbie. Make it a habit to ask people why things are the way they are? You will mostly end up with one of these
- Sometimes you will get answers which will uncover something which you would never have thought of. Amazing insights, cool implementations.
- Sometimes you won't get an answer or even after getting an answer you won't completely understand it. Give it some more time, maybe you will get it after a month or so.
- Sometimes you will know that its there because someone messed it up. Bad design, incomplete processes, legacy practices. Make it a point to discuss it with your teammates and manager. I know it's not your shit to clean up but you should do it if you can. See the broken window theory.
You will break things, learn to fix them quickly
You will break build, you will introduce some regression will cause a major bug or a functionality break, you will even break the entire product. I have done all of this and I know you will also go through this.
Move fast and break things. Unless you are breaking stuff, you are not moving fast enough. - Mark Zuckerberg
Take the full responsibility of your own work
It is your work to complete. You will have to do follow-ups, send gentle reminders and sometimes escalate it to get it done.
Be connected with people you work with.
Ask people about their work and believe me, most of them will be very happy to talk about. This gives you an opportunity to learn different parts of the system which you may not have the opportunity of working. This also builds good work relationships and people will be willing to help you and ask for your help.
Mastering your engineering tools.
Master command line either with bash or PowerShell. Became a pro at using version control. Be a keyboard ninja and master your text editor or IDE. This will save you a lot of time and frustration of repeating things. You can try writing bash or PowerShell scripts to automate your daily boring and repetitive work. Find ways to innovate in this space, create tools that will help you and your team to be more productive.
Don't get too attached to your code.
This is a very important one. People take pride in their code and it is a good thing to do but don't take it too far. Good code reviewers will give you a great insight and you will be amazed by the extent you can learn from others.
Make sure that you venture outside of your work occasionally by reading blogs, watching conference videos, glancing over research papers. This will keep you updated in this fast-moving world. Set aside a couple of hours every weekend to learn something new which is completely unrelated to your work.