Are you a programming language specialist or a generalist? Do you prefer to focus on one language and become an expert or learn multiple languages and be a generalist?
As you develop your coding skills, you'll face the decision of whether to specialize in one programming language or learn multiple languages. Which will you choose? A depth of knowledge? Or versatility?
Share your thoughts on this debate in the comments below!
Follow the CodeNewbie Org and #codenewbie for more discussions and online camaraderie!
Top comments (12)
Oh! @hola_soy_milk just wrote a really lovely piece about how learning Objective-C has helped him be a better engineer in general:
How Objective-C Made Me a Versatile Software Engineer
RamΓ³n Huidobro γ» Apr 20 γ» 11 min read
My answer: You don't have to commit to being a specialist for life to consider applying for a specialist job. If you are willing to commit to specialization, there is nothing stopping you from switching to more generalist, or to another specialty later.
Check out our #DEVDiscuss on this topic for more thoughts!
#DEVDiscuss: to Specialize or to Generalize?
Erin Bensinger for The DEV Team γ» Jan 31 γ» 1 min read
I'm a specialist in one thing: learning new things, which includes teaching others.
I have tried before to focus only on Java. It turns out that no one cares if you know how memory management works or the best practices in doing unit/integration tests.
What works for my career is that I need to become above average for most languages/tools that my current company is using. We're using docker, Great! Learn that tool. Using Kubernetes? Doesn't matter if I do not have tasks, learn it. Javascript? Time to watch some screencasts. And when I say learn, reading a book or two is more than enough to become average on that certain technology.
After learning all those things and putting them on my resume. I can say that I am a better programmer now and more marketable. Yes, I am not an expert and will never be, but hey I can do so many things :)
IMHO it depends on the stage at which the developer is. When starting the career as a developer there's nothing wrong about being generalist. Actually, it would be ideal: learn a little bit of different languages/technologies, find what you like and your passion. Moving forward into mid-level, the developer should have a general idea of what they like, their strengths and weaknesses, and it's time to start specializing (while always keeping up with knowledge and new approaches for other technologies). A senior that is too generalist brings a lot of knowledge to the table, but it may be counterproductive because the performance will likely not be at the senior level for most of the technologies/languages... Which will the person get stuck. There's always time to grow and specialize, and they may be good for leadership/management too (if they are up to it).
Neither, one size does not fit all. ALWAYS do what interests YOU - don't follow the money or the latest trends - you'll enjoy what you do way more that way. You may find that following this path leads you to specialisation, or maybe it won't.
Stay curious.
I would not focus on language, I would focus on the area I want to work on. Roughly I see:
Web development
App development ( including iot)
Data engineering ( Bi, ETL, etc)
Ki development
Start training on language / tools in the area. Think about how I'm your area concepts and ideas repeat. If you feel save expand your knowledge beyond your home turf and look into the next area.
I think a generalist would be well-suited to the current unpredictable world. We don't have any guarantees that certain technologies will still exist in the next few years. We've seen in the past how some technologies (such as frameworks) slowly disappear due to market needs leading us to face other technologies.
Therefore, when switching to another focus area, it would be much easier as a generalist because you already know the fundamentals in that focus area. This means you don't have to start from scratch. In terms of career opportunities, you are likely to have a better chance of applying for available jobs more broadly.
The specialization is for the ants. I think we can learn **everything **at different speed. For example I know a little of JavaScript, PHP, HTML, CSS and right now I am learning **Java **as a Job requirement.