| last updated:09 Dec 2002 18:12 UK time |
![]() |
| JOS Statistics - Recent Comments (Comments added for week ending Sun 08 Dec 2002) | View Other Weeks |
| Code Reviews - Does Anyone Actually Do Them | Sun 08 Dec | RB |
| I was wondering if anyone works for a company that actually does code reviews. Ive been trying to get them implemented at my work, but keep meeting resistance along the lines of: we dont have time to spend on such things. Meanwhile we keep producing buggy code and missing schedules. So we code faster and produce even more bugs that we have to fix and then we miss the schedules anyway because we have to fix the extra bugs. Etc. Im sure everyone is familiar with this cycle. So I was hoping to use code reviews to help people to code more efficiently and more reliably. But of course, we have no time for such things... |
| Sun 08 Dec | Yaniv | I have been recently hired as a contractor, by a clinical had-held software company to do the code review of thier products. It's kind of unique case though. They don't have any in-house developers and thier product was developed by another outside software developing company. Now they want me to go through the code and make sure everything is in order! |
| Sun 08 Dec | William C | My company does. I will be at a code review tomorrow (Monday). I look forward to it. Also, I send out emails to Engineering and posts things to our SharePoint Server on a fairly constant basis. I think it's healthy to share your thoughts on the code everybody work on. |
| Which language will supersede C/C++ ? | Sun 08 Dec | XRD |
| In the discussion of a previous topic Micro Pros WordStar Printer disaster – really? (URL: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=21755&ixReplies=10 ), I noticed that Albert D. Kallal said: >Perhaps there really is a legit reason here. As Far as >I know, most of the WordStar product was written in >Assembler (of course so was WordPerfect also). Of course >Microsoft word was written in C, and programmers can >add about 10 times the amount of features for the same >amount of time compared to assembler. As a result, Ms >word started to Eat WordPerfect’s bacon real bad. I am >not sure when WordPerfect switched over from Assembler >to C, but it sounds like they did the switch a bit too late. That sounds interesting since I had a very long (but unfruitful) discussion with some friends yesterday about that specific point: C superseded Assembler in the 80s and made the gap between old and new software. It would be interesting to know what the new language of this decade is. Is Java going to do the same to C/C++? Is there another C-killer waiting around the corner? Should I start moving my code to another language to avoid the WP syndrome or can I continue developing in C/C++ without any fear? |
| Sun 08 Dec | I'm a believer. | C#. Maybe J#. |
| Sun 08 Dec | jb | I don't think any one language will supercede C++. In fact if you look at assembler it was actually superceded by several differant languages: Cobol, Fotran, Ada as well as C. If C++ is ever superceded it will also be conglomorate of languages which replace it. I also believe that C++ is a vibrant, alive language. It has features such as templates whose usage and benefits are only starting to be identified. There is no mainstream language, that I know of, that currently supports templates. (Although I believe they are in line for release in version 1.5) The other major advantage that C/C++ has is the huge number of libraries and tools that currently exist. Although libraries for other languages exist and are growing they are yet to obtain the sheer scale as C/C++ does. Finally, most open source tools are written in C/C++ and depend on the Gnu compiler for platform independence. This will not change in a hurry As to the replacing languages will be , I think it will be Java and its clones like C#, plus a combination of Perl, Python and whatever VB eventually mutates into, as well as some other languages that do not exist yet... but not for a while. |
| Sun 08 Dec | Marc | This begs the question, why did they name it C#? Why not D? Or shouldn't C++ be called D, and C# be called E? Or more importantly, how long with the world's governments allow us techies to continue the naming of new technology? Someone should stop us. C# should be the last straw. |
| Sun 08 Dec | X. J. Scott | When you put one ++ on top of another ++, it forms the octothorpe (#). Naming C++ D has been discussed before since Cs precursor was B. Since ++ is the increment operator in C itself, C++ seemed real clever -- whatever value C has, C++ is a little bit more. That makes sense. Stacking ++ on top of ++ doesn't make sense. It implies that # has twice as many featuers stacked on top of ++ I suppose, but that is not true -- C# is a sort of castrated C++ grammatically. Maybe the sharp is suposed to suggest the sharp blade they used to castrate features. |
| Sun 08 Dec | Troy King | Because D is already a language, created and implemented by the guy that did the awesome Symantec and Zortech C++ compilers: http://www.digitalmars.com/d/index.html . |
| Sun 08 Dec | crusty admin | I think MS is effectively killing C/C++ currently with .NET and C# because they have neutered C++ by making it managed anyway. Yes you can still do C++ with a different compiler etc, but in 5 years 90% of Windows dev will be with .NET. I believe that will knock traditional C/C++ back to the position currently held by assembly. |
| Rewriting WinAmp from scratch (part 2) | Sun 08 Dec | Jan Derk |
| Some time ago there was an topic on this forum about WinAmps rewriting from scratch being a good or a bad thing. Today I was bored coding and decided to check out new skins. This is what I found: http://winamp.com/skins/detail.jhtml;?componentId=122902 Apparently, great looks and user friendliness can go together. I especially love the horizontal WinShade mode. Sure, WinAmp 3 still is a resource hog (weirdly enough the CPU load goes to 0 on my system if I switch off the scrolling titles), but IMHO this MMD3 skin proves that the choice made by the WinAmp 3 developers was a good one. Such a beautiful and intuitive interface could never have been created with the WinAmp 2 skin engine. |
| Sun 08 Dec | Prakash S | i d/l the XP skin. It kick ass. You are right about it eating into resource, quite a few times it uses more memory than Windows Media Player. |
| Micro Pros WordStar Printer disaster – really? | Sat 07 Dec | Albert D. Kallal |
| There is a article right now over at http://www.SoftwareMarketSolution.com (It is the front page, thus over time will not be a revenant link). Anyway, the story is about how Micro Pro developed a new Word Processor (WordStar), but changed the printer “data base”, so the old database format could not be used. The story given was this choice thus sealed the fate of the company, since the old printer database could not be used (back then, each software developer/product was responsible for the printers…not the OS like to day). Thus, the concept of this printer database being VERY valuable, and representing a strategic advantage for sure goes without question. However, the argument put forth is that too much resources would be needed to move the data from the old database system to the new database system.. This to me is 100% hog wash. It would not take months and months to write some routines to move the data from the old structures to the new. In fact, you only need a “bridge”, or an abstraction layer. In other words, the fact that the new database is some way cool hierarchical binary chop do da BS system does NOT MATTER. The only thing that matters is the fact that you can define a set of fields for a given printer. On the conceptual level, the field codes for bold can then be retrieved from the system. Once you have the bold field codes, the rest of the code remains the same. Assuming we keep the existing printer driver code, but load values now from the “new” database I see no reason why this change would take more than a month. The idea that just because the new database is pointer based or other system (hey, how about the post relational system they used for the Mac version of dbase!!...by the way, that system is still VERY successful to day...just not with dbase!!! – does anyone know which system I am talking about?). Anyway, the fact of changing the database does not change the simple fact that you eventually get the concept of a record, and you get a set of fields for that record. Once you got those field values for the printer settings….the database is now not relevant. Thus, why all the fuss about the database change? Can anyone begin to explain why in the world the data base (the printer codes) could not be ported to a new data structure format that the new word processor used? And why this process would take months? There has got to be more then this braid dead idea/exchuse for failure? If you are telling me they ALSO threw out the old printer driver software code, then perhaps we have real point here. However, if you are saying that they used a new database/structure to store these codes…then I see little reason why this presents a problem? Anyone care to enlighten me why this is such a hard problem to overcome? Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com |
| Sun 08 Dec | Marc | What I don't understand is why they simply didn't revert the printing code back to the old system? The inability to revert tells me their code was in worse shape than the printer database. :) |
| Sun 08 Dec | x | Probably the fact that back then there was no language capable of doing that easily was a factor. Remember that back in 1998 the only choice was C, and I have the impression that the Wordstar guys were programming in Assembler. Looks weird, thought. |
| Sun 08 Dec | anonQAguy | Albert, Albert, Albert...
Clearly both you and the WS ver 5 product manager don't understand what was going on...
Don't you remember? It was **Paperless Offices** -- who needed to print anything anymore?
It was 1988... they were dumping print functionality completely, because after all, why would anyone need to print anything anymore? They could just keep it on their computers and move it around electronically, right?
Oh and the paperless office has worked so very well since then, hasn't it? One hardly **ever** sees the printer churning out paper anymore, does one?
< kidding here completely - If I made the sarcasm any heavier my monitor screen would crack >
Seriously - wow. Blast from the past, wayback machine and all. I remember the WordPerfect 4.7, 5.0, and 5.1 for DOS printer db. Well, from the user's perspective anyway. I remember that one of WP's advantages it had was the vast array of devices it supported. ( In fact, cranky old bastard that I am, I'm typing this on my NorthGate Computer systems OmniKey 102, heavy-assed metal-based keyboard with 12 F keys down the left side where humans who cannot palm a basket ball can actually reach them without moving from the main keys, and the green shift, red ctrl, and blue alt keys. Still feels like typing on an IBM Selectric II typewriter... best feeling keyboard I was ever on, and there have been many hundreds since. If I looked, could probably still find my WP function key template. Damn but I loved WP at the time. :-) Winword is clearly king now, though, numerically at least.
Lotus Freelance 3.x for DOS, as I recall, also had an extensive db of drivers for various gizmos, both input and output. They're hierarchical menu structure, for both Freelance and Lotus 123 were fantastic - they were so fast to use. Didn't HAVE to use a mouse and were more accessible than the key shortcuts in Windows are today, IMO, at least.
Ahhh. The good old days, when men were men, expanded memory boards were the only game in town (though they sucked), QuarterDeck was almost essential to get all your crap to load up in the 'lower 640' squish around your page frame, and shoehorn stuff into the himem area... a 10 MB drive was big and a 20 was luxury.
Ok. Timewarp over. Back to the present...
More to your point, I'm certainly not nearly enough of a developer to be able to authoritatively evaluate the complexity of their problem on the WordStar printer db issue, but unless there are important factors not revealed in the article, it doesn't seem like it would be the killer effort the program manager was describing. Doesn't seem like it'd necessarily be worth doing in the first place, though, unless the cost of a floppy across their installed user base really was enough to warrant it.
OK, one last thing - I can't count the times since 88 when I've cussed Microsoft for killing the idea (not a conspiracy thing here, just their choice at the time) that at least WordPerfect had held to of encoding the file type **in the damned file itself** and not in some lame 3 char extension. If you looked at a WP doc file in binary, the first couple of characters were 'WP'. You didn't need any '*.wp' or '*.doc' extension; your WP doc file names could be anything within the limits of 8.3 -- you could store info in what you chose for the .3 extension, and WP didn't care. I sure wish the industry had taken that approach for the wintel PC platform instead of the file extensions approach. Oh well, that's what we get for them not asking me personally first |
| Sun 08 Dec | Simon Lucy | Its interesting, but I think incomplete. Wordstar 2000 was an unmitigated mess. Wordstar was a small text processor at heart. Originally it fitted comfortably on one side of an 8' floppy but it managed text as characters and not lines. That was significant, on CP/M it was significant. Its ubiquity meant that you learned and applied the cursor controls of WS to other appications. This was before cursor controls on a keyboard were likely on anything other than a Techtronics strorage tube (story for another day). And WS became an OEM product, it had to remain small. A couple of usages popped out of the text... A flat relational table.... What is this strange beast? Either a table is relational, or its flat. The WS2000 printer database may well have been relational but at the level of managing printer information there's damn all difference between a simple relational database and a heirachical one. Pointers... Referred to as if a pointer were some nameless dread in the Twilight Zone of code. On the whole it strikes me that the annointed Product Manager having successfully got 2000 out of the door (which in the fullness of time died with the merest whimper), brought his inflated shrink wrap solve the Mother of all Documents problems experience to the smallest, neatest (someone's going to mention Electric Pencil or whatever it was called, but that was crap, it was on Trash-80's so it must have been), programmer's tool editor, and screwed it up. Well, I suppose it was going to be screwed up anyhow, MicroPro just didn't know when to leave well alone, and most software publishers don't. When they have a nice tight, well defined application, it succeeds; they get ambition, they want it to rule the world to envelop all problems within its grasp, they add email, they give it a macro language. So it goes. |
| Sun 08 Dec | Albert D. Kallal | >>>Albert, Albert, Albert... Clearly both you and the WS ver 5 product manager don't understand what was going on... ======================== Gee, you got that one right!! I totally agree! >>> I've cussed Microsoft for killing the idea (not a conspiracy thing here, just their choice at the time) that at least WordPerfect had held to of encoding the file type **in the damned file itself** and not in some lame 3 char extension. I The apple mac has always had a resouce file, and does not rely on file extensions. This would have been great for Windows..but compability and lack of design means we use a stupied 20 year old idea of file extesions. The apple way is much better. I mean to be fair, I was not present at those WordStar meetings!! Thus I have little knowledge to really criticize this decision. In fact, I am not really trying to criticize here, but understand the rational as why everyone on the team thought that the old database of printer codes could NOT be salvaged, or used in the new system? Why? Perhaps there really is a legit reason here. As Far as I know, most of the WordStar product was written in Assembler (of course so was WordPerfect also). Of course Microsoft word was written in C, and programmers can add about 10 times the amount of features for the same amount of time compared to assembler. As a result, Ms-word started to Eat WordPerfect’s bacon real bad. I am not sure when WordPerfect switched over from Assembler to C, but it sounds like they did the switch a bit too late. By the way, Joel mentions this in the following article: Converting Capital Into Software That Works http://www.joelonsoftware.com/printerFriendly/articles/fog0000000074.html Perhaps the WordStar folks never got so far as to using a high level language like WordPerfect and ms-word do. Hence, making changes is for sure was harder due to the assembler code (if that is in fact the historic case!!). However, there is some part of me that cannot grasp why the old database of printer codes could not be salvaged. I wrote a payroll package many years ago in Pascal. The record structures were of course HARD coded into the application. (as many PC based programs where back then). That simply meant that the application it self had the data structures as “part” of the code. They were defined “types” as follows: Type Employee = RECORD NAME : STRING[35]; AGE : INTEGER; CITY :STRING[35]; END; This simply means that if I change the data structures, then everywhere in code, I would have to change the above type def. However, since the type def was global, then it was not too bad! However, today any such applications would have the data structures in a database system. Thus, you get a nice layer of abstraction between the code and the data. Hence, additional fields could be added if I had used a database, and NOT ONE line code would need to be changed. (unless somewhere in the code those additional fields need to be manipulated). In fact, I later on I got VERY tired of writing routines to copy the old data files (the data structures) to a new data structures when I added just a stupid field. Note, that this concept of changing the data structure is what the WordStar folks were complaining about. Of course the WordStar example was that the whole database system 'structure' was to be changed, not just a simple addition of a field. Anyway, I wanted to be able to add fields to the data in my payroll system, and also not have to worry about changing the code. So, I went out and purchased the source code to a database library. No, I was not going to write my own database library this time. It was too much work. The book I purchased was appropriately called Pascal Programs for Database Management. The book came with a bunch floppy disks and some nice source code. Ok, so now at this point I simply dumped the above Type definitions, and proceeded to replace all code that referenced the above type def, and changed that code to use the database. Amazing the code change was very easy (I had only two weeks to make the change..since payroll was bi-monthly!). This ease of change was due to the fact that program logic did NOT have to be changed. Thus, the project was MUCH more of re factoring type project, then a re-engineering. In other words, the given program logic DID NOT have to be changed. This is critical, as I was not re-writing how the interface, or even how all the program logic worked!. In fact, I was not re-writing one piece of the logic. The only thing I was changing was when a reference to the LastName field (for example) was made. All references to LastName simply where changed to a database record ref. Hence, LastName was now being referenced to a field in the database. Some record navigation code was changed, but again things like next, or previous logic still applied to either a database, or a records in Pascal. Thus, it is my contention, that while the new version of WordStar used a different database system to store printer codes, that is not much of a problem. Again, I see little reason whey the old data could not be salvaged, and simply copied into the new data structures. In fact, this sounds like even less work then when I converted my Payroll system from fixed records to use a database. In other words, the new WordStar system already could work with printer codes, it just simply need to be feed a list of printers. Again, there is no case made that the old codes could not simply be copied to those new structures. There is a legitimate argument about testing, but the question still remains as why the old data could not be salvaged here? I mean the new product could use a printer definitions, but only the old format was not good. Right? I am still at a loss here….. Perhaps this is historic blunder that is much worse then what in fact is being reported here! The blunder was not that they did not have a printer database. The real blunder was that no one realized that using the old data was not very hard thing to use and salvage? Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com |
| Sun 08 Dec | Prakash S | Albert, Agree with you on the file extensions, it is a lot easier if the OS knows what the file is. Does anyone know if this is going to be a feature in Longhorn? |
| Sun 08 Dec | crusty admin | I can just see the war now. Currently in Windows land I can have more than one program open a file of extension .xyz. I can switch what program I want to be default. I haven't played mith a mac recently enough to know the ins and outs of file association, but wouldn't changing this on Windows create a war among vendors? |
| Sun 08 Dec | anonQAguy | Crusty - the issue about the extensions is simply that right now, what type of file something is is embedded in the extension. so however many applications would try to open the file or not, they're looking at the file extension. Hell, you can take mysheet.xls, change the file name to mysheet.doc, double click it and winword will try to open it. The way it was under old WP DOS, and under (apparently??) mac, is that there are some unique characters embedded in the beginning of the binary (drawing/document/spreadsheet/ect) file itself. The only real difference is that instead of an app looking at the file name to see whether it's a file it can read, it'd look at the first few bytes of the file itself. Either way it's done, extensions or embedding, as soon as you build the feature like you have in windows to, say, fire off a second action based on an action taken directly on the data file (i.e. double-clicking on mydoc.doc in windows explorer to open winword with mydoc.doc opened in it), you have to store those associations someplace, somehow. The need for that would not change if you want that sort of functionality from the 'OS' level. And the 'war' would exist, therefore, with either approach, as the mapping still has to happen. Nowadays, the issue isn't as big a deal since we have longer file names possible, but back in the 8.3 days on DOS and early windows, it would have been nice to be able to use those extra 3 characters for some part of the name instead of having to lose them to the file association. |
| Sun 08 Dec | Simon Lucy | It might seem that it would be better to have embedded junk in a file to determine the type rather than the extension but at the time it was defined that was about all that was required. CP/M, not MS-DOS defined the file name and directory structure. When the MS-DOS port of CP/M 80 was released it ported a deal of the file system with it, replacing FCB extents with the FAT. That this made sparse files impossible to create didn't seem to be a big problem, though actually it was and a number of applications depended on being able to create 'large' files. Whether in MS-DOS 3.0 they should have gone all the way and implemented the Xenix file system the way they intended to do is another interesting cul-de-sac in Microsoft's history. If they had, networking and large file devices would have been a lot easier to implement and wouldn't have taken so long to bring to market. As it was every vendor had to solve the problem their own way. Oh and Posix would have been real and not fictitious until the 90's. What the 3 letter extension did allow though was both anarchy and standardisation at the same time. Applications could define their own extension, but you could try and open any file with any application, if it worked fine, if it didn't you got garbage. But it wasn't such a big deal. That remains true today, though you can get into all those horrendous run arounds of after installing an application theat just happens to handle JPGs you find you lose all your other associations, etc, etc. I find it fairly reassuring that I personally can make a stab at knowing what application I have I should use with what kind of file. If I want to search all .doc and .txt files I can, easily. Having to search by file content, even meta content, is always going to be more expensive. |
| Sun 08 Dec | Prakash S | good point Simon. Posix, is somthing I keep reading in books:-) |
| "LongHorn" - Nest generation Windows OS | Fri 06 Dec | MRC |
| hi, have u happened to see this link .. http://www.winsupersite.com/faq/longhorn.asp do u think is it revolutionary? |
| Fri 06 Dec | John Topley | Not at the moment but it could be. Or it could turn into another 'Cairo' project for Microsoft. |
| Fri 06 Dec | Prakash S | All depends on how the final release looks and does? |
| Fri 06 Dec | Joe Paradise | Be sure to look at Thurrott's review of the alpha version (not the 'Road to Longhorn' review). It has more recent screen shots. http://www.winsupersite.com/reviews/longhorn_alpha.asp |
| Sat 07 Dec | Ian Stallings | I think the most revolutionary thing about Longhorn and other future windows releases is the SQL server based file system. Can you imagine the reportng/data viewing capabilities this thing will have? I'm looking forward to that. What I'm not looking forward to is digital rights management, palladium based hardware, and other Hollywood inspired garbage. That type of technology is just begging to be abused. |
| Sun 08 Dec | Simon Lucy | Hmm SQL Server as a file system. So I guess all the times to populate list boxes of files are going to take even longer now. Select * from filesystem where splinge-oops-this-string-buffer-was too-short |
| Sun 08 Dec | Ploni Almoni | DRM stands more for Digital _Restriction_ Management than it does for Digital _Right_ Management. (Equally well, Copy _Protection_ is better labeled Copy _Restriction_.) A better term does wonders to other people's perception, especially if they are not versed in technology. |
| Intelligence | Thu 05 Dec | PC |
| How do you decide how intelligent a person is? Are there different kinds of intelligence, and is it domain-specific? Are you intelligent, and if yes why do you think so? What kind of intelligence is most relevent for progamming and is it different from other kinds? Are the external signs of intelligence usually a good indicator of the persons actual intelligence? Are people often smarter or less smart than they seem? Does intelligence correlate with amount of knowledge, or are intelligence and amount of knowledge separable? How important are: the ability to think fast, to remember, to concentrate? What is the relationship, if any, between intelligence and wisdom? Are IQ or SAT scores a reliable sign of intelligence? Are school grades? Is there any correlation between intelligence and creativity? |
| Thu 05 Dec | Tony | I'm not sure who said this (I'd like to know if anybody knows): 'data is not information, information is not knowledge, knowledge is not wisdom.' To me, intelligence is the same as data. It has to be applied properly in order to achieve any benefit from it, I think people who have the 'application' skills are more useful on development tasks. Of course if you can combine the two then full strength to you. |
| Thu 05 Dec | Mike Swieton | Henry Ford: 'Whether you think you can or think you can't, your right.' I'm really smart because I say so and when I feel stupid I learn whatever better. People that say 'I'm too stupid to learn that' really are, because they always give up too damned early. The biggest thing I think is previous knowledge: Not that you are not capable of doing XYZ, but that you simply do not have the background and just don't know how. Of course, the side effect of this is common: If you ask someone how smart they are, they're always wrong: Usually their arrogant (like me, here,... not good) or modest (not usually as bad as the previous, but too easy to shortchange yourself)... Either way, you shouldn't take their word for it. I don't know what the answer is, aside from the fact that persistence and balls are much more important generally: persistance to learn how to do it, and the balls to attempt it, no matter how impossible. w00+ darwin awards. There's always exceptions, of course. |
| Thu 05 Dec | programmer | I think Aristotle was correct when he identified two distinct parts of intellectual virtue, or intelligence: philosophic wisdom and practical wisdom. Philosophic wisdom is the ability to deliberate well about theoretical matters; practical wisdom is the 'ability to deliberate well about the things that are conducive to the good life in general.' Someone who is very smart, but who seems unable to apply their intelligence, could be said to have philosophic wisdom without practical wisdom. Someone who doesn't seem quite as smart as their peers, but nonetheless acts with discipline and uses what intelligence they have to its best advantage in doing good work, is blessed with practical wisdom that complements their smaller share of philosophic wisdom. |
| Thu 05 Dec | Julian | Stephen Jay Gould's The Mismeasure of Man is an excellent book about attempts, often misguided, to measure intelligence. http://www.amazon.com/exec/obidos/tg/detail/-/0393314251/qid=1039149589/sr=1-1/ref=sr_1_1/103-0253590-0086227?v=glance&s=books You can't rate a person's intelligence on a linear scale. Each person has their own intellectual strengths and weaknesses, depending on the situation that they're in. For example, there's a weak correlation between test scores and how successful people are in life. |
| Fri 06 Dec | Ged Byrne | I think the concept of intelligence is in need of a major review. In the past, the ability to play good chess, solve hard sums and quote verbatim from Shakespeare were considered signs of intelligence. Now, however, these are all activities that computers can do with ease, and everybody knows that computers are not intelligent. Things that any idiot could do, like drive a car, are still way out of reach for the machines. |
| Fri 06 Dec | Yves | Someone much smarter than me once said 'Intelligence is seeing differences where others only see sameness, and seeing sameness where others only see differences.' |
| Fri 06 Dec | tapiwa | the delphi oracle said of all the greeks, I was the wisest, for I alone know that I know nothing. - socrates. That sums it up. Intelligence is one of the more abused words in the English language, right there behind love. No one quite knows what it is, but we all purport to be able to identify it when we see it. I am more inclined to agree with socrates.... An intelligent man is one who knows the limits of his knowledge and abilities. There is a passage in Meno, by plato, where socrates has basically proved that this oy does not know something (I think it is the area of a square). He argues that despite still not knowing what the correct answer is, this lad is a better man because at least now he knows that he does not know. Previously, he did not know, but neither did he know that he did not know. Henry Ford, in a libel case used a similar argument. The defence was trying to prove that because he did not know all these really arcane things like 'What town was Washington born in?' he was a stupid man. His rebuttal was that he did not need to know all of this. All he needed to know was someone who did, and should he ever have need for such information, he would pick up his telephone and get his answer. |
| Fri 06 Dec | Tom Payne | This is a fascinating article: 'Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments' http://www.apa.org/journals/psp/psp7761121.html Essential reading for anyone who considers themself intelligent (and just because you don't doesn't mean you are :-). Summary: everyone thinks that they're slightly above average in intelligence. So intelligent people underestimate their ability and stupid people massively over-estimate it. The way to make stupid people realise that they're stupid is to educate them. |
| Fri 06 Dec | Jutta Jordans | AFAIK, one of the most practical definitions for intelligence is: 'Intelligence is what can be measured by an IQ-Test'. So in that sense, intelligence and your IQ directly correlate. But the practical impact that this intelligence has on your everyday can differ from person to person. An IQ test can (and wants to) measure only a very limited set of abilities (solving logical puzzles mostly). While these abilities might be helpful or even neccessary in some areas (like programming for example), they alone are not enough to make you an extraordinary programmer, medical doctor, lawer or rocket scientist. It might prove impossible though, to become any of the above without an above average intelligence. For those interested and/or highly intelligent there is the Mensa, an organisation for intelligent people (you have to score in the top 2% in an IQ test to become a member). http://www.mensa.org Even though you might consider the idea of Mensa arrogant or elitarian, they are an interesting, friendly and funny lot of people. And as you might have guessed: I am one of those brainies myself :-) Have fun, |
| Fri 06 Dec | Leonardo Herrera | I can see another Mensa thread coming... |
| Fri 06 Dec | Prakash S | Does is really matter how intelligence is defined? The reason I say this is when one says he/she is intelligent, they mean it with respect to someone else. Since , it is all realtive, does it really matter? The other thing is the pre concived notion we have in our heads, about people being intelligent or not! |
| Fri 06 Dec | Brad Siemens | I don't understand the question!?! |
| Fri 06 Dec | Tj | yeehah. Assessing another individual is one of the harder tasks for our minds, and we're to reduce it to some metric anyone can apply. The popular book 'gödel escher bach' was all about answering that question. (well, at least the lower bound.) Anyway, you asked how important various abilities are... well, in situations where you can play to your strengths, any strong ability can make a diff. So if your abilities are asymmetrical, go into biased playing fields. They generally exist.. |
| Fri 06 Dec | Alex Chernavsky | The 'Unskilled and Unaware of It' article referenced above is good, but the original paper is a bit dense and dry. You can get the gist of it by reading this popularized account from the _New York Times_: http://www.nytimes.com/library/national/science/health/011800hth-behavior-incompetents.html As for intelligence, my view of the subject changed substantially after I read a book called, _Emotional Intelligence_, by Daniel Goleman: http://www.amazon.com/exec/obidos/ASIN/0553375067/ Goleman argues that I.Q. is over-rated as a predictor of success in life. Emotional intelligence is more important. You shouldn't hope that your children turn out to be smart -- you should hope that they turn out to be optimists. |
| Fri 06 Dec | dorklas hofstader | I find that Godel, Escher, Bach is a good test of intelligence. If someone claims it is a coherent book, they are faking it. |
| Fri 06 Dec | Napoleon Hill :) | My father always defines intelligence simply as 'the ability to resolve'. And I think that's a fairly good definition. Of course that you can expand it quite a bit, and discuss it, but it all comes down to that, IMHO. Also, a couple of days ago I listened to the first chapter of 'Mozart's Brain' (audiobook). It's pretty interesting, and I listened only the first chapter because it was right before sleep, and it was starting to excite me so I wanted to listen to it carefully... Anyway, if I recall, the author discusses how you can develop your intelligence and be smarter than (apparently) 140+ IQ people. How? By having lots of different experiences, which make your brain create more links between neurons, which creates a very fast mind... Well, it's a crude explanation of my interpretation, so I recommend you to read/listen to that book if you're interested in the inner workings of the mind. |
| Fri 06 Dec | PC | Intelligence is supposedly half determined by genetics but I'm skeptical about that. I think the brain, like the voluntary muscles, responds to exercise. If someone wanted to be an athlete they would need first of all motivation and discipline and willingness to devote time and effort. I think it's the same with the brain -- if you want to be smart you must exercise your brain. Like physical exercise, mental exercise requires discipline, and only seems fun or pleasurable once you have gotten used to it. People who don't have good learning experiences while very young (and I doubt many of us did) do not think of themselves as smart. So they don't form a habit of studying and learning and do not develop intellectual curiosity. In other words, if you did not figure out that intelligence can be learned, you might never figure it out. Only a small minority figure it out by chance and they are the ones with a genius IQ. They might not grow up to be anything special, because most adults lose whatever intellectual curiosity they might have had. I do think there is a genetic component, but maybe it can be overcome. People who are not born athletes can greatly improve their bodies and run marathons. It's also true that brain damage lowers a person's IQ. On the other hand, the brain is very adaptable and able to compensate for damage. So a brain-damaged person might be able to recover a lot of what they lost. I think that we know much less than we realize about intelligence, and that our society has certain unhelpful myths regarding it. |
| Fri 06 Dec | Tony Dismukes | A good football player completing a long-range pass to a moving teammate while avoiding the opposing team is actually performing calculations that are much more complex than a math student passing a calculus exam. The reason the foorball player is unaware of the complexity of the task he is performing is that human brains have evolved for millennia to be very good at that kind of calculation and can handle it on an unconscious level. Math skills have not been a major factor in human evolution so our brains aren't as good at math and we consider those skills hard. Therefore we tend to consider the math student 'smarter' than the football player. Even setting aside issues of actual computational complexity, there are a large number of mental attributes that would contribute to the construct of what most people would call 'intelligence.' Some of these attributes statistically correlate with each other, but none correlate perfectly - it's possible to be outstanding at one and terrible at another. A partial list of these attributes might include : Analytic ability Creativity in integrating ideas Memory Language skills (spoken) Language skills (written) Math skills Pattern finding ability Accumulated knowledge The ability to absorb new knowledge quickly The drive to acquire new knowledge The drive to question old knowledge The ability or willingness to apply theoretical knowledge to real-world behavior Emotional intelligence/social skills Accumulated mental skill sets The ability to acquire new mental skills quickly The drive to acquire new mental skills The drive to improve old mental skills Visualization ability Ability to manipulate abstractions Ability to keep track of fine details Multi-tasking ability Ability to stay mentally focused Willingness to keep working at a task which is mentally difficult etc etc etc As far as the standardized tests go, I was tested as a kid with an IQ in the 150-180 range (depending on which test you believed). I wasn't able to get a lot a value out of that intelligence until I learned a bunch of self-discipline, focus and the willingness to endure mental discomfort & challenges. I learned that from a physical discipline - the martial arts. My advice is: if you want to be smart, every day try to learn something new or question something you thought you already knew. Even if you start out with less natural mental ability than average, you'll eventually pull ahead of most people. It's just like the skinny kid lifting weights. He might not ever become an olympic athlete, but he can still end up a lot stronger than the average guy. |
| Fri 06 Dec | Tony Dismukes | PC - good comment! |
| Fri 06 Dec | slappy | this was mentioned elsewhere, but malcolm gladwell has a good article about this http://www.gladwell.com/2002/2002_07_22_a_talent.htm |
| Fri 06 Dec | anonQAguy | Alex - 'As for intelligence, my view of the subject changed substantially after I read a book called, _Emotional Intelligence_, by Daniel Goleman: http://www.amazon.com/exec/obidos/ASIN/0553375067/ Goleman argues that I.Q. is over-rated as a predictor of success in life. Emotional intelligence is more important. You shouldn't hope that your children turn out to be smart -- you should hope that they turn out to be optimists.' Concur. Experience, both mine personally and that of family members, convinced me that the idea of pure intellectual IQ being at best only a single factor in predicting life success (leave the definition of that phrase to a separate thread) is accurate. It's like parents used to tell their kids (me) at least as late as the 60's - that you're usually better off being a 'well rounded' individual. And no offense to Alex re his closing comment, but I really prefer 'realism' over 'optimism'. I've seen too many times when 'optimism' is just a particular type of reality distortion field. Pessimism is one too, just bent in a different way. Both will steer you wrong - we're better off focusing on reality than false expectations of the future, either bad or good. |
| Fri 06 Dec | David Clayworth | 'I find that Godel, Escher, Bach is a good test of intelligence. If someone claims it is a coherent book, they are faking it. ' But as Hofstadter himself says, any completely coherent book lacks the power to describe reality. |
| Fri 06 Dec | Alex Chernavsky | anonQguy, I agree that it's simplistic to say that everyone should always be optimistic. For example, I would really not want to fly in an airplane piloted by an optimist. Psychologist Martin Seligman argues, though, that in many respects (though not all), it's better to be an optimist than a realist. Seligman wrote a whole book on this subject. The book is called, _Learned Optimism_: http://www.amazon.com/exec/obidos/ASIN/0671019112/ Also, Seligman's latest book, _Authentic Happiness_, is excellent: http://www.amazon.com/exec/obidos/ASIN/0743222970/ I know all these books I'm referencing sound like the 'touchy-feely' saccharine crap you find in the self-help sections of bookstores, but they're not. Seligman's and Goleman's books contain popularized summaries of legitimate science that's being conducted at first-rate universities. Personally, I can't stand all those 'Chicken Soup' books and the like. |
| Sat 07 Dec | Bill Carlson | I think the question of 'intelligence' is largely one of language/semantics. It's surprising English doesn't contain more finely grained words to describe it. Perhaps a reader with knowledge of other languages could let us know if this lack of distinction is pecuilar to English. Ideally, we would have separate words for the following: - Ability to solve abstract mathematical problems that have a defined solution - Ability to solve problems involving a mix of human behavior and inanimate factors (most business problems). - Intuition. Someone knows they have a high probability of having a correct answer, but can't immediately explain why. - Ability to create life success as defined by societal standards. - Knowedge of lots of 'stuff'. - Ability to solve problems quickly - Ability to imagine, invent, and manipulate what doesn't already exist (software creation) Discussions about what constitutes intelligence are not generally productive, because the word is applied too broadly. It's like arguing over the meaning of being a 'good person' or being 'athletic'. Is a 'good person' altruistic? balanced? spiritual?. Does 'athletic' mean coordinated? strong? a high leaper? a certain shape? I'm curious whether other languages have this obvious deficiency. Does anyone know? Does anyone else think this lack of verbosity causes most of the hang-wringing about intelligence? |
| Sat 07 Dec | PC | The problem may have started with IQ tests. One number is supposed to describe a person's intellectual worth. All kinds of assumptions began when IQ testing became popular. Since we have no tradional class system in the US, social status is often determined by wealth, because (like it or not) people need some way of judging and ranking each other. But now that we're in the information age, intelligence is also becoming a way of judging a person's status, because higher intelligence could mean more productivity in IT work. So IQ is sort of like income -- no one asks or tells their IQ but everyone tries to guess. It's assumed that IQ is relatively stable throughout a person's life, and depends largely on genetics. So, just like in the old days, we are born into a social class and stay in it for life. I don't agree with any of that. My personal experience has been that I raised my IQ about 20 points (130 to 150) because I became intellectually curious and started exercising my brain. |
| Sat 07 Dec | Prakash S | Napoleon Hill, you are corret about the neurons. |
| Sun 08 Dec | Bella | Then again, it all depends on your definition of 'life success'. I'd like to hear everyone's thoughts on what it means to them.... |
| Sun 08 Dec | Prakash S | 'life success' = 'money in bank' :-) |
| Sun 08 Dec | Bella | Many people with money in the bank are very unhappy. (golden Handcuffs, etc.) Do you consider this success? Caveat: The average person does not understand this concept |
| Sun 08 Dec | Prakash S | Don't consider stock as money. Money is cash, liquid, hard currency. :-) (call me a sceptic!) Yeah, I would be damn happy. Funny thing is neither intelligence or success is any indicator of 'money in the bank'. I am thinking about that Porsche 911 now ..... :-) Earth calling Prakash, Earth calling Prakash 'You have a Data Mining exam on Tuesday' :-) |
| Sun 08 Dec | PC | Lack of money is a common cause of unhappiness. Since there are other common causes of unhappiness, having enough money does not ensure happiness. You need enough of various things to qualify for happiness. But even if you have enough of everything you can still drive yourself crazy wondering about the meaning of life, etc. What I personally need for happiness: Enough of the various things I need (money, friends, free time, sleep, exercise, food, etc.), and then plans and goals, things to work towards and look forward to. Getting enough money can be an interesting and challenging goal. So if you spend years striving for money, it can be disappointing when you have enough, if you do not have another goal to replace it. In other words, I think having challenging goals is one requirement for a successful happy life. |
| Sun 08 Dec | Prakash S | Still thinking of my Porsche:-). Once I get it I will attain Nirvana :-) |
| Sun 08 Dec | Alberto | I recently read a report where a study was done into the nature of happiness. Basically people were asked if they were 'happy' according to a wide range of criteria, i.e wealth, health, occupation, education, friends, etc, etc. The results were that 73% of 'poor' people were 'happy' and 76% of 'wealthy' people were 'happy'. The motto being that having money can make you happier, but probably not much more. Of course, it was far more detailed that this, but this was the gist of it. |
| Sun 08 Dec | anonQAguy | Well gee whiz, Bella, guess it didn't do us much good for me to include this bit in my earlier post, now did it?
'...convinced me that the idea of pure intellectual IQ being at best only a single factor in predicting life success (leave the definition of that phrase to a separate thread) is accurate....'
|
| Sun 08 Dec | Bella | I am convinced that the ratio of happiness to money is not linear. After a certain level, money can cause more stress and anxiety than good. Understandably, people without excessive amounts of money can not understand this, and waste their lives chasing money. Of course, when you get to Bill Gates level, I am sure the stress level returns to zero. Then again, I do not know his problems either.. Prakash, the novelty of your new Porsche will last about 3 weeks. Then, it will just be another car. As an Easterner, I'd expect more profound desires from you. |
| Sun 08 Dec | slappy | 'As an Easterner, I'd expect more profound desires from you. ' Haha, yes. Us easterners are too busy staring at the wall waiting for enlightenment to care about driving a nice car, or other trivial material possessions. Does Prakash even count as an 'Easterner?' I thought India was its own thing. Or maybe you meant 'east coast,' like someone from connecticut? Anyway, I'd post more, but I have to go finish up the dog I cooked for dinner, so I'm not late for kung fu practice. |
| Sun 08 Dec | The Grammer Police | Bella wrote: 'As an Easterner, I'd expect more profound desires from you.' Either Bella is claiming to be an Easterner himself, or he needs to do a Google search on 'dangling modifier'. |
| Leaky Abstractions | Thu 05 Dec | Thomas R. Dial |
| If technology is about synthesizing existing materials, concepts, or methods into new materials, concepts or methods, arent we also in trouble if we adopt a culture of merely accepting that certain things work? ( By the way, I think we already have. ) Someone once said, I believe Arthur C. Clarke, that to a a given culture, a sufficiently advanced technology is indistinguishable from magic. Weve already reached this phase. Worse, even if we know how something works, there are many things unfixable by the layperson because of the need for special tools. The analog in the programming world is the programmer who gets something to work, and then doesnt quite understand how or why, but doesnt care. A mentality like this is dangerous, and a test for it should be designed and added to Joels Interviewing Guide. Those who fail the test should be thrown out the back door into the alley. |
| Thu 05 Dec | Bill Carlson | Hmm. If it works and people pay money for it, the how and why are irrelevant. I don't think that Joel's point about leaky abstractions was that abstractions are bad - only that they are imperfect. This necessitates keeping one person around who knows the inside of the black box. The fundamental principle of self-interest allows us to trust others, most of the time. I don't worry that the food I eat is poisoned or that the car in the oncoming lane is going to swerve. Why? It isn't in their best interest. When self-interest fails to provide protection, we have laws and the courts. What does this have to do with software? Provided code is signed, it can be trusted as much as you trust the signer. I don't know how my Magnavox TV works, but I trust Magnovox to make sure it doesn't explode. If other Magnovoxes had exploded, I wouldn't have bought one. As a general rule, grand societal plans that rely on people getting a lot smarter just aren't going to work. Specialization is here to stay. |
| Thu 05 Dec | Julian | As a practical matter, everyone has to rely on abstractions since it's impossible to master all aspects of any topic. For example, my knowledge of electronics, semiconductors, assembly language, operating systems, compilers, networks, and most other computer-related topics is negligible. Nonetheless, I'm a rather productive programmer, since my mental abstractions are good enough for the programming tasks that I face. Additional knowledge, in terms of both breadth and depth, has definite value. That extra knowledge improves your internal abstractions, but it doesn't replace them. |
| Fri 06 Dec | Thomas R. Dial | >>Hmm. If it works and people pay money for it, the how >>and why are irrelevant. Right, but if you're talking about software, which we are, that attitude can get you into trouble. |
| Fri 06 Dec | James Wann | Don't forget, the last time someone tried to 'plug' all the leaks, the end result was PL/1 :-P |
| Fri 06 Dec | Bill Carlson | I agree with Thomas on his last post. I try to maintain competance over all the layers of abstraction that a programmer faces. Even with .NET, I can still write code and mentally imagine what processor instructions execute and which traces light up on the motherboard. However, it may not be possible to do this for very much longer. I can't know every protocol, every optimization technique used, etc. A couple generations from .NET, one person may not be able to trace a single byte from 'cradle to grave'. This is scary, but inevitable. Simpler interfaces, with 3rd party independent black-box testing might assist, but what will it all look like 30 years from now? In my mind, this is the problem with web services. Now, when I distribute an app, all that really needs to happen is that the user's computer is running. If I begin to use a few web services, I'm all of a sudden dependent on a hundred people I don't know doing their job correctly EVERY DAY or my app is toast. One could argue this is already the case with the internet, I suppose. However, this is a single entity, with enough usage to garner financial subsidy if needed. |
| Sat 07 Dec | anonQAguy | Regarding leaky abstrations - Two points: 1) There's a quote I really like regarding models, which are after all, abstractions: 'All models are wrong; some are useful.' don't know who said it but I came across it while I worked for an US Army analytical agency (basically an agency full of Operations Research professionals working on materiel acquisition and operational issues). We had to do a lot of systems modeling of various types, from mathematical modeling to large scale distributed computer simulations of corps-level combat. Models were everywhere for us, and you'd find this little quote by most folks' desks someplace. I like it because it acknowledges the utility of models as abstractions from reality, while it contains a caution to be careful when you use them. When presented with a model, IMO it's essential before using it and interpreting any insights you might attempt to derive from it to understand the nature of how the abstraction differs from reality, what it can tell you, and what it cannot since it has ceased to be, in fact, reality itself. It comes down to this: the abstraction is a tool; to use the right tool for the right job, you have to know what it will and won't do. If you step outside those limits, you're probably not going to get full value out of the tool (e.g. abstraction). I think this basic idea--abstractions are useful, even necessary, but one must be careful in their application, especially because they are not, in fact, reality, is the core concept of Joel's article. At least when I read it that's what I came away with. No disrespect intended to Joel, but those are not new ideas. Though it's good that he wrote the article because unlike many of us, he has a bit of a voice; if he says something it'll get heard by more people than if many of us do, and given the remarkable dearth of critical thinking evident in so many circles, it's good to have the reminder to take care, no matter whether it's a new idea or not. 2) Whichever of Arthur C. Clarke's 2001 A Space Odyssey series was last, I think it was set in 3001 or there abouts, 1000 years after the previous episode, Clarke describes something very like what I'm hearing projected in this group. I believe it was the character Frank Poole who is the focus of Clarke's last episode. The point is that during that time, the protagonist takes a trip through space with a contemporary space crew. He's appalled at the time to find that the crew know next-to-nothing about how any of the systems on their ship work. He can't help contrasting that to the extreme amount of hard-engineering background he had had to master to get into the space program, get selected for the original Odyssey mission, etc. The contemporary crew knows little more than how to execute specific functions via the system interfaces provided. They don't know how their systems work, and they couldn't fix them if they did. IMO, it's a disturbing, but probably fairly accurate prediction of how our interaction with technology is going to unfold. As we increase the incidence of systems designing other systems, there may in fact be few if any humans (well, organic ones anyway :) who can understand what's going on at any but the most abstracted levels. Thanks, Cheers, |
| Sun 08 Dec | slappy | One interesting 'leaky abstraction' that is going to cause a serious scientific meltdown in the next 5 years, is all the genetic data and computational biological models in use. I got bored with straight up software engineering and got into bioinformatics about a year ago. At first I was freaking out because all the models and results being published seemed really sketchy. However, I just attributed that to my lack of domain knowledge; surely, when I understood biochemistry and molecular biology, I would see what these guys were talking about. Unfortunately now I am freaking out because now that I know the molecular biology and biochemistry behind these articles, I know realize all the models and results being published ARE really sketchy! There are a lot of proclamations in the popular scientific press that are being made on the basis of really flimsy experimental evidence. My prediction is that a lot of people have really overstated their results, and in the next 5 years the genetics research/industrial sector will undergo a serious dot-com style meltdown. (businesses imploding, drug company R&D budgets slashed, no more grant money, etc) |
| Sun 08 Dec | Prakash S | slappy, thanks. will keep in mind when investing in the market. could you be more specific? |
| Enterprise app. languages | Thu 05 Dec | Mike Swieton |
| Question: what would be the recommended language to develop an enterprise-class app. in? One thing Ive actually considered is Java, almost entirely for the massive class libraries including decent support for RMI, serialization, and other stuff that will be useful. I considered C++ very highly, and I like it and its fast and efficient. The downside there is that I have to do a lot myself. Im not sure what else would be out there thatd be appropriate. Thoughts? |
| Thu 05 Dec | Prakash S | Why not go with .NET & C#? Class libraries for .NET is pretty good too. I know you can do a bit with RMI, but I think XML, SOAP is the way to go. would love to hear everyone's thoughts on this. |
| Thu 05 Dec | James Wann | um... VB? Delphi? Powerbuilder? Cobol? X86asm? Emacs? It doesn't really matter what language you program in, as long as: 1. It can satisfy your problem domain requirements (most languages) 2. Is accepted and is productive with your team. -james |
| Thu 05 Dec | Mike Swieton | I should have mentioned this before, but I intend this application to run on Unix first, and Windows second. Of course, I intend both, but I'm developing under Linux, so .NET is not at the top of my list. I know there's a lot of support there, which I am investigating, I was just wondering what people thought. James: Yeah, I could write it in fortran or mindfuck if I wanted to, but if I'm going as low level as the assembler that you mention, I'll write it in C++. The question is not of whether it can do it: most languages can do it. It's also not as much a question of productivity of the team: I know C++ and java both extremely well, but Java's class libraries are great. But will they both scale well enough to support hundreds of concurrent connections? I'm willing to sacrifice ease of development for scalability and efficiency in the end result, but if Java scales well, for example, then why not take advantage of its strengths? And the team is me: Right now I have no helpers, which I'm OK with. I'll learn whatever I need to know to do what I want quickly and with high quality. That's the important thing. In this context, what would you guys pick? |
| Thu 05 Dec | Walter Rumsby | Java is designed for scalability, and if you need to hop down to C++, you can write Java code to call C++ code. Like you say, Java comes with very substantial class libraries and there are a lot of open source, free, shareware, cheap, etc libraries you can use. If you know Java and C++ equally well, you should be more productive with Java (this is similar to Joel's C++ programmers are more productive in VB argument). |
| Thu 05 Dec | James Wann | > I'm willing to sacrifice ease of development for scalability > and efficiency in the end result, but if Java scales well, for > example, then why not take advantage of its strengths? Excellent, some details. Of course, this begs more questions: 1. What 'scale' are you talking about? I'm assuming you mean the number of users? Or is it the number of write transactions? Or is it read-modify-write transactions? 2. If you're concerned about large #'s of concurrent connections, then either COM+/.NET or J2EE/EJB's scale equally well, since they essentially have the same transaction/pooling model. 3. Are you planning on taking a multi-tiered approach? 4. What is the expected source of the 'hot-spot'? In other words, what are you afraid of not scaling well? Apologies for the terse earlier response, but it initally sounded way too open ended :-P -james |
| Thu 05 Dec | Prakash S | From what you say, you would be better off with Java. |
| Thu 05 Dec | java | i would use Java. at some point you will want a break (an 'enterprise' app is a 24/7 affair) and everyone else is doing it in java, so it is easier to hire someone else to take up where you left off. ;-) if it is really 'just you' , you could use whatever you wanted. however, java has the best libraries for unix-based enterprise-y stuff. |
| Thu 05 Dec | Guyon | why not try Python and Kylix(Delphi for linux)?! there both great languages and the combination is great imho. And of course there both perfectly portable! my 2 cents |
| Fri 06 Dec | Simon Lucy | Without knowing what the app was intended to do its tricky. There might well be a middle ware product that does most of what you want already, or you might want to build it from scratch. In the end its the platforms that you want to support that matter. It sounds like you don't care what the clients are and so its a matter of what server platforms you want. Choosing Java is not a bad choice, if I was writing it from scratch I'd probably choose Perl unless I was supposed to be distributing objects (which doesn't appeal to me), rather than messaging, |
| Fri 06 Dec | Jeff Kotula | If it is a business app, I don't really have the experience base to recommend. However, since you want to run first on Unix it seems likely that it isn't necessarily a straight IT-style app, so... User interaction layer with wxPython (which is cross-platform), and application data management (persistence, undo/redo, etc.) with C++. General advice: unless your intent is to experiment, don't jump on the latest bandwagon. If your intent is for long-term production use stable, proven technology. |
| Fri 06 Dec | Stephan Westen | Some remarks: Developing gui in Java environment is not as fast as in .NET or Delphi (swing or browser). On the other hand, there are indeed lots of interesting libraries around for the Java platform. Quality is higher then i have seen for Delphi or VB. Another interesting issue is finding developers that are qualified to develop enterprise software. In my personal experience there are more developers on the Java front than on the MS platform who are knowledgeable. Maybe this is because the barrier for J2EE is higher? Finally, there is the issue of cost: app servers like WebSphere or WebLogic are expensive. JBoss and Linux are for free. Leaves the database; maybe MySQL is an option, but i heard that it doesn't run flawless on Windows. |
| Fri 06 Dec | Robert Chevallier | For free open source production quality (or at least proven technologies), have a look at Firebird (the open source version of the commercial Interbase) and the famous postgresQL (Windows support is not as great) |
| Sun 08 Dec | jb | This model may not work in your current environment but a good approach is to use a messaging system as the backbone for your Enterprise App. Good messaging systems include Tuxedo, Tibco, MQSeries (and MSMQs if you are on Unix) or you could always role your own. The messaging system essentially sends messages and requests back and forth between what are, otherwise seperate systems. The advantages of this model are: 1. You can use any and all the languages you want. Java in some places, C++ in others. The messaging system will hide each unit from the details of the other. This allows you to specialize by using Java for certain stuff but using C++ to handle intensive or low level stuff. I know one site that even attached perl for doing reports. 2. Scaleable. Allows the load to be spread over many differant processes and even servers. 3. Fault Tolerant. Allows whole servers to be killed without crashing the system. Disadvantages are, of course, cost and complexity. They can also increase response times but then that is often the case for scalability. |
| User Interface Hall of Shame | Thu 05 Dec | James Wann |
| Does anyone know where the UI hall of shame went? I just checked http://www.iarchitect.com/ and the related links on google and all I got were 404s :-( |
| Thu 05 Dec | Tim Sullivan | Funny, same here. It was up 2 weeks ago. Could be a temporary server problem. I wouldn't worry for a couple of days. |
| Thu 05 Dec | Troy King | It's been so long since it was updated; I'd love to see that helm taken up again -- that was one of my favorite sites. Interfaces sure haven't gotten better, either, in the couple years since the site was updated. |
| Thu 05 Dec | Malcolm | There's always the wayback machine -- http://www.archive.org . |
| Fri 06 Dec | Rob Leighton | Perhaps it hasn't been updated because there are no more UI's that qualify . . . Hey, it COULD happen ! :) |
| Fri 06 Dec | Sam Gray | Could it? http://www.oregonlive.com |
| Fri 06 Dec | Marc | > 'http://www.oregonlive.com' Oh my... I went to that link and now I'm blind. Anyone know how to clean this blood off my keyboard? |
| Sat 07 Dec | Albert D. Kallal | Gee, I just learned that the hall of shame site is also down. I thought it might be my end, ..but this thread clearly shows that it is down, or gone. Perhaps another dot gone? Anyway, I was not aware www.archive.org. That is a incredible site. After learning about that site, when using google and coming across broken links, the above archive often lets you get the page that is no longer available. For weekly magazine and stuff google often gets hits, but articles from 2 years back are not available. On www.archive.org I was able to get server articles I had been looking for. Great idea. In addition, most of the hall of shame can be found at the archive, but it is strange that the site is gone. I wonder if the owners realize how popular the site was/is. Gee, should I grab a copy of hall of shame from www.archive.org before they go away? I had often used links to some specific example from that site in email and newsgroup postings. Perhaps someone should contact them, and offer to host that info. However, there is archive.org, and I guess that is what it is for.... Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com |
| Sun 08 Dec | J. D. Trollinger | To find out more about www.archive.org , you can read this interview with Brewster Kahle, the guy to created the archive: http://www.newscientist.com/opinion/opinterview.jsp?id=ns23701 |
| Swing UI? | Thu 05 Dec | Wei |
| Hi... am a student working as an intern on a project that has a very short deadline: 4 months from now -> end of internship. My team has been considering the development tools to use, and the one that came out very often was Java and Visual C++ (perhaps using Visual Studio 6). Were hinging on Java because of prior experience, but Ive read that Swing is a lousy set of UI components => there are very few commercially successful applications using Swing. Of the 3 people working on the project, Im the interface designer. My objective (in line with the project objectives of course) is to design and implement an intuitive WIMP interface for the project. Am curious about the viability of Swing versus Visual C++? |
| Thu 05 Dec | Just me (Sir to you) | This has been discussed before. While some have tried to change my pont of view, I have not realy seen anything to change my mind. Swing is horrendous, It is probably one of the key elements as to why Java failed on the client. If this is standard WIMP and you have the choice, try either .NET (C++ or C#) or WxWindows ( http://www.wxwindows.org/ ). |
| Thu 05 Dec | dk | You can consider Qt from trolltech.com. |
| Thu 05 Dec | Ged Byrne | Heres a good online book about using QT with Python. http://www.opendocspublishing.com/pyqt/ You might wan't to consider Python under such tight deadlines. Even if they are using something else for the backend, Python will integrate with pretty much everything. |
| Thu 05 Dec | richard | Remind me, whats WIMP stand for again? I have got a lot of Swing experience, and I have a tendency to code GUIs by hand - which isn't anywhere as fast as using a visual builder, but it at least allows you freedom in what IDE you want to use. As for Swing being 'lousy', I don't know about that. Its lightweight for sure, in the sense that you don't get as many of the for-free features as you would with native features. All rendering is done in software, and Swing applications tend towards the memory intensive both of which hit performance. Used to be a really big issue on 400-ish MHz machines, but its less of an issue nowadays, and I personally find swing applications that I use (big heavyweight IDEs (IntelliJ IDEA)) to be fine from a UI performance perspective. I think you have to assess the volume of screen development that you intend to do and pick the right tool for the job. As always, the best tool is usually the one you are most familiar with, especially when deadlines get shrunk. Do some quick prototypes in both environments to get a feel for them. In general UI development is dictated more by familiarity with the UI APIs than anything else (those things tend to be huge) and is certainly something that stands well in Swings favour (its a well named API for sure). |
| Thu 05 Dec | Prakash S | I second (third) Ot . http://www.trolltech.com/ |
| Thu 05 Dec | Nice | well, I like Swing. There is nothing really bad about it. I like Delphi because event callbacks can be registered/unregistered at runtime. C++ is full of message maps. I would be surprised if you can sketch out a user interface that couldn't be implemented in *any* language / toolkit. UIs are generally built from the same pieces - labels, panels, text boxes, trees, tabs etc - and all toolkits have these. So it comes down to the language choice of the implementor of the UI. Designing a UI and implementing it in abc language using xyz toolkit are two completely separate pieces of work. The only thing that can slip up is if you do some fancy custom control requirement that can't be done in some basic toolkit. But with swing, you can do custom controls easily. You could with FOX or MFC or whatnot too I dare say. C++ UIs are never pretty sourcecode. If you aren't comfortable with C++ and C++ UI code, you ought avoid having to learn it as a dependancy of the project. |
| Thu 05 Dec | Foolish Jordan | Since you don't have much time to learn, I'd say just go with what you know. Swing may not be that great, but it's good enough for most things. |
| Thu 05 Dec | Ged Byrne | WIMP = Windows, Icons, Mouse and Pointer. |
Thu 05 Dec | Jan Derk | <WIMP environment /n./ [acronym: `Window, Icon, Menu, Pointing device (or Pull-down menu)'] A graphical-user-interface environment such as X or the Macintosh interface, esp. as described by a hacker who prefers command-line interfaces for their superior flexibility and extensibility. However, it is also used without negative connotations; one must pay attention to voice tone and other signals to interpret correctly. See menuitis, user-obsequious. |
| Thu 05 Dec | Leonardo Herrera | 'Used to be a really big issue on 400-ish MHz machines, but its less of an issue nowadays.' Please, PLEASE, don't assume for us. I still use a PII 350 Mhz at home. That's why I still hate Swing. |
| Thu 05 Dec | Jan Derk | Before recommending a development tool, a bit more info is required. Depending on the type of project, the targeted platforms, users, etc Java, C++, C#, VB, Delphi/Kylix could all be your best bet. Personally I would not use Swing if you were, for example, only targeting Windows or for a commercial WIMP application. |
| Thu 05 Dec | Tom (a programmer) | I hear great things about SWT, a windowing toolkit for java which uses system widgets through JNI (I think). It comes with the Eclipse IDE, which I also hear good things about. I have yet to try either however. |
| Thu 05 Dec | Jutta Jordans | What kind of project are we talking here? Will it be a web application? Or an application running on a local machine? In the later case: Which operating system is used? Also, it seems to me that you are comparing apples with pears (as we say in German), when you try to decide between 'Swing' and 'Visual C++'. I am not a Java developer (just learned a little Java at university), but even I know that the Swing UI is not the only GUI library available for Java. And if you decide for the use of C++, the same is true. Here are different development environments and user interface libraries you can choose from. When you are talking about Visual C++, you probably have the MFC in mind. Ugly as it is, the MFC does its job in most cases and you can find a lot of support and suggestions for problems on the web. I am not actually happy but quite content with it. I would not go for the Visual Studio 6 version, though. Using managed code and the .NET framework just for the user interface and do the rest in plain C++ might be a good idea, too. The documentation of the new .NET classes seems to be way better than the one for the MFC, and it looks as if it is pretty straightforward to use (I haven't tried, though). But you should not choose your tools because someone here considers this or that language or library good or bad, but so that they fit your problem. Have fun, |
| Thu 05 Dec | Scot | SWT is much fast for me, it was built specifically because Swing wasn't fast enough... |
| Thu 05 Dec | Scot | faster... |
| Thu 05 Dec | Karel | second swt. Download eclipse and try it while you are it. SWT and Jface are buried in there. Much much simpler than swing. I was thinking about approaching o'reilly to do a swing/jface book..? |
| Thu 05 Dec | gee-dub | While I don't have a ton of experience in other UI technologies, Swing certainly gets the job. I build 'real', 'commercial' applications with it, and it stands up to every challenge. Pros: - Swing is unbelievably well designed, which makes it extremely powerful for an experienced developer. Can you do it in Swing? Yes, you can. - Swing is well documented, particularly in the 1.4 JDK. - Source code for most components is included. - Good user community and support from Sun. Cons: - Because of the power and flexibility of Swing, it is _very_ easy to design and build a poor application. While I fundimentally believe this is true with most technology, it is more so with Swing (particuarly if you are building everything by hand). Don't hand Swing to a herd of green devs and say build me a UI. - It's Java, it can be sluggish. You have to know who your target audience is. - Sun seems to be rewriting major parts of it. Swing seems to be at a point where Sun can't fix some of the problems with a band-aid any more. So they are redoing big chucks of it, like the focus management sub-system in 1.4. This can lead to compatibility problems and headaches. All and all, Swing is powerful in the right hands. If you have a good architect and smart devs, I'd go with it. Otherwise, another technology might be more appropriate. I, however, am going to read more about PyQt on OS X... |
| Thu 05 Dec | fool for python | and in the end...it's wxWindows for python |
| Thu 05 Dec | Rob | I am assuming this is a fairly decent-sized project. Given your deadline, I don't think you have the luxury of considering performance issues. Your main concern is to build it as quickly as possible, with the least number of defects while meeting the requirements. That means the language should be one that your team is comfortable (and productive!) with. While it is tempting to use the coolest-sounding, most powerful language people will let you play with, it may well be that the most appropriate language is VB. It all comes down to what your application is meant to do, what platforms it must run on, the skill level of the developers, and so on. As an intern, you want your employers to remember you as being the guy they would really love to hire again (even if you don't want to work there, a good reference helps) - especially in this economy. The way to get them to feel that way is to complete and deliver an application that meets their requirements -- on time. This happens so rarely that they will be stunned. So how to do that? Nail down the requirments, trim 'em down as much as you dare to for your first release, and THEN decide what the fastest, simplest, lowest-risk way of implementing those requirements are. Sadly for us, the ideal approach is usually the least exciting, least sexy, most mundane.... you get the idea. I'm just going off and cry in my cubicle now. |
| Thu 05 Dec | Bella | If you are simply building a Windows GUI app, can you tell me why you ruled out VB/.NET (or whatever the name of the week is)? |
| Thu 05 Dec | Andrew Reid | As someone who has done GUIs in both Swing and C++/MFC... The Good: Developing Swing apps in Java is faster and easier than C++/MFC. The GUI API is more elegant and I tend to find the Java standard libraries are more likely to have a function to do what you want than the C++ ones (which saves lots of time). There are also some cutting-edge IDEs out there (IDEA in particular www.intellij.com) for Java development. IDEA doesn't have a RAD GUI builder, though. The Bad: Java apps are bigger and slower than native executables. They take longer to start up, take up more RAM and, as has already been mentioned, can be less responsive on slower machines. You have to make sure a sufficiently recent JVM is correctly installed on the client machine. So, IMHO: If it's an inhouse app that needs to be developed quickly and won't have to run on machines that are too crappy (like a 64MB P400), I'd go with Java/Swing. It will be quicker to develop. If you're making shrinkwrap software for desktop machines, then go C++. You could make a Java app but a native code competitor will beat you every time for speed & ease of installation. |
| Thu 05 Dec | NathanJ | I agree with everyone else as far as choosing a language that people have experience with. If the whole team has experience with Java then Java will be a superior choice for a 4 month application. Even spending 1 month ramping up on a new language costs you 25% of your time. If half the team has C++ and the other half has Java - maybe it is a good to figure out who knows 'the most' about their language. That person could be a mentor for other people as they learn the language. Also, the language expert could do most of the tricky programming/development/debugging while other people get do more requirements gathering, usability testing, etc... |
| Thu 05 Dec | Moose | If you intend to be a serious java developer, then I suggest giving swing a shot. The improvements in the jdk 1.4 release are awesome. If you know what you're doing, rapid development it a sinch. Also the Latest netbeans IDE is rockin' |
| Fri 06 Dec | Tj | It's rather annoying when you're running multiple programs and Swing apps on Windows stall for a couple seconds when you switch to them. They're basically the last to wake. So if you know your users use many programs, or very resource-intensive ones, Swing is not a great choice. But if you just separate out the GUI from the logic, it won't be hard to port to another Java system. v1 won't be perfect... And Jython has a lot of syntactic niceness for Swing (and anything else using java beans.) The jython o'reilly book is necessary though, last I checked. |
| Fri 06 Dec | Andrey | The main swing drawback is non-standard user interface behavior for windows user. When 90 % of programs are native applications java one will behave little different and less predictable. Swing tries to emulate windows look and feel but this is only approximation. Little details will annoy user. Joel wrote about such small stresses that lead to dissatisfaction in his UI book. IMHO java performance is not an issue on computers less than 5 years old. Java/Swing programming is more fun and productive than MFC programming. You will deal with great designed OO library but not search where disappeared this @#$ message or something like this. Compare to swing MFC library is set of wrappers over api with huge legacy. But if your program intends to have large audience you should rater prefer MFC (like I do) or delphi or vb. |
| Fri 06 Dec | Jeff Kotula | I agree with wxWindows/wxPython. I favor an application architecture where the number-crunching and application data management is in C++, and the UI is in wxPython. Haven't seen anything that comes close to this for large-scale development of scientific applications over the long haul. |
| Fri 06 Dec | Roland | I am in charge of a technical application written in Java/Swing and C++, plus a decent JNI bridge between. We decided to build the GUI in Java/Swing and to write those parts in C++ that are required to yield considerable performance. Three years ago, this decision was quite risky, but in the end it turned out to be a rather good way in our case. (Perhaps nowadays I'd consider SWT/JFace also). None the less, I consider a project which is to be finished within four months a typical 'death march project' (good luck to you). You won't have the time to look for the best solution; what you need is some kind of rapid prototyping, and for that I guess Swing (with a nice GUI development tool like JBuilder) is ok. |
| Sat 07 Dec | Giorgio Pallocca | If the machines where the application will run have more than 128 mb of ram SWING is OK Less forgot it. SWING it's incredible memory greedy (this IS a fact) Good Luck P.S. Sorry for my poor english |
| Sun 08 Dec | Bella | Serious question. (Perhaps b/c I lack VC++ experience) Can someone explain why people are still building window's GUI's in MFC/C++/VC++/C++.NET (or whatever) ? Why are you not doing it in VB/VB.NET (or whatever) ? All complex logic can be done in C++ and called as an external library, right? I thoight this is how it went almost 5 years ago. Or do you code GUI's in C++ b/c its the more circuitious esoteric route, thereby justifying high salaries, and job security? |
| Unemployment Woes | Wed 27 Nov | anonymous |
| Am I the only computer professional that cannot find a job in Jacksonville, Florida? Ive been looking for the past 3 months with no luck. Does anyone know what state is the best state for IT professionals? I need a job quick--Im on my last pack of bologne! |
| Mon 02 Dec | Mike Wainright | How did we get to: 'Am I the only computer professional that cannot find a job in Jacksonville, Florida? I've been looking for the past 3 months with no luck. Does anyone know what state is the best state for IT professionals? I need a job quick--I'm on my last pack of bologne!' From: 'There is only one Certification and T Norman is His prophet. Blessed be the holy Name of the Prophet that speaks the Truth regarding the Almighty Power of the Certification. ' Typical software developers, full of BS! To the original poster - Hope we helped you out! |
| Mon 02 Dec | Mike Wainright | Whoops, switch the To's and From's above! |
| Mon 02 Dec | . | Actually, that's not true that 'there's a large sense of entitlement that programmers have.' Programmers have been happy to shuffle along from job to job while letting managements and others work to reduce their pay and bargaining power. Other groups exercise far more control over their professional lives than this, and expect far more too. One issue for programmers as a profession is that makers of software benefit from there being large armies of semi-skilled low paid people able to act as sys admins, but not much more. This creates the environment software makers can sell more product. The other side of the coin is that programmers inside those software-making companies benefit from this. Long term, there's a trend where software makers are getting smarter, and custom developers probably getting dumbed down. |
| Mon 02 Dec | Ed the Millwright | 'Programmers have been happy to shuffle along from job to job while letting managements and others work to reduce their pay and bargaining power. Other groups exercise far more control over their professional lives than this, and expect far more too.' Tell it like it is brother! Most programmers are spineless pussies that *like* to be pushed around. It doesn't take a guru to notice that design pattern. |
| Mon 02 Dec | Stephen Jones | 'Semi-skilled low paid guys able to act as sysadmins and nothing more.' The average pay for a sysadmin is running at over $50,000 in the States. Not low pay in my book. As for semi-skilled, a decent sysadmin will need about three or four years experience, with maybe half of it before his certification and the other half afterwards. And the certification changes every three or four years, so you need the new knowledge whether or not you take the exam. Or perhaps you mean 'act as sysadmins in Hollywood movies'. |
| Mon 02 Dec | sysadmin | $50,000 is low pay, for a sysadmin, in the states. |
| Mon 02 Dec | Stephen Jones (pedants rule OK!) | '$50,000 is low pay, for a sysadmin, in the states. ' I did say OVER $50,000 |
| Mon 02 Dec | Tj | 'Typical software developers, full of BS!' There are certain unstable topics. Though I'm silly for having chimed in. The question, 'What state is the best state for IT professionals?' looks like one that's needs more information. And if you're metaphorically on your last pack of bologna, would it make sense to move and take 3 months to find an IT job? Relocating costs money... and the US does not seem to have a huge unemployment rate despite the recession. Anyway, I thought the orig poster had gotten good advice among all the other stuff. |
| Mon 02 Dec | statist | I don't think there is a best 'state.' I guess if there was, it would probably still be California? It is probably easier to weed it down to the 'city' level. But, most cities that need a lot of IT workers are usually relatively expensive. I would guess that some booming western city might offer the best cost of living / salary ratio. (Las Vegas, Phoenix, Houston, etc) I honestly don't think it is worth relocating to find another IT job, unless 'IT job' means 'CEO of Cisco Systems,' or equivalent. |
| Mon 02 Dec | X. J. Scott | 'California' I don't know. I moved out of there. The rates are slightly higher around SF than in certain areas. The rates are lower than elsewhere in the southern areas. And yet the cost of living is substantially higher. There's high crime, high pollution, abysmal school quality, high taxes, homeowners associations, a ban on homeschooling, insane amounts of traffic, and duplicious phonies around every corner. On the other hand, there's a nice climate in the south and nice culture and food around the bay area. And beaches and mountains that you can do both in one day. So if you are an outdoors type and have the time (aren't working 70 hrs a week in an airconditioned building), it's OK. But you can get much more bang for your buck elsewhere and have a more enjoyable time doing it. |
| Mon 02 Dec | Prakash S | I guess one should go where the jobs are, rather than wait for the jobs to come. This is pretty much impossible if you are married, have kids and own a house. I remember checking http://www.computerjobs.com during the boom; Texas & New York (Tri state area) had more than 10,000 jobs listed at anytime. Now days you are lucky if you see 10% of those jobs listed. |
| Mon 02 Dec | Prakash S | read somewhere that 'they' predict that IT spending will increase in June-Sep 2003. Personally, I do not believe any of this BS. If you are lucky enough to have a job, then great. Otherwise you could go back to school and get a degree in anything NON-CS related, or choose another profession and go with it. It's going to be a long time before the curve between the people seeking for jobs in IT and the available jobs normalizes. Basic question of demand and supply, like some other person on this forum mentioned. |
| Mon 02 Dec | William C | >>>>>>>>>> If you are lucky enough to have a job, then great. Otherwise you could go back to school and get a degree in anything NON-CS related, or choose another profession and go with it. >>>>>>>>>> Whoa, whoa, whoa. Something seems strange here. You are suggesting that people shouldn't get CS degrees? I thought every other person in every other field was having a hard time finding jobs (not just computer related) because of the economy (not because they are picking on programmers). What makes you think that if I go get a Business degree I'm going to have 7,8 offers? Also, when we talk IT...what exactly are we talking about? Are we talking the guys that set up your computer? Are we talking about the guys that work with flash? Are we talking about the guys that code html? Are we talking about the guys that write the backend code? What are we talking about? Because programming is still a hard thing to do (as opposed to installing win2000 on everyone's computer at the office). Also, what about non-IT places. What about places that develop software apps (shrinkwrap)? I still think getting a CS degree is a good thing. |
| Mon 02 Dec | T. Norman | If you want to be a programmer, or are a programmer already but without a technical degree (or a lot of technical self-learning), a CS degree is a good thing. Getting *another* CS degree, as in a Masters or PhD, is usually a waste of time and money unless you plan to go into some very specialized programming which requires a lot of R&D, like artificial intelligence or voice recognition. Or you plan to teach. |
| Mon 02 Dec | Prakash S | William C: I assumed that most of the people in this forum have at least ONE CS degree or a few years of CS experience. Doing another CS degree is surely a good way to add value to yourself, but more value can be added by gaining more domain knowledge like Bio *stuff*, medical *stuff*, etc. |
| Mon 02 Dec | William C | Hmmm...I'm wondering how useful taking classes would be in the first place. What's a couple of classes going to do for you (while looking for a job)? I'd spend the time reading up on some newer technologies and just messing around with some projects that take advantage of that newer technology. Unless you are just going to stop looking for a job altogether and go for your masters (which is at least a year of full-time schooling, maybe more). Otherwise, I'm not sure how any classes would help. I'm not saying I'm right, I just don't know if it would. |
| Tue 03 Dec | Prakash S | look at this way, u have been coding in perl for a couple of years, you go to grad school get a MS in computational biology or something like that, it just gives you more opportunities, and you buy yourself some time till the economy picks up. |
| Tue 03 Dec | William C | >>>>>>>>>> look at this way, u have been coding in perl for a couple of years, you go to grad school get a MS in computational biology or something like that, it just gives you more opportunities, and you buy yourself some time till the economy picks up. >>>>>>>>>> First, I'm not saying this to be mean, because you come off really nice and I'm sure you are, but you haven't even entered the job market yet and have worked 0 years as a professional! :) I just want to get that out there because I don't think you are speaking from experience. That being said, tell me what does an MS in computational biology buy you? Let's use Joe Smith as an example. 1) To get an MS in computational biology, Joe would have to stop working and go to school full time (let's hope he's not married and has kids). Possibly, Joe might get it done in one year, but I bet it takes more. So now we are talking about 1+ years with no income and with no chance for a job (because Joe is in school full time and not interviewing). 2) Now let's say Joe goes the 1+ year without working and gets the MS. What's his career path? He just went 1+ years without working with Perl (skills thus errode) and now he is a fresh newbie with a brand-new masters degree in computational biology. Is he now a computational biologist? Is he a Perl programmer? What is he? If he's a computational biologist he just took a step down. Because now he is looking at entry-level salaries (unless these guys make tons of money -- I know nothing about Computational biology). So now that's 1+ years of no income plus a reduced salary from his 'programmer with experience' salary AND that's if he does get a job right away! It seems like to me that you are asking for a complete career change. As opposed to gaining more knowledge in his current career. 3) The reason people aren't finding jobs is because the economy has been poor. This affects EVERY CAREER (not just programmers). Let's say Joe was graduating *right now* with a computational biology degree. Is he more likely to find a job than being a perl programmer? Or more likely then being a perl programmer that bites the bullet and takes a lower salary than what he thinks he should get (this ain't the internet bubble you know)? The real problem is that he is a 'perl programmer'. What is that? I'm not sure if I would hire a motivated perl programmer to be a C, C++, or even a Java programmer. But I would think that the C, C++, Java programmer could easily pick up perl (I could be wrong here, I never really used it...but I have used php). I don't mean to pick on perl programmers, but the fact that he only knows Perl is a major part of the problem. Perl is something that I would pick up an O'reilly book on and start coding in a week. Why did Joe limit himself to just Perl programming the past X years? Did he think companies were going to be lusting over Perl programmers for the rest of his life? What kind of a degree does this perl programmer have? Did Joe get one of the CIS degrees (Computer Inofrmation Systems, I think)? Ugh. I'm sorry if he did. Did he get a Computer Science degree? Did he get a Computer Science and Engineering degree? Does he have a degree? I don't think it is as simple as 'go back and get a 'fancy' MS degree'. I've only been in the 'real world' for 3 1/2 years. But that's why I'm on this message board now. To talk through something like this. :) |
| Tue 03 Dec | programmer. | well, i have a math degree, and usually program in perl. i went back to school for a master's in computational biology (NYU), and I didn't have to stop working. 'full time master's degree' is usually two courses a semester. and they are usually in the afternoon. i live in new york city, thus i don't have to drive a 2 hour commute, so it wasn't that hard going into work early and leaving a little bit later to go to class. i now work for a research hospital, and make the same salary i was making before, but i am working on something i find interesting. i think maybe prakash meant that having some domain knowledge lets you do work other than being a generic programmer. I probably could do my current job with my current skillset and a molecular biology book, but i probably wouldn't have gotten the job without having a piece of paper that says i know something about biology. i thought getting a master's degree was actually a lot of fun, i met people, got to learn about interesting stuff, made some reasonable connections (got a job out of it) etc. of course it is possible to meet people and learn about interesting stuff without going back to school, but if you are a typical 'computer personality' it isn't maybe as easy as you would like it to be. there are probably other problem domains much more lucrative than computational biology (i make $85K in NYC, FWIW). For instance, learning finance, or something. but if you like biology, and programming, computational bio isnt a bad choice. (and it pays about 2x as much as non-computational bio. ;-)) |
| Tue 03 Dec | programmer. | one other thing i wanted to mention, is that if you want to do something, just do it. a lot of posts on this board about employment seem to have this crazed tone, sort of implying that your wife is going to leave you , and your kids will starve, and you will be thrown in debtor's prison if you take a year off to get a master's degree, or travel the world, or whatever. of course getting a master's degree, or going on an extended vacation, are not going to make you a multibillionaire, but if you think these things are important, you are better off doing them, rather than always wondering if you should have done them. if you hate your master's degree, you can just quit, and if you don't like your trip, you can just go home. |
| Tue 03 Dec | William C | Programmer, interesting post. Very informative. I have a quibble, though: >>>>>>>>>> well, i have a math degree, and usually program in perl. i went back to school for a master's in computational biology (NYU), and I didn't have to stop working. 'full time master's degree' is usually two courses a semester. >>>>>>>>>> See, the difference is...you had a job at the time (thus, income). And if you need 10 classes to get your MS, this took about 4-5 years (maybe less). But what we are talking about is advice for someone who is currently unemployed. And I would think that you would have to have your MS completed before computational biologists start taking you serious. So Joe, in my example, is going to have to go to school full-time to get it done quickly (so he can get back in the job market). That was my point at the end of my post. The fact that Joe the Perl Programmer did nothing but Perl the whole time he was employed. Maybe he should have been thinking about getting an MS and things of that nature. But because Joe thought companies would always lust after Perl programmers for the next 20 years, Joe is stuck in a situation where he is just an unemployed Perl programmer. I must say, all this talk has woken me up. I've been in the 'Real World' for 3 1/2 years, and I never had plans for an MS in anything. But now I am interested in going back to school. If I was interested in nanotechnology (I only know about as much as I read in this Sunday's Parade magazine from my newspaper), I wonder what my focus would be for my MS? I wonder if you need a PHD to be taken serious? I digress. :) |
| Tue 03 Dec | William C | >>>>>>>>>> one other thing i wanted to mention, is that if you want to do something, just do it. a lot of posts on this board about employment seem to have this crazed tone, sort of implying that your wife is going to leave you , and your kids will starve, and you will be thrown in debtor's prison if you take a year off to get a master's degree, or travel the world, or whatever. >>>>>>>>>> Remember now, the original post that started this thread gave us these facts: 1) he was unemployed 2) on his last pack of bologne Using those facts, I'm not so sure if he would be able to take 1+ years off with no income. It's not that the world around him will blow-up, it's just that you have to pay some cost-of-living bills. If you have a mortgage, you have to pay it. If you are renting an apt., I don't think the landlord is going to let you stay for free. |
| Tue 03 Dec | programmer. | yeah, this thread is way off topic. anyway, i've been to jacksonville, and from what i remember of that city, that guy is really screwed, and not just because he's unemployed. ;-) in general i'm anti-credentialist, and don't really like the idea of master's degrees, but I wanted to learn about biology, and it seemed like if I was going to read a bunch of stuff about it anyway, i might as well get a degree during the process. it took 1 summer, 3 courses in fall, 3 courses in spring, 1 summer, 2 courses (1 i didn't need) in fall, thesis in spring, to get the degree. was it worth it? well, it cost about $12K out of my own pocket. in theory i could have put that money into some interest-accuing account, and had an additional 5 years of retirement income 40 years from now, or something. but more likely i would have blown it on computer stuff, eating out, electronics, etc. i'm now able to do work i find at least 10x more interesting. i don't really think the master's degree itself imparts any increased job security, but i've learned that job security is more a factor of having a clue, networking, and hustle, than it is market dynamics. |
| Tue 03 Dec | Prakash S | William C: point taken, Yes, I do not have full time work experience, but my point is listing out all the options one has, and going with the best choice. A year without work does not look too impressive on a resume. Going to school will not necessarily make you a better candidate for a job, or might not even get you a fatter paycheck. What it does is gives you an additional bunch of jobs you can work on, in addition to what you have been working on already. The trade off: Is it alright to spend the money on a degree or try my luck with the same skill set (and not spend that money). How long do you look for jobs, 3, 6, 9 months? |
| Tue 03 Dec | Prakash S | programmer: What kind of stuff are you working on? |
| Wed 04 Dec | Ichabod Crane | I work and live in Jacksonville. Yes to some the market may be bad but look at it from the other side. We currently have 2 openings. One for an EDI programmer and one for a Sr. level web prgrammer that can handle day-to-day operations of a large webfarm. I can't speak much fro the EDI position but I do all of the technical interviews for the web position. Some of you would be surprised at the level of expertise some people purport to have but then can't pass a tech interview. You may also be surprised and how many people have things like VP or CIO listed on their resume. That makes it look like the market is bad when VPs etc. are willing to step down in salary. But I know some of these guys and they may have been a VP but so was most everybody else in the dot com boom. Everyone made big money and had impressive titles but most weren't qualified for even a Jr. level position. The positions are there we just need to change our expectaions. But no that won't work because most of us can't afford to work for $11/hour (but that is better than no job). If you still looking then post a link to your resume and I'll see if I can help. |
| Wed 04 Dec | Bella | > in theory i could have put that money into some interest-accuing account, and had an additional 5 years of retirement income 40 years from now, or something. but more likely i would have blown it on computer stuff, eating out, electronics, etc. You have no idea of how true this statement is. Anything you will earn will be spent by your wife and children. (No, I am not married with children, but it's pretty obvious if you look around) |
| Wed 04 Dec | PC | [But imagine how bad it would be if anybody could wake up one day and call themselves a doctor or lawyer. While it is true that rigorous professional certification standards are not a guarantee of competence, it does a good job of weeding out most of the pretenders and upholding job security for those who do know what they are doing.] What prevents most of us from being a doctor or lawyer is what it costs to get a medical or law degree. That's where their job security comes from -- keeping the tuition high and no assistanceships. You can get a doctorate in many other subjects absolutely free. |
| Wed 04 Dec | algorithm | 'What prevents most of us from being a doctor or lawyer is what it costs to get a medical or law degree.' this is totally incorrect. getting an MD or JD is no more costly than buying an sport utility vehicle, if you have in-state tuition. nearly everyone takes out student loans, which are extremely easy to get once you get into medical school. getting into Med school is actually really hard: you need a 3.5+ GPA, good mcats, a bolus of relatively hard prereqs, good recommendations... and if you don't have a STELLAR gpa (3.8+) and _really good_ mcats, you need to do stuff like volunteer in clinics. you are weeded out because it is time consuming and difficult. getting into law school is less difficult but if you go to a bad law school, you can't get a job with a good firm, so you don't really make good money anyway. and getting into a good law school requires good grades from a good undergrad college. |
| Fri 06 Dec | Alberto | Despite great G.P.A's why are so many doctors so mediocre? I mean, after all, they've got such great g.p.a's. |
| Fri 06 Dec | Prakash S | GPA in most cases is not a good indicator of your skills! |
| Fri 06 Dec | William C | [quote] GPA in most cases is not a good indicator of your skills! [/quote] That's just something that people with low GPA's say. :) Seriously though, I'd change that statement to GPA is 'sometimes' not a good indicator of your skills. For example, my co-worker/friend is really smart and a really good programmer/engineer. But, in college he would get C's because of the level of effort he put into homework (what was more important to him was actually understanding and comprehending the concepts). But, if he had completed all his homework, he definitely would have received A's. Not because 'completing homework' automatically means an 'A' ... but because he understands the concepts enough to write/program homework that is deserving of an A. To say that someone who isn't smart can get A's by getting all their homework done shows me that you go to a really crappy college or something! :) Now where GPA comes into play is if that is your ONLY basis for hiring someone (and that would sure be one dumb company). But if candidates, after going through an interview process, were pretty much equal ... I'd lean towards the person with the higher GPA. I think the high GPA shows some level of commitment. |
| Fri 06 Dec | algorithm | 'Despite great G.P.A's why are so many doctors so mediocre?' i don't know. i only have one doctor, whom I see rarely. she seems pretty good. i don't have a large enough sample to make a guess on why many are mediocre. my comment was merely to point out that money is not a significant deterrent to becoming a doctor. it is more the time commitment and the track record you have to maintain. it is very easy to obtain funds (in the US) for medical school, if you manage to get into medical school. |
| Fri 06 Dec | Alberto | I happen to know why so many doctors are mediocre, it's because medicine is not a passion for them, it's merely something with good 'social acceptance'. Passion+Ability = good at whatever you are doing. No Passion+Ability = mediocre at whatever you are doing. Thats why so much software is mediocre too, people chasing a buck in the boom times with no passion for what they do. |
| Sat 07 Dec | Prakash S | William C: That is the reason , i say 'most cases' :-) |
| Sat 07 Dec | algorithm | alberto, that reasoning seems sound to me. Lack of passion certainly explains why I'm doing such a mediocre job on my current project. ;-) |
| Sat 07 Dec | algorithm | The lack of passion observation sets up a damning scenario for the enterprise software world; It seems hard for me to imagine anyone truly passionate about building billing systems for an insurance company. In fact, if I met such a person, it wouldn't be a person I'd want to be around too often. ;-) |
| Sun 08 Dec | Bella | effort = f(passion) skills = f(effort) |
| Sun 08 Dec | Prakash S | Hear, Hear :-) |
| Fundemental Laws of Software Development part 2 | Fri 06 Dec | David Hickerson |
| 7. CHOOSE A TECHNOLOGY THAT IS APPROPRIATE FOR THE APPLICATION. Making a technology, which was meant for a different situation, bend to meet the needs of this applications situation will result in additional time being spent making the bend. This additional work may never fully succeed in meeting situational requirements. The consequences: Loss of product quality Loss of productivity 8. CHOOSE SOFTWARE TOOLS THAT MEET PROJECT WIDE USE REQUIREMENTS. Software tools that are widely used can be difficult to choose for projects. This is because of the wide variety of requirements that different project team members will have. Compromise is quite often likely to occur. The key here is to look at the compromises in terms of product quality effect and productivity effect across the project. And since compromise is likely, the software tool should be adaptable. Ease of use should be another consideration in order to avoid extensive training of many users. The consequences: Loss of product quality Loss of productivity 9. PRODUCT ASSEMBLY AND SCHEDULE COORDIATION. Coordination of large groups is difficult; generally areas of work are related through dependencies. These dependencies establish a schedule requirement for when areas of work are to complete. When areas of work deliver out of order, additional rework is required of the areas of work dependant on the out order delivery, failure to do the rework will likely lead to loss of product quality. The consequences: Loss of product quality Loss of productivity 10. NEVER BREAK YOUR CUSTOMER. Customers come in two flavors, internal and external. The external customer is the one outside of the project and usually takes delivery of the projects product. The internal customers are those people in the project, but outside the work area and dependant on another work area. Understanding whom the customer is the first step. Creating insulation between the customer and producer is the next step. This insulation is an agreement that the two parties shall follow to avoid the producer from causing the customers work to become broken. In this agreement the customer agrees not use the product in a way that was not intended, and the producer agrees not to change the product in a way that would affect the customer. If it becomes necessary for the producer to do something, which breaks the customer, then the obligation is on the producer to communicate the problem and to work with the customer to lessen the resulting change. In software this is called an Application Programmers Interface (API). API code is identified as non-changing, both in signature and behavior. API code is never removed or deprecated; it only goes into a non-maintained state. If it is necessary to change API code, a new API is created to exist with the old, and the old API remains unchanged. The consequences: Loss of product quality Loss of productivity Loss of customer 11. SEEK THE LEAST COMPLEX SOLUTION. Adding complexity without adding to product quality causes a loss in quality. Complexity is difficult to produce and maintain. It is imperative that simplest solutions are found to a quality to product. The consequences: Loss of product quality Loss of productivity 12. DEVELOP AND TEST WITH REAL DATA. Simulated data is all right for initial development, however it generally does not behave exactly like real data. This usually leads to problems after delivery to the customer. The consequences: Loss of product quality Loss of productivity Loss of customer 13. USE STANDARD ENGINEERING PROBLEM SOLVING. Define the problem, state the given, and create the solution. When the given is not sufficient gather more data based on the fact available. This methodology maintains the focus on the problem and helps to organize solutions. The consequences: Loss of product quality Loss of productivity 14. ORGANIZE CODE TO MINIMIZE DEVELOPMENT CONFLICTS. One problem that occurs in poorly organized code is that multiply developers need edit the same code at the same time to add functionality. This leads to difficulties in merging the code to capture all the functionality without adding bugs. Code needs to be organized in such a way as to avoid large file sizes and code structures that create a single add point for addition. The consequences: Loss of product quality Loss of productivity |
| Fri 06 Dec | Robert Chevallier | True, these 'laws' are just common sense. The real question IMHO is why they are so often ignored and so the project ends in failure. Understanding forces that lead to not applying such common sense would be more useful. Does anyone knows a good book or web articles on this subject ? |
| Fri 06 Dec | Robert Chevallier | Also look at http://www.cs.usfca.edu/~parrt/doc/devnybbles.html |
| Fri 06 Dec | David Hickerson | Jerry and Robert thanks for the validation. Yea, I thought these were obvious and you would think that any project would at least get these right, however the project I am in fails everyone of them. |
| Fri 06 Dec | Robert Chevallier | David, Do you have the beginning of an explanation why ? |
| Fri 06 Dec | David Hickerson | There are a few reasons. Management was making design decisions based on politics. Also, management organized the groups in by specializations, such that perspectives are so different between groups, that is causes communication to be difficult. Architects haven't coded for years, are completely separated from implementation groups, and don't test there design decisions. Process was implemented to meet some certification level, yet they never got the point of why process is important and how to improve it. |
| Fri 06 Dec | Justin | >Does anyone knows a good book or web articles on this subject ? Rapid Development by Steve McConnell. http://www.stevemcconnell.com/ See also comment on previous thread, re. writing, such that people *want* to read. |
| Fri 06 Dec | | David, it seems you really want to discuss the failings in your present environment. It would been more interesting if you directly addressed that. |
| Fri 06 Dec | one programmer's opinion | David, Welcome to the wonderful world of software development. A Fundamental Law of Software Development 1. Most programmers who get paid to develop software for someone else hold little influence over how the development process will be conducted. I believe Joel has written a few sentences about some of his past employers and the stupidity he has encountered and had to endure. The Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan If you are looking for some light and entertaining reading, I suggest you check out this book. Will you learn anything by reading it? I doubt it. It simply explains/confirms why Dilbert is the poster boy of this industry. |
| Sat 07 Dec | anon -- so not to hurt coworkers | I know how this feels, I once wrote a little list myself. But the truth is that some orgs just don't care. They don't want to develop good software, nor do they wish to change. Even when reality stares them in the face and tells them they'll die if they don't change, they will simply just work harder at making the same mistakes. That way, they think no one will blame them when they fail. What that means is that you'll have to accept some level of mediocrity if you stay in this org. Possibly you can create your own team and work separately from the others. (I'm actually finding some success doing this.) Otherwise, you can seek out the good orgs you've worked for and stay put when you find one. The sad thing is that I actually have some smart technical coworkers, but I've slowly lost the ability to look most of them in the face. Just a job. |
| Sat 07 Dec | Roland | |