Last December I completed 7 years as a web developer but I still feel like there is much to learn from others whether they are more experienced or not.
In today's fast-paced environment it is just a matter of days or week to get started on technologies or learning a new programming language.
But I believe some things you will learn with time only, So I will share my experience what I have learned till now.
When I started my journey to learn programming every other hour I am was stuck on something for hours or even days (i still do some time :P).
I always felt like the problems are overwhelming and there is no end of those. I was always looking for help from senior team members and this went like for like the first 3 months in my first job. Then one day my senior gave me a golden mantra! He said
Pay more attention to error details. I took this hand to hand and digging that error into more detail and was able to understand the pattern in a few days. From there the learning process become a lot simpler than before, and I was able to avoid the common problems just by observing the error and there patterns. It also helped me to not disturb my seniors who are working on more complex problems
No problem is stupid but my small mind took a loooong time in recognizing and digesting this fact.
I spent countless hours to found some very stupid mistake or some missing step on my task. One part of my brain asking for help but another part was telling me to not make my self stupid and solve it on your own. Trust me it is a very bad state to be in. I myself have wasted a lot of time in this state. So if you are just starting your journey don't hesitate, Just ask.
I would like to add one more point here is that you need to respect others time as well. You should not constantly ping the other person just be patient and wait and use other resources as well like StackOverflow to look if someone has already solved the same problem.
After 2 years of learning and constant practicing, I become much better in programming compared to when I started. The benefit of working in a startup company is you are never out of task so my plate was also full of things. Things were coming at faster pace so I have to increase my pace as well to finish the task. right? I thought the same and made mistakes.
Quality factor started to decline, I was having more bugs in code the design patterns were not followed properly and got a lot of 'WTF!!' during code review sessions. I understand time is an important factor and it is also important to complete tasks in reasonable short span of time but you shouldn't compromise on things which will backfire later.
How to handle such a situation? Take your time to analyze the task consider all the parameters (Writing test cases, testing, fixing bugs if any), calculate some rough time and see if you can do it within the time limit. If you don't know how to analyze take some help from senior/peers members in your team. If you see the time limit is way off then you should say 'No' for the time limit and ask for more time to work on it.
Having a mentor is the best thing you can have when you are learning to program and trust me equally difficult to find one as well. I was lucky that I found it when I got my first job. Most of us are at the starting point of something and seeking a mentor and it makes your life a lot simple if you find the mentor who can help you in taking the right decision. I will tell you my story, I was going to join some organization which was paying me way more than my salary at that time, I talked to my mentor about it and he gave me some insight about it after listing to him and declined the offer and a few months later I heard about the same company lost a big customer and now firing the employees for cost saving. I got saved, Phew... This is just one of many ways a mentor can help you. How to find you? There is more than one way join some slack channel, on Twitter follow someone you admire and many more.
Sometimes we may feel the requirement is not very useful or will have bad user experience and due to that feeling we may lower priority of the requirement
For example in our application we had a feature of record editing already, in the later phase we received a new feature request to edit records using CSV upload. Initially, we thought it was not much necessary as we already have edit feature but as we got an idea about the users that they are already very much familiar with spreadsheets and it will it much easier for them to edit multiple records from CSV in one go, we implemented it in our application as well.
So When you are working on some new feature try to visualize it from a bigger picture, think how it can help the users of your application, What can be the possible ways users can interact with it.
Developers are always trapped in learning cycle and fortunately, other developers are there to help us. They tell us what is our mistake or what we missed out. This is one of the ways our community has grown and become so helpful to one who is in need of help. So whenever you think you can, help others.
It is very hard to keep yourself motivated and focused for a long time. It is very common to a programmer as they get burned out because of the monotonous lifestyle. You should not overlook the life you have outside of your computer so you should keep some time for your hobbies or anything which makes you happy. Do something beside coding like hitting gym, learn to play some musical instrument, read a book, meet family or friends. Trust me you will be a better version of yourself.
So here are my tips till now. Hope it can help you :)