Being a developer is hard, no doubt about it.
Software development is a field where nobody knows everything. Everyone in this field loves to share and talk about the technology they are working on or they have explored. Everybody wants to learn some sort of technology they are lacking because nobody wants to become a bad developer. If you are a beginner or experienced understand that technology is a never-ending thing so there will be always something to learn and you can’t learn all the technology, frameworks, tools which are coming out every day. Accept that when you see someone’s proficiency in a certain domain or technology it doesn’t mean he/she knows everything. They are also like you and they also don’t know something in tech that you know. Today everyone in software development needs help from StackOverflow or other resources so you’re not alone with this feeling. Just because someone knows a framework or library which you don't know doesn't mean you're a bad developer!
A good programmer understands that that they have to continue to learn and grow. They strive to do their best at every effort, admit to failures and learn from them. A good programmer loves to program, and would do so in their spare time even if they already spend 80+ hours a week programming.
(Source)
Here's a couple of tips for you:
- Don't judge yourself - People tend to undervalue themselves. Ask a mentor instead
- Learn the basics first - React, jQuery, Vue might be wonderful technologies, but remember, they are all based on JavaScript! Learn the fundamentals first before going on to the frameworks/libraries. It will make life easier!
- Don't try to learn everything - If you know at least 2-4 programming languages (With frameworks included), that's awesome! There are over 700 programming languages. Don't try to learn them all
- Be passionate - Yes, you should want to learn more. Wanting to learn more makes you a very good programmer!
- Work on personal projects - (ok, well, I'm still in school, and I dont have a job yet), but still, have personal projects. It makes coding fun!!!
Hopefully you found this useful
Top comments (46)
If you know at least 10-15 programming languages, that's awesome! --> I think this is still too much. Your brain cannot handle such number, the more language you learn the less you are good at them (you may probably know only the basic stuff). I think no more than 4-5 languages is pretty good and you can focus on them in order to do advanced stuff. You can easily notice this with veteran developers and people doing complex thing, they focus on few languages.
Yeah. I've toyed with dozens of languages since I first started in 1984. A lot of them, even those I used for years, I would not say today that I "know" them, because I don't remember enough to just jump in and be productive. I'm currently working with... Let's say three languages, only two very actively (the third one is more of an occasional maintenance thing, so I often have to reset my brain if I need to do anything non trivial).
The ability, the willingness to learn something new (language or whatever) is more important than something like, "knowing X languages", because that's a completely meaningless metric as far as I'm concerned.
Agreed.
(I have edited the article to include frameworks instead of learning a new language altogether)
Totally agree! Also what does knowing a language or framework means? When we say you know python, do we mean we know all the language features end to end, which version of the language... If not, where do we draw the line :) 10+ language in this case definitely not feasible. Especially, languages also evolve. (These apply also to frameworks)
Depends on how much you want to learn and how much the project you're working on needs. Just my personal recommendation ;)
Nah, there's no upper limit; you should have one or two languages that you're really good at, where you keep up with the latest news and the ecosystem. Beyond that, the more languages you play around with the better, but there's no point in learning them properly unless you're going to use them.
There is a contradiction in your comment : you said there's no upper and right after you should have one or two language that you're really good at ...
There's no contradiction whatsoever. Know as many languages as possible, and focus on a small number that you really master.
I think an issue that always comes up in this sort of discussion is that people often have two distinct and very different ideas of what knowning a language means.
For some people knowledge means familiarity. Knowing a language means being familiar with how it works, it's essential concepts, etc. but aren't masters. For other people knowledge means proficiency. Knowing a language means knowing all the ins and outs, edge cases. For the first group 'knowing' a dozen languages, frameworks, etc doesn't seems at all out of the question while for the second 'knowing' more than a few languages means decades of work.
I suspect that you (as I am) are in the first group while Temani above is in the second group.
Even for the second group, it's often more a matter of memorizing specific idiosyncracies of individual languages. And with that, I would argue it's much easier to have multiple broader strokes in memory than knowing every last detail of any given language. That is, I find it much easier to remember the various details of how PHP handles things differently from Python, for example, than remembering the deep exact details of everything PHP does. The rest is general programming knowledge.
The more languages you explore to depth, the more you'll be able to generalize that knowledge - and recall the contrasts.
So I would actually argue that especially the second group should learn more than a handful of languages. The underlying principles and their differences teach a lot more about algorithms and language theory than mastery of one language ever will. And that, in turn, is knowledge that can be applied as mastery of any language very quickly.
To expand on that, since a few people are applying the criterion of whether you can immediately dive into a language you used to learn: Minimizing the time it takes to get back into a language I haven't worked with in years (or even a new language!) has repeatedly come in very useful. I learned Golang in its basics overnight, and to depth within a week. I switched back from PHP to Java within two weeks, despite not having worked with Java in at least four years, to the point where I'm comfortably discussing intricate language and architecture problems the new team had been struggling with for months.
We count HTML and CSS as 2 for this list, right? 😈
is it needed to consider HTML at all? for someone drawing with no html element 😜
I even have a full game in CSS without HTML (it only works on chrome though)
nice, took me a few seconds to figure out what it is but yeah .... nice
Yes! Absolutely!
(Even though HTML is technically not a programming language)
Nonononononono... if we add them to the list, it's with full privileges or they don't count at all. They cannot be programming languages for what we want, but not for what we don't want. 😋
Languages and frameworks are just a tools. In my opinion, you need to learn principles behind software development, design patterns, etc. You can use principles with every language, and framework.
When you're starting out it's perfectly fine to tinker with multiple languages but understand programming fundamentals first. Even if you learn multiple languages, at some point, you should consider mastering a default stack. For me that's Vue/Django/PostgreSQL, switching to Laravel for shared servers or Go for web sockets or high performance. Then I use Flutter for mobile apps
Yeah, 10 - 15 feels like a big number. I generally think knowing a language off the top of your head isn't as important as knowing, logically, how to do something.
If you know I want to do xyz because of abc, without falling into the xy problem, you can easily google how to do that in a said language and the more you use the language the more it will stick with you.
Totally agree
Well said
(EDIT: With frameworks and libraries included, such as react, vue, angular, etc.)
also included in my thinking. Even if you count frameworks and libraries, it's too much to handle 10 of them. You will clearly notice this one day. Either you know 20 different things and you are stuck at the basic stuff or you know 3 different things and you can gain enough experience and knowledge to become an expert on them.
You're right, they are fun, but as you said, you're in school. Once you've been in the industry for a number of years you value all the spare time you can get away from the screen. So, enjoy those fun projects while you're young, but as a senior dev, I highly recommend taking full advantage of your own time away from the screen and don't spend one moment feeling guilty about it.
80+ hours a week?! That seems very excessive and nobody has to put in 80 hours to call themselves a good programmer imo.
A good programmer puts in enough time to get their work done with quality results. If you're having to put in 80+ hours a week programming you're either horribly over worked or not a very efficient programmer. It should never be the norm to have to put in 80+ hours a week to be "a good programmer".
When I see people regularly putting in so many hours (no matter the job), I make sure I'm not around when they come down crashing. Because they will.
Yeah came here to question this as well. This kind of expectation is extremely toxic and stinks of gatekeeping and capitalism.
For a JavaScript programmer, learning Python isn't going to teach you very much. You'll pick up a handful of new ideas, perhaps, but really not very much - it'll be more of a different perspective on the same ideas.
Learning C++ will teach you a whole load of new ideas, many of them all at once. That'll be really helpful, and teach you a range of new approaches to solving problems. Many of them will apply to JavaScript too (though some will not, and you'll pine for the convenience of, say, RAII).
Learning a pure functional language will give a new set of approaches. You can use these approaches in JavaScript (and this, in particular, has been quite a fad recently).
Broadly speaking, learning the syntax is uninteresting, and won't make you a better programmer. Indeed, if you're anything like me, it'll make you worse as you try to remember the distinction between
=>
and->
in different languages...But learning new approaches that are idiomatic for different language environments will allow you to apply those to your JavaScript, TypeScript, or whatever else you're faced with.
I kind of feel like a bad developer. I like to sleep a lot and I don't practice in my free time, or I practice very little. But at working hours, when I'm inspired, I'm a machine.
I'm feeling bad lately because my two best friends are the kind of developers who sleep ~3 hours a day and they seem to be happy with that.
I feel like to improve my skills, I should do that too. Take some sleep hours or out of work hours and practice. But I don't really like that idea.
Does that make me a bad developer? I'm not sure, but still I'd like this feeling to go somehow.
This is just not maintainable. They will hit developer fatigue and burn out hard, I can guarantee that. Don't feel guilty for not participating in such a destructive lifestyle. Be proud of the good work you do in your working hours. Enjoy your life outside of them.
Enlightened employers would not only allow you to learn new technologies in work time but actually expect it. Learning more effective ways to work is only going to benefit them in the long run with keeping up with the industry, attracting the best new talent who only want to work with @next versions but also retain older and more experienced staff.
Ok, I would suggest getting at least 8 hours of sleep. Your health comes first before your work.
Check out this blog article on how to code much faster.
If your boss and team is putting too much pressure on you, if possible, I would suggest having a meeting with your boss.
But, otherwise, you're a good developer.
I admire how hard and how much you work :D
I will read the article! Thank you for that and for your kind words :)
is the software developer's version of FOMO the fear of missing out. We live in a time where -thanks to the gods! - so many resources are (freely) available: There is always a new language to learn and a new framework to master, a new database to store your data in. Not to speak of the many conferences you could attend and to each and every topic you find competent people talking about these topics. And then there are social networks where you could share your knowledge and compare yourselves to others. Very fast you get into the downward spiral of having missed this and that. And then self doubt raises in form of this selfharming question (of course you are never good enough: Say "Hello!" to the impostor syndrome).
I would answer the question - whether one is a good developer - in a different way:
Are you still getting paid for your work as a developer and getting things done meeting the requirements? Then you are a good enough developer. Remember: being an employed programmer you get paid only for doing your job. I would leave the rest to personal happiness (Years ago I often read books on programming for fun, now I prefer good novels). Feel free to have personal projects. But there are other ways to spent your sparetime.
Combining 'Learn the basics first' and 'Don't try to learn everything'. One thing that is very valuable when looking at what languages to learn is to select languages/tech from different paradigms.
For example is you are a beginner especially learning Ruby or Python is a great place to start. But once you've picked one of those up there is not much to be gained by focused learning of the other.
When I was in school we learned mostly C, Java, Ruby, and Scheme. This gave me a really solid basis different paradigms and approaches languages can take. Those four alone covered high level vs. low level; static vs. dynamically typed; imperative vs. OOP vs. functional.
Not just basics, but fundamentals. Data storage (array, linked-list, key-value, matrix, objects etc) branching, looping, SOLID principles, clean code, source code control. Any coding language is just syntax and can be discovered from internet searches but the fundamentals don't change
I can not agree more on the fact that you should have personal projects, for the fun of it, to learn something you like even if it isn't related at all with your job!
Programming isn't about the language but about the thinking, the way you solve problems. The more you will solve the better you will be!
"Don't try to learn everything - If you know at least 10-15 programming languages (With frameworks included), that's awesome!" -- in my experience, I still have to personally meet a person that truly knows 2 programming languages in and out (I know people with 1 language under the belt, though, Perl core committers). I guess we all have different definitions of what is it to know a language. If being able to write code in a language is knowing, I guess most of us can "learn" a new language in a matter of days.
There's nearly no point in learning, IDK, PHP if you know Perl. Not gonna bring a lot of new ideas into your head, just syntax and language quirks. Better take a look at Clojure, Haskell, Common Lisp, APL, C++, as those will bend your understanding in their distinct ways.
And on your second point, "Learn the basics first" -- true, and basics start deeper than Javascript :) Learning how CPU works will bring even more benefit in the long run.
"A good programmer loves to program, and would do so in their spare time even if they already spend 80+ hours a week programming." -- and no thanks, I have other interesting stuff in life. :) That quote is basically saying a good programmer can't have kids.
In my opinion, become a good developer not just knowing everything in the world. I just realize and think what can I build and and what already I make with the technology.
this I like important thing for me.
Well said!
well said, brother ❤
Short but something heart-touching things you wrote :)
IMO, which I think agrees with your post, it's more important to learn how to write good code than code in any framework. With a good architecture, you aren't bound to those frameworks anyway
Completely agree!
Writing clean code is also essential to learn a framework