During our day-to-day work, we need to very often solve code problems with new and unknown technologies. When landing a new job and technologies are all different, we have to adapt very quickly. There are some strategies we can use. We don’t need to learn a bunch of technologies overnight, this is not even possible as well.
By using the core skill of every programmer, our logic skills, we can solve tons of problems. We deal with logic all the time when developing code. The fundamentals of programming will be always the same as well. By knowing that the essence of every software will be the same we can get around with new technologies pretty quickly.
In simple words, software is a way to abstract a real-world problem and manipulate information in a way that will solve this real-world problem. Therefore, our main goal as software developers is to manipulate information in a way that makes sense to the real world. We are connecting the dots all the time when we are developing software. From the front end, we need to connect to the back end. We are connecting code, technologies, databases, and platforms all the time.
It’s challenging to work with new technologies all of the sudden but with the following strategies, it will be easier for you!
Understand the Big Picture
Without knowing what you will be developing it’s very hard to implement any code. Therefore, ask a lot of questions, understand what is the purpose of the software you are building, and understand the business. Reading software documentation, and asking the right questions in meetings with key people are very important actions that will help you to get the big picture.
If you get the big picture, you will be able to suggest optimized solutions for the problem the company is trying to solve. One other action you can take is to use the system and execute the main flow to understand what happens when the user interacted with the system until something useful happens.
If you are working with microservices, you can briefly understand what is the purpose of each one of them. By doing so, you can implement the right code for the right microservice, making then software maintainability easier. You can also do some queries in some tables of the system, and check the main tables to see what information is retrieved.
Adapting Existing Code Examples
When you land a new job and you don’t know technologies very well, you can rely on existing examples. Because even though you don’t know the programming language or technology from the new project, there will be probably every code example you need. Therefore, you just need to know where to find code examples in the project you are working on and you will more easily solve code problems with this strategy!
I used this strategy several times during my career and it worked pretty well. It’s also important to keep in mind that if you can improve the existing code you found, you definitely should do it! For example, you can create a component to make code maintenance and implementation easier!
To make the explanation above very clear, I will give an example. Let’s suppose you are a full-stack software developer and you need to implement a combo-box with Angular and you never worked with it before. You can search in the existing system where there is a combo box and then you can adapt this code for your needs. The same strategy can be used for the back end, infrastructure, platforms, and so on.
Debugging Code and Understanding the Flow
Code debugging is a crucial ability for every software engineer. Many times there will be bugs that are really mysterious and debugging the code will be a massive help. Very often there will be huge services that are the core of the system that is not easy to be understood. Therefore, what you can do is to debug this service to understand it better.
You will absorb the complexity more easily by debugging the code flow. Debugging is very effective with complex code, you will understand the code much faster! Debugging is even more useful when we have no idea about code behavior, which makes it a powerful technique to solve code problems.
Learn the Logging Tools In Your Project
When developing software with Java, one common logging tool is LogBack. That was enough some time ago but now in the cloud era, logging became far more complex. Now we need to know if the performance of our cloud instances is good, log information across different microservices, we need to build scalable software in the cloud.
The most popular tools to accomplish more sophisticated logging or debugging information are Datadog and Prometheus. If you have a reasonable understanding of those tools you can understand the software you are working on better.
You can analyze what services are invoked more often in the production environment so that you can learn what is more important for the business.
Use Just-in-time Learning Technique
There will be situations where we need to learn something new just in time. It might be because there is a necessity in the business to use a more sophisticated tool or because the team decided to use something different. Mastering a whole technology takes time, but learning it strategically is faster. Therefore, we can learn only what is necessary to solve code problems for the project.
To use the just-in-time learning technique we can use tutorials, articles, documentation, and so on. We can’t forget though that we can’t learn everything in a short period of time so even if we feel tempted to go deeper into the technology, we should try to resist it and get the job done.
Nowadays we can find tons of free content on Youtube for example and it’s a good idea to use that in our favor. Also, don’t forget that you can make research and study strategically when you are working. The software development area demands us to be constantly learning and practicing what we learned. It’s also part of our job to stay sharp with technologies so why not use a little bit of our work time?
If you feel stuck with the new technology, try to understand the fundamentals of the technology. If you don’t even know what is the use of technology it’s very hard to do anything with it. That’s where tutorials are very handy because you can understand what is the purpose of the technology.
Understand the Fundamentals
Without understanding the fundamentals we will never become proficient. No matter if we know tons of technologies and frameworks. If we use frameworks and we don’t even know why or how things work behind the scenes, we will be developing code almost in a blind way.
The same principle is applied to programming languages. Let’s suppose you work with Java and you don’t know it deeply, what are the chances of fixing a bug in the wrong way? I would say it’s very high. Fixing bugs in a shallow way always leads to the famous zombie bugs, we fix one bug and another bug is revived somewhere else. I know that in the cloud era unfortunately the focus is going too much to the cloud and infrastructure and developers are forgetting the importance of high-quality code.
Therefore, developers have to keep in mind that code quality is very important. If we are implementing bad code, bugs will catch up with the application.
The fundamentals of the cloud environment are also highly important to understand. Networks, protocols, and security are fundamentals that will help us to deploy an application in the cloud reliably. When studying any cloud provider, balance your studies to understand the fundamentals of networks. If you are studying Docker, for example, the fundamental is to understand the Linux OS well enough. By doing so you will be understanding better command lines and Docker will get easier for you.
Get Good At Searching Specific Solutions on Google
We have to search for a solution for common coding problems very often during our day-to-day work to solve code problems. But it’s actually not so easy to find an accurate answer on Google. It requires practice to find the right source of information. Unfortunately, the internet has tons of useless and misleading, outdated information. Therefore, we need to filter a good source of information to be able to solve problems.
Very often, we will find links to the famous StackOverflow site. Many times we will find what we are looking for, other times it will be frustrating, and the solutions will simply not work. That’s why it’s crucial to identify good sources on the internet, otherwise, we will waste a lot of time.
We can also look at the technology’s documentation. Documentations are often overloaded with information or there will be missing information but, in many cases, it’s the right source of information. There is also good documentation such as the AWS cloud provider one and bad documentation.
Asking the Right People
There will be many situations in our jobs where we will have a very specific code problem and we simply don’t know enough technology to implement an optimized solution. Knowing the right people to ask in those situations is a great way to build good relationships at work and solve code problems.
No developer will know every single technology deeply, that’s because it requires plenty of time and effort to be really good at technology. Therefore the old ability to get along well with other people is very useful when we need to ask and discuss a difficult technical problem.
To figure out who to ask, you can simply ask around. Ask your co-workers who are the people who know about a specific business area, or a specific technology. People know who to ask, and usually, you will find this information very quickly. You can even create a centralized page, for example, on Confluence where you point out all the people who know a specific area very well. By doing that you will always remember who to ask and you will be ‘automating’ this process for new employees or other people who forgot who is the specialist for the problem.
Understanding Most Used Technologies
At any job, there will be always technology that is used more often. It might be Java, Python, Datadog, Docker, Kubernetes, AWS, the list goes on and on. All the mentioned strategies above are very useful but they should be temporary. What you should rely on is always your consistent training and studying, this will be what will take you to the next level.
Depending on other developers to solve code problems is not a good strategy, this will harm your career and will limit your growth. Therefore, it’s MUST for you to create a plan to have consistent growth in a way that every day you are a bit stronger. Your ability to be a self-taught developer is one of the most important ones you can develop. Also, keep in mind that the learning process doesn’t happen overnight, it will take some time. That’s why the deliberate practicing technique is extremely important to understand.
In simple words, deliberate practicing is a strategic way of practicing that will improve your skills. Musicians do that, the best in the world musicians have this commitment. They play the same notes again and again until they have all the notes ingrained in their minds at a level they don’t even need to think to play them. We can apply the same principle to software development. We can create a plan to study every day for 25 -60 minutes a day by creating a code example or studying concepts with a technology.
Then once you get good at the most used technologies, you can help others at your job, then you become someone very valuable to the company. When you become someone who helps others, you are in a strong position to get promoted which will help in your growth and your career.
Conclusion
We don’t need to be the mister-know-it-all at our jobs to create value, we need instead, to be strategic. By following the above-mentioned strategies we can get along in a new company in a more smooth way. We don’t even need to be very good at all technologies the company is using. However, we have to remember that it is crucial for us to develop a plan of action for mastering the most used technologies so that we become the go-to person at our jobs. Like I always say, consistency will be always the key to success.
Consistent strategic actions toward your objects will be always king even when you don’t feel like doing them!
That’s it for this article, don’t forget to leave your comment with your opinions, observations, or suggestions! Stay consistently breaking your limits!
Nice read. Well stated. Thank you!
You are welcome! I am glad you enjoyed it!
Very well articulated.