some people probably aren't even compatible with pair programming at all
I think I fall into this category. I would probably fall asleep when my partner was programming, and when it was my turn at the keyboard, I would erase everything he had done and do it the way I wanted it done.
As long as people are stupid enought to vote for the person they see on TV the most, we are going to get clowns for our leaders. No amount of campaign finance reform is going to make things better.
Plus there is the matter of the 1st amendment. Political speech should be the most vigorously and stictly protected speech of all. The current limits to contributions are clearly unconstitutional.
I program in C++ at work and do some recreational programming at home (yes, I'm a dork). At home I develop in Java on Linux. Why? Java offers a huge, integrated, well documented class library that saves me months of mundane programming. Also, I occasionally develop something that I want to run in the windows environment. On rare occasions I have had to tweak a GUI component, but basically Java ports with no effort. Not even a recompile. I pay about a 30% performance penalty for using Java (IBM's JVM) rather than using g++, but I can live with that.
Java is not the best choice for every situation, but in some instances it does make sense.
Java is slow, and that C# is fast. That is entirely untrue: Both rely on a Virtual Machine
Here's my understanding of the difference between the Java and the C# virtual machine. Both systems use an intermediate code instead of native code. The C# virtual machine is basically a JIT compiler. It compiles the intermediate code into native code when necessary. Java also uses a JIT. The big difference is that the Java Virtual Machine also provides a number of other run time services. Many of the native libraries that ship with Java have to make Java Native Interface call backs into the JVM. That's why a Java memory footprint is large while the memory footprint for C# is small. Also C# programs share the run time libraries while each Java Program has its own copy of the JVM. C# and IBM's JVM run at about the same speed. It's SUN's HotSpot that is somewhat slower.
I enjoy programming in Swing. I find it powerful and easy to use. It is a little more sluggish then native code apps, but it seems to be getting better with time. Some Java programs are ugly, but it's because they are using a simplistic layout manager. If you use something sophisticated, like Gridbag or its more programmer friendly descendants, I think Java GUIs look BETTER than GUIs laid out by hand (like in VB). Also, you can re-size them and have them do something sensible, unlike with most VB dialogs. If you change the Look and Feel from Metal to Windows, you have to look closely to tell a Java GUI from a native Windows GUI.
I think the big problem with Swing is how long it takes to start up. It takes much longer
than just starting the JVM. There is something seriously lame with Swing initialization. I have a simple utility program that takes forever to start up. If I start a second copy under the same JVM it takes less than a second. This slow startup time eliminates Java for use in a whole class of desktop applications.
Our sys admin would throw a fit if he thought I was putting my password on stickies. But if he sees "Pick up kid at 5:35" he doesn't realize that my password is encoded in there.
At one time, Apple had the best hardware, the best OS, and all the big hit programs came out on the Mac first. IIRC even Excel came out on the Mac first. John Sculley decided to go for profit margin rather than market share and Apple made a ton of money. Unfortunately, shrinking market share caught up with them. Corporations buy on price. They don't care how easy a computer is to use. I remember a quote in a trade magazine where an IT manager said, "All the employees screamed when I replaced the Macs with PCs but I saved the company thousands of dollars."
People point out that when the IBM PC became a commodity Microsoft made a fortune. But look what happened to IBM. They got squeezed out of the PC business. The same thing started happening to Apple when they licensed the Mac.
I work at a company where I have to access about 10 different accounts or networks, all with different password polices. I just write the passwords down on stickies (cleverly disguised as real memos) and paste them on my monitor. I work in a building with guards and badges, so we don't get a lot of bad guys wandering around. If someone has physical access to your computer, you are hosed anyway. I don't keep my love letters or anything on my work computer anyway, its just boring company stuff.
Software development is a funny occupation. Almost any reasonably intelligent person can do it, but very few people can do it well. The very best programmers write code faster, with fewer bugs, the code is more maintainable, and has more re-usable components. A lot of people believe that if you hire average programmers and use the correct process, you get superior code. That's just not true. The quality of the code depends on the quality of the programmers (assuming a management that stays out of the way).
He mentioned several key qualities, namely: curiosity, concentration...
One quality he didn't mention, is a sense of elegance. The best programmers I have worked with always wrote clean, well organized, easy to understand code. Code that was easy to use and easy to re-use. I have worked with some brilliant people who were good programmers but not up there with the best. The quality they lacked was the ability to write elegant code.
We know that the answer to the number of planets with intelligent life is not zero. It seems a little improbable that the answer is exactly one, also. However, I can think of several reasons why contact is unlikely. The last factor in the Drake equation is the lifetime of a civilization. All technological societies my eventually stumble across some technology that makes nuclear weapons seem like a fire cracker, and these societies promptly destroy themselves. There was a movie based on this premise, "The Forbidden Planet". Another possibility, is that there is a much more efficient technology for communication than radio waves. The time a society spends in the radio technology phase may be so short that it makes to sense to try to communicate that way.
many incredibly useful new processes and products have been created by research houses whose entire livelihood is based on discovering new ways of doing things
I agree. But none of these research houses (that I know of) specialize in software. New software ideas have come from universities (like quicksort) or come about while developing a software system that can be sold for a profit. I can't think of any software idea that is so unique that it would not be thought of by thousands of other people who were trying to solve the same problem. Software patents are a hindrance to software development not an aid to innovation.
Where do you think licensing fees go -- straight to the lawyers?
Well let's see. The company with the patent hires lawyers, the company accused of infringing hires lawyers, the case drags on for years until some settlement is reached. I think the lawyers are getting more than their share.
You could develop the source code with the beta and then compile it with the current free production compiler. IANALBISAAHIELN but this would seem legal to me.
Yes, you can just draw your GUI with a mouse similar to VB. Then Visual Studio will generate code for you. Or you can just write the code yourself without going through the drawing part. All GUI functionality is in the code. There are no hidden mystery files.
As you can see from the responses, different people look for different things. Here is my take on resumes. First, your resume will be reviewed by someone in HR. They will look for specific qualifications, like C++ or Java. So be sure to list all of the languages and CS courses you have taken. If you get past HR, your resume will go to a manager of some sort. They will be real impressed if you mention something specific about the company, preferably in a well written cover letter. Finally, you resume will come to a senior programmer type (like me). I want to interview and recommend intelligent people who love to program and who can learn and work independently. If you have taken any advanced math, science, or statistic courses, I consider it a good sign. I would also like to read something about any class projects you may have worked on. Stuff you have written on your own for fun, or open source projects you have worked on will indicate that you like to program. A list of programming books you have read will help convince me that you can learn on you own. Don't lie or exaggerate about anything. If hired, you will probably be found out. Being fired for unethical behavior is not a good career move.
You're right. Its not for everyone. I just wanted to point out that it's possible, and if you're already familiar with the technology, not that difficult.
when was a text editor the same thing as a word processor?
When the output is HTML. I've written a small user's manual using emacs and HTML. It included fancy formating and screen shots, and it wasn't any harder than using Word.
Developers, more than anything else want a stable platform to develop for
As a developer I have to disagree. Managers may want a stable environment because they don't want to re-write their existing applications. In his article, Joel says porting to.Net "will not benefit a single customer and therefore will not gain us one additional sale". As a developer, I want to know how much more productive will I be in.Net. The answer is, a lot. I've developed in C++/X-Window/Motif, VC++/COM, VB6, and (just for fun) C#. COM is the most confusing and awkward mix of macros, templates, libraries, and obscure "wizard" generated code that I can imagine. Even the X-Window environment was much more productive. Moving to C# would probably double my output and make my job a lot more fun.
I want to second the Meyers and the "Accelerated C++" recommendations. As for "how do C++ programmers organize code", I would recommend another book by Koenig and Moo, "Ruminations on C++". Chapter 24, "An Object Lesson in Library-Interface Design" has the best example of how to organize a C++ program that I have seen. Even if you don't get the book, read this one chapter.
Redmond Washington (AP) - Bill Gates announced today that Microsoft was shutting down. "We just aren't good enough to be this dominant", said Gates. "So as a public service, we are voluntarily going out of business. We suggest that our customers switch to Linux." In other economic news, the unemployment rate for software engineers jumps, Apple increases prices 50%, and the U.S. trade deficit worsens.
I tried to RTFA, but it was so incredibly boring I couldn't stand it.
I think I fall into this category. I would probably fall asleep when my partner was programming, and when it was my turn at the keyboard, I would erase everything he had done and do it the way I wanted it done.
As long as people are stupid enought to vote for the person they see on TV the most, we are going to get clowns for our leaders. No amount of campaign finance reform is going to make things better.
Plus there is the matter of the 1st amendment. Political speech should be the most vigorously and stictly protected speech of all. The current limits to contributions are clearly unconstitutional.
I work for the good of all mankind, but my wife makes me pick up the checks.
I program in C++ at work and do some recreational programming at home (yes, I'm a dork). At home I develop in Java on Linux. Why? Java offers a huge, integrated, well documented class library that saves me months of mundane programming. Also, I occasionally develop something that I want to run in the windows environment. On rare occasions I have had to tweak a GUI component, but basically Java ports with no effort. Not even a recompile. I pay about a 30% performance penalty for using Java (IBM's JVM) rather than using g++, but I can live with that.
Java is not the best choice for every situation, but in some instances it does make sense.
Here's my understanding of the difference between the Java and the C# virtual machine. Both systems use an intermediate code instead of native code. The C# virtual machine is basically a JIT compiler. It compiles the intermediate code into native code when necessary. Java also uses a JIT. The big difference is that the Java Virtual Machine also provides a number of other run time services. Many of the native libraries that ship with Java have to make Java Native Interface call backs into the JVM. That's why a Java memory footprint is large while the memory footprint for C# is small. Also C# programs share the run time libraries while each Java Program has its own copy of the JVM. C# and IBM's JVM run at about the same speed. It's SUN's HotSpot that is somewhat slower.
I enjoy programming in Swing. I find it powerful and easy to use. It is a little more sluggish then native code apps, but it seems to be getting better with time. Some Java programs are ugly, but it's because they are using a simplistic layout manager. If you use something sophisticated, like Gridbag or its more programmer friendly descendants, I think Java GUIs look BETTER than GUIs laid out by hand (like in VB). Also, you can re-size them and have them do something sensible, unlike with most VB dialogs. If you change the Look and Feel from Metal to Windows, you have to look closely to tell a Java GUI from a native Windows GUI.I think the big problem with Swing is how long it takes to start up. It takes much longer than just starting the JVM. There is something seriously lame with Swing initialization. I have a simple utility program that takes forever to start up. If I start a second copy under the same JVM it takes less than a second. This slow startup time eliminates Java for use in a whole class of desktop applications.
Our sys admin would throw a fit if he thought I was putting my password on stickies. But if he sees "Pick up kid at 5:35" he doesn't realize that my password is encoded in there.
At one time, Apple had the best hardware, the best OS, and all the big hit programs came out on the Mac first. IIRC even Excel came out on the Mac first. John Sculley decided to go for profit margin rather than market share and Apple made a ton of money. Unfortunately, shrinking market share caught up with them. Corporations buy on price. They don't care how easy a computer is to use. I remember a quote in a trade magazine where an IT manager said, "All the employees screamed when I replaced the Macs with PCs but I saved the company thousands of dollars."
People point out that when the IBM PC became a commodity Microsoft made a fortune. But look what happened to IBM. They got squeezed out of the PC business. The same thing started happening to Apple when they licensed the Mac.
I work at a company where I have to access about 10 different accounts or networks, all with different password polices. I just write the passwords down on stickies (cleverly disguised as real memos) and paste them on my monitor. I work in a building with guards and badges, so we don't get a lot of bad guys wandering around. If someone has physical access to your computer, you are hosed anyway. I don't keep my love letters or anything on my work computer anyway, its just boring company stuff.
Software development is a funny occupation. Almost any reasonably intelligent person can do it, but very few people can do it well. The very best programmers write code faster, with fewer bugs, the code is more maintainable, and has more re-usable components. A lot of people believe that if you hire average programmers and use the correct process, you get superior code. That's just not true. The quality of the code depends on the quality of the programmers (assuming a management that stays out of the way).
Kazaa does more than ITMS can
To justify iPod to Man.
(Apologies to A. E. Houseman)
One quality he didn't mention, is a sense of elegance. The best programmers I have worked with always wrote clean, well organized, easy to understand code. Code that was easy to use and easy to re-use. I have worked with some brilliant people who were good programmers but not up there with the best. The quality they lacked was the ability to write elegant code.
"Life that has developed technology" might be a better term than "intelligent".
We know that the answer to the number of planets with intelligent life is not zero. It seems a little improbable that the answer is exactly one, also. However, I can think of several reasons why contact is unlikely. The last factor in the Drake equation is the lifetime of a civilization. All technological societies my eventually stumble across some technology that makes nuclear weapons seem like a fire cracker, and these societies promptly destroy themselves. There was a movie based on this premise, "The Forbidden Planet". Another possibility, is that there is a much more efficient technology for communication than radio waves. The time a society spends in the radio technology phase may be so short that it makes to sense to try to communicate that way.
I agree. But none of these research houses (that I know of) specialize in software. New software ideas have come from universities (like quicksort) or come about while developing a software system that can be sold for a profit. I can't think of any software idea that is so unique that it would not be thought of by thousands of other people who were trying to solve the same problem. Software patents are a hindrance to software development not an aid to innovation.
Well let's see. The company with the patent hires lawyers, the company accused of infringing hires lawyers, the case drags on for years until some settlement is reached. I think the lawyers are getting more than their share.
You could develop the source code with the beta and then compile it with the current free production compiler. IANALBISAAHIELN but this would seem legal to me.
Yes, you can just draw your GUI with a mouse similar to VB. Then Visual Studio will generate code for you. Or you can just write the code yourself without going through the drawing part. All GUI functionality is in the code. There are no hidden mystery files.
As you can see from the responses, different people look for different things. Here is my take on resumes. First, your resume will be reviewed by someone in HR. They will look for specific qualifications, like C++ or Java. So be sure to list all of the languages and CS courses you have taken. If you get past HR, your resume will go to a manager of some sort. They will be real impressed if you mention something specific about the company, preferably in a well written cover letter. Finally, you resume will come to a senior programmer type (like me). I want to interview and recommend intelligent people who love to program and who can learn and work independently. If you have taken any advanced math, science, or statistic courses, I consider it a good sign. I would also like to read something about any class projects you may have worked on. Stuff you have written on your own for fun, or open source projects you have worked on will indicate that you like to program. A list of programming books you have read will help convince me that you can learn on you own. Don't lie or exaggerate about anything. If hired, you will probably be found out. Being fired for unethical behavior is not a good career move.
Hope this helps, good luck.
You're right. Its not for everyone. I just wanted to point out that it's possible, and if you're already familiar with the technology, not that difficult.
When the output is HTML. I've written a small user's manual using emacs and HTML. It included fancy formating and screen shots, and it wasn't any harder than using Word.
As a developer I have to disagree. Managers may want a stable environment because they don't want to re-write their existing applications. In his article, Joel says porting to .Net "will not benefit a single customer and therefore will not gain us one additional sale". As a developer, I want to know how much more productive will I be in .Net. The answer is, a lot. I've developed in C++/X-Window/Motif, VC++/COM, VB6, and (just for fun) C#. COM is the most confusing and awkward mix of macros, templates, libraries, and obscure "wizard" generated code that I can imagine. Even the X-Window environment was much more productive. Moving to C# would probably double my output and make my job a lot more fun.
Are you kidding? What about emacs?
I want to second the Meyers and the "Accelerated C++" recommendations. As for "how do C++ programmers organize code", I would recommend another book by Koenig and Moo, "Ruminations on C++". Chapter 24, "An Object Lesson in Library-Interface Design" has the best example of how to organize a C++ program that I have seen. Even if you don't get the book, read this one chapter.
Redmond Washington (AP) - Bill Gates announced today that Microsoft was shutting down. "We just aren't good enough to be this dominant", said Gates. "So as a public service, we are voluntarily going out of business. We suggest that our customers switch to Linux." In other economic news, the unemployment rate for software engineers jumps, Apple increases prices 50%, and the U.S. trade deficit worsens.