Backstory:
I am a self taught developer and been developing for over 4 years now with a recent introduction to real world experience as the company I work for is asking more and more from me to develop things for them. It's allowed me to upgrade my career. Although I feel like I am trying to learn too much.
The issue:
I feel like as a self taught developer that started as a hobby and now evermore becoming what is a job, the issue I feel is that I feel like I do not specialists in one specific language. I can be developing in python (preferred language) one day and the next develop in php/ golang ect. So although I have a good grasp of python for example I don't take it to its full potential.
Secondly this is also my hobby I enjoy to dabble onto many different projects and as a creative I have thousands of ideas and want to build them all but I feel like doing this I never really learn as I know a lot of very little and not a lot about one. I like python but I feel like i should learn something like java and specialise in that as most job opportunities in my location are involved with java.
Conclusion:
I understand that being in the work environment and in a small company I will have to take on many different roles, but when I am coding at home. Should I just stick to one specific language?
Has this or does this happen to anyone else?
Top comments (21)
If your work environment forces you to use many different frameworks and languages, then I would recommend to focus on one language / domain at home. Usually it's the opposite where you gain knowledge about one field at work and rather use the spare time to broaden your horizon (at least it's for me). While on the one hand it's good to have worked with multiple languages etc it usually doesn't help too much when applying for jobs with specific requirements. E.g. I made the mistake of adding c# to my set of skills in e.g. LinkedIn because I used it in side projects. From time to time I get job offers that require c# skills. Would I apply? Probably not because I don't feel I handle the language on a professional level. So my advice: find a side projects that forces you with the language/framework you would like to work with in your next company and focus on it. Good luck!
Yeah makes sense, I was just confused as I don't want to continue spiralling into using many languages ect, as cool as it sounds I wont ever become a mid level or senior level in anything If I keep moving like this. Appreciate the advise and I'll apply this to my home development!
A larger project that you can work on continuously is probably something that might be a good idea. I dunno, something like a server-based application maybe with databases. The typical example being a bug tracker like JIRA. Makes you have to use the same technology (stack) for an extended amount of time.
One of my favourite side projects ever was an emulator for the z80 chipset. And writing my own (bare bones) kernel. Both take some time, you certainly only use a single language (for the kernel probably C/++ or Rust).
And both are fun to play around with :)
Wow that’s quite impressive always wanted to write somewhat of a kernel but never thought I’d stick to it. Maybe its one for the books in the future 🤔
There is a cool article about it (if you want to do it in Rust): os.phil-opp.com/minimal-rust-kernel/
Yeah, putting focus on finding a project that you commit to finishing, maintaining, etc. will act as a very solid forcing function that will allow you to focus.
Yeah I can see the relationship with that, I’ll put my focus on building one project and Idea at a time and gather experience with that. Thank you! Appreciate your time!
See I would actually disagree here, given that things have gone to Microservices, most of the senior devs I know can go pretty deep on a wide variety of technologies.
There's more to learn than you'll have time for in a lifetime. So, you need to specialize. At an early stage in your career, I think you'll have more success with a wide exposure to technology, even if it's not very deep. Once you've found a career though, it's probably time to focus on learning about the technologies used in your organization and industry in-depth.
Will that mean single-language? Doubtful. At a minimum, you'll need to know a back-end language, a front-end language, a query language and a scripting language. As you progress though, consider the idea that you need skills other than technical ones to succeed in your career. I spent the last 2 years focusing on my business skills instead, and now my job is more client-facing and visible. This is actually a good thing as it makes my job more interesting and enjoyable. I think the worst mindset that a developer has is that everything that is not coding is an interruption.
I think the hardest thing for a curious person to say is, "Nah, I don't need to learn this right now".
Yeah It makes perfect sense, I love the grind on all aspects and I’m trying to build out some of my ideas and keep to them so learning and my curiosity is what keeps me going. I just feel like I keep swaying around and not really just getting down and having one stack solidified under my feet. But taking this into account I’ll focus one one aspect of each and take that along, additionally adding and committing to projects to show within my portfolio. Thank you and appreciate your time!
Understand the confusion, and if it makes life easier as a hobby in one language, to learn python, than just learn python. Becoming a "specialist" in any language though is quickly becoming a thing of the past. New technologies and programming languages are spinning up all the time, and I've worked in this field for almost 20 years.
So really this comes down to expectations for yourself, I wouldn't worry about being specialized in a language but rather focus on the idea of solving problems. If you have something you want to build and python is an easy way to solve the problem, great...done and onto the next problem. There will always be detractors online saying "Node is really a better choice" or you should do it in ____________. But the truth is one of the key measures for choosing a specific technology for me, is learning curve.
But if you are looking at something, and saying "I COULD do it in Python, but that's going to be really hard," start looking at other languages, technologies out there and expand. Also it can be good to say "I heard about golang, I wonder what that is?" And do a few quick starts and get a feel for it's application. You don't have to commit to knowing every language like the back of your hand. But a quick surface level knowledge can at least help with the, "You know, golang might be good for this."
Also as a former professor I used to say this to every student. The hardest programming language is your first. In a lot of ways the foundational pieces of all major programming languages have a lot in common, so the more you look at other languages, you'll find your learning curve on your next language gets even shorter.
And most of all keep having fun with this, don't let it stress you out, the development community is all the better for having you in it.
Complete understand this, the issue is that I feel like the will of learning all the technologies I want to and then with work too I relay heavily on documentation and stackoverflow. I feel like my code does not flow from just myself. I know that when I take a particular set of code to learn and understand it before its use, but I feel like I then recall to it as I tend to forget in the end as I don't use it particularly very much. Now with this said I am not expecting to be able to write code like i'm a book but write more proficient code yes. In some way I feel like I never learned the fundamentals 100% and I feel like this is what I need to revisit now. Thanks for the advise!
Yep absolutely, and understand where you are coming from. That will come, give yourself some time and patience. And don't worry so much about the code flowing from you. The best developers I've ever known are built by experience, and search engines, and docs are the foundation of everything. With the way things like even python evolve, no one can do this stuff without the docs, and everyone runs into something that they have to lookup. For example, I once knew someone who was what I would consider an expert in terraform. Worked in a it for years, spent 50+ hours a week working in Terraform, and built truly amazing implementations for a massive cloud solution. If you opened up his browser window the entire bookmark toolbar was nothing but links to references in the terraform docs. The best senior devs are focused on business outcomes and not where the code comes from. But the fact that you are this passionate means you will get there, but don't beat yourself up too much.
Yeah I’ve heard that before I guess its not about knowing everything there is to know about the language but more the fact of being able to understand the problem at hand and find the solution for it. Its what I mostly do so I guess I’m on the correct track just need to give it time to sync in and to eventually understand the full picture. I appreciate you time!
As I read your post, I thought of advice for you, but it's mostly been said by others already. But to echo all of that great advice.... Start a side project that will allow you to focus on what skills you want to learn, or strengthen. You mentioned that Java is in high demand where you are. So if you want to learn Java, pick a project that will enable you to focus on Java. Or if you want to strengthen your knowledge in something that your job has only allowed you to touch on, then maybe focus a side project on that. For example, you mentioned golang but I get the impression that your job has you bouncing around so that you may not have done much with it. Perhaps try a side project with that.
Your preferred language of Python is certainly a good one to know so you could potentially choose to focus on it, but perhaps expand your background with it in some way. Not knowing what type of systems you currently work on, it's hard to give you a specific suggestion. But if you haven't done anything with ML, there are a lot of good ML libraries for Python. So rather than expanding in language, you can expand in domain of application.
Yeah this is understandable, I have chosen to take on Java as my side project stuff and learn this as it is also a very in-demand language in my country, apart from this wanted to learn it for the longest time. At work I use python frequently so will leave that language for work and work on different projects at home. Else all I fell I do is work full time all day long. Thanks for the advice!
I also have the same issue. At my work I mostly use JS and C#, but I usually prefer PHP while working on side projects. I also use to try different technologies or programming languages. I think the advice in other comments are good, just find a project (not a todo app, some moderate level) that you commit to and use that one language, it will show that you have a grasp on that technology.
Yeah I will take this on and focus on one language outside of work. Like this I am not bouncing form one thing to another. Thanks!
Converting the hobby into a profession can come at a cost. I've only recently returned to doing some coding outside of my paid work after a 30 year gap.
That said, the word "cost" is deceptive there - because of course I work to earn money to afford all the other costs of life, and I was never going to throw away a job just in order to regain the hobby. In family/home life, such a hobby is time/experiences not spent with the people who are your life.
The reason I mention this is because while I could claim that the people in my life would not have been happy with me spending unpaid life time playing with coding - the reality is that it was me that made that choice first. Work was work and I did enough coding in that to not ever feel like programming when not being paid. In effect, the hobby feeling was gone.
But my situation is/was not like yours. I've been lucky that my profession has either been as IT support or as a Data Analyst so both have always involved a low level but ongoing amount of coding/scripting.
There was a point (way back) when I really had to choose whether or not become a "developer" (although that wasn't a term anyone used at the time). I do remember thinking that if I chose to be programming full time then I might end up hating doing the thing I had originally liked. I can't know if it would have really ended up that way, but I can say I've never regretted my choice.
I've done quite variable amounts of coding over the years, making tools and solutions where that was convenient. Never being required to code under duress has meant it usually felt satisfying to attempt something - and luckily on average, the time and effort spent has been productive.
I don't know if any of this helps. By the very nature of the choice I made I can only tell a story of having not become a full time developer - so I'm not pretending to be giving advice regarding your main question.
I most certainly understand the points you make as I don't want to feel or have anyone within my family circle think that I am working unpaid for my job as they don't understand the differences of fulltime work and the hobby I enjoy. I have decide to take on two separate languages one for personal projects and then at work keep that on a completely different goals / project. I appreciate your time and advice. Its helped me decide on what I truly want to attain and prep myself better!
I guess so but you do gain from it in the end being able to look back and see the progression / projects you've been able to build.