I'm definitely not one of these wizard kids that started programming at 13 and were a genius by the time they completed 20. I started programming at 18 years old and I started with Java. I was terrible at it, the first time I saw a
for loop I thought it was magic.
I'm 25 now and have been programming since then, 3 years professionally and two of them coding in Java.
I went to college get the title of BSC in Software Engineering, I thought all my colleagues were at the same level - level 0 - but boy was I wrong. Almost everyone there could program, I did not. That made me the underdog, and as such I had to learn and study harder than most people.
From 2011 to 2016 I've been studying Java, it's patterns, code styles, best practices and idiosyncrasies. I'm sure I barely scratched the surface of the language, but after some time I started to feel productive. That's when I landed my first job as a Software Engineer Jr, back in January 2017.
Fast forward to September of the same year. At that time I was into Machine Learning and had already developed a few ML algorithms in Java by hand, then I experimented developing a few of them in Python.
At this point I already knew how to code and collaborate. Picking up a new language was not going to be as hard as it was the first time, but Python was so friendly and the community so active that I barely had any problems.
It took me another year to get a job as a full time Python developer, but today I'm way more productive in Python than I have ever been in Java. It feels fresh, clean and powerful.
It used to take me a day to go from a Factory to a full REST endpoint with Java, now it takes me a couple hours to model a basic CRUD application with Python and Flask.
Python also has its weaknesses, after I transitioned what I miss the most is the static checked type system. That saved me a lot of trouble and ensured my code would work wherever I needed to use it. In python to remedy this, I use the type hints and doc strings. It is still not checked and still gives me run-time errors, but when your software is growing, it can save you a lot of time that you would spend reading and refactoring your old code.
I started reading and experimenting, published a few articles on Medium in Portuguese (my native language), started tweeting about it and got some contacts. I suggest you follow the same path, study, write about it, tell people about your experiences and teach.
I started programming fairly late considering my peers, If I did it, you can do it too.
Did you change paths in your career? Tell me in the comments!