This post is mainly aimed at young developers who start their career in the world of work. However it is very likely that you, as an experienced developer, also feel identified with everything you are about to read, put yourself comfortable, go for a beer And enjoy reading, I hope this help you a lot.
When you are a beginner in the world of web, mobile or desktop development, there are two common cases that happen; The first one is where you feel able to do everything the client asks, after all, we have Google that will always help us if we need it, or we have a person who gives us feedback and tips to improve the code we write. The second case happens when you feel scared because you think you can’t do the job by yourself, this case can be solved by having a mentor to accompany you in the development process, and if he belongs to the same project that you are is even better, since he is familiar with the application code.
But, what happens when you are new in the development world and your boss leaves you alone in charge of a project that has gone through several hands before you? This may sound good or bad depending on the project itself because the sense of responsibility grows exponentially. Being the only developer of a project entails a series of emotions that I will describe below:
"I can do everything they ask me."
Usually, this feeling is manifested when you have had school experience with the technologies that the project handles, but what happens when you have no idea of what technologies are being used in the application? It is normal for the developer to search and learn all the necessary technologies as well as the tools that facilitate the use of these and attack all necessary tasks.
"I think I can do it, I just need to become more familiar with the code."
This is very important, before programming the first line in a project, that went through several developers before you, so make sure you understand how it works, why it was done in that way, and what are the limitations of the project and identify opportunities for code improvement. Being critical of your project is very important so that you will become aware of why you are going to do a task in the way you are going to do it. I consider that the first week of work in an inherited project must be taken to analyze the code, understand how it works and define if it can be improved, this will make the development speed good once you start writing code.
"Why is this feature made like this? What if I optimize it?"
This has to do with the previous point. The first thing to do is to contact the developer who was before you in the project when he belonged to the same company as you, he can help you to understand why things were done like that. But there will be times when the person who wrote that code is not reachable and other developers could fail to understand why it works all in that way. If you really see that you can optimize code and it's not going to take you a long time to do it, it's worth spending a couple of hours to improve it, always taking care that you will not break anything in the application, it's about contributing to a cleaner code.
"Why there isn't any documentation?"
A clean and well-written code will never require any documentation, as it must be very expressive in terms of naming variables, methods, functions, etc. The comments are useful to clarify situations that might be confusing, for example: "The variable is called 'carWheel' because there is also a 'bikeWheel' and both belong to the 'wheel' class." If the code speaks for itself, it doesn’t need to be documented.
"I am stressed, I have delivery tomorrow and I haven’t finished yet."
This case is very complex for the simple fact that time and stress are not good friends. In these cases what I recommend is that you raise your hand and ask for help with someone with more experience so that you can get your task done, this will be very constant at the beginning of your career as a developer, you should not feel bad for asking, on the contrary, you must feel with all the confidence to be able to ask questions to whom you want, for this you must follow a series of steps so that your question can be answered easily:
* Try to solve it yourself before asking: Try different ways to do it, research the internet possible solutions to your problem and try to implement them.
* 15-minute rule: Once you tried different things and didn’t work anything that you investigated and it has been more than 15 minutes since you are blocked then you can raise your hand to ask.
* Prepare your question: Before going with someone to ask you must create the question with useful information so people can help you to solve it. Include the problem you are having, the reason of that problem, what you want to solve that problem and everything you did to try to solve it. The latter is very important if you haven't tried anything to solve it is very likely that they can’t help you with so little information. Your question should look something like this:
"Hello, I have a problem and I would like to know if you can help me. I have to validate that the date exists, for example, don’t write February 31st, I tried with ruby to take the value of the drop down where I request the date and make it a .to_date but when I receive the value of the date it is received as if it were March 3rd, I mean, it moves the date for 3 days and March 3rd is a date that does exist and I would like to know if there is a way to do the validation of the day."
With this question, you are informing the other person of what your problem is, what possible solutions you have tried and didn’t work and what it is that you want to achieve at the end of the task, in this way it will be much easier to help you.
"The designer asks me for things that are impossible to implement."
Usually this is a phrase that says someone who is afraid of the front-end, this is very common because for many developers, front-end is very difficult to implement and when they don’t have much experience, it can be a real nightmare to add a photo gallery when there are many tools that allow you to add these galleries very simply. Telling the designer that a thing can’t be done isn't valid if it hasn't been tried before. You should let him know that you have never done something like that and that it may take some time to implement it and analyze if it's possible by the type of project that is carried.
"I can’t do this, this is the end."
This is more common than you could imagine. At the beginning of your career as a developer you can run into projects that are very difficult to manage, what you should always take into account, is that you are not alone, there are many people willing to help you with pleasure and this will help you to take confidence little by little, if you do not know how to do something, ask, don’t stay silent, someone will come to help.
When you work for a medium or large size company you must have the confidence that you aren't less than anyone, you are as valuable to the company just as the oldest member. Stress is something that will often lead to a non-optimal mood to solve a problem. Here is a tip: do a little exercise, physical activity helps to reduce your stress levels and keeps your body in a healthy way, as our profession demands to be seated for long periods of time, which causes slow metabolism and therefore you gain weight. There are only two types of programmers, the fat and the fit.
Finally, if you feel identified with all that I mentioned above, I send you a virtual programmer hug, you are not alone, I know that you can achieve what you propose!