Oh I agree... but that will only work for as long as some people think its wrong to pirate games.
If you officialy tell people: "Copying our game is OK, piracy is fine, it helps us!", or copyright laws change so it is fully legal to copy a game, etc, that won't work anymore. Once the majority of people are pirates, its over. The business model will have to switch from selling the -game-, to selling shit around it. Collector editions, etc. That is a -lot- of money and ressources spent on things that aren't the primary focus: the game, so the game itself will suffer.
The situation -today- isn't so bad. Games with zero DRM can return a boatload of cash if they're good. There are enough "honest" people to make good software (game or otherwise) sell. Companies are scared enough of fines that you can aim your product at them and its ok. Barrier of entry in certain market is a lot higher since you have the piracy overhead to deal with (that is, a chunk of the pirates WOULD have bought it if they couldn't pirate it, and you have to just bend down and accept that they won't), but overall, things are still working out.
However, will it last? Once a threshold is reached where you can say openly "I pirate games!" and not a -single- person will say anything? When all countries are like China in regard to copyright? If that hypothetical scenario was to come, there would be a huge market shift... All software would end up as a "service" or a donation (GPL or whatever), all games would be MMOs, etc etc.
In some aspect it would be for the better... but we'd lose out on choice.
Killing third party developer tools hurt Windows developers. Hurting Windows developers hurts Windows.
Actually, many tools superior to Visual Studio died in its history. Making a Visual Studio competitor and selling it at the price Visual Studio is being sold will not be profitable. (thats regardless of how good someone actually feel Visual Studio is: the point is that a lot of devs expect its features, and coding something with similar features is hardcore).
You can look at tools like Eclipse, which are easily as good as Visual Studio: however a lot of VS features that would take a LOT of development effort (and that click-click-drag-and-drop developers will not code without) are not there, at least not by default (or came in way, way later). Those are very very expensive in manpower to create. And even there: Eclipse isn't trying to make money -and- it isn't even actually competing head to head with VS, it is in a different market).
RedGate currently has a a tool for SQL Intellisense, but the SQL Management Studio from Microsoft's next version has that built in. Its going to die really fast, especially since Management Studio has a free version. If it costed 500$ for the version that has intellisense, RedGate would have a chance.
If you follow the history of Microsoft's development tool (and suckage that is resulting from MS' incompetence aside), it is filled with points in time where MS integrated gimped out features on purpose, when they easily could have made it better, just so they wouldn't kill off competition (and by competition, I don't mean tools for Java and Linux, but tools to develop for Windows). A wider ecosystem is a healthier one.
#1) Photoshop CS3 as an educational license is much cheaper, and many, many colleges have deals with Adobe where students can get licenses even cheaper, or even free.
#2) As long as people pirate Photoshop, a cheaper alternative will never be created. Gimp anyone? Do you think that thing would suck balls so much after so many years if it was impossible to get Photoshop for free? Oh no, it probably would be a full fledged alternative by now.
Our economy works from a supply and demand perspective... the "infinite" supply logic only works in term of quantity of a single product... but there's a potential demand for a larger amount of -distinct- product. That demand is killed by piracy. The barrier for entry for a photoshop clone is exponentially higher: No only you need to make a clone for free to compete with pirated photoshop, it needs to be as good, and if you manage to get people to pay for it, you're competing with a product made free even though it wouldn't be otherwise, so potential jobs cannot be created, additional companies cannot survive, and the Gimp sucks ass.
Oh yes, society wins so much!
(Note: I know its not as clear cut... but there IS another side to the coin.)
And this only works out when SOME people feel that way and some don't. Once everyone feels that they can copy...then what? Is there enough manpower out there to create stuff for everyone else without compensation? We already know some people will create software for free, so thats a part there. We also know a great amount of software is made as a service, so thats covered too. What about the rest? All the pieces of software that don't require to be supported, and that people don't feel like doing for free? Thats a lot too.
A lot of stuff will not be available anymore in that case... or at least in much reduced amount. The copier only benefits fully as long as there are "suckers" who cough up the dough. Thats where the argument breaks. The copier isn't only leeching on the copyright holder... they're leeching on the ressources of the people who don't copy, too...
You're quite correct about Visual Studio. Many aren't aware of that, but technically speaking, Microsoft -wants- to give all editions of Visual Studio away. They're not really profit makers to begin with, but only an indirect feature of Windows. But if they don't charge for VS, then all of the third party tools will die out (there already aren't that many for Windows development, compared to Java or Linux development), and that would hurt em in the end.
The worse bit of piracy is when people print a shiny windows CD (one that looks legit, hologram and all), and then sell it to some poor soul for 50$+, even though its not legit... then its really a user that would have paid for it (so the "they wouldn't have paid for it, so its not a lost sale!!" bit doesn't hold: they WANTED to pay for it, but got cheated out of it), but the money got channeled elsewhere. Those are incredibly common (my parents got caught more than once), and its the one MS wants to deal with first.
I totally agree. The problem starts with non-corporate software. Devil May Cry 4 just came out for PC a few weeks ago. I don't foresee many corporations buying it... so what exactly do you do? The answer to this so far has either been: A) put some fucking annoying and useless DRM on it, or B) make games that require a corporate server that isn't being distributed to run (WoW).
So now what do you do? Not very many people will lend their time to make something like that...coding a PC game sucks. The drivers are buggy as hell, there's tons of them, you have to support the lowest common denominator, then there's customer support, etc... so while free software isn't completly out, it will be rare in that field. So exactly what is the solution? These things cost millions to develop, and as technology to push games further comes along, it will take more and more artists to make the graphics and sounds in the game, the voice actors, etc.
I also know a LOT of people who pirate photoshop and do a heck of a lot more than just "messing around", and will openly say that its a critical piece of software for them (its a hobby for them...but hey, sports are hobbys too, and the gears are expensive -too-). So what do you do about those?
The home edition is a good idea and it does work (I've witnessed a lot of people buying Office Home and Student... 150$ for 3 licenses, thats not bad at all), but when people start feeling entitled to the top edition, or we're talking about single player games... I don't see an easy solution.
Because i say i am. You don't have to like it or even agree. But screw you. i want free shit.
This world was built on exploiting for gain. Now stfu and gbtw. Your boss wants stuff too. You just got lucky enough to make him pay for it.
I hope you do not mind once people's definition of what is ok and whats not starts clashing with yours? Exploiting for gain, hmm? You don't happen to have a daughter now, do you?
Though I'll give you a point: at least you're honest, you are exploiting people for your own gain. Thats better than most pirates. My gripe is with people who do exactly like you, but lie to themselves to make themselve feel pristine pure.
Hahaha ouch, thats bad. I've seen some using #define to turn C++ programs in french. That was fairly awful too (fortunately curly brace languages aren't too verbose...)
The worse remains all the people who use unicode languages to their "full potentials". When someone asks for help with a Java or.NET program on a forum, and paste you their code, and its written using Kanji....not many people can help =P
Because software isn't food or clothing. You're not entitled to it. If you can't afford it, use a free alternative, or nothing at all. You'll still be alive tomorrow even if you don't get to use the latest and greatest software.
So let me reverse the question with the above: Why is it that you feel people are entitled to luxury?
Correct. They didn't start offering low cost MS Office editions (Home and Student, 3 licenses for 150$ as long as you're not using it commercially) until people started looking at alternatives (Linux, Mac OSX, etc), -not- when people started pirating (since years and years before that).
Well, a lot of the issues come from a much simpler source: it confuses code reviewers.
But in this day and age, there are a lot of tools which can highlight exits and give visual indication of their type (exceptions, returns, breaks...) and the problem really goes away...
the fn/fu prefix in front of functions drive me insane (especially in OOP, where its a freagin method, not a "function" anymore, so to speak). I've only seen it once, and thank god its a 3 month contract, but jesus... Even worse, in some part of the apps its done: FU_someMethodName(). That makes my eyes bleed.
Then translate that in SQL, and add all upper case... USP_XYZ_GetSomeData, where XYZ is a 3 letter abbreviation of the application that uses the stored procedure (which of course forgets that one of the primary reasons to use stored procedures is to share the public API of your database model with multiple applications...)
Oh, I know there are good developers that come from everywhere. I am an ex VB programmer myself:) But unless you were really sheltered from the VB community back then, you have to remember the forums/newsgroups (or before those were common place) the conventions, and the general mentality around it. It was pretty f****** bad. And since.NET was advertised heavily toward that community, you have one big mess (especially in the VB.NET world now).
As a.NET consultant now, I systematically refuse to take jobs where VB.NET is the main setting, simply because the odds (notice I'm not talking about certainty) of having to work on a totally horrible codebase ported from VB6 with a mess mashup of hugarian notation and other things that totally ignore the.NET guidelines is simply too high. (Still too high for my taste in the C# world, but I manage...somehow...)
If you're an ex-Vb6 programmer who is now working in.NET, and actually know that the framework design guidelines exist, and have heard (not necessarly used! I'm not that picky) of FxCop/CodeAnalysis.... well, that makes two of us:)
hahaha, you wrote almost the same thing I did in another post, so while scanning comments, I thought I was reading my own:)
By the way, about C#... one reason the guidelines aren't followed much, is that A) a lot of C# devs are code monkeys and don't even KNOW they -exist- (ex-VB6 devs, for example), and B) some aren't defined.
There isn't an official guideline for braces in C# in the framework design guidelines. Recently, Microsoft released their C# coding standard recommendation (which isn't the same thing as the design guidelines, which, for example, rules on the naming conventions), but it isn't a strict recommendation like the FDG. Also to add to the confusion, at the end of the official design guideline book, there is a C# guideline recommendation (which isn't part of the official spec), and it was made by the author. Ironically, it does -not- follow the more commonly used standards, and isn't the same at all as the actual microsoft recommendations... So obviously, with that, no one's going to know what the heck they have to follow beyond whats in FDG.
The.NET framework actually follows the design guideline on the dot. The catch is, the design guideline ONLY applies to public APIs. (So public classes and methods, etc). The source style rules are the one that apply to the private stuff, but those are more recent, so of course the older.NET code won't all follow it.
For code style standards, the important part is really that its followed and consistant, more than what you actually do. For example, in.NET, it is against the standard framework design guideline to use all caps for constants, which can really mess people up if its put in a public librairy: all your code use a standard, EXCEPT for the parts where you need to use the third party constants, which end up standing out over the rest because they're screaming caps.
Others, like line length, will seriously depend on your work environment. I'd say if you have a decent size team, you'll need one, but make it large (not 80 characters or something silly like that), else SOMEONE will have a 2000 character line somewhere (I've seen it...ugh...). There's always the bozo who wants to make his code short by putting an IF statement on a single line, and is too lazy to import namespaces, so ends up qualifying -everything-... so you end up having to scroll horizontally even if you have your IDE stretched out over 3 monitors. Of course, if 80% of your team is working in Emacs over a small window through SSH on a server, it may be a good idea to make it shorter (I don't know why they'd to that, but I've seen such teams...and at that point if they're not going to change, you may as well make the team more efficient by restricting it).
In the end, its all about making your team more efficient and your code better:)
Hahaha... I'm not a native english speaker either (though 90% of my life for the last 10 years has been in english... marrying a new yorker does that), and I have the exact same issues =P With those exact 2 cases, too.
The VB community is half the reason you need coding standards in more modern (or mature) ecosystems. With the popularity of VB6 or VBA + Access, there's a good chance that half your programmers with "senior" level experience (I use the term loosely) did stuff in VB...
And coding standards in VB weren't "This is our VB coding standard for our internal projects". No. They were passed down as "This is the universal way to code, period". So you have a bunch of devs in C++/Java/.NET/Python/Whatever who start prefixing all their crap like they did in VB (which gets quite...entertaining in real OOP environment, because with 1-3 letter prefixes, you have to start getting REAL creative to prefix everything...and often the prefix becomes 'obj'...oh yeah, thats descriptive), then use the same coding standards in SQL (wtf...), as you pointed it, put error handling -EVERYWHERE- (oh yeah... try/catch on every SINGLE function... BYE BYE STACK TRACE!::sniff:: ).
I recently had to clean up a C# app like that... I seriously had to ask my manager for an extra week to familiarize myself with the app when I started my contract, because the conventions -seriously- got in the way of readability. (For example, in C#, virtually any public field will be implemented as a Getter/Setter public property... however, this guy exposed public variables directly... and often did it with lower case named variables, which is usually reserved to private fields...).
I had to buy (with my own money) Resharper just so I could read and follow the code. I hate ex-VB6 programmers so much (ironic, since I've been there for a while...)
Your point is quite interesting in that it shows exactly why coding standards are important.
Any -good- developer with -common sense- wouldn't need them: As long as what you write is sensible, readable, easy to maintain...who cares how you did it. The catch is, good devs with common sense are far and few in between, and they don't have a label. You can't tell someone "You do whatever you wish, I trust you!", and tell the guy right next to him "You have to do things THIS way!". So at some point you need to cater to the lowest common denominator.
Some of the rules will get in the way of the good devs, but its a small price to pay to prevent damage from being done by the other type. If it was easy to have an intelligent conversation with -all- devs during code review, things would be fine... and in many smaller teams, it IS possible... otherwise, you end up like where my fiancee work: she's always cursing because, with 150+ C++ devs all going their own way, when you have to debug someone else's code, it gets.... "interesting", so to speak.
in 2008, there are many, many tools to check code standards. I don't know if the particular language you guys use has one...but code review time is valuable, and shouldn't be wasted specifically on stuff like that, when a check-in policy with a checker tool can do the job just fine, IMO.
That said, I agree that code reviews are invaluable... else there's too much that shitty devs will get away with.
I'd extend what you said to "Anything that ends up public" (public here meaning the programming language term...as in , may appear in another "file" that uses stuff from your code)
Anything defined public cannot be contained within "a single file", so it will quickly become a mess if it doesn't follow a certain standard. Then add exceptions, which aren't public but will bubble up..so your exception handling has to follow some kind of conventions to be consistant. Then localization: since the thread properties cross boundaries and will affect your code, and so will string ressources, etc. All multi-threaded code that may have public side effects...and so on.
Thats why you end up with a coding standard... a lot of stuff ends up having the same ramifications as naming conventions for public APIs:)
Each language or environments have their own features, and require different standards. One of the big things is that hopping from one project/company to the other should be intuitive (something thats basically forfeited in environments such as C++, and accepted as to not be possible, more or less) When the language is mainly controled or orchestrated by a single entity (Sun for Java, Microsoft for.NET, etc), people should set aside their own opinion and stick to the main guidelines (and complete them for areas where the main design guidelines do not cover).
So for example, in.NET, stick FxCop or Code Analysis on, disable the rules that aren't relevant to your company (ie: localization rules on an app that doesn't require them), and stick to that. C++/VB6/Java/Smalltalk conventions have no place in there, so leave em out.
Same holds true for any other environment. Don't use VB6 conventions in Java/C++ (I know the thought alone seems mind boggling, but I've seen it countless of times....ugh!), and so on.
The biggest issue with conventions is just that: people take conventions that are specific to one language/environment, and don't realise that they are, so they port them everywhere else, so you have a program in language X that literally looks like if it was written in language Y (and takes twice as much code, is twice as buggy, is half as readable...)
Thats pretty much what it is. TFS is like the many Source Control + Team Management systems out there. It does have much less features than things like ClearCase, but it has more sensible default settings for the teams most likely to use it, and it is more accessible $$$ wise for smaller teams. Its mostly aimed for teams that have outgrown stand alone source control, but aren't ready for things like ClearCase: and that happens to be a -lot- of teams.
It does the job, and its easy enough that I was able to set it up without knowing much about stuff like that. Its definately not the best, but it works for its targeted audience:)
Office has Groove for smaller businesses... I've never tried it though, I like Sharepoint too much, especially since I'm a.NET dev and it integrates really well with Team Foundation server.
If you can run homebrew code, you had to break the protection that only allows the device to run signed software.
They're putting it in gray area territory here: they broke the protection, but made it so it only work on software that users are authorised to copy... so its still breaking the protection, but for stuff no one will sue for.
I feel it is a perfectly good compromise (I'm heavily against piracy, but while I don't use homebrew, I feel its good when homebrew is encouraged in opposition to piracy), especially since once they allowed homebrew, it was probably quite easy to allow pirated content, and they didn't. Hat off to them.
Oh I agree... but that will only work for as long as some people think its wrong to pirate games.
If you officialy tell people: "Copying our game is OK, piracy is fine, it helps us!", or copyright laws change so it is fully legal to copy a game, etc, that won't work anymore. Once the majority of people are pirates, its over. The business model will have to switch from selling the -game-, to selling shit around it. Collector editions, etc. That is a -lot- of money and ressources spent on things that aren't the primary focus: the game, so the game itself will suffer.
The situation -today- isn't so bad. Games with zero DRM can return a boatload of cash if they're good. There are enough "honest" people to make good software (game or otherwise) sell. Companies are scared enough of fines that you can aim your product at them and its ok. Barrier of entry in certain market is a lot higher since you have the piracy overhead to deal with (that is, a chunk of the pirates WOULD have bought it if they couldn't pirate it, and you have to just bend down and accept that they won't), but overall, things are still working out.
However, will it last? Once a threshold is reached where you can say openly "I pirate games!" and not a -single- person will say anything? When all countries are like China in regard to copyright? If that hypothetical scenario was to come, there would be a huge market shift... All software would end up as a "service" or a donation (GPL or whatever), all games would be MMOs, etc etc.
In some aspect it would be for the better... but we'd lose out on choice.
Killing third party developer tools hurt Windows developers. Hurting Windows developers hurts Windows.
Actually, many tools superior to Visual Studio died in its history. Making a Visual Studio competitor and selling it at the price Visual Studio is being sold will not be profitable. (thats regardless of how good someone actually feel Visual Studio is: the point is that a lot of devs expect its features, and coding something with similar features is hardcore).
You can look at tools like Eclipse, which are easily as good as Visual Studio: however a lot of VS features that would take a LOT of development effort (and that click-click-drag-and-drop developers will not code without) are not there, at least not by default (or came in way, way later). Those are very very expensive in manpower to create. And even there: Eclipse isn't trying to make money -and- it isn't even actually competing head to head with VS, it is in a different market).
RedGate currently has a a tool for SQL Intellisense, but the SQL Management Studio from Microsoft's next version has that built in. Its going to die really fast, especially since Management Studio has a free version. If it costed 500$ for the version that has intellisense, RedGate would have a chance.
If you follow the history of Microsoft's development tool (and suckage that is resulting from MS' incompetence aside), it is filled with points in time where MS integrated gimped out features on purpose, when they easily could have made it better, just so they wouldn't kill off competition (and by competition, I don't mean tools for Java and Linux, but tools to develop for Windows). A wider ecosystem is a healthier one.
Bullshit.
#1) Photoshop CS3 as an educational license is much cheaper, and many, many colleges have deals with Adobe where students can get licenses even cheaper, or even free.
#2) As long as people pirate Photoshop, a cheaper alternative will never be created. Gimp anyone? Do you think that thing would suck balls so much after so many years if it was impossible to get Photoshop for free? Oh no, it probably would be a full fledged alternative by now.
Our economy works from a supply and demand perspective... the "infinite" supply logic only works in term of quantity of a single product... but there's a potential demand for a larger amount of -distinct- product. That demand is killed by piracy. The barrier for entry for a photoshop clone is exponentially higher: No only you need to make a clone for free to compete with pirated photoshop, it needs to be as good, and if you manage to get people to pay for it, you're competing with a product made free even though it wouldn't be otherwise, so potential jobs cannot be created, additional companies cannot survive, and the Gimp sucks ass.
Oh yes, society wins so much!
(Note: I know its not as clear cut... but there IS another side to the coin.)
And this only works out when SOME people feel that way and some don't. Once everyone feels that they can copy...then what? Is there enough manpower out there to create stuff for everyone else without compensation? We already know some people will create software for free, so thats a part there. We also know a great amount of software is made as a service, so thats covered too. What about the rest? All the pieces of software that don't require to be supported, and that people don't feel like doing for free? Thats a lot too.
A lot of stuff will not be available anymore in that case... or at least in much reduced amount. The copier only benefits fully as long as there are "suckers" who cough up the dough. Thats where the argument breaks. The copier isn't only leeching on the copyright holder... they're leeching on the ressources of the people who don't copy, too...
You're quite correct about Visual Studio. Many aren't aware of that, but technically speaking, Microsoft -wants- to give all editions of Visual Studio away. They're not really profit makers to begin with, but only an indirect feature of Windows. But if they don't charge for VS, then all of the third party tools will die out (there already aren't that many for Windows development, compared to Java or Linux development), and that would hurt em in the end.
The worse bit of piracy is when people print a shiny windows CD (one that looks legit, hologram and all), and then sell it to some poor soul for 50$+, even though its not legit... then its really a user that would have paid for it (so the "they wouldn't have paid for it, so its not a lost sale!!" bit doesn't hold: they WANTED to pay for it, but got cheated out of it), but the money got channeled elsewhere. Those are incredibly common (my parents got caught more than once), and its the one MS wants to deal with first.
I totally agree. The problem starts with non-corporate software. Devil May Cry 4 just came out for PC a few weeks ago. I don't foresee many corporations buying it... so what exactly do you do? The answer to this so far has either been: A) put some fucking annoying and useless DRM on it, or B) make games that require a corporate server that isn't being distributed to run (WoW).
So now what do you do? Not very many people will lend their time to make something like that...coding a PC game sucks. The drivers are buggy as hell, there's tons of them, you have to support the lowest common denominator, then there's customer support, etc... so while free software isn't completly out, it will be rare in that field. So exactly what is the solution? These things cost millions to develop, and as technology to push games further comes along, it will take more and more artists to make the graphics and sounds in the game, the voice actors, etc.
I also know a LOT of people who pirate photoshop and do a heck of a lot more than just "messing around", and will openly say that its a critical piece of software for them (its a hobby for them...but hey, sports are hobbys too, and the gears are expensive -too-). So what do you do about those?
The home edition is a good idea and it does work (I've witnessed a lot of people buying Office Home and Student... 150$ for 3 licenses, thats not bad at all), but when people start feeling entitled to the top edition, or we're talking about single player games... I don't see an easy solution.
I hope you do not mind once people's definition of what is ok and whats not starts clashing with yours? Exploiting for gain, hmm? You don't happen to have a daughter now, do you?
Though I'll give you a point: at least you're honest, you are exploiting people for your own gain. Thats better than most pirates. My gripe is with people who do exactly like you, but lie to themselves to make themselve feel pristine pure.
Hahaha ouch, thats bad. I've seen some using #define to turn C++ programs in french. That was fairly awful too (fortunately curly brace languages aren't too verbose...)
The worse remains all the people who use unicode languages to their "full potentials". When someone asks for help with a Java or .NET program on a forum, and paste you their code, and its written using Kanji....not many people can help =P
Because software isn't food or clothing. You're not entitled to it. If you can't afford it, use a free alternative, or nothing at all. You'll still be alive tomorrow even if you don't get to use the latest and greatest software.
So let me reverse the question with the above: Why is it that you feel people are entitled to luxury?
Correct. They didn't start offering low cost MS Office editions (Home and Student, 3 licenses for 150$ as long as you're not using it commercially) until people started looking at alternatives (Linux, Mac OSX, etc), -not- when people started pirating (since years and years before that).
Well, a lot of the issues come from a much simpler source: it confuses code reviewers.
But in this day and age, there are a lot of tools which can highlight exits and give visual indication of their type (exceptions, returns, breaks...) and the problem really goes away...
the fn/fu prefix in front of functions drive me insane (especially in OOP, where its a freagin method, not a "function" anymore, so to speak). I've only seen it once, and thank god its a 3 month contract, but jesus... Even worse, in some part of the apps its done: FU_someMethodName(). That makes my eyes bleed.
Then translate that in SQL, and add all upper case... USP_XYZ_GetSomeData, where XYZ is a 3 letter abbreviation of the application that uses the stored procedure (which of course forgets that one of the primary reasons to use stored procedures is to share the public API of your database model with multiple applications...)
Oh, I know there are good developers that come from everywhere. I am an ex VB programmer myself :) But unless you were really sheltered from the VB community back then, you have to remember the forums/newsgroups (or before those were common place) the conventions, and the general mentality around it. It was pretty f****** bad. And since .NET was advertised heavily toward that community, you have one big mess (especially in the VB.NET world now).
As a .NET consultant now, I systematically refuse to take jobs where VB.NET is the main setting, simply because the odds (notice I'm not talking about certainty) of having to work on a totally horrible codebase ported from VB6 with a mess mashup of hugarian notation and other things that totally ignore the .NET guidelines is simply too high. (Still too high for my taste in the C# world, but I manage...somehow...)
If you're an ex-Vb6 programmer who is now working in .NET, and actually know that the framework design guidelines exist, and have heard (not necessarly used! I'm not that picky) of FxCop/CodeAnalysis.... well, that makes two of us :)
hahaha, you wrote almost the same thing I did in another post, so while scanning comments, I thought I was reading my own :)
By the way, about C#... one reason the guidelines aren't followed much, is that A) a lot of C# devs are code monkeys and don't even KNOW they -exist- (ex-VB6 devs, for example), and B) some aren't defined.
There isn't an official guideline for braces in C# in the framework design guidelines. Recently, Microsoft released their C# coding standard recommendation (which isn't the same thing as the design guidelines, which, for example, rules on the naming conventions), but it isn't a strict recommendation like the FDG. Also to add to the confusion, at the end of the official design guideline book, there is a C# guideline recommendation (which isn't part of the official spec), and it was made by the author. Ironically, it does -not- follow the more commonly used standards, and isn't the same at all as the actual microsoft recommendations... So obviously, with that, no one's going to know what the heck they have to follow beyond whats in FDG.
The .NET framework actually follows the design guideline on the dot. The catch is, the design guideline ONLY applies to public APIs. (So public classes and methods, etc). The source style rules are the one that apply to the private stuff, but those are more recent, so of course the older .NET code won't all follow it.
For code style standards, the important part is really that its followed and consistant, more than what you actually do. For example, in .NET, it is against the standard framework design guideline to use all caps for constants, which can really mess people up if its put in a public librairy: all your code use a standard, EXCEPT for the parts where you need to use the third party constants, which end up standing out over the rest because they're screaming caps.
Others, like line length, will seriously depend on your work environment. I'd say if you have a decent size team, you'll need one, but make it large (not 80 characters or something silly like that), else SOMEONE will have a 2000 character line somewhere (I've seen it...ugh...). There's always the bozo who wants to make his code short by putting an IF statement on a single line, and is too lazy to import namespaces, so ends up qualifying -everything-... so you end up having to scroll horizontally even if you have your IDE stretched out over 3 monitors. Of course, if 80% of your team is working in Emacs over a small window through SSH on a server, it may be a good idea to make it shorter (I don't know why they'd to that, but I've seen such teams...and at that point if they're not going to change, you may as well make the team more efficient by restricting it).
In the end, its all about making your team more efficient and your code better :)
Hahaha... I'm not a native english speaker either (though 90% of my life for the last 10 years has been in english... marrying a new yorker does that), and I have the exact same issues =P With those exact 2 cases, too.
The VB community is half the reason you need coding standards in more modern (or mature) ecosystems. With the popularity of VB6 or VBA + Access, there's a good chance that half your programmers with "senior" level experience (I use the term loosely) did stuff in VB...
And coding standards in VB weren't "This is our VB coding standard for our internal projects". No. They were passed down as "This is the universal way to code, period". So you have a bunch of devs in C++/Java/.NET/Python/Whatever who start prefixing all their crap like they did in VB (which gets quite...entertaining in real OOP environment, because with 1-3 letter prefixes, you have to start getting REAL creative to prefix everything...and often the prefix becomes 'obj'...oh yeah, thats descriptive), then use the same coding standards in SQL (wtf...), as you pointed it, put error handling -EVERYWHERE- (oh yeah... try/catch on every SINGLE function... BYE BYE STACK TRACE! ::sniff:: ).
I recently had to clean up a C# app like that... I seriously had to ask my manager for an extra week to familiarize myself with the app when I started my contract, because the conventions -seriously- got in the way of readability. (For example, in C#, virtually any public field will be implemented as a Getter/Setter public property... however, this guy exposed public variables directly... and often did it with lower case named variables, which is usually reserved to private fields...).
I had to buy (with my own money) Resharper just so I could read and follow the code. I hate ex-VB6 programmers so much (ironic, since I've been there for a while...)
Your point is quite interesting in that it shows exactly why coding standards are important.
Any -good- developer with -common sense- wouldn't need them: As long as what you write is sensible, readable, easy to maintain...who cares how you did it. The catch is, good devs with common sense are far and few in between, and they don't have a label. You can't tell someone "You do whatever you wish, I trust you!", and tell the guy right next to him "You have to do things THIS way!". So at some point you need to cater to the lowest common denominator.
Some of the rules will get in the way of the good devs, but its a small price to pay to prevent damage from being done by the other type. If it was easy to have an intelligent conversation with -all- devs during code review, things would be fine... and in many smaller teams, it IS possible... otherwise, you end up like where my fiancee work: she's always cursing because, with 150+ C++ devs all going their own way, when you have to debug someone else's code, it gets.... "interesting", so to speak.
in 2008, there are many, many tools to check code standards. I don't know if the particular language you guys use has one...but code review time is valuable, and shouldn't be wasted specifically on stuff like that, when a check-in policy with a checker tool can do the job just fine, IMO.
That said, I agree that code reviews are invaluable... else there's too much that shitty devs will get away with.
I'd extend what you said to "Anything that ends up public" (public here meaning the programming language term...as in , may appear in another "file" that uses stuff from your code)
Anything defined public cannot be contained within "a single file", so it will quickly become a mess if it doesn't follow a certain standard. Then add exceptions, which aren't public but will bubble up..so your exception handling has to follow some kind of conventions to be consistant. Then localization: since the thread properties cross boundaries and will affect your code, and so will string ressources, etc. All multi-threaded code that may have public side effects...and so on.
Thats why you end up with a coding standard... a lot of stuff ends up having the same ramifications as naming conventions for public APIs :)
Each language or environments have their own features, and require different standards. One of the big things is that hopping from one project/company to the other should be intuitive (something thats basically forfeited in environments such as C++, and accepted as to not be possible, more or less) When the language is mainly controled or orchestrated by a single entity (Sun for Java, Microsoft for .NET, etc), people should set aside their own opinion and stick to the main guidelines (and complete them for areas where the main design guidelines do not cover).
So for example, in .NET, stick FxCop or Code Analysis on, disable the rules that aren't relevant to your company (ie: localization rules on an app that doesn't require them), and stick to that. C++/VB6/Java/Smalltalk conventions have no place in there, so leave em out.
Same holds true for any other environment. Don't use VB6 conventions in Java/C++ (I know the thought alone seems mind boggling, but I've seen it countless of times....ugh!), and so on.
The biggest issue with conventions is just that: people take conventions that are specific to one language/environment, and don't realise that they are, so they port them everywhere else, so you have a program in language X that literally looks like if it was written in language Y (and takes twice as much code, is twice as buggy, is half as readable...)
Thats pretty much what it is. TFS is like the many Source Control + Team Management systems out there. It does have much less features than things like ClearCase, but it has more sensible default settings for the teams most likely to use it, and it is more accessible $$$ wise for smaller teams. Its mostly aimed for teams that have outgrown stand alone source control, but aren't ready for things like ClearCase: and that happens to be a -lot- of teams. It does the job, and its easy enough that I was able to set it up without knowing much about stuff like that. Its definately not the best, but it works for its targeted audience :)
Office has Groove for smaller businesses... I've never tried it though, I like Sharepoint too much, especially since I'm a .NET dev and it integrates really well with Team Foundation server.
If you can run homebrew code, you had to break the protection that only allows the device to run signed software.
They're putting it in gray area territory here: they broke the protection, but made it so it only work on software that users are authorised to copy... so its still breaking the protection, but for stuff no one will sue for.
I feel it is a perfectly good compromise (I'm heavily against piracy, but while I don't use homebrew, I feel its good when homebrew is encouraged in opposition to piracy), especially since once they allowed homebrew, it was probably quite easy to allow pirated content, and they didn't. Hat off to them.
If you can't afford them, find another hobby between your purchases. Not like you're entitled to them.