What's the one thing you would do differently if you could travel back in time to where you started your career / coding journey?
So for me, I would definitely tell myself to FOCUS on one language if I could travel back in time.
1. What about you?
2. What kind of advice would you give yourself if life can rewind and replay?
I'm asking this question because it allows me learn valuable lessons / insights from others' story! (If you don't mind sharing!)
As always, Thank you for your time in reading this post and sharing your story!
I wish you all the best & take care of yourself!
From my experience, one of the biggest mistakes I did was blindly copying code from Stackoverflow/ Github without understanding each and every line, be it CSS in Web development or Python in Data science. Later I understood the importance of understanding what each and every line does and why that line is required in the first place. This is especially important when the code breaks or when we want to add an extra functionality which we may not be able to find elsewhere.
Nowadays, I try to write piece of code on paper or text editor without referring to any external source on Internet or the past code I wrote (as far as possible) . The more I am able to do it, the more it gives me the confidence that I can code without any sort of help and by just relying on my brain. My teacher, who was a professional in Cisco for 10+ years always used to say that the code we write on a piece of paper should be so perfect that when we actually execute the code on a computer, it should work in the first instance itself. So this is the level of perfection I am working towards each day.
Like any other skill, practice improves, and commitment plus geniune interest is valuable in the job market, in addition to being fulfilling to yourself!
The cool thing is, it's never too late. You can always code more, any day any time. Look for problems in your life and see if you can solve them with your skills. I personally swing the way of making practical things. You can do leetcode and all that, but if it's not your cup of tea, you're not going to have feel as satisfying and rewarding to keep doing. Getting good at what you love opens doors to careers doing what you love.
One thing I would also add for your particular case, is that you didn't lose anything by trying out Python. The thing with programming is that it's so many different things, and just like real life, you won't know if you like it 'till you try it. Exploring a different approach to code and just getting that experience and perspective expands your mind (think about how, if a problem comes up that would work nicely in Python, you are more equipped for it) and helps you fine tune where your interests lie.
The tech field is rapid and changes often, so you always have to be light on your feet to adapt to new paradigms, languages, design patterns, etc. No matter what you do, never stop learning!
Apart from above I dont think I would alter anything in life.
I do agree that it is helpful to focus on one language first to help understand the foundations of coding, but don't be afraid to try others! After you pick up one it is easier to pick up another.
The biggest thing would be to find side projects that interests you the most and start building hands on experience through that. Plus, is that you are also building your portfolio too.
To give you an example from my life, I spent one winter break building a website. It was miserable, and I've decided that I will never be happy as a web developer. When time came to apply for jobs, I knew what jobs to avoid. That really helped narrow down my search, and prevent me from working a job I had no interest in.
As for what I would change if I were to go back in the past, it would be to work more on personal projects, and focus on the foundation of computer science (in demand languages will change, but the foundation never will). I would have also liked to read tech blogs when I was in school. Software engineering field is constantly changing, and unfortunately, a lot of college classes and concepts begin to get outdated fast. So it's important to be up to date with latest news from tech leaders/innovators.
It's great that you are at a stage in a life where you ask such questions.
First of all, there is nothing wrong in trying out new things. You would not know that you didn't enjoy Python without trying it out. There was something that attracted you to Python first and then you tried and then you didn't enjoy it. There is your lesson, it's not waste of time or resources. It is an important lesson for you that you don't enjoy Python. Now and in the future, "whatever your initial motivation to try out Python" was.. it would not come back and haunt you.
Yes, there are many-many tools and many-many languages, some would keep evolving, some would get absolute, new tools/languages will come in the future. Most important thing is to keep learning and improving your skills. But you can't do it for all of them. You can't learn the entire ocean. Take baby steps and you have to do trial & error as you move forward. It is very much like how you did for Python.
Other than that, I would highly recommend to take breaks. Take time off between learnings. Go out, spend time with your friends/family/nature. Pause and shut off your brain from constant learning, there is huge research on how such constant breaks of shutting your brain completely for sometime would help you to learn new things more efficiently and with focus. Breaks constantly help you re-evaluate what you are doing in professional and personal life rather than just going after what rest of the crowd/industry is going after. (I assume you wanted to try out Python because that was the "hottest" language in industry).
When you are trying out something new, always make sure you are doing it with full heart and you are doing one thing at a time.
Always prioritize your personal life over your professional life.
I have learned these lessons in hard way in my life :)
My high school was primarily focused on going deep into science and maths, while that was an amazing experience, I shut my eyes to anything other than my academic curriculum. Understanding the application of those concepts in the real world, connecting with people who were applying science and maths to solve problems, and learning from them is something I wish I can tell my younger self.
Similarly, my undergrad experience was centered around building one huge project for three years. I went deep into the project and learnt how to solve problems, create teams, recruit people etc.. While that was a wonderful experience it would have greatly helped to have a mentor from the industry, being aware about how others are solving similar problems, and the different technologies that are out there to solve similar problems.
That being said, precisely _because_ languages come and go, I would focus the majority of personal development efforts on more transferable skills than on specific languages. Examples might include:
Objected Oriented Design Patterns, Functional Programming, Systems Architecture, Test Driven Development, Continuous Integration, Continuous Deployment, etc.
These types of skills translate across languages and technologies and are more durable as a result. In addition, they're super important in the industry but they aren't well taught in school if they're taught at all.
If I were to travel back in time I actually wouldn't do much to change the first few years of my career. Everybody is sort of doing their best to figure things out for the first few years and that's fine. I would go back to the point at which was just starting to become a seasoned developer. At that point, I would be more aggressive at trying to find jobs where I was surrounded by people much smarter and more skilled than myself. I spent some years coasting on being the resident expert when there was much more I could have been learning if I'd been in a more challenging environment. (Also, I'd read the "gang of four" Design Patterns book and everything published by Robert "uncle Bob" Martin.)