My Programming Journey to Senior Programmer
Tags: beginners, codenewbie, productivity, programming
Published: 2020-10-18 15:03:29

#1. Overview

In this article, I'll speak about a list of things I tried or explored in my eight-plus years of programming.

*What worked for me and what I've left on the way. What I'll continue and what I want to start in the future.*

My journey as a Software Programmer started when I joined a world-renowned software services provider in 2012 as a Java - Full Stack Engineer Trainee.

Since then, I've tried numerous ways to learn, grow, and keeping myself updated/groomed in this rapidly changing industry.

#2. Technical Books, Tutorials, Blogs, and Documentation

I gathered most of my knowledge, be it basics or hands-on, of programming, technologies, and frameworks through books and tutorials.

For example, books like [Head First Java](https://www.oreilly.com/library/view/head-first-java/0596009208/), [Grails in Action](https://www.manning.com/books/grails-in-action), and [Groovy in Action](https://www.manning.com/books/groovy-in-action-second-edition), tutorials like [tutorialspoint](https://www.tutorialspoint.com/index.htm), [w3schools](https://www.w3schools.com/) helped a lot initially.

Also, I followed a few blogs like [javarevisited](https://javarevisited.blogspot.com/), [dzone](https://dzone.com/), [baeldung](https://www.baeldung.com/), and [mrhaki blog](https://blog.mrhaki.com/) to learn core/advanced features of various technologies.

Then, the official documentation of the popular libraries/ frameworks like [jQuery](https://api.jquery.com/), [Spring](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#spring-core), [Grails](https://docs.grails.org/4.0.4/guide/single.html), and [Hibernate](https://hibernate.org/orm/documentation/5.4/) was a big help.

Also, from the start, *I committed to myself to get hands-on with any technology or skill in just two weeks using any of the resources discussed above.*

Of course, mastering something is a long-time process. However, two weeks are enough to get started, be a little productive in our work, and reduce the learning curve to a modest time-frame.

It helped me a lot in all these years and will keep it going.

#3. Presentations and Demo Sessions

I like to attend/host technical presentations & demo sessions. They give a quick overview of the technology/software and helps in catching up with the updates in the industry.

Also, most of the IT companies have learning programs that include webinars, sessions, and presentations that help the employees keeping themselves updated.

*If there is a skill that we are good at, we should share it with others for collective growth.*

For instance, I learned a great deal of Code Quality and Best practices from my seniors, design patterns, and technologies from colleagues, and the list can go on and on.

Similarly, I've hosted many hands-on sessions and presentations for various frameworks and libraries.

Therefore, **to keep up with a new version/feature of technology or to learn a skill, it could be a good idea to prepare a quick presentation or hands-on project**.

I believe this is something that we should do more and will keep in the loop.

#4. Requirement Analysis

As my career progressed, there was a need to start analyzing new projects/features based on technical and business requirements.

**Quickly I learned, it's always a good idea to analyze the product offering (software) from the end-user and client's perspective.** In the long run, this helped me to become a better problem solver and grew as a leader.

It's an ever-growing process, and we should follow it with due diligence.

#5. Stackoverflow

Without a doubt, I can say, all of us use StackOverflow for all our code queries or technical problems.

Then, there was a phase where [I started posting answers on the StackOverflow](https://stackoverflow.com/users/5440095/anshul). It worked wonders in improving my detailed knowledge of the subject (framework/technology), debugging, and problem-solving skills.

However, I couldn't continue my stint as a StackOverflow contributor for long. To follow a question and answer it with the best possible solution needed a lot of time and commitment.

#6. Online Coding Problems

Online coding problems provide a great way to come out of our comfort zone and challenge ourselves with broader categories of the problem - varying from technical to real-life scenarios.

Around 5 years back, I started using a few platforms like [codingame](https://www.codingame.com/), [hackerrank](https://www.hackerrank.com/), and [hackerearth](https://www.hackerearth.com/) for solving online coding problems.

Initially, I started to enjoy the journey. Then, I got obsessed with finding solutions. There was a time when I couldn't sleep well at night without finding a solution and code it through. Soon, I pitched the idea of organizing online coding battles in my company.

**Solving coding problems helped all of us in improving problem-solving skills and developing the much-needed ability to follow the requirements in minute details.**

Also, I was able to clear interviews with various companies, thanks to this habit.

However, now I couldn't spare much time to enjoy this activity more, but this is something that I'll continue.

#7. Personal Projects and GitHub

**Personal projects are a must for any budding programmer. Start with small programming sessions and gradually pick up to code through real-world problems.**

In my initial days of programming, I started working on a social networking site using the Grails framework and Groovy technology. 

I followed Grails in Action book to get the programming started. Along the way, I developed quite a good understanding of the Grails framework and architecture behind such complex social networking websites.

The learnings always come in handy when brainstorming for solutions behind tricky problems.

Not to mention, it's always a good idea to [keep your code in Github](https://github.com/SmartyAnsh) or any public repository.

Not only it gives you a benefit to access it from anywhere, but **it also improves your socio-technical profile, by which your future employer can take a look at your skills and shows interest in you**.

It happens to me on many occasions that companies/managers shown interest in my Github profile by checking out my repositories.

Also, don't forget to add README files with setup and info about projects.

Try following industry standards in writing the code to have better readability and easy to follow code. **Having a habit of writing code following best practices helps in the long run.**

#8. Client Proposals

As I grew in my career, my seniors insisted on participating in the discussions for various technical proposals/offering to the clients.

It was all about leveraging our talents to come up with the best possible solutions (within the cost) for customer satisfaction.

This kind of thing can be a good brain teaser and helps to understand the different needs of the client. With such brainstorming sessions, we can become a solution provider at various levels.


#9. Writing Technical Content

In 2017, I attended a session on writing a technical book. 

It opened a different world to me. I never thought of the diligence and passion required to write a technical book.

I always wanted to share my knowledge through various channels - writing technical content is one of them.

Two years ago, I came across an opportunity to write technical content for Baeldung. It improved my writing skills and provided me the opportunity to gather basic knowledge/hands-on of various technologies.

Since then, [I wrote a handful of articles for the Baeldung](https://www.baeldung.com/author/anshulbansal/). At the same time, [I tried posting technical content on dev.to](https://dev.to/smartyansh) once in a while.

Writing technical content is a big commitment. However, this is something that surely I'll keep myself hooked on.

#10. Thinking of an Idea for a Startup

I try to find and still finding a few problems or business ideas that can be solved using technology or a business process.

Not only this activity can make us a better observer, but this also has the potential to turn out a big thing in the future. 

**As we all know, everything in this industry started with an idea!**

Not to mention, it's an ongoing process, and I'll continue doing it.


#11. Finding Scope of Improvement

In everything I do, I know there is a scope for improvement.

**Once my manager said that if you don't find any scope of improvement in your six months old code, then you haven't learned anything for six months.** I truly believe in this.

As we grow and evolve in the industry, we learn new techniques, new principles, and improved ways of solving a problem. 

For me, it's the core trait to be successful in this industry.

#12. Things I Want to Do More and Try in Future

Thinking of an idea/business process is going to be continued. Other than usual, I want to develop an aptitude to think of the unthinkable.

Also, I want to be a contributor to open-source projects. As we all know, open-source software is so popular and is a thing of today's times.

At times, I freelanced to design/implement websites, but I should explore freelancing more and want to give more time to this activity in the future.

*In simple language, I want to keep exploring, improving, and enjoying my programming.*

#13. Conclusion

In this article, I took you through a series of activities that I tried over my 8+ years of programming.

**Many of them are very handy for most of the programmers. A few add charm to our socio-technical profile. And rest is how we want to enjoy working in this glorious industry.**

I'm not telling you which ones to pick - you can decide what you would want to do and what you don't.


Feel free to share what worked for you and what not, in the comments. Thanks for reading.