I couldn't help but notice that most of the posters seemed to have misread your question. I don't think that you are asking whether or not to get a C.S. degree but rather what kind of hit will you take in your career overall if you get a C.S. degree from a relatively unknown university versus a prestigious university.
I believe that my situation was very similar to yours. I knew from the start that I was going to pursue C.S. and I started in a small state college. I was enjoying the classes and the favorable student teacher ratio. About two years into it, one of my professors said to me "what are you doing here? You need to go to a bigger university."
You know what? He was right. I went to the bigger university. It had a more international perspective. It had more resources. I also had teachers who didn't care if I lived or died and, because I also co-opted, I had to retake a lot of two part classes because they kept changing the curriculum to accommodate A.C.M. and I.E.E.E. accreditation requirements. It is almost twenty years later and I can tell you with utmost certainty that it was well worth it.
We use VS.Net but I took the liberty of trying out SharpDevelop with the solution to our flagship product. The solution is pretty big and fairly slow using VS.Net but it was really slow using SharpDevelop. It was so slow that it was unusable.
I tried SharpDevelop on a smaller, single project solution. It was definitely agravatingly slow but usable. It was still much slower than VS.Net
IMHO, VS.NET 2003 is the weakest link in the.Net story. The platform is great. The FCL is incredible. The IDE is pretty buggy and when its not buggy, its real slow. You won't run into these issues with a small project for a single developer. A lot of VSS integration problems show up with multiple developers and multiple large projects in a single solution. Don't even think of bringing up a reaonsably complex web form using the WYSIWYG editor. The real reason for not using VB.Net on large projects is the unstoppable background compile which kills your IDE.
Fortunately, all the source files are ASCII text and everything can be done from the command line. Someone went to the bother of developing an emacs major mode too. Without these points, I'd by SOL.
Regarding the original article, this is pure market-speak. Let's just cut to the chase and paraphrase the illusion in 23 words. Too cheap to hire good people? Don't worry. Buy our tool and your cheap, dumb people will be able to do the job. The reality is this. The cheap, dumb people will be able to do a quickie prototype with moderate success but the final project will fail without at least one good developer.
As a child, you may have heard the story of stone soup. A beggar got a free meal off of a village by promising them something for nothing. In this case, he promised them tasty soup from a stone. But there was scope creep as he was making the soup. Soon the villagers were adding beef, cabbage, etc, to the soup. The stone was just a gimmick. The tool vendors are like that beggar. Promising something for nothing. In this case, software without developers. Along the way, you find yourself adding expensive developers to the mix. Pretty soon, you realize that you didn't need the fancy tool after all.
If you design an object and mindlessly add get/set functions for every piece of private data in the object, then you're probably guilty of exposing the implementation. But if you design the object's public interface first, and decide on the private data afterwards, I would guess that you're probably in the clear to have used get/set functions "correctly." IMO it's not the functions themselves that are the problem, but rather the adherence to correct design principles.
I agree entirely. Too much of anything isn't good. Holub is right on when he says don't make a design decision without considering the consequences. That is what design is about.
Too bad he doesn't feel the same way about titles to articles. It shouldn't read Why getter and setter methods are evil, it should read Why exposed object state is evil. Here is the relevant excerpt.
Getter and setter methods (also known as accessors) are dangerous for the same reason that public fields are dangerous: They provide external access to implementation details. What if you need to change the accessed field's type? You also have to change the accessor's return type. You use this return value in numerous places, so you must also change all of that code. I want to limit the effects of a change to a single class definition. I don't want them to ripple out into the entire program.
So, it's not so much getters and setters because he doesn't want you to use fields either. Don't expose object state at all just ask the object to do something with its state. All well and good until it comes time to populate the GUI from the Problem Domain objects. You somehow have to get the widget's color to the JTextField or JspWriter or whatever. If it's evil to have either a Widget.getColor() accessor method or a Widget.color field, then you'll have to code a Widget.writeColor(JspWriter out) which is bad because it makes a dependency between your PD classes and your GUI classes. What if I wanted to reuse the same class for a client/server app? Never coding getters and setters is just as evil as always coding getters and setters.
In the beginning, Booch said let there be class member functions and member variables. Member functions carry out an object's responsibilites and member variables contain an object's state. I've seen so called experts claim the member functions are evil and you should do everything via object state. Now, I have seen OO fashion go full circle. It's the member variables' turn to be evil and member functions get to wear the white hat.
There is an old saw, "Make things as simple as possible, but no simpler."
I believe that the "old saw" actually comes from Albert Einstein who said Everything should be made as simple as possible, but not simpler.
The Semantic Web, while an interesting idea, tries to make things too easy, beyond the point of usefulness.
I don't believe that is what Albert Einstein intended. I believe that what he was saying was, when modeling the world, make the model as simple as you can without introducing inacuracy due to an over simplified model.
Blaming C or C++ is just marketspeak that attempts to get its potential customers to believe that the latest cool tool will solve all of their problems. If you will no longer believe that Visual Studio/JBuilder will solve all of your develops, then maybe you'll believe that.Net/Java will. Caveat Emptor, as they say, also you make the very good point...
I am sure we all know the theory, but to me it's like saying "you avoid bugs by following good coding practices".
I forget who originally said this but the difference between theory and practice is that in theory, there is no difference whereas in practice, there is.
Maybe the answer to building more secure and less buggy apps is to use smarter, more disciplined app developers. A hard answer to hear as it takes a lot more to attract and keep good developers than it does mediocre ones.
Not that the tool/platform doesn't matter at all. Of course it matters. It's very important. There is no "silver bullet" one size fits all solution to every problem. That's why you need an architect.
Where do you think Microsoft got the "inspiration" for Active Directory, among other things?
I thought that the ISODE Consortium invented LDAP. They're the ones credited on the RFC. One of their partners is Novell but that's a far cry from saying Novell invented Active Directory.
selectively quoting the half that makes his product look good
Perhaps it also serves as a form of selective marketing. Those who don't do the homework of checking reading the cited study are probably more likely to consume Microsoft products than those who go the extra mile to RTFS.
is NetBeans more useful than Eclipse... Are there plugins for... What about subversion support?
How do the two IDEs stack up when using such technologies as Struts, EJB, or Hibernate? They both seem to be just capable of building such projects once the ant file and/or classpath is correct. What about deeper integration?
Even when they came back with zero results they would add more words thinking that they could get a hit this time.
I've run into people like that too. I don't think that it's laziness but more a lack of understanding or abstract reasoning about the concept of searching. Teaching them the concept of keywords is probably the best way.
I've seen people not be able to tell the difference between the address bar and the keyword text box on a search page. They'll type a web address in the search page and/or space delimited keywords on the address bar then get really confused when they can't seem to find what they are looking for.
about 40 percent of Linux PCs will be modified to run an illegal copy of Windows
What, precisely, is a Linux PC and why would I need to buy one in order to pirate Windows? I know that it is very easy to buy a PC without an Operating System installed on it. Which Operating System I chose to install on such a machine is entirely up to me whether it is a legal copy of Windows, a pirated copy of Windows, a copy of Linux, BSD, what have you.
The biggest difference between Star Office and Open Office is that one is under the control of Sun, and one is not
Aren't these two products really the same except for different packaging (e.g. spashscreen) and different support? The two products look and act the same. I installed the latest and greatest oo yesterday and the splashscreen even has the SUN logo on it. Do both products share the same code base?
Red Hat can do stuff to their [distribution] that IBM doesn't get a vote on
What I am reading into that is that Taylor is admitting that the way to be competitive in the application space is to do things at the O.S. level that gives your applications an advantage over the competition's applications. Does anybody else see that or am I just wearing a tin foil hat?
I'm sure that this post will get modded as "flamebait" or "troll" but, from my own experience using ViaVoice, this looks more like yea ole "instead of admitting that our product is a failure, we'll just turn it into a marketing coup by releasing it as open source" strategy.
I purchased ViaVoice about a year or so ago as an add on to a digital recorder for my wife. My wife followed all the instructions very carefully. She went through the training phase and would always speak very slowly, carefully, and articulately. The accuracy rate was incredibly poor. They could also declare victory by rebranding it as a great dada poetry generator.
why would the user ever want to *not* repair the file when they try to open it?
Because they opened the wrong file by mistake and that file isn't really in the format supported by the application opening it. This goes back to a principal in GUI design where the tool should never make an irreversible change that wasn't asked for by the user without first checking with the user. In this case, the user asked to read the file, not write the file. Yet, the tool needs to write the file in order to repair it.
It's surprising that they released it as open source
When I first read this/. artical, I downloaded ORM and tried it out. It appears to me that the classes are dependent on a single DataSet that contains the entire database. Ha, ha, not very useful.
I'm surprised that they were able to get anyone to pay them for it.
but the GUI is so god awful slow nobody really wants to bother
What GUI are you talking about?
Hate MS all you want but.Net actually is really easy to use.
I'm not sure what you mean by ".Net is easy to use." Are you saying that it is easier for algorithms to be expressed using C# and VB.Net than they are when using Java? There are, IMHO, marginal language improvements (such as properties and operator overloading) but hardly enough to say.Net is easier.
I don't know why everyone thinks SWT is cool. I don't find it to be all that good myself.
everyone in all other countries has bad teeth and hygiene when compared to Americans
I remember going to a blue's festival held in a small, rural town in south Alabama. There wasn't a single adult resident in the town that I encountered who had any teeth.
I second this observation. In this domain, coolness is synonymous with difficulty. The desire for things to be easy is considered to be some kind of weakness. You need for it to be easy because you're not good enough to handle it when things get hard. This isn't just for geeks. Folks who bicycle to work look at car drivers as weak.
I've also noticed that, from a geek perspective, it's not cool to wrap your head around the application domain too much. It's fun to talk about the latest programming language, tool and/or development platform feature but it's work to talk about features in your app. I've even seen it where coders will brag that they don't know a thing about the industry or vertical that they're coding for. I'm not preaching, by the way, as I am totally guilty of everything I am saying here.
The coolness = difficulty observation is not universal, however, as coolness tends to get co-opted by margeting departments as a kind of bandwagon device. In that camp, the hierarchy is reversed.
I couldn't help but notice that most of the posters seemed to have misread your question. I don't think that you are asking whether or not to get a C.S. degree but rather what kind of hit will you take in your career overall if you get a C.S. degree from a relatively unknown university versus a prestigious university.
I believe that my situation was very similar to yours. I knew from the start that I was going to pursue C.S. and I started in a small state college. I was enjoying the classes and the favorable student teacher ratio. About two years into it, one of my professors said to me "what are you doing here? You need to go to a bigger university."
You know what? He was right. I went to the bigger university. It had a more international perspective. It had more resources. I also had teachers who didn't care if I lived or died and, because I also co-opted, I had to retake a lot of two part classes because they kept changing the curriculum to accommodate A.C.M. and I.E.E.E. accreditation requirements. It is almost twenty years later and I can tell you with utmost certainty that it was well worth it.
We use VS.Net but I took the liberty of trying out SharpDevelop with the solution to our flagship product. The solution is pretty big and fairly slow using VS.Net but it was really slow using SharpDevelop. It was so slow that it was unusable.
I tried SharpDevelop on a smaller, single project solution. It was definitely agravatingly slow but usable. It was still much slower than VS.Net
IMHO, VS.NET 2003 is the weakest link in the .Net story. The platform is great. The FCL is incredible. The IDE is pretty buggy and when its not buggy, its real slow. You won't run into these issues with a small project for a single developer. A lot of VSS integration problems show up with multiple developers and multiple large projects in a single solution. Don't even think of bringing up a reaonsably complex web form using the WYSIWYG editor. The real reason for not using VB.Net on large projects is the unstoppable background compile which kills your IDE.
Fortunately, all the source files are ASCII text and everything can be done from the command line. Someone went to the bother of developing an emacs major mode too. Without these points, I'd by SOL.
Regarding the original article, this is pure market-speak. Let's just cut to the chase and paraphrase the illusion in 23 words. Too cheap to hire good people? Don't worry. Buy our tool and your cheap, dumb people will be able to do the job. The reality is this. The cheap, dumb people will be able to do a quickie prototype with moderate success but the final project will fail without at least one good developer.
As a child, you may have heard the story of stone soup. A beggar got a free meal off of a village by promising them something for nothing. In this case, he promised them tasty soup from a stone. But there was scope creep as he was making the soup. Soon the villagers were adding beef, cabbage, etc, to the soup. The stone was just a gimmick. The tool vendors are like that beggar. Promising something for nothing. In this case, software without developers. Along the way, you find yourself adding expensive developers to the mix. Pretty soon, you realize that you didn't need the fancy tool after all.
I agree entirely. Too much of anything isn't good. Holub is right on when he says don't make a design decision without considering the consequences. That is what design is about.
Too bad he doesn't feel the same way about titles to articles. It shouldn't read Why getter and setter methods are evil, it should read Why exposed object state is evil. Here is the relevant excerpt.
Getter and setter methods (also known as accessors) are dangerous for the same reason that public fields are dangerous: They provide external access to implementation details. What if you need to change the accessed field's type? You also have to change the accessor's return type. You use this return value in numerous places, so you must also change all of that code. I want to limit the effects of a change to a single class definition. I don't want them to ripple out into the entire program.So, it's not so much getters and setters because he doesn't want you to use fields either. Don't expose object state at all just ask the object to do something with its state. All well and good until it comes time to populate the GUI from the Problem Domain objects. You somehow have to get the widget's color to the JTextField or JspWriter or whatever. If it's evil to have either a Widget.getColor() accessor method or a Widget.color field, then you'll have to code a Widget.writeColor(JspWriter out) which is bad because it makes a dependency between your PD classes and your GUI classes. What if I wanted to reuse the same class for a client/server app? Never coding getters and setters is just as evil as always coding getters and setters.
In the beginning, Booch said let there be class member functions and member variables. Member functions carry out an object's responsibilites and member variables contain an object's state. I've seen so called experts claim the member functions are evil and you should do everything via object state. Now, I have seen OO fashion go full circle. It's the member variables' turn to be evil and member functions get to wear the white hat.
I believe that the "old saw" actually comes from Albert Einstein who said Everything should be made as simple as possible, but not simpler.
The Semantic Web, while an interesting idea, tries to make things too easy, beyond the point of usefulness.I don't believe that is what Albert Einstein intended. I believe that what he was saying was, when modeling the world, make the model as simple as you can without introducing inacuracy due to an over simplified model.
Blaming C or C++ is just marketspeak that attempts to get its potential customers to believe that the latest cool tool will solve all of their problems. If you will no longer believe that Visual Studio/JBuilder will solve all of your develops, then maybe you'll believe that .Net/Java will. Caveat Emptor, as they say, also you make the very good point...
I am sure we all know the theory, but to me it's like saying "you avoid bugs by following good coding practices".I forget who originally said this but the difference between theory and practice is that in theory, there is no difference whereas in practice, there is.
Maybe the answer to building more secure and less buggy apps is to use smarter, more disciplined app developers. A hard answer to hear as it takes a lot more to attract and keep good developers than it does mediocre ones.
Not that the tool/platform doesn't matter at all. Of course it matters. It's very important. There is no "silver bullet" one size fits all solution to every problem. That's why you need an architect.
I thought that the ISODE Consortium invented LDAP. They're the ones credited on the RFC. One of their partners is Novell but that's a far cry from saying Novell invented Active Directory.
Perhaps it also serves as a form of selective marketing. Those who don't do the homework of checking reading the cited study are probably more likely to consume Microsoft products than those who go the extra mile to RTFS.
How do the two IDEs stack up when using such technologies as Struts, EJB, or Hibernate? They both seem to be just capable of building such projects once the ant file and/or classpath is correct. What about deeper integration?
I've run into people like that too. I don't think that it's laziness but more a lack of understanding or abstract reasoning about the concept of searching. Teaching them the concept of keywords is probably the best way.
I've seen people not be able to tell the difference between the address bar and the keyword text box on a search page. They'll type a web address in the search page and/or space delimited keywords on the address bar then get really confused when they can't seem to find what they are looking for.
You laugh, but Dr. Scheme sounds like a close fit to Visual Lisp.
Here's my vote for visualization and editing tools.
What, precisely, is a Linux PC and why would I need to buy one in order to pirate Windows? I know that it is very easy to buy a PC without an Operating System installed on it. Which Operating System I chose to install on such a machine is entirely up to me whether it is a legal copy of Windows, a pirated copy of Windows, a copy of Linux, BSD, what have you.
Isn't AVG a MS-Windows only product? Do they have a Linux version? Does Avast, a-squared, or F-Prot have a Linux version?
Has anyone looked into Claim Antivirus yet?
Aren't these two products really the same except for different packaging (e.g. spashscreen) and different support? The two products look and act the same. I installed the latest and greatest oo yesterday and the splashscreen even has the SUN logo on it. Do both products share the same code base?
I found this excerpt to be quite revealing.
Red Hat can do stuff to their [distribution] that IBM doesn't get a vote onWhat I am reading into that is that Taylor is admitting that the way to be competitive in the application space is to do things at the O.S. level that gives your applications an advantage over the competition's applications. Does anybody else see that or am I just wearing a tin foil hat?
I'm sure that this post will get modded as "flamebait" or "troll" but, from my own experience using ViaVoice, this looks more like yea ole "instead of admitting that our product is a failure, we'll just turn it into a marketing coup by releasing it as open source" strategy.
I purchased ViaVoice about a year or so ago as an add on to a digital recorder for my wife. My wife followed all the instructions very carefully. She went through the training phase and would always speak very slowly, carefully, and articulately. The accuracy rate was incredibly poor. They could also declare victory by rebranding it as a great dada poetry generator.
Because they opened the wrong file by mistake and that file isn't really in the format supported by the application opening it. This goes back to a principal in GUI design where the tool should never make an irreversible change that wasn't asked for by the user without first checking with the user. In this case, the user asked to read the file, not write the file. Yet, the tool needs to write the file in order to repair it.
When I first read this /. artical, I downloaded ORM and tried it out. It appears to me that the classes are dependent on a single DataSet that contains the entire database. Ha, ha, not very useful.
I'm surprised that they were able to get anyone to pay them for it.
I can't remember the guy's name but I do remember what the head of marketing for one of my past employers once said...
All software has bugs. If it doesn't have bugs, then it isn't software.
What GUI are you talking about?
Hate MS all you want butI'm not sure what you mean by ".Net is easy to use." Are you saying that it is easier for algorithms to be expressed using C# and VB.Net than they are when using Java? There are, IMHO, marginal language improvements (such as properties and operator overloading) but hardly enough to say .Net is easier.
I don't know why everyone thinks SWT is cool. I don't find it to be all that good myself.
I remember going to a blue's festival held in a small, rural town in south Alabama. There wasn't a single adult resident in the town that I encountered who had any teeth.
Switch to citibank as their online banking site works great with Mozilla.
I second this observation. In this domain, coolness is synonymous with difficulty. The desire for things to be easy is considered to be some kind of weakness. You need for it to be easy because you're not good enough to handle it when things get hard. This isn't just for geeks. Folks who bicycle to work look at car drivers as weak.
I've also noticed that, from a geek perspective, it's not cool to wrap your head around the application domain too much. It's fun to talk about the latest programming language, tool and/or development platform feature but it's work to talk about features in your app. I've even seen it where coders will brag that they don't know a thing about the industry or vertical that they're coding for. I'm not preaching, by the way, as I am totally guilty of everything I am saying here.
The coolness = difficulty observation is not universal, however, as coolness tends to get co-opted by margeting departments as a kind of bandwagon device. In that camp, the hierarchy is reversed.