Just curious as to how people gauge their own expertise as web developers and what they believe separates the ‘good’ from the ‘great’. I realize this discussion will most likely all be opinion based but still would be nice to understand how others think of themselves as developers.
A penchant for stubbornness
Honestly though I think one of the many things that makes a good developer great, is tenacity in the face of utter failure.
Oh that thing you just put together isn’t working like it should? Well then, time to pick it to pieces and find a solution. Maybe it’ll take hours, days, a ton of googling and posting on various help forums and websites. But it’s that digging into a problem and seeing it through to whatever conclusion (successful or not) is to me a big part of it.
I like that answer lol
Totally agree, following through and completing a given task despite difficulties along the way is an awesome trait to have. At the end of the day we are problem solvers and we got to live up to the name.
More importantly, just be a person that other people want to work with. Treat your colleagues with respect. Take criticism well. Stand up for yourself, but don’t be a jerk about it. If you’ve got nothing to do and another team is behind, ask if you can help. Whatever you do, don’t act like you’re a great web developer because the universe has enough self-important blowhards.
There are a few things that will put you above other programmers, non of which are talent for programming.
Great programmers stick with a problem even after being defeated by it many times. Some bugs or errors are so hard to figure out that it’s possible to fail while trying to solve them for hours or days. You need to have the grit and determination to keep throwing yourself at that problem until you fix it.
This doesn’t mean you need to try and fix the problem all by yourself. If you’ve been struggling with a problem for more than an hour my recommendation is to ask someone if they have seen that problem before and how they dealt with it.
Great programmers can see through other peoples eyes. When they design something they do so with the end user in mind. That user could be a customer, another programmer, or even themselves in several months. When you design something while thinking about how somebody else will use your tool then you build better things, and things that people will want to keep using.
Great programmers know that perfection is never achievable. They choose to ship their project when it is 80% complete instead of waiting until they feel like it is perfectly 100% done. This quality allows them to produce far more than their perfection oriented peers, and also to learn from the imperfections in their work.
Nothing is more motivating than fixing a bug in production when your users are complaining about it. You must overcome the hesitancy of embarrassment and embrace that your work could always be better. So it doesn’t make sense to wait until it’s perfect.
Great programmers take notice of the smallest mistakes. This is one of the hardest skills to master. When an experienced programmer looks at a page of code for five seconds they can pick out the errors without running the program. How they are able to do this is simply by practicing by writing and reading code for hours a day every day. Over time, after picking over an error message over and over again you too will be able to see the relevant parts and unsee the irrelevant parts.
Think of how a doctor is able to assess a patient’s symptoms without speaking to them first. It’s a skill comes by rigorously working at evaluating the same visible signs day in and day out. If you want to improve at a skill like this you need to write and debug a lot of code, so get started by building something.
Great programmers love building things and solving problems. In order to be able to achieve the skills listed above you have to truly enjoy writing, reading, debugging, and working with code. If you wake up every day excited to build something with code, solve a problem with code, or talk to other people about code, then it’s only a matter of time before you too can become a great programmer.
Thanks for the detailed response
separates the ‘good’ from the ‘great’
Those that can TEACH. If you can’t teach it to someone else what you know, then maybe you don’t really know it that well. You may know how to use it, and can get by… but you don’t know it fully well. Great developers are usually are great instructors/mentors too.
Those who are HUMBLE. I’ve never seen a GREAT developer that’s also full of himself. The great ones (in any field, not just programming) are the ones who are humble. Maybe, because they’re comfortable knowing that they don’t know everything, and someone/somewhere knows more than them, and they’re okay with that. They don’t have big egos. And willing to learn from others too.
Those are such great points, I’ve noticed those two qualities in a lot of the top (well known) developers I’ve come across online.
What a great point! This is seldom discussed. There are a great many posts in this forum with the topic of applying for jobs, prepping and doing interviews, and most often the discussion is about technical qualifications. I think that potential employers seek first and foremost candidates that they feel they could work with. That involves personality just as much if not more than qualifications alone. That is something you can get a sense of in interviews, to a certain degree. Be personable; that goes a long way. I often wonder, when I hear of people who have the qualifications but can never find jobs, how do they present themselves. Having that insight would be helpful.
A Great Coder should code:
- In code reusable manner.
- Help his/her juniors to learn them
- Complete 100% of his coding work.
- Must be able to type without looking on his keyboard.
- His/her coding speed should be at least 50 words per minute.
#4 and #5 are bullshit. Sorry. Nobody cares if you look at your keyboard. All that matters is that you can type. And why type so fast? It’s not a race. It’s quality, not quantity per minute. Most of coding is thinking, not typing.
A penchant for masochism.
Maybe (and I do mean maybe) the way typing speed could be relevant, is in a hacking contest where creating a working solution as fast as possible was the only way to win while most likely ignoring readability, conciseness, and efficiency).
True, without fully grasping the problem or what you’re tasked to achieve you’d probably just end up redoing a lot of work.
I have personally seen that when I was typing by looking on the keyboard, my logic was coming and going from my mind. This means I was not able to concentrate properly because everytime I had to see the keyword to type.
Once I did the typing tutor software course I am now able to type freely without looking at the keyword. My logic has improved and concentration lever has drastically increased. I personally recommend software engineers to learn to type without looking at the keyboard.
Typing fast and accurately without looking at the keyboard is definitely a useful skill, no doubt. It also looks cool in movies. Having said that, it has no bearing on the quality of your code. It doesn’t make you code better nor does it make you more employable as a programmer. The reason I even targeted those points is that it would be unfortunate if someone reading the thread thought that this was important. As an additional skill? Sure. As a prerequisite? Most definitely not.
Some great points by other users, especially dangeranger.
I would add though:
The Web Developer who keeps the code:
Easy to Understand & Maintain
The Web Developers who:
Keep themselves updated, for better practices
Have a high willingness to learn
these were just a few, I’m pretty sure we can add more to that
I think it’s being persistant and never giving up. Also, super Google skills.
I would recommend reading a book called clean code.
what an amazing book.
and full of fantastic examples to make you a better coder
I like this … I feel like this goes along side being able to ask questions. Learning how to ask questions has helped me personally because how you frame a question determines to a certain extent what answers are yielded.