So, I'm not sure how many people agree with me (I haven't really searched around to see if anyone has the same opinion), but I'm starting to form the opinion that there are two different types of developers: Those that can develop an application but don't really understand the concepts behind it, and those that have a relatively deep knowledge of how their code works and all fits together. Or, in other words, those think it's alright (and perhaps have it as a job), but are not very passionate, versus those that are very passionate about programming. Generally, I guess something like the following could be said:
People in the first group:
- Have done their main programming study at University or TAFE OR are self-taught with just the basics, generally nothing about best practices. Generally, they've learnt just enough to get by, nothing more
- Will copy and paste code and be happy that it works, but might not really understand how it actually works
- Don't really consider programming a hobby
- Might be considered "code monkeys" in some situations
- Generally need help with fixing odd bugs
And people in the second group:
- May have done a University course, but their main learning is self-taught
- Write applications, scripts, websites, whatever for fun (and might actively participate in open-source projects)
- Don't copy and paste code very often. Instead, they learn from other people's code, and then rewrite that code in their own style
- Consider programming one of their biggest hobbies
- Aware of some of the latest trends in software development
- Might often question things, like the ways people do things, and why code is written in a specific way (or is this just me?). Usually I do that just to learn how things are done.
- Can generally investigate and solve odd bugs pretty well
Anyone else agree with me? Personally I'm proud to be in the second group, the awesome group :D
Anyways, I'll write another proper blog post, eventually. I started working recently, and will definitely have to blog about that :)
Until next time,
— Daniel
7 comments
One other thing that your second group tends to question is process (i.e., the process of creating an application). Is it achieving its purpose? Is it doing so in the best way? Is it even necessary? Why was it introduced, and do those reasons still apply now? How can we make our process better, or easier to follow (or at least, harder not to)?
So as far as I can tell, this curiosity, this wanting to know why things work the way they do, is not limited to code. It also encompasses people, teams, entire systems.
Hmm. It just occurred to me that teams of programmers tend to make software algorithmically - maybe because that's our shared way of thinking. But maybe that's a subject for a post of my own :)
And hehe, I definitely agree with you. At least I seem to question everything. I generally look at things and wonder what I can do to improve them and in what ways. :)
Stumbled here from an old thread on NamePros.com - Nice to see a fellow aussie around :)
I started reading the first category in your post, and thought "I'm self taught" so I must be in this category... I kept reading, and thought "This list is silly, i'm self taught, but I don't 'copy and paste code and be happy that it works, but might not really understand how it actually works.'" I started to get a bit offended.
Then I got to the second category and was relieved to know thats where I fit in here :)
Good post... now I'll see what other posts are around...
Indeed, second category is awesome. :D
Then again, I *did* teach myself Java last holidays (though not exactly for fun).
The only copypasta I'll use (in general) is for things like P/Invoke declarations, where writing by hand is both tedious and unnecessary. It is important (to me) that I understand how and why code works.
I wouldn't consider programming one of my biggest hobbies (anime and videogames are much, much bigger :P), I don't usually code "for fun", and I'm not particularly aware of software development trends.
I'll try to fix bugs myself before asking for help (nothing wrong with that, is there?). And if I can't find help, I have often been able to find the solution myself (albeit usually after spending hours on a single error message >_<)
I'd say I'd probably fit more into the second group, but as a more... "casual" programmer
I can totally identify myself with this :D.