So in your opinion, what makes someone a good developer? Intelligence, work ethic, or experience?
I mean ideally it would be a combination of the three.. but if it's high intelligence I'm out because I'm only average or above - if it's experience I'm out because I have no formal experience - if it's work ethic and willingness to learn the intricacies then I could probably make it.
yeah i mean ideally it would be all of the above + more. a good developer has to be able to think about the big picture while designing small parts of the puzzle at the same time. they also need to know how to iterate over stuff. they need to be able to take constructive criticism and be able to improve from it and not make the same mistake twice. a good developer will spend an extra hour doing something up front to make code cleaner/better because it will save them 5 hours down the road when the issue would have been bigger, and would have to be rewritten later on.
they also have to be able to SPEAK to people. you don't understand how big communication is with good developers. i personally have trouble sometimes just trying to explain things to people, but when i draw stuff out it helps out a lot. i know where my weakness is with it so i'll draw it out when i feel i need to.
also, a good developer shouldn't have to solve problems in one specific language. they should be able to tell you in english or pseudo code how they can solve the problem, then go in and implement it in whatever language they need to do. a good developer doesn't need a specific tool to get a job done. they have to figure out the best tool that is necessary to get the job done. they shouldn't say "well i only know c++ so we're going to make a web app in c++". they would understand that they should probably use tools better suited for web app development and learn those.
a good developer will also constantly be refactoring their own code to make it more efficient and modular. imo the more modular code is, the better it is for people to come on board and understand. it also is much more testable. i never realized how important making code testable (and writing tests) was until i was about 8 or 9 years into my career (almost 12 years now).
also, a good developer will be able to write code without comments because they will make it readable. that doesn't mean there SHOULDN'T be comments anywhere though, but they don't need comments to tell you what the code is doing, more so rather WHY the code is doing what it is doing, in english. of course this isn't a black/white rule, but it's clear reading different people's code who is a "better" coder than others.
a good developer also has to know how to adapt, or realize that there may be code they spent 2 weeks on that gets completely scrapped. don't get feelings with code. hell on my startup app, there were 2 services that i had to rip out due to us calculating the long term costs. i spent about 3 weeks ripping out code that took me about 5 weeks to implement. sure it was time lost, but in the end it's going to save us a ton of money if we get big. i'm talking like 10's of thousands of dollars a month in service costs.
with work ethic too, it's not about just grinding out hours. a good developer will realize that there comes a time in the day that your brain will be fried and continuing to work will be more harmful than good. also just because you spend 16 hours doing something doesn't mean you did "more" work than someone doing 8 hours of work. that's just not how it works.
sorry if this seems like a buncha random thoughts and all over the place, but it basically is lol, and as i mentioned, i'm not the best communicator