last updated:06 Aug 2003 14:50 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 30 Mar 2003) | View Other Weeks
programming and the legal profession | Sun 30 Mar | choppy
This is a weird query, but thought maybe some people who read this forum (especially new yorkers) might have some interesting comments. A friend of mine is studying for the june LSAT. This weekend, out of lack of anything better to do, and a slight crush on the person studying, I sat down with her and took a practice LSAT exam whilst she did the same. I scored 174 on the practice exam, which apparently is pretty good (the high score is 180.) I have a few lawyer friends (in Manhattan), and working in a law firm sounds pretty lame (billable hour quotas and butt kissing...bleah). However, I was wondering if there is any interesting career convergence point between law and software? Theres always IP and patent law, but Im not too into the software patent thing. Anyone here doing any thing that involves both law AND software? Or left law for software? Or left software for law? Any interesting comments would be appreciated.
Sun 30 Mar | Sam Gray | There are some interesting similarities between the fields: if you squint your eyes just so, you can see them both as being about the selective application of rules to achieve a specific effect. (= One possible way to combine the two would be to do some sort of advocacy or even lobbying work (e.g., the EFF). The only other thing that comes to my sun-addled mind right now would be IP law... and I don't really think we need any more of that going around.
Sun 30 Mar | T. Norman | LSAT scores are just one small part of an application to law school. They also look at the type of degree you have and your grades, recommendations from professors, and possibly interviews. It doesn't surprise me that programmers can get a good score, because of the logical and analytical reasoning on the test. But to actually make it through law school, you have to do looooooooots of looooooooong loooooooooong reading and writing, which would sicken many programmer and engineer types.
Sun 30 Mar | Albert D. Kallal | Actually, there is a area of computing that really does work with the law, and there is a growing need. That area of course is computer evidence. You have to understand in MANY kinds of legal situations, much of the evidence to day is going to be on a computer system. In the old days, the law environment people just walked in and hauled out the paper files. Problem is, that now most business now have most of there documents on computer disk. Hence, court requests for documents and information OFTEN results in that information having to be found in the companies computers. In any police criminal investigation for a business today, the first thing hauled out the door is now the computer equipment. Most police force has had these types of departments setup for a good number of years. They all have a computer crime / evidence departments. However, we are also seeing a growing trend for legal work, and law firms that also need this expertise for working with evidence that they need. Often, a law firm does not have this kind of expertise. (the old days, they just requiest files!). Often, someone has to go the that client, and get that requested information. (and there are varying degrees of cooperation in these cases also!!). Further, when edvidanc is submitted to the law firm, they often need help in extracting the data. There are even law firms that specialize in gathering computer evidence. They need people and I would guess that some legal training in this regards may be of help. Now, this was not really what the original question was, but I think it goes without saying that in the general course of business dealings in our modern world, the computer is now a big part of court evidence these days. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Sun 30 Mar | Prakash S | The convergence bit comes into play if one is in interested in both law and software. There are very few people who understand both, and the number of such people are very few. As a profession I do see a good future for a person with both degrees. Berkeley is supposed to be big on Technology Law...
Sun 30 Mar | Prakash S | 'There are very few people who understand both, and the number of such people are very few. ' - damn, really sleepy...
Sources/ Training for O-O Design Principles | Sun 30 Mar | Post-Mortem Pete
Ive been programming for a Java web app on the job for about a year now, Servlets, JSP, and data access objects. Im interested in hearing from the JoelOnSoftware brain trust; some good ways to increase my object-oriented IQ. Whether youve taught your self through books, or taken courses, or learned on the job, Id love to hear what has worked and what hasnt. I learned Java basics in two courses at a local college before switching roles to full-time development on the job. That worked pretty well and has allowed me to perform the job, but Im looking to take it to the next level in the most practical way possible. Any advice? Thanks, Pete
Sun 30 Mar | Ori Berger | Stop learning from books, course materials and presentations - start learning from sources. Really. Find a program that interests you, _that comes with source_, and start reading it, file by file, class by class. Try to understand why the developers took the decisions they did, how you would have done it before reading their code, how you'd do it after reading their code, what tradeoffs are there to each decision, etc. [ http://freshmeat.net ] and [ http://sourceforge.net ] are great places to find real working programs with source - both are Unix oriented. I'm not aware of any similar Windows software-with-source directory or repository. And don't subscribe to the all-too-common O-O biggotry; If you look at programs that actually work, you'll notice many of them make very light use of O-O or not at all. Try to see why is that, and in what way would O-O simplify things - and if you know how, try to implement that. O-O has its place - it's just not as big as most people think it is. Advice above (about learning by reading _real_ code) is, in my experience, the best way to learn programming, regardless of the paradigm you want to learn, and it is especially useful in evaluating the merits of competing paradigms.
Sun 30 Mar | Mike Swieton | Read the Gang of Four Design Patterns book. It's not real big on theory or principle, but it really opened my eyes because it demonstrates how to solve a set of specific problems in an OO way. It really shows some of the ways of thinking behind some solutions. I'm not sure if it'd be a good teacher book or not, but I think it's required reading for any OO guy. Also, Fowler's Patterns of Enterprise Application Architechture is similar, but with patterns more geared towards enterprise apps (web apps, database apps, O/R mapping). It gives a good once-over of a lot of useful things for ent. apps. This may be more directly applicable to something you're writing now. Again, these aren't tutorials, but you should see some of the reasoning behind some common strategies, and I find those insights invaluable.
Sun 30 Mar | Rich | Give 'Thinking in Java' by Bruce Eckel at try. He offers an online version at http://www.mindview.net/Books/TIJ/ Another book to take a look at is Java Design by Peter Coad and Mark Mayfield. You also might want to take a look at some of Scott Amblers articles at http://www.ambysoft.com/onlineWritings.html
Forum Software | Sun 30 Mar | Dave B.
For those that are interested, I have now uploaded an SQL-Server 2k version as well as an Access 2k version of forum software that operates like this forum. Both are written using VBScript and ASP. As of yet, Neither version supports email. Both versions are free to download and modify as you see fit. They can be download here: (I will try to put an html page up here) - http://dbehnke.users5.50megs.com - Why did I write this software: - I was prompted by the many requests on this forum. (So now when someone asks, Where can I get the source to this forum? or Where can I get a forum like this?, I can say, You can try my version of it! - To gain an insite as to how this forum works. For example, it would be a chore to support any html tag as you would probably be forced to write a parser so as to limit the number of tags that could be used. (i.e. you dont want users putting a form in a post). OTOH, Ordering posts by date of last post would not be too difficult and probably only require modification to some SQL and the database table. - It has basically become one of my projects. As always, feel free to email me with comments and suggestions.
Sun 30 Mar | Sergio | I actually was thinking of a little improvement that could be made to the forum: When reading a discussion, it would be nice if the name of the poster appeared BEFORE the post, instead of at the end. This way you wouldn't have to scroll down to see who is saying what (as I have found myself doing often). It would be only useful for long posts though. Anyway, thank you very much for the source code, I'll check it right now.
Sun 30 Mar | Sergio | Just installed it, works great!! =)
Sun 30 Mar | Dave B. | The download server has been overloaded. I will try to upload the files to a different site.
Sun 30 Mar | Dave B. | Try this link for now: - http://www24.brinkster.com/dbehnke -
6 Degrees of Kevin Bacon | Sun 30 Mar | Yoey
As most of you know, the famous website The Oracle of Bacon at Virginia is very addictive. It also provides a good way to relieve tension from hours of coding: http://oracleofbacon.org/ So, can anybody here get a higher score than me with 4 degrees of separation (I used Vaja Gelashvili) without going into infinity (see Yitzhak Frej)?
Sun 30 Mar | Prakash S | http://www.googlism.com/
Sun 30 Mar | Patrik | Wooah! The Oracle says: Darren Aronofsky has a Kevin Bacon number of infinity. Darren Aronofsky cannot be linked to Kevin Bacon using only feature films.
Sun 30 Mar | Tj | Darren Aronofsky is not an actor. People from his film Requiem for a Dream have a degree of 2. (And Pi, for that matter.)
Sun 30 Mar | Patrik | Not counting infinity 4 seems to be the highest I got :) using swedish actress Alexandra Dahlstrom.
Sun 30 Mar | Papaya King | Marthe Franck - 5 degrees...
Sun 30 Mar | Troy King | Patrik: Infinity doesn't count. The goal is to get as close as possible without hitting infinity. I found these in about 5 minutes of trying just now: Six - Luis Blanca. Five - Maurice Mathieu, Germaine Dury, Antonio Riba, Juan Solsona, Carmen Vital, Antonia Estrada, Antonio Primo. I found three sevens and an eight (seriously) a year or two ago, after about two hours of trying but didn't keep them anywhere. The easy way I found to get the high numbers is to go to movies from the early 1900s, and start looking at actors from those. When you find on that's a 5 or higher, start going though their movies and you can find one that way. Early 1900s non-American movies are also usually good for lots of fours and fives.
Sun 30 Mar | Patrik | Troy: I became a bit overenthuastic, and saw the 'no inifinity' rule after I posted.
Sun 30 Mar | tapiwa | Just to split hairs, infinity is not a number. It is a direction
Sun 30 Mar | mark | Elsa Masriera is a seven. This has got to be one of the biggest time vacuums I've ever seen although when I'm in a more zen-like mood I find I can spend hours with the singing horses here: http://svt.se/hogafflahage/hogafflaHage_site/Kor/hestekor.swf
Sun 30 Mar | B# | Mark When you say zen to you mean ZEN? And btw, LOL
Sun 30 Mar | mark | The Googlisms are pretty funny. I was especially fond of the results when I typed 'my penis.'
Sun 30 Mar | zen nazis must die! | No, he meant to say Zen.
William Whyte's rule | Sat 29 Mar | Nat Ersoz
Very interesting... Well be moving to a new office in 2004 with an unspecified location. Well probably find Dick Cheney wearing a lampshade and a martini. That aside, I noticed that all the initial prefered locations were an easy commute for the Financial officer - who lives in Seattle- who was tasked wih finding the new site. Hardeehar. That changed recently, as the founders live near Redmond (as well as most of the development staff - not surprisingly). Our CEO lives in Denver, and has promised were not moving there. So now it appears that a covert slow motion tug of war is in progress.
Sat 29 Mar | Thomas Eyde | When a company risk loosing so much institutional knowledge when they relocate, why don't they let the employees chose the new location?
Sat 29 Mar | Prakash S             | Nat, I am betting that your company's new location will be as the Financial guy wishes ...:-) prepare yourself for the commute:-)
Sat 29 Mar | runtime | And why do companies need to move to different cities or states? In this digital age, why does location need to change for an *established* company?
Sun 30 Mar | one programmer's opinion | 'And why do companies need to move to different cities or states? In this digital age, why does location need to change for an *established* company?' Among various other reasons -- lower taxes and labor costs are two reasons companies change location.
Sun 30 Mar | Nat Ersoz | Cost. First CEO (fired along with minions for sheer incompetence) leased the most expensive property on the Seattle East Side (gorgeous view of lake washington). We'll be living in the bat cave from now on...
Sun 30 Mar | Prakash S | where was the first CEO's house?
Sun 30 Mar | T. Norman | This is so funny because the previous company I worked for relocated to the CEO's hometown (over 1000 miles away). They didn't close the location where I worked, but they shrank it and laid off those who didn't choose to move along with their job. Now that CEO is no longer with the company, and he is enjoying a severance package of 'only' 1 year's salary. Never forget that the goal of CEOs is to derive as much personal benefits as possible (in cash and other conveniences) ... and it is not to put money in the shareholders' or employees' pockets. If the company's board is sensible they will ensure that the CEO's goals will also promote the achievement of the shareholders' goals and vice versa, but that isn't always the case -- especially when the CEO himself is chairman of the board, or two CEOs are on the boards of each other's companies.
Sun 30 Mar | Ernie the Earnest Embezzler | You are so right about CEO's goals. But we can learn from them. You start out taking pencils and notebooks home, then you bring some forgotten equipment home from the storeroom. Then you start a little business on the side selling registrations to the company's most expensive software. Then you just go ahead and sell the source code to the competitors. What's good for the CEO is good for the peons, right? After all it's all about teamwork.
Sun 30 Mar | realist | Yes Ernie, I agree, however, we will go to jail, whereas the CEO will get a lttle rap over the knuckles and be forced to sell his Ferrari and buy a BMW instead.
Sun 30 Mar | Nat Ersoz | Nice to know that even with all the wacky schenanigans, I could still have done worse. Party on.
Sun 30 Mar | T. Norman | 'Yes Ernie, I agree, however, we will go to jail, whereas the CEO will get a lttle rap over the knuckles and be forced to sell his Ferrari and buy a BMW instead.' Not quite. The CEO will keep his Ferrari, and get a fat severance package so he can also afford a BMW and a new Ferrari.
average salaries of software developers in India | Sat 29 Mar | anonymous
What are average salaries for software developers in India in major cities? I just need a rough estimate
Sat 29 Mar | Prakash S             | entry level or experienced? if experienced - how many years?
Sat 29 Mar | anonymous | 2-3 years experience
Sat 29 Mar | Prakash S             | Companies like Infosys, Wipro, CTS... it should be around 22000 - 35000 per month. Depending on the company it might be +- 20%. B'lore & B'bay pay more by about 25% (as high as). Of course the cost of living is much higher in those cities when compared to Chennai/ Hyderabad. YMMV...
Sat 29 Mar | trd | How does that compare to the average salary in those cities (regardless of the job)?
Sat 29 Mar | anonymous | Prakash, how about in Delhi?
Sat 29 Mar | Li-fan Chen | $35000 Rupees is around $1100 Canadian dollars or $740 U.S. Dollars (source: http://www.xe.com/ucc/full.shtml)
Sat 29 Mar | Li-fan Chen | I bet really advanced or experienced techniques from the States or Canada going back to India will be paid more than the average joe. Assuming they can bring new techniques or in-sights uncommon or unavailable in Indian programming community. So some guy from U of Waterloo or MIT or Berkeley working years at the Fortune 500 doing something useful or innovative is taking to India a lot more brain share than the average joe.
Sat 29 Mar | Bella | What does a nice 2BR apartment go for in India? $6/mo ?
Sat 29 Mar | anonymous | Bella, around Rs.3000-4000 pm, so around 80-90$ per month
Sat 29 Mar | Prakash S             | Bella, You got that right, though you are slightly on the higher side, you can add a BWM to that for just $4.99 extra :-)
Sun 30 Mar | Stephen Jones | Dear anonymous, I suspect Bella's idea of a nice apartment is different from yours. He might expect a new fridge, or even a washing machine, television or air-conditioning. And that would set him back a lot more.
Sun 30 Mar | programmer from india | i work in infosys in their Mangalore(8 hours from Bangalore) center. i joined nearly 2 years ago as fresher, now my salary is nearly 25,000 INR. Cost of living here is very less compared to other major indian cities.
Sun 30 Mar | Li-fan Chen | All this talk of India makes me so hungry.. what are some great authentic food you guys get to eat? All we got is McDees.. it's a little above eating the box my computer came in on.
programming is difficult | Sat 29 Mar | The Real PC
I started a new project about 2 weeks ago. Two of the managers decided what software should be used for it without asking me. One of them is very familiar with the software and since its kind of new and doesnt have much documentation, I thought I would be able to ask him for help. It turned out hes always too busy to answer questions. Furthermore the two managers kept changing their minds about things and I kept on having to start over. Most of the past 2 weeks my brain was in a state of confusion, trying to remember too many unfamiliar things, trying in vain to get things to work, feeling absolutely stupid. By the end of yesterday, I had it almost all figured out. I felt like I just reached the top of Mount Everest. After 10 years of programming, I can still have this kind of feeling and thats why I dont think Ill ever get tired of it. I hope the managers will appreciate how difficult it was for me to do what they asked for, but of course they wont. I dont care -- the means justified the ends, and I had an absolutely terrific two weeks. If programming were easy for me, I would probably hate it.
Sat 29 Mar | Tony E | This is the point of requirements documents, get something on paper and get everybody to agree it before you start work. Of course it needs to be flexible enough to manage changes but you need something to start with.
Sat 29 Mar | Justin | I agree completely, Tony. In addition, make sure you document who asked for what changes and when. These documents are your 'Get out of jail free' cards.
Sat 29 Mar | The Real PC | You missed my whole point! It was not possible for the managers to say exactly what they wanted, since we're developing a new project and don't know exactly what it should be like. If you want everything to be certain and nailed down ahead of time, don't work for a company that develops new products!!!
Sat 29 Mar | The Real PC | And furthermore -- If you don't like climbing Mount Everest every once in a while, change careers. The only problem is, the letdown feeling I get after the problems are all solved.
Sat 29 Mar | Karl Perry | Um ... You were asked to write software based on a vaguely defined idea rather than any kind of spec. You agreed to the project, then (based on your narrative) dived into code right away without any better of an idea of the end result because you didn't use the interview techniques that all professional programmers should use. You had to pester your bosses more than once because you didn't insist on a spec. Now you've got SOMETHING, but you still don't know if it is what your bosses want because there's no spec. What's wrong with this picture?
Sat 29 Mar | The Real PC | You have missed my entire point. I did not pester my bosses. They did not do anything wrong. I did not do anything wrong. Everything turned out FINE.
Sat 29 Mar | D Cox | I think in this instance you could describe what he did as 'prototyping before committing to design', cutting down time wasted designing an unworkable, untested strategy. C'mon smart developers do it and Joel's even discussed it before-- section on design specs. Now that the brainstorming churn is over, the useful designing begins.
Sat 29 Mar | Ged Byrne | Ever get the feeling that some people rarely leave the ivory tower. I know that some people out there get to live in a world where specs can be agreed up front and remain constant. Some people get born into wealth or win the lottery. They are the lucky few (who usually mistake themselves for an elite.) Personally I enjoy the daily struggles, too (not that it stops me from buying lottery tickets:)
Sat 29 Mar | John C | If I wanted a job where everything was neat, tidy and I loved following tightly regimented procedures and everything was rigorously planned and there was no excitement at all I'd have been an accountant rather than a software engineer!
Sat 29 Mar | Bella | > following tightly regimented procedures Clearly, he's not talking about big 4 auditing . LOL !!!
Sun 30 Mar | one programmer's opinion | The Real PC, if you looking for consensus on this subject, I am afraid that you are going to be disappointed. The Real PC wrote, 'Two of the managers decided what software should be used for it without asking me.' This is definately a universal problem that traverses all the different areas of programming. The Real PC wrote, 'If programming were easy for me, I would probably hate it.' Well, I think you are in luck. IMO, that won't be the case for quite some time. I would really like say that your view on programming and software development in general is wrong but I can't. The process of developing craftsman-based software for the general public is significantly different than developing software within a highly regulated or globally distributed corporation. Corporate in-house business application development projects tend to be different from small company in-house business application development projects and the work envionment differences go on and on and on .... IMO, one of the biggest reasons (there are many) programming is difficult is because each employer has different needs and expectations. I doubt The Real PC's method of developing software would work in many business situations, however, it seems to work for him and his employer.
Sun 30 Mar | Kyralessa | I suspect the point you were trying to make, which everyone managed to miss, is that in the end the satisfaction in programming comes not from others' recognition of your accomplishments, but from your own recognition of the things you've learned and the obstacles you've surmounted to overcome a challenge. With which I would certainly agree.
Sun 30 Mar | The Real PC | Yes, that's what I was trying to say.
Import tariffs and outsourcing code | Fri 28 Mar | ltarian
Heres my theory and Im submitting it for peer review: Imposing tariffs on imported commodities leads to outsourcing jobs to the third world. Heres how (The numbers are my own, and conservative): The government imposes import tariffs on apple juice from China and tomatoes from Mexico to make our local producers more price-competitive. Hence a meal with these ingredients that would otherwise cost $1 is about $5 now. As a result, Americans who work in an unprotected, free-market industry like software now need to be paid that much more for the same standard of living. So where you couldve hired only 2 Chinese/Indian programmers, youre getting 5 for the price of one US programmer. The US free market takes into account quality and reliability, weighs it against the price advantage and say, hires 1 American programmer for every 3 from the third world. Without these import tariffs, we couldve made this ratio 1:1. I agree that for political reasons, programmers in third world countries would work for much less. But since that applies to their tomato producers as well, Im not sure it has a terrible impact. I also submit that the cost of living in the US is not a consequence of the higher standard of living and that reducing the cost of living only improves the standard of living. In conclusion, I think the US government should seriously consider opening up all our industries, eliminate tariffs, and espouse free market principles across the board. The way were going I suspect well lose the edge in technology very soon.
Sat 29 Mar | Albert D. Kallal | First, the idea that you don’t protect some industry is silly. Further, the assumption that those programmers don’t benefit from the Apple juice farmers people being protected is also silly. Fact is, many of those apple farmers will now be paying taxes. They will contributing to health care and also hiring more people (and some will be software people). They will also be hiring programmers and purchasing services and using software to help run their apple business. So, by protecting those apple farmers, you can in fact make more jobs, and some will be for software people. I am not saying we should do this, but is it obvious that other industries can and do benefit form the protection. So, your whole pretext is based a rather simplistic economic analyses here. To not even have mentioned any issue of elasticity in the demand of the product, and zillion other economic issues here rally begs for a more detailed analysis. You also have to factor in the spin off jobs, and the tax issues here are VERY important. The economy is far more complex then something so simple as stating that we open up all industries to foreign competition. That is simply UN reasonable, and UN- workable. No Country has anything remotely close to attemping this. There also many issues to deal with here. If the country is wealthy and making billions of dollars, then we don’t care about those apple Juice framers anyway do we? I don’t think software developers cared about steel workers being laid off during the height of the dot com boom! However, one idea I do think that is the best soltion is: You trade with us, you must run a balanced trade! This is so simple. That means right now if Japan wants to sell more VCR’s in north America, they will have to stop buying coal from Australia. (or at least purchase as much more coal from the USA as equal to the number of VCRS they want to sell here). They will have to decide if purchasing slightly cheaper coal from Australia is better then selling less VCR’s in USA. (in other words, they will decide their trade polity…not us!!). They could also sell more VCR’s at a cheaper price if they wish, but would have to still balance their trade with us. This is very simple, and elegant solution to the trade problems we have right now. This also results in some countries actually selling their trade surpluses to other counties that wish to do business with us. So, if you are going to remove all protection (which is just not possbile anyway), then you better implement something in its place. I never really did like the Economics courses I took at university, as they tend to over simplify things. I not sure where, or what economic theory you are basing your ideas on, but you going to need a lot better numbers and analyses to convince me. For me, and my brains…I balanced trade is the answer. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Sat 29 Mar | Tj | I won't even pretend to be an economist, but what happens in these three scenarios? 1) The foreign companies destroy local competition because they have much better advantage. The foreign companies inevitably then raise prices, and it will take years for local companies to regain the knowledge lost. 2) Foreign products increase dependence on outside actors. While this is more efficient and lowers prices, it decreases sustainability and redundancy, and the markets will be more sensitive to outside (uncontrollable) problems. 3) The ability to control trade is occasionally important, since countries often attempt to control one another. The country that has lost its experience doing this will have a hard time finding competent people to deal with trade.
Sat 29 Mar | Frederic Faure | In reply To Albert... Mmm, balanced trade looks awfully like a managed economy, don't it? Besides being very difficult to handle in the real world, producers grow complacent since they don't feel the pain of competition, or at least not as hard. When you think about it, there is no economic reason why we allow capital to flow freely around the world, but ban human beings from moving to wherever they will make a better living and contribute indirectly to world growth. Hence, imposing tariffs to make it more pricey for US companies to outsource SW development to third-world countries ends up hurting everyone (US workers having to pay more for software due to artificially lower competition; third-world countries being kept underdeveloped due to tariffs imposed by first-world countries and not having the means to buy more from those first-world countries). And we should not forget that economics is very, very, very far from being an exact science...
Sat 29 Mar | Tony Chang | 'but ban human beings from moving to wherever they will make a better living' By this you mean America since that's where everybody people want to move to -- the place they are burning the flag of. 'and contribute indirectly to world growth' I think the Islamic Republic of America will be less productive not more. And who needs the honor killings and beheadings anyway. Though I suppose we can look forward to illicit wet burqa contests.
Sat 29 Mar | | For F Sake everyone, read some Adam Smith and brush up on your comparative trade advantage stuff. Protecting local industry is detrimental to the macro economy. If a job is best done somewhere else, find a job that is best done where you are. And that means that if you are a programmer and you cannot find work, maybe you should find a line of work that is in demand locally (or move to where it is in demand). If an economist was to comment on the comparative advantages of unchecked exceptions over checked exceptions, you'd be all over him pointing out his lack of insight. So why are you all trying to tell the economists what to do when it comes to macro economics?? The politians, protecting their local industry, have been F*ing the global economy since ., and it doesn't help the world. Being programmers, if you read some Smith you'd probably understand the basic self-evident maths involved. But if you remain ignorant..
Sat 29 Mar | Nat Ersoz | Itarian, I thought your analysis was very good, but I don't really agree with your conclusion. 'In conclusion, I think the US government should seriously consider opening up all our industries, eliminate tariffs, and espouse free market principles across the board.' 'The way we're going I suspect we'll lose the edge in technology very soon.' Correct me if I'm wrong, but tariffs are not very high now - in the 10-30% range, and zero within NAFTA and select Latin countries. With China, also, tarrifs are low with many rates in the range of 30%, being reduced to 10-15% through WTO agreements. At least what I've read - again, I'm not expert, so correct me if I'm wrong. Also, I'm not aware of any tariffs on services - like software. It appears that in today's economy you can shop out anything you like and bring in finished product tariff free. As far as I know, we're already in the world you propse. And have been for the last 10 years.
Sat 29 Mar | | There is an argument that economics is not really a science at all. No control groups and so on. So you could conclude that it is all a lot of speculative nonsense, regardless of whether Adam Smith wrote some ideas down in a book or not. Although being a mere techie I wouldn't know who he is. Didn't he invent the steam engine or something?
Sat 29 Mar | T. Norman | If labor could move back and forth between different countries as freely as goods can, and it is done in a slow manner the result won't necessarily be that everybody floods into America. One of the main reasons that the workers in various industries outside the US will work for so much less is that they don't have the freedom to get up and go to any other country. For the most part they are forced to accept the salary of the captive labor force in their country. For example, American car companies have made use of NAFTA to send car factories outside of the US. But if the next amendment to NAFTA allowed Mexican auto workers to freely work in US auto factories (and vice versa), they would have to pay the Mexican workers more to keep them there. At the same time, wages in the US would decrease initially due to the increased labor supply into the US - but eventually the American wages would increase again as more production is brought back into the US because it no longer is profitable to build as many cars in Mexico. Similarly, if programmers in India could freely move to anywhere in the world, outsourcing to India would be less profitable because the offshore vendors would have to pay wages so high. Those who remain in India would be paid well enough that most would not want to leave, while others would flow to parts of the world where their skills are in high demand.
Sat 29 Mar | T. Norman | Anyway, tariffs on software is an unworkable idea. It is nearly impossible for the government to detect the movement of software into the country and properly determine a taxable amount. They'll often end up taxing open source software while another company's $50-million system goes undetected.
Sat 29 Mar | Walter Rumsby | I'm not sure I agree with your analysis of the state of tarrifs in the U.S. Nat. I'm from New Zealand (currently living in Australia, working in India) where the government removed pretty much all of the government-imposed tarrifs and subsidies in the mid 1980s. At the time, this caused a lot of pain as industry (particularly farming which is a large part of the N.Z. economy) had to move from being protected by the government to being forced to compete on a 'level playing field' with imported goods. From my perspective this lead to a mindshift and New Zealanders, or at least New Zealand business, are very aware of the need to be competitive and to offer a high quality of service. Personally I believe that N.Z. is further down the track than Australia here - a friend who works in manufacturing management (pulp & paper and now F.M.C.G.) also believes this (having managed factories and operations in both N.Z. and Australia). Realistically, though, the playing field is not level because European and U.S. markets subsidise their own goods and/or impose tarrifs on imported goods. I remember about this time last year the Bush administration approved continued farm subsidies in the U.S. and I also remember seeing a documentary about the (scandalous) subsidies on sugar cane in the U.S.. This is particularly frustrating because European and U.S. leaders continue to talk about 'free trade' while we're like 'W.T.F., buy some of our butter!'. The consequence of this is that N.Z. goods have a hard time competing on price with goods from countries they are imported to (I'm talking about farm goods), so the marketing of N.Z. goods focuses on quality of goods (the most expensive meal on room service in the hotel I'm staying in in Mumbai is 'New Zealand lamb chops'... apparently they're from Australia :) ) and a 'clean green' image. And this is what I would say is needed by the U.S. software industry to compete with outsourcing (well, by the software industry in general). Step back and look at the legacy of the tech industry - there is a huge failure rate in software development projects, dotcom crashed and burned expensively (what's more competitive than the Internet?). If you're a business buyer you're going to be very wary of the price you pay for software development, so the (perceived) lower cost of outsourced code is attractive. Furthermore, anyone who has worked in the software industry (or read Joel On Software) knows that development management has a long way to go. To compete with cheaper goods here are some suggetions I would (humbly) have for the industry: - focus on developing generic products and not one-off projects to exploit economies of scale and the extremely low marginal costs associated with shrink-wrap software (currently most Indian firms seem to specialise in business-process-outsourcing, i-flex seems to be a notable exception, although I sense a lot of these firms are doing a FogCreek and using consulting to fund development of shrink wrapped products) - work harder to achieve code re-use across projects; again this is a marginal cost issue (even if you develop one-off projects if you can make the bulk of the work simply a matter of configuration then it should be easier, faster, cheaper) - make sure you consider usability and earn a reputation for highly usable products - be more customer focused; consider cost to the customer and what they want the software to achieve - earn a reputation for quality; value experienced staff This already happens in the industry today - IBM and Oracle products are more expensive than Microsoft products because people that perceive IBM and Oracle offer higher quality products. (Sadly in the case of these two it seems to be largely perception :), but you do see REAL quality development work happening in the Java space by European companies like IntelliJ/JetBrains and Orion/IronFlare). Another example - people pay for J2EE containers when they could use JBoss. And another - Red Hat Linux. Yes, the industry (at least in the 'West') is in pain, but I think/hope that it's 'good' pain - management of software development will have to improve or the work will go away. I'm focusing on the optimistic thought that the development process will get better because the easy money days are over.
Sat 29 Mar | one programmer's opinion | Itarian wrote, 'In conclusion, I think the US government should seriously consider opening up all our industries, eliminate tariffs, and espouse free market principles across the board.' Well, I am not going to get into a heated debate about macro economics with a bunch of programmers (we don't make policy). However, I will make some comments and then leave it at that (I don't plan on posting again in this thread). I think Itarian needs to re-think his conclusion. American businesses have been arguing the same conclusion Itrarian came up with for quite some time. Countries such as Japan, China, India, just about all of the South American countries, etc. have argued that they need to protect their industries from American businesses because [insert various reasons why here]. Keep in mind that there are other methods besides import tariffs that countries can use to prevent foreign companies from competing with local businesses. IMO, on the whole American markets are more open to outside competition than just about any other country in the world (wasn't always this way though). As far as free markets vs. closed markets go all I will say on this subject is this: 'I have heard/read good arguments from both sides of the debate from economists throughout the world. I know where I currently stand on this subject, however it is based on a 'gut feeling'. I plead ignorance when it comes to macro economics. Then again, I bet most economists privately do the same thing. ;-)
Sun 30 Mar | &me | Nameless No 3, offshoring and before it the H1-B program are not about global efficiencies. Offshorers charge prices only slightly lower than their American competitors, even though wage rates for Indian staff are less than a tenth than for American staff. In other words, business owners and dodgy entrepreneurs are pocketing massive profits without reducing end prices at all. The experience of Senator Shirley Turner of New Jersey is highly instructive. Senator Turner found that an offshoring firm, after obtaining a government contract, sacked its American workers and moved the work to India. It still charged the government the same price. http://www.eweek.com/print_article/0,3668,a=39100,00.asp In fact, offshorers deliver such large profits that I think there's a significant risk of criminal activities and corruption. Another factor I haven't seen mentioned is that cheaper labour reduces the motivation for companies like Dell to provide quality products. The high cost of support used to ensure products were reliable. Outsourcing reduces this requirement, potentially imposing a big hidden cost on us, their customers. Also, if you like reading Adam Smith, you should also read Galbraith and Keynes. Galbraith is head of the University of Texas Inequality Project. He says: 'there is no general case, in Europe or elsewhere, of countries achieving sustained new prosperity by cutting real wages or accepting increased poverty for parts of their population. Despite great efforts, the economists have failed to show that minimum wage laws or unions cost jobs. ...We have found that worldwide inequality has been rising sharply under globalisation.' You should also read the latest report by the International Monetary Fund's chief economist, Kenneth Rogoff, which seems to admit the IMF has been wrong in its attitude to capital investment in developing countries. Rogoff says that: 'An objective reading of the vast research effort to date suggests that there is no strong, robust and uniform support for the theoretical argument that financial globalisation per se delivers a higher rate of economic growth.'
Sun 30 Mar | & me | Walter Rumsby, there's a reason Indian firms concentrate in business development; that area is easier for less capable development efforts. Productised software requires first class expertise. You advise local firms to build a reputation for quality. Unfortunately business and government buyers are encouraged to focus on written cost. To develop this suggestion of yours a bit further, though, local firms need to educate buyers about the hidden costs of maintenance, productivity and competitiveness in software developed by less capable firms. You also talk about the 'easy money' days being over, in the context of this generating fiercer competition that programmers must fight. I would put it to you that offshoring and other programs are all about easy money, but programmers are not the beneficiaries, just as they weren't the primary beneficiaries or instigators of the dot com boom. Regarding New Zealand, many people consider that its economic reforms were disastrous. The government was ejected in no uncertain terms. Galbraith's research, referred to above, found that income inequality increased in New Zealand more than among any other OECD country.
Sun 30 Mar | Walter Rumsby | & me: The OECD also claimed that New Zealand had the highest rate of youth crime, and then discovered that their calculation was completely whack ( http://www.nzherald.co.nz/storydisplay.cfm?thesection=news&thesubsection=&storyID=3099396 ). While I would believe that the wage differentials in New Zealand have increased we're talking about transitioning from an essentially socialist, very managed economy and a country with a very strong egalitarian spirit (first country with social welfare system, first country to give women the vote, first contry with transgender MP, possibly the first country with a rastafarian MP). You wouldn't find very many New Zealand CEOs earning $NZ 1million (roughly $US 0.5million) salaries. I for one believe that if the mid '80s reforms hadn't happened the New Zealand economy wouldn't have performed 'better than any other in the first world' last year (4.4% growth), basically the country would be in massive debt with even higher rates of emmigration (even though the 'OE' is seen a rite of passage). The current government has softened the hard-line ideology of the market reforms with pragmatism, but the economic policy has been essentially the same since 1984 (Labour government 1984 - 1990, National government 1990 - 1999, Labour government 1999 -) and 'dry' economic policy is more or less accepted as mainstream (a prominent Labour MP formed the libertarian party ACT; high profile left-wing columnist Russell Brown - http://www.publicaddress.net/default,hardnews.sm - is an economic 'dry', etc) - it was interesting/amusing to watch Australia squirm at the prospect of GST while they were remained unaware how overly bureaucratic, complex (and ultimately costly and inefficient) their exsisting taxation system is. As you know I'm currently in India at the moment and I agree with you that it does seem that the upper levels in the outsourcing industry are 'pocketing the change' (from what I understand a company like InfoSys doesn't charge that much less than IBM for BPO work) and its very apparent to me that there are extremely wealthy people here and extremely poor people here. If American programmers are concerned about Indian outsourcing perhaps they should petition their government to get the Indian government to do something about the economic disparity within India (and do something about the pollution in Mumbai, please). They should also buy some New Zealand butter too :).
Sun 30 Mar | T. Norman | ' ...We have found that worldwide inequality has been rising sharply under globalisation.' The problem is that we have globalization of goods without globalization of labor, and one without the other will tend to promote inefficiency. The reason why many goods can be manufactured cheaper outside the US is not because other countries have better technology or techniques; it is simply because the labor is cheap. They compete by having masses of $1/day sweatshop workers, without much incentive to use technology or intelligent inventory management to become more efficient in per-person output. Their 'efficiency' is in costs, but in terms of human effort they are usually worse off. If labor were as free to move from country to country as their products, labor would flow towards the companies/countries that are most efficient in their output per-person, because those would be the places that are willing and able to pay the most for labor. The $1/day sweatshops would have to pay more to retain workers, which would force them to upgrade their technology to become more efficient or go out of business. In the end we'd have both cheap goods and well-paid workers. But because labor cannot migrate freely, there is the artificial depression of wages in certain countries, and the use of high volumes of inefficient labor is perpetuated.
Sun 30 Mar | Simon Lucy | Economics always tends to chaos because its a set of formulas around an independant variable. Money no longer has any real value its always a notional one. Balanced trade would provide nothing except free trade for the largest trading groups, that's partially why we now have large trading groups. Small trading nations would always be in a hole. This is an insoluble problem and its the wrong problem, the right problem is how we feed and clothe everyone before they have to worry about their personal trade deficit. You may send me $1 to discover this marvellous solution.
Joel and reading | Fri 28 Mar | avid reader
How do you manage to read these many books and run a company at the same time? Joe
Fri 28 Mar | a little birdie | No television.
Fri 28 Mar | Brad (dotnetguy.techieswithcats.com) | Some people read faster than others. I read quickly, but my wife can read 2-3x as much as I can. I swear it's freaky. :)
Fri 28 Mar | J. D. Trollinger | Every so often you read one of those inspirational newspaper stories about a grandmother who had just graduated from medical school while simultaneously raising her crack-head daughter's 12 children, as well as working full-time in a soup kitchen, writing symphonies, and doing research on genetics. I've never understood how these people do it. Hell, I can't seem to find the time to balance my checkbook. (Incidentally, I'm usually depressed by things that are meant to be inspirational.)
Sat 29 Mar | fool for python | Also no television. No videos. No videos games. No bar/pub after work. No children. Give reading/learning/projects top priority. Don't let other people hijack your focus..... And you can still have a life. I'm married. I play piano every day. I go to jazz concerts 2x/month and have much of my weekends free. I don't understand how anyone can't find the time.
Sat 29 Mar | The Real PC | It depends on how much you sleep you need.
Sat 29 Mar | Kyralessa | It probably also depends on whether you're an 8-hour-a-day programmer or a 14-hour-a-day programmer.
Sat 29 Mar | Prakash S | It all depends on nailing your priorities in life....
Sat 29 Mar | Chi Lambda | Joel doesn't have any children -- that's how.
Sun 30 Mar | anon | http://www.theonion.com/onion3604/doesnt_own_television.html
Sun 30 Mar | Lou | Stephen Covey would say that the reading Joel does is a QI activity - which doesn't have immediate value or need but has long term value far beyond the investment of time made.
Discuss: Win9x/MacOS makes users dumb/scared? | Fri 28 Mar | dh003i
I read an interesting comment recently: Stick a complete newbie, who has never used a computer before, or not enough to get used to one, in front of a Linux box, with some instructions. Watch them do great. Now stick a fairly experience Windows user in front of a Linux box, with even better instructions. Watch them flounder miserably. The basic argument is that using Win9x and MacOS makes users dumb, and causing them to be petrified when trying to install something (even with good directions) via any method other than the Click next wizards.
Fri 28 Mar | apw | Kinda math skills and calculator/computer use. Real life situation: My fiance's dad runs a storage unit property. Two college educated girls (from an expensive college north of Charlotte, NC) walk in to rent a unit for 2 months at $35/month; $70 total. They requested a calculator to figure out how much each owed.... argh!!! 'How can someone be so stupid and still be able to breathe?'
Fri 28 Mar | RocketJeff | I'd guess that the opposite would be true also - a Linux/Unix/etc user would be lost when confronted by Windows/MacOS, even with good instructions. I actually have met real-life examples of this - guys who are excelent Unix & VMS programmers/admins/users but who just can't seem to get the habg of how to do *anything* with Windows. It's all a matter of getting used to doing things one (the 'proper') way and not beaing able to/wanting to adapt to something new. I really doubt if Windows kills brain cells...
Fri 28 Mar | Kyralessa | Imagine if on your calculator there were a button that, if you pressed it under certain circumstances (which you were never too clear on), would make your calculator stop working or return erratic results unless you took it to an expert to have it reconfigured. People would be just as scared to use their calculators as they are to fiddle with their OSes.
Fri 28 Mar | dh003i | Really? Before I ever used any GUI, I used IRIX' tcsh-command line on an old donated SGI computer. Then I got a 386 with DOS installed on it (also a gift from a company that didn't need it anymore). I quickly got the hang of these using instruction books. My next computer (around '95?) was a compaq with Windows on it...easily got the hang of it. I'm curious as to some examples as what GNU/Linux users can't do on Windows/MacOS.
Fri 28 Mar | Walt | I highly doubt the original comment is true. It seems like someone using an example to prove a generality.
Fri 28 Mar | anonymous | It sounds similar to that 'They did studies that show if a man had to endure the pain of childbirth, it would kill him!'
Fri 28 Mar | Michael | Is this a broader version of the old emacs/vi argument? Once a user has skills in one tool, perhaps they are more likely to get frustrated trying to apply those skills to a similar but unrelated tool. I wonder if this generalizes to the same case as the amount of difficulty a person has learning a second language as an adult being greater than the amount of difficultly they have learning a third. I don't know about internationally, but I'd also guess that here in the states there is a pretty strong correlation between users who are willing to switch between OS metaphors and users who use Macs or Linux.
Fri 28 Mar | Albert D. Kallal | What is really going here is classic interface design. People who have used computers already now have a mental “image”, or model as to how things work. Joel’s interface book hits this concept right on the mark. This same problem applies when a windows user tries to use a Mac. The reason for the windows user difficulty is that their mental image of how software works is already created. Thus, they will apply their previous mental image of how windows works to that of Linux. They will assume that Linux SHOULD WORK the same. There should be no more surprise of a windows user having more difficulty using the Linux system then the fact that 2 + 2 = 4. In fact, that question is a excellent interview question. If a software developer can’t figure out that 2 + 2 = 4, or the dead obvious answer to the above puzzle, then that developer does not get it! That developer can code, but I an’t going to let that developer do any design work! (I am not going to hire him either!!). I can certainly understand how a lay person might find this strange that one with windows knowledge has more trouble learning Linux then a person with ZERO knowledge of windows. So, while some might be surprised at this, I doubt anyone in the software industry, or people anyone here are even the slightest bit surprised. It is very possible that the original poster is simply repeating a urban legend that is not really a true story. However, I am not the least bit surprised if it is in fact a true story. You can read just the first page here of Joel’s’ book on interface. You will quickly see that those people who have learned windows thus simply now have a mental picture of how things “should” work. http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html Most, if not all developers have this common knowledge that users have a “mental picture” of how things works. It is even MORE amazing how often I see someone write a quotation system, or even a purchase order system, and completely forget that a user has this mental picture. It is embarrassing, since that developer has full knowledge that users have a mental picture of how things work, but FAIL TO CAPITALIZE ON this fact. Hello? Earth calling all developers! How does a user create a new document in Word? How does a user create a new document in Excel? In both cases, it is file->new. I mean, often in a database program you are NOT creating a new document each time you make a new Purchase order. However, in your users mental view or so called mental “pictures” of how computers work, they are not really thinking in terms of a file. What their mental picture is that you simply go file->new to create a new something. This is a incredible, but obvious concept that any software designer must grasp. Taking the users mental picture into account means you can substantially reduce training by making your software work how most users expect. Hence, one wants to make software work like most other programs. Hence, one simply should follow the same idea. That means that Edit->find should be used to find a P.O. File--> new might not even create a new document, but your software should create a “new something”. Here is a simple screen shot of such a menu in use: http://www.attcanada.net/~kallal.msn/test/rides/ridesmm.gif This is classic good old fashioned software design issue. So, no, there is zero surprise to any of the readers here. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Fri 28 Mar | Myron Semack | I personally have seen several Linux and Solaris people go belly up when they sat down in front of a Windows 2000 box. Things like drag-n-drop, copy-paste, and Windows Explorer were totally unfamiliar. I've seen the same thing with Windows users trying to use a MacOS interface, and vice versa. A Windows user automatically things the button in the top left corner means 'close'. Then, when they use MacOS, clicking in the top-left doesn't do the same thing. The interfaces looks similar, but they play subtle little tricks on you. I don't think any of these interfaces makes the user 'dumber'. You just get used to a certain way of doing things, and then doing it another way is 'strange' and 'wrong'. If you don't know anything about computers, then you have nothing to 'unlearn'. This is a common trend that can be demonstrated with other things besides Windows/Linux. I think part of this is cause by the subtle differences in the interface. They're close enough that you'd assume they work the same way, but when things don't act exactly as they did on the other platform, it becomes frustrating. Joel actually touches on this in his User Interface book. dh003i, I'm sure you had an easy time moving between DOS and Tcsh, but that's not a fair comparison between Windows and MacOS. Between DOS and Tcsh, the differences between the two are plainly obvious. You didn't have anything to unlearn.
Fri 28 Mar | dh003i | Well, actually, I've also had an easy time moving back and forth between MacOS9, MacOSX, Win9x, and WindowMaker. However, I learned how to use all of these UIs so long ago that I've forgotten how long it took me to learn them in the first place.
Fri 28 Mar | Panna | There is a big difference between gui->gui and gui->cl or viceversa. Gui-Gui: A so called 'poweruser' won't have a lot of hurdles switching from Win to OS 9 or KDE. The average user who uses almost 3-6 different programs will stumble when he didn't find the shortcuts on the desktop and will feel uncomfortable(I couldn't convince my girl-friend to switch to OSX....) Gui-Cli: The cli guy will problably switch more easily because the concept of a gui control is more intuitive(usually the cli user is also more experienced with computers). He won't feel comfortable but he will get along. An average user and even a gui-poweruser will shutdown the computer if he is left alone with a cli. But claiming that this is a sign of dumbness is the sort of elite attitude which makes a lot of professionists feel good when the day is over. Am I dumber then my car mechanist because I'm not repairing my car?? Or my electrician, or the pilot of the holiday plane?? Sure we are in a programmer meeting and therefore computer knowledge is a special value but you'll find the same discussion in almost any place where specialized people met. Is this the reason why shoe-sellers in the USA are so looked down? They haven't got any specialized knowledge..... 'What a dump folk, he even can't repair his sole..' Oh, shit this is from the shoemaker forum... ;-)
Fri 28 Mar | Mike | It is the 'Humpty Dumpty Syndrome' 'A word means exactly what I wish it to mean, no more, no less.' Humpty Dumpty --Lewis Caroll's 'Alice's Adventures in Wonderland' In other words, though the interfaces look the same, they don't work the same.
Sat 29 Mar | dh003i | No, people aren't dumb because they can't switch from a GUI to a CLI easily. They're dumb -- or petrified, or whatever -- because they can't read a manual which clearly tells one how to install an OS (e.g., Gentoo) via a CLI. What's so hard about reading instructions and following them? This is not like making a car -- when following directions, no special skills are needed.
Sat 29 Mar | Tj | Remember the point of a GUI. It is to save memorization of commands. However, GUIs tend to sprout idioms, which are like inside jokes. These idioms must be memorized and muscle memory needs time to develop.
Sat 29 Mar | dh003i | I think this has gotten off-topic. I think the main thing is that people only using a GUI makes them petrified of doing something in a CLI, even if clear instructions are followed and it's easy to do (when following instructions). As someone pointed out, this is very similar to people now-a-days not being able to do calculations with pen and paper (because they've been mentally crippled into stupidity by calculators), or not being able to write, because everything is typed out. Why should people know the CLI? Because it usually brings one closer to an understanding of what the computer does. This empowers the user, which is a good thing. The more users know about their computer, the more likely they are not to be surprised by certain behaviors, the more self-sufficient they are likely to be. The same things that Windows users pay hundreds of dollars for useless stupid tech-support for, GNU/Linux users can fix themselves in a few seconds. I do not think that the user should be so divorced from what is actually going on on his computer. I know users who let 50 or so icons accumulate on their desktop, and who install applications that they have no idea where they are located, and don't know how to remove. I also know some people who delete things and wonder why their hard-drive isn't getting any less full, because they don't empty the recycle-bin/trash-can. Why do dialog boxes have ot say 'do you want to delete this file?' As most of us know, the information isn't actually deleted. It's still there...it has simply been removed from the file-system, so that your OS no-longer knows it's there, thus it shows up as free-space. This is very dangerous, as it gives users a false sense of security. 'Yes, that file with my credit-card account information on it is gone...I can sell this computer to someone else now'. No, it's not gone, it's hidden, and anyone can get it for free. What these dialogs should say is something that indicates that the file isn't really gone, and give an option to write zeros over it. My entire point is that GUIs like those in OS9/X and Win9x/NT/2k/XP dis-empower the user, divorcing him from all knowledge of what is really going on. The result is that the user has a false sense of security, and often ends up confused as to why his computer is running so slowly when the desktop has a hundred icons on it, users not knowing where programs are installed, and so-on and so forth. I've known Win9x and OS9/X users who rename program files, and then wonder why shortcuts (which they often think are the actual applications) don't work, and why the applications don't work right. Some even think that deleting a shortcut from the start-menu or deskop actually deletes the program. I was wrong earlier in calling this 'stupidity'. It is not stupidity, it is simply ignorance. They have not had to learn these things, because Windows/OS9/X does not require that one learn these things. They are in total oblivion as to what is really going on behind the scenes. This is dangerous for other reasons, because it allows spyware programs, cookies, and other dubious programs to take advantage of them.
Sat 29 Mar | | It's very hard to use a command line while eating a sandwich - wheras mouses only need one hand. Therefore, GUIs are better.
Sat 29 Mar | Panna | On and on again. @dh003i 'Because it usually brings one closer to an understanding of what the computer does' Why? Because you use a dozens of specialized programs and combines them to work more efficiently? It's not closer to the computer, it's only perhaps more powerful.. The use of a computer is a much more difficult thing than most of everyday tools. A good example: ' I also know some people who delete things and wonder why their hard-drive isn't getting any less full, because they don't empty the recycle-bin/trash-can' You have to know this. Imagine using a coffee machine. The machine shows that the coffee is ready but that's not true because you have to memorize that you have to push a button on the left side of the machine. So in my opinion the average user shouldn't be forced to memorize 200 things to work with a computer. Ideal would be an 'easy' (not dumb) interface which prevents destroying a lot and a more refined state in a quick way. Kde and others until now doesn't support this idea. You have got 7 mail programs(2 cli and 5 gui...) and so on. I think that the OS that goes nearest to this is OSX. Easy on the surface and powerful under the hood.
Sat 29 Mar | Hoang Do | It's a storage issue. Your brain can only store so much 'immediate access knowledge'. When you work with Unix, you clear away everything except for Unixy stuff... vice-versa for windows. To add new knowledge, you have to do some swapping to create space. The same with the girl-and-storage space example. Except she cleared away some some knowledge that ought to be kept in 'immediate access'. Maybe there are some other things that she considered more important. Everyone has a brain. Smartness and dumbness is just a matter of opinion. You can be smart in one thing and absolutely dumb in another.
Sat 29 Mar | dh003i | I agree that the average user shouldn't have to memorize 200 things for day-to-day work. However, I don't see how this applies to GNU/Linux, as the average user doesn't have to memorize 200 things for day-to-day work. There are many useful programs (like LyX), which allow the user to get things done without knowing very much at all. Having many choices for which program to fulfill which need is not a bad thing. That's a bunch of FUD (it has to be the one true way). Having only one program for typical tasks results in programs which are vastly unsuited to the user's needs: either the programs are too simplistic for the user's needs, or they're be-all-do-alls, which confuse the user with various features which (s)he doesn't need or want. This is why choice among different programs to do the same thing is good. Different users are different. For users who insist on having absolute control over formatting (even though they are not by any menas professional formatters), LyX may not be the choice for them. For users who simply want to create professional documents with little manual effort, the various Office word-processing programs (OpenOffice, StarOffice, Word, Siag Office, etc) are not ideal. There are many GNU/Linux distributions that set things up to be easy defaults from the start; there are also many WMs (such as WindowMaker, hopefully to be replaced with InterfaceWM) that also make things easy on the outside. Btw, there are few desktop / windowmanager / filemanager combinations now that do not support drag & drop. As for OSX, yes it does make things easy on the outside and it is powerful on the inside. However, it is one of the bloatiest OS' I have ever seen, and is downright tacky. The high-contract black & white interface of OS9 was much better; furthermore, OSX has destroyed some of the best features of OS9, such as the apple menu for program applications, the task-list icon, and pop-up folders. OSX (and OS9) also has these kind of problems with users being dis-empowered. Someone I know renamed OSX's 'System' folder to 'System (OS 10)'. Not knowing that this was done, I tried rebooting into OSX...kernel panic. It seems to me that UI's like those of Win9x and OS9/X are designed to dis-empower the user, divorcing him or her from all knowledge of what is actually going on. The results are catastrophic.
Sat 29 Mar | Panna | @dh003i It seems to become a discussion from face to face instead of the usual random forum threads. If I post a slight bunch of mistakes I apologize, because I've had some glas of red wine for dinner.. :-) Not the best, but a satisfying beaujolais. To your arguments: ' However, I don't see how this applies to GNU/Linux, as the average user doesn't have to memorize 200 things for day-to-day work.' Sure I meant 2000.. I think you are kidding. I wouldn't consider myself an average user. I've used - besides of the different Windows versions - OS9, OSX, BeOS, Amiga, Suse, Mandrake, FreeBSD and Debian, but for doing basic stuff in Linux, like burning a cd, I usually have to look in the manpages. In the end, I was so tired of the gui versions that I burnt the cds on the cli (with 5 or 6 parameters). And I usually buy 2 Linux magazines per month. So if you put an office guy or girl in front of this, he or she will escape and never return. 'Having many choices for which program to fulfill which need is not a bad thing' OK!! 'That's a bunch of FUD (it has to be the one true way). Having only one program for typical tasks results in programs which are vastly unsuited to the user's needs' The average user hasn't got the need of more power, but of more ease. The perfect tool is the television remote control. Usually you don't have to remember anything if you switch from one to the other.. It's not a power tool, but it fulfills 90% of the needs. I think that is our main antagonism: I'm trying - based on my experiences- to figure out what an untechnical user will accept and i think you don't.. The level of tolerance of this user is very low. We are tecchies and think that our job, attitude, interest is the center of the general interest. That's not. I think you would advice Emacs to a user only because it's the most powerful tool..
Sat 29 Mar | Panna | Perhaps my reply was to destructive? ;-) So a propose to all the people who thinks that Linux could conquer the world. With people I mean the average untechnical user!! Assumptions >> People don't want to learn a lot of technical things('it should work out of the box') >> People are impressed by looks and ease. >> Price is an important matter. >> People want to stay inside a group(perhaps the most imprtant factor) So if this assumptions are right, what would I conclude if I would be a Linux Product Manager(e.g. Mandrake)?? I would improve the user interface: >> Only one mail application(with a 'mail' link on the desktop) >> only one internet connection link(with a link on the desktop) etcetera.. If this link leads to Kmail or Opera is not important. But it should be one link. Nice looks + good speed(you can impress people with looks-> for example OSX) If KDE could build a system like OSX with the debian package manager(hidden behind a gui application) and an acceptable speed(better than XP??) , it would be a great thing. You impress usually people without explanations - but with fulffiling their needs. For me as a tecchie it would be very satisfying.
Sat 29 Mar | dh003i | My point is not that the most powerful tool is the best. The most powerful tool is just that -- the most powerful. To those who don't need or want the most powerful tool, it is not the best tool, but simply a tool with lots of extra features that they don't use, thus adding to bloat and confusing them. The ideal tool for each user is the tool that includes enough features to accomodate his or her needs and wants, but no more. In other words, the best tool varies from one user to the next. For each user, the best tool is the tool which allows him or her to get his or her work/play/whatever done the fastest. I myself use vim instead of emacs, because vim accomodates my needs fine. Thus, it makes sense to roughly define one's target audience (novice, intermediate, advanced) and add features accordingly. Because one cannot precisely profile one's target audience, that's where customizeability comes in. The problem with trying to guess what the average user wants is that there is no such thing as the average user. Every user is different, which is why having a variety of browsers/e-mail/etc programs targetted to users ranging from novice to power, and with customizeability, is a good thing. This allows users to choose the program that's best suited to them. Of course, most times they don't. Most users just assume that the best program for them is either the one with the prettiest screenshots, or the one which has the most features listed. Of course, this is a totally wrong-headed approach, and it's part of the reason why corporations do not necessarily aim to produce the best program: they aim to produce the flashiest program with many features they can check off in a bullet-list. Half of the time, the user doesn't even know what these features are, but just assume that they're good -- never-mind the fact that if you haven't heard of a certain feature, you probably don't need or want it. Many of your suggestions (e.g., 'one Internet link, one E-mail linked, titled that') are precisely what bothers me. Firstly, it disempowers users, who end up thinking that the program is called 'internet'. It should at least say 'Internet (Opera)' so that the user knows what program it is. Furthermore, users should have the choice as to what browser they use. If a user doesn't need to use Java or Javascript, and doesn't want flash (who does?), (s)he doesn't need Kbrowser or Opera...a simple browser like Dillo will do. Looks give people a good first impression, but that is all. They are completely irrelevant to the important thing -- getting your work done faster. The appearance of a program should be purely utilitarian. Animations, glassy-appearances, transparency, etc etc, are all unnecessary crap which waste developer time and money. It always amazes me how people waste their time reinventing the wheel for such finely tuned things as the back, forward, stop, home, and refresh icons on web-browsers. As Joel has pointed out, often times making something good-looking is contrary to functionailty. Functionality should be first and foremost, as this aids the user in getting jobs done faster. For example, most menu bars have menu-items that look no different from text you can't click on. This is not good, as it does not indicate to the user that you should click on menu items. Almost any program your in will have these type of menus. On the other hand, the menus in std WindowMaker programs are much better, as they appear 'clickable'. Take a look at this screenshot: http://www.collaboration-world.com/gnumail.data/screenshots/v1.0.3/GNUMail.png This may not be the 'prettiest' way to do things, but it is the most functional. It all comes back to one thing. In an absolute sense, the best program (for each user) is the program which allows him/her to get his/her task done the fastest. Of course, businesses have a twisted sense of what the 'best' program is, which is the program that allows them to make the most money; and making the most money off of a program doesn't always mean producing the best program in the absolute sense.
Sat 29 Mar | Nat Ersoz | Wow, interesting thread, if not long... Anyhow, I certainly prefer the command line - but so far, haven't been able to quantify that it is best. Anyhow, what caught my eye was the notion that 'sit a Unix guy at a WinX console and watch him melt'. TRUE, TRUE, TRUE! I just switched DSL providers today, and had to run the 'install' program. Verizon couldn't just say: IP addrress: obtained by DHCP DNS server address: obrained by DHCP No, we had to run an install program - as ususal. My gut reaction is always a forboding 'oh no, what is this going to do to me now?' Don't tell me that only Unix people fear this. It is universal. The trade is not, GUI versus CLI - that is merely a symptom. The true measure is control. What are they going to do to me now? That should always be filled with fear and trepidation. Especially, after the install program shoves the dialogue in your face: 'Restart your computer?' [OK] I think they should change the dialogue to: 'Is it Safe?' [Yes] [No] bweeeeeeee Dustin Hoffman, Marathon Man (one of my favorite movies of all time)
Sun 30 Mar | Panna | That looks aren't important is a typical developer statement(!!generalization!!). Especially in Open Source it seems to me that looks are underestimated. There is no culture of nicer, then better. The culture is more: look fer the technical best solution and expect the user to adjust. I don't know any business that's working that way. Who would buy a Porsche or Mercedes if the cars wouldn't look great. And the reason why the software industry can sell ugly software is that the the other software companies do the same. If you enter OSX(I don't want to evangelize but I don't remember a lot of X86 programs looking good), you are confrontated with a lot of nice porgrams. In mac usegroups often the reason why a program is deprecated, are the looks. Surely you'll say, stupid designers, but that is short-sightened(rigth word?): If a program is designed nicely, often the interface is easier to use.Why? Because the author is forced to overthink a lot the inteface(little space) Almost every shareware program in the PC World, shows you all his options at start. Why? Because the author thinks a user would buy more eagerly if the program pays a lot of funtionality back.
Interviewing for Senior Position (again ...) | Fri 28 Mar | Frustrated Interviewer
The topic of interviewing on both sides of the table seems to come up quite a bit here and Id like to bring it up yet again. My colleague and I are doing phone screens of people applying for a Senior Engineer at our company. Weve done a handful of these phone interviews so far and havent found a single person to invite for on-site interview, even though the resumes looked excellent (someone else is doing the first pass resume screening). Were a very small shop and the person well hire will have ownership of all aspects of a a significant subset of one of the products and should be able to teach the more junior people how to do the right thing(tm). Most of these phone interviews seem to follow the same pattern. First, the person describes a project that he or she worked on and it looks great. Then, we ask a couple of simple technical questions and the responses are really poor. These technical questions focus on very basic skills - understanding the language features, oo concepts, and data structure selection. Yet most of the candidates I see applying for a Senior Engineer position are unable to give statisfactory answers. This is despite claiming 5-10 years of experience, including a number of years leading development of real products. I have two possible explanations for this - were not seeing good people or were asking the wrong questions. I dont know how to address the first possibility because even with the resume bullshit filter on, these people had the right experience. However, I can try to gage the latter. Just today I interviewed a person with 10+ years of dev experinces, last 3+ doing J2EE development and C++ before that. It was another bust. The person couldnt clearly describe diffrences between checked and unchecked exceptions in Java, tell me why you would want to use one or the other and whether having checked exceptions is a good thing in the first place. He wasnt even sure if or why you can use finally without a catch (he definitely sounded like hes never used it). On the data structure selection question, he could not explain why hashtable is a right choice for a lookup by key. He wasnt sure where the hash code comes from and told me he never had to override hashCode() in any of the code hes written. Should I not expect someone with this much experience to know how hashtable data structure works? Anyone Ive worked with who I conisder a good senior engineer could answer these questions in their sleep. This pattern has repeated itself over and over, so Im a bit concerned that we might be rejecting some good candidates by asking the wrong questions. There are always some false negatives and false positives, and, I realize, the cost of hiring the wrong person is very high. Is the great majority of people who have seemingly relevant epxerience just clueless? Or, are we looking for the wrong skills? Im of the opinion that if you cant do basics well, you cant solve more complex problems, either. Of course this is just my opinion, I could be wrong. What do you think, America (and beyond in this case).
Fri 28 Mar | Colin Evans | I've seen some doozies in the last few years. Once I was interviewing people for a senior technical position, and had one candidate who verifiably had 10+ years of develeopment experience and looked great on paper. We asked him some simple math and analytical questions just to get a feel for his critical thought process, and found that he couldn't tell us what 2^3 was, or chart the equation x=y. The work I do doesn't require much math background, but the guy couldn't do highschool level algebra. Another time, I was interviewing people for a software manager position. The candidate was a senior software manager at HP, with a great resume. I met him out on the street in front of our office so I could show him where to park, and he SERIOUSLY did not know how to operate the parking meter. 'Oh, you put money in it? How do you know when your time is up?' Again, the job had no requirements for parking meter skills, but for me it was a huge red flag that the guy was lacking in simple basic thinking skills.
Fri 28 Mar | Chris | The 2 questions you listed sound a little like trivia questions to me (though I'm not a J2EE programmer). Obviously, I don't know what other questions you asked, but I'd stay away from asking very narrow questions like the ones you mentioned. You need to find out if the person can think, not whether they know x piece of information. Unless you need them to implement x piece of information immediately a smart person will figure it out quickly enough. Also, just because someone has been programming in y language for 10+ years doesn't mean they know every detail of y. Maybe they were doing simple data access web pages the whole time. That doesn't mean they're not smart, just that they had a job that didn't give them the opportunity to learn skill x.
Fri 28 Mar | Philo | Be *very* careful about judging someone based on your experiences. Over the past year I've been in the internals of the ASP.Net datagrid like you wouldn't believe, and I'm sure if I was interviewing someone I'd ask them what event allows them to format a control in a datagrid based on the data. But I find that lots of good .Net coders have never used the ItemDatabound event. This doesn't make them bad coders - they just haven't needed to, or haven't found it. Maybe I'm wrong, but I'm not positive that identifying that their sphere of knowledge doesn't overlap yours makes them a bad coder... Why don't you ask them to bring some sample code to the interview then grill them about the code they've done? Philo
Fri 28 Mar | | It's my opinion that asking specific ( especially but not limited to obscure ) questions about a language or any aspect thereof, (THAT YOU MAY KNOW OR HAVE USED ) is a very fickle way of determining a candidates ability. If you want to determine if they know those things, give them a test that asks those questions AND give them the resources to find the answers. If they still can't determine the answers in a reasonable length of time THEN you know they are not motivated and probably will not step up to the plate if hired. I am not saying that there aren't things a candidate should know off the top of his head, but I believe that most employers expectations may be a bit over-emphasized in their quest to find the 'ideal' candidate AND the job-seekers view of themself is skewed also. This has to be taken into account. I think it's important to remember just because you know these things does'nt mean everyone will. Sure the guy may have been 'programming' J2EE for 3 years and C++ before that, but what EXACTLY did he program? Does he have proof? Was he a maintenance programmer? What did the company he worked for actually do? Was he a PC Tech/Help Desk/Programmer? Did his previous supervisor say he surfed the web all day? I think the key here is UNDERSTANDING and COMMUNICATION. It's frustrating for both sides and labeling candidates as CLUELESS is not very professional and does not help either side. As for the parking meter incident? Who cares. I had not seen or operated a parking meter, until I joined the service and got 'out' of small farm town USA. Did you ever think the guy was a little nervous because he actually had never used a parking meter not to mention he was probably nervous about the interview? As for the guy that could'nt do the math, maybe he had FORGOTTEN IT. Maybe he only worked on web pages or database access and did'nt use math. My point is there are reasons why people act the way they do and for you to judge them outright without knowing them, their history, their situation, their personality etc... Well I think the Bible says something to the effect of You see a speck of dust in another mans eye but fail to look at the log in your own eye.
Fri 28 Mar | Kyralessa | Understanding the difference between checked and unchecked exceptions seems pretty fundamental to calling yourself a Java programmer. I don't know about the hashtable thing, but everything I've seen indicates that at least if you have a CompSci major you should know about hashtables; if you're self-taught, though, perhaps it's more questionable. For the sort of position you're looking to fill, the questions don't seem unreasonable. Someone with as much experience as you're seeking should have been programming since at least early 1998, so his/her entry into programming should have preceded the dot-com boom. I think it's probably just that hard to find qualified people, as the ones who don't know their stuff are without jobs while the ones who do are kept happy at their current workplace. Either you'll have to lower your standards or just expect it to take a while.
Fri 28 Mar | Kyralessa | As for the parking meter guy, it's one thing to be fiddling around with a program to figure it out on your own PC; it's quite another thing to be trying to figure something out in public. Don't write the poor guy off just because he doesn't know how to do something that 'everybody' should know; any situation like that where there's the potential for people staring at you while you try to figure something out can be nerve-wracking for anyone.
Fri 28 Mar | Philo | I like Joel's approach to interviewing; all he wants is someone who is Smart, and Gets Things Done. Now, which of those do you want to replace 'Knows how hashtables work' with? Three years experience with Java? Great! Show me what you've done! Bring me code! What have you delivered? If you were interviewing me, would you care more that I don't know how a hashtable works, or that a system I built single-handedly has processed over four million dollars in live transactions in the last four weeks? I'm kinda talking around my point here - does it matter if he knows the nuances of the specific things you ask about, so long as he can produce good code or design capable systems? Philo
Fri 28 Mar | | >> 'I think it's probably just that hard to find qualified people, as the ones who don't know their stuff are without jobs while the ones who do are kept happy at their current workplace.' Not a true statement. There are qualified, honest, knowledgeable people who are still looking for work.
Fri 28 Mar | Danil | If you don't ask for what you want, you are unlikely to get it. Do you know what you want? I've been around a number of people who have been programming for quite a while that would probably fail your screen. It's not the years, it's the work they've been doing. Most of us are paid for 'make our inventory system work', rather than 'learn the art of programming'. You certainly hope that people pick up the latter along the way, somewhere.... Maybe it's just me - but don't most programmers end up following the standards (if any) established by the few members of the team skilled in such things? And if somebody upstream of you has set up things so that they just work, would you notice? (Silly example: how can you not already know everything there is to know about Bresenham Line-Drawing Algorithm? You've been watching it on your monitor every day? Well, it just works). You could try making the questions more general (is there some trade off decision experience that you would accept that isn't specifically exceptions? Can you ask that question instead?) but it sounds like the candidates you've seen wouldn't fare any better with that. Can you improve the job description, to clarify the sort of candidate that you want? If resume screening doesn't work, perhaps ask for something instead of a resume?
Fri 28 Mar | Rob | To address 'Frustrated Interviewer''s questions: I'm an experienced Java developer (working on J2EE stuff) and I can tell you right now -- those questions you asked are not only very reasonable -- they're also very basic. Every one of the cited examples is an excellent question. These questions are not the trivia questions that some people would seem to think they are - they in fact are testing the candidate's basic understanding of the fundamentals of the Java language. For example, if they can't explain why overriding hashCode() (and equals()) is not just a good idea, then I can absolutely guaranteee that person is not qualified to be a senior Java developer. It's simply a question of having the basic knowledge required to make sound design decisions, let alone writing code that actually works the way they think it does. An example of a useless trivia type question would be to ask questions about some esoteric API or something that is not used by a lot of people -- e.g. asking questions about JTable or the JDPA. I've worked with both in the past, and frankly if someone asked me a question about them, I'd say 'I have no idea. Give me the documentation and I'll tell you'. If you're working on something interesting and are near good skiing, you could always drop me a line... :-)
Fri 28 Mar | Vincent Marquez | EVERYOne should be able to at least GUESS what a hashtable is, and how it works. I think its unreasonable to expect someone to know all of your trivia questions, but they should be able to make very educated guesses. We ask 'trivial' questions like that quite often to 1: see if they lied on their resume and 2: to see if they can make an educated guess, or say 'never used that, but I did program in Perl and we used hashes there and they worked like xxx ...'. I think there are way too many people who think they deserve senior positions because they are above average. The problem is, being above average does not make you good enough for a Senior position.
Fri 28 Mar | Brad (dotnetguy.techieswithcats.com) | Unlike most of the others here, I think it's reasonable to expect at least passing knowledge of the core system if that's what you're using and what they claimed to use. I don't see how you can use Java without knowing what exceptions are, given checked exceptions. *shrug* Defining 'smart' in Joel's list could very well include seeing that they knew something about the things they claimed to. Or maybe that's 'honest', and it needs to go onto the list, too.
Fri 28 Mar | Ben Combee | Thanks for asking the 'checked vs. unchecked' exception question. I don't use Java very often, but I do a lot with C++, so I decided to figure out a good answer, searched with Google, and found Bruce Eckel's critique of them. That jogged my memory of how they worked, and now I've got yet another bit of language fluff in my head. :) BTW, unchecked exceptions seem to be problematic based on what I read, with unintended consequences because its easier to catch them and do nothing just to get your code compiling, and now you've lost the exception at a higher level. Bruce's article is at http://www.mindview.net/Etc/Discussions/CheckedExceptions.
Fri 28 Mar | Brian | I like the question about try/finally with no catch. It's not trivia, and it certainly isn't covered anywhere I have looked, but it is *so* helpful for writing correct code. I would go so far to say that this idiom is necessary given the existence of unchecked exceptions. It would be like asking a C++ coder about RAII. Maybe you don't *need* to know what it is, but if I were doing the interview, it would be *major* bonus points.
Fri 28 Mar | one programmer's opinion | First, let me say that if you are looking for a very specific type of candidate (just like Mike who left to go work for XYZ, inc.) then you should choose a candidate who fits at least 80% of your criteria and then hire him/her on contract-to-perm basis. This way if the person doesn't seem to be working out after a week or two you can let him/her go without incurring a substantial financial loss (except in time). FI wrote, 'teach the more junior people how to do the right thing' Everyone is looking for this type of candidate. The problem of course, is that every company and every job candidate has their own idea of what the 'right thing' actually means. Another problem, is that employers tend to interview candidates who possess this type of knowledge just like they would if they were interviewing someone for a junior coding position. Analytical thinking and communication skills tend to be the skills most employers REALLY want, however, it seems like many technical interviewers cannot get past the 'I nead someone who has read all the volumes associated with Donald Knuth's The Art of Computer Programming' type of thinking. On most jobs, most people will be asked to do things they haven't done before, and for talented IT professionals, this is no big deal. Please clarify the following for me: * Senior Engineer - is this simply a fancy title for someone who has held a coding position for several years or does it mean something more at your company? Most people that I know who call themselves software engineers are able to competently talk about all the various aspects of the software development process (not just the construction phase). * What type of 'products' are we talking about here? Your company shouldn't be looking for a C++ or Java programmer who has extensive in-house business application development experience if your company produces commercial software products. Genarally speaking, these two work environments tend to be very different. While still in college, I interviewed for a non-coding position inside an aerospace firm that did work for the government. I looked at the work (i.e. code) some of their software engineers had written and I can tell you that the stuff they needed to know is very different from what a C/C++ coder would typically need to know when working for an insurance company. * Un-statisfactory answers to technical questions that focus on very basic skills - When a candidate doesn't provide the answer you are looking for to a particular question what do you do? Do you simply move onto the next question on your list or do you temporary veer away from your script and engage the candidate in additional conversation, such as, mentioning 'it sounds to me like you have never used X it is this true? [wait for an answer]. Why .......? [wait for an answer]. I have to honest with you John your responses to this question really concerns me because.... FI wrote, 'This pattern has repeated itself over and over, so I'm a bit concerned that we might be rejecting some good candidates by asking the wrong questions.' Yes, this could be the case, however, it is hard to tell from your short post what you REALLY consider a good enough candidate to be. You are not giving us a complete picture here.
Fri 28 Mar | one programmer's opinion | One final question. Who is doing the first pass resume screening at your company? Could it be they are filtering out the right job candidates? Maybe you and your colleague need to take over this responsibility?
Fri 28 Mar | echidna | I think your ability to interview is poor and that the approach demonstrated by your questioning probably indicates poor, not good, software development practices at your company or workplace. If someone has ten years experiencing producing good product, they are by definition probably pretty good. Your focus on narrow gotcha questions that you and your circle of like-minded friends consider to be the arbiters of competence suggests an inability to analyse problems well. Anyone who's developed product for ten years can easily adapt to using exceptions the way you consider important. He might even explain to you why your way is problematic.
Fri 28 Mar | Hardware Guy | 'If someone has ten years experiencing producing good product, they are by definition probably pretty good.' Agreed. But how do you figure out that they *did* produce good product? Even if you have personal knowledge of the product, and know that it's good, how do you determine that this candidate contributed anything significant to it? Years ago I was interviewing microprocessor designers, and happened to talk to a number of people from Intel. Several of them claimed to be chief architect of the same good product. At that point, substantive technical questions are in order.
Fri 28 Mar | Brad (dotnetguy.techieswithcats.com) | echidna, I don't think asking basic question is 'gotcha'. Every Java developer I've talked to knows about exceptions, and every good architect has been able to discuss their feelings on checked vs. unchecked exceptions. I suppose in some circles, the 'top tier' of development just designs but doesn't write code, but that's never been the case anywhere I worked (even for medium-large orgs).
Fri 28 Mar | Anonymous Coward | I would look at your screening process, and all the way back to your advertisement. While everybody slants their resume to improve their job prospect, many inflate their qualifications and a few outright fabricate them. I remember when I was looking to change jobs in February 2001 the typical job ad asked for 10 years Java and 3 years .NET. Hmm, Java's first public beta was fall '95 and .NET at that point was about six months worth of marketing hype in search of a technology. So, the only people who got interviews were the bald-faced liars. Make sure your ad is realistic. That the requireds are really required and everything else is a 'nice to have'. Examine your screening. Makes sure that the screener knows what is realistic. IE anyone with more than eight year of Java is a liar. Make sure the screener understands what other technologies are related. IE not just C++, but Objective C, Smalltalk, Delphi, CLOS, OCaml, etc. Have the screener look for other signs of skill. IE familiarity with multiple paradigms such as functional (Lisp, Scheme, Haskell) or declarative (Prolog). Unfortunately the sad fact is that there really aren't very many seniors out there. The internet boom turned every semi-competent junior into an overnight senior.
Sat 29 Mar | Reginald Braithwaite-Lee | When I'm hiring, I don't phone interview. I phone *screen*. My objective is to answer one question in ten minutes or less: Is the person on the telphone the person described in the resume? I have already decided that if they are, in fact, the person in the resume I wish to invite them in for a face to face interview. (If I look at a resume and I'm not sure whether to interview them, I usually follow Joel's dictum: no hire.) For that purpose, I usually use technical questions that are non-trivial. If someone claims Struts experience, they absolutely positively know the difference between an Action and an ActionForm. So I ask them. If they claim to know Design Patterns, I ask them to name their favourite three patterns and describe when to use them. This is stuff *they* put on *their* resume! There definitely are certain things everyone knows. Those questions won't discriminate between a good coder and a bad one, but I'm not trying to accomplish that on the telephone: I just want to screen out those who are dishonest or desperate enough to lie. FWIW, if someone is junior and confesses to exaggeration, I usually give points if they follow up with an email answering my question after the fact. I give latitude for junior people because I know that this industry as a whole values 'X years of Y' more than 'Smart and Gets Stuff Done,' and juniors are often too green to avoid such places when they're starting out.
Sat 29 Mar | Vincent Marquez | Reginald, that seems like a great way to go. We tried that during our interviews, but your way seems even better. I bet you screen out almost all of the applicants who lie on their resume. I think if more people screened like you do, there would be a LOT less exageration going on in resumes.
Sun 30 Mar | realist | You are a bit slow, you are interviewing quite a number of senior developers and are of the belief that somehow THEY don't measure up. My guess is that you've worked in this one company for too long. Can't you see what's really happening? You don't measure up.
Sun 30 Mar | Simon Lucy | Part of the problem in asking for specific details about how something was solved in the past in order to gain some insight in whether they did what they claim, or they even understand what they did is that once a project is past, its dead. To get back inside it and exhibit enthusiasm for it can be difficult and so only the surface detail comes out. Often then the person comes across as hesitant possibly even evasive. I'm confused about Reginald's approach, if someone fell at those kinds of questions their CV would likely be inconsistent and I'd not consider them anyway. If you're going to talk to someone about a job, its an interview, I don't care what you call it. If it is an interview then it has to have all of the controls that any other face to face interview should have. This means if you're going to ring them up, either warn them in advance and tell them the nature of the call, or be prepared to get bad results. If you use the phone to interview someone remember you're getting a very specific idea of the person, their telephone manner might be appalling but their competency high; they may have a winning way on the phone and be adroit and lubricious with the right phrases, but be totally useless ~ except in sales. Any interview has to be a conversation, I've found its better to be enthusiastic about the nature of the project and then encourage them to express ideas about it, if its led into naturally then they'll call on past experience and introduce it themselves. Then you can be more specific in your questions (still conversational). Doing this by phone is hard, not least because in order to be fair to all candidates you have to present those same questions, make it formulaic and you'll get formulaic answers (or none); make it free form and you have monitoring problems.
Errors and Omissions Insurance | Fri 28 Mar | Mitch & Murray (from downtown)
In Joels new (and excellent) article about office space he mentions Errors and Omissions insurance. This stuff became obscenely expensive as Y2K was getting closer, and quite a few companies simply quit writing it. How many of you in the software business have it now, what are you paying for $xxxK coverage, and where did you get it?
Sat 29 Mar | JD | Don't mind my ignorance, Could someone please explain me what 'Errors and Omissions Insurance' means? Regards, JD
Sat 29 Mar | RocketJeff | Google is your friend: http://www.insurepro.net/html/errors_and_omissions_explained.htm 'Errors and Omissions Insurance protects your company from claims if your client holds you responsible for errors, or the failure of your work to perform as promised in your contract.'
Sat 29 Mar | Bored Bystander | Unfortunate that someone with real knowledge hasn't stopped by. So, I will tell you what I know through the rumor mill. :-) I've mainly discussed this with people on newsgroups and other boards, so be forewarned that this 'information' is rumor based. The typical pricing I've heard mentioned for solo independent consultants in IT is around $5000/yr for $1 million of liability coverage. Here's the kicker, though. The insurance is generally written such that the coverage won't cover you for work you do in a given year that you are sued over in a subsequent year unless you keep the policy in force continuously right up through whenever you are sued. In other words, it's apparently not possible to pay the premiums in one period in which you do work for a possible high-liability situation and then expect that you are covered from liability for that work from that point on, unless you keep paying the premiums. And it doesn't matter if you continue to engage in high risk activities later or not. My impression is the following: very few ICs in our business buy E&O insurance. The incidence of lawsuits is present but generally negligible. Nolo Press's standard contracts contain wording that indemnifies the consultant from liability in excess of fees paid by the client for the services. And most of us incorporate in order to shield our personal assets from professional liability. My own 'protection plan' consists of this basic philosophy, contract protection + corporate shielding. Hope that helps. I'll try to post some URLs of plans if I can scrounge any.
Sat 29 Mar | Philo | And if E&O works like legal malpractice insurance, it will go up every year, since each year the insurance company's risk increases (by year five they're covering you for five years worth of work) I don't know if that's how IT E&O works, but you probably want to ask so you don't get a nasty surprise. Philo
Sat 29 Mar | RocketJeff | Bored Bystander, If you look at the URL I gave in my reply I think you'll find some 'real knowledge'. Again, a simple Google search would suffice.
Sat 29 Mar | Joel Spolsky | Hmm, now you got me wondering... do we really need E&O insurance or is it just a waste of money?
Sat 29 Mar | Sergent Sausage | We're a small shop - 6 developers. I own 50% of the company and take an interest in all business matters. For the last 5 years we have carried E&O. Our rate is based on sales numbers. Our current policy is up for renewal, and here's what we're looking at: Roughly $4500.00 (up slightly from the last several years) for 3 Million in E&O (Plus umbrella) coverage. One thing to take into consideration that I've not seen mentioned yet: If you get sued, and successfully defend yourself (without insurance coverage), you've still got to pay for the costs of defense. In my state (OH) current tort law does not allow for the collection/reimbursement of your defense costs. Effectively, you could get sued, and win (no damages paid) and still be out $100,000.00 or so in the costs of defending your case -- with no way to collect those costs back. With insurance, your carrier will defend you, and (depending on the type of policy and deductible) will eat those costs as a part of the claim process. Mine has a deductible that considers both defense costs and damages awarded. In the example above, rather than being out $100,000.00 for my defense costs, I'd simply be responsible for my deductible ($5,000.00) and I'd survive as a business. Without my E&O, I'd be out a hundred grand, and would likely have to fold the business -- even though I successfully defended my case and won. Without E&O, I'd be leaving the courtroom where I just won my case, and walking down the hall to file my bankruptcy paperwork. Depressing. We've looked at the costs, and our exposures, and determined that E&O is an absolute *must have* for the long term survivability of our business. Your case may be different. It's all about: What are your risks? What are your exposures? How much can you afford to protect the investment (your business) that you've spent years building up? It was a 'no-brainer' for us.
Sun 30 Mar | big bob | We don't carry E&O. Our license agreement basically tells our customer that they're insane for installing our software because everything up to and including the end of the world will be the result.
Sun 30 Mar | big bob | ...and before everybody & their dog jumps my a$%, let it be known that we have a legal dept. that wrote that, that's not verbatim, and I didn't have any say in the matter.
Sun 30 Mar | Prakash S | Gosh, sounds like your legal department is highly competent:-) , Actually it is a good idea to put it all in, never know who will be in the mood to sue you....
.Net/SQL Server -> PHP/MySQL ? | Fri 28 Mar | Philo
Frustrated with the bugs and nonresponsiveness at Blogger, Im looking at Moveable Type http://www.movabletype.org However, its PHP/MySQL and Im a MS guy (C#/SQL Server). How tough will it be to figure out? Anyone made the same transition? Philo
Fri 28 Mar | JD | Hi Philo, If you have ever worked with C, you will find yourself at home with PHP. Its 90% _identical_. And MySQL. Hm... It lacks LOTS OF FEATURES which are there in commerical RDBMS but the way you write basic SQL queries is ALMOST same. Though, If you happen to face a problem with these two, I will suggest seeking help at http://forums.devshed.com. It is one of the best and very active open source community I have ever come across. All the best! Regards, JD
Fri 28 Mar | Chris Winters | MovableType is Perl, not PHP. And AFAIK you can use it without any sort of database whatsoever. Since it's built to be usable by people who don't know much programming at all, I doubt you'd have much trouble with it.
Fri 28 Mar | HeyMacarana | PHP and mySQL isn't too bad and is pretty easy to learn, but it isn't as nice to code in as .NET and SQL Server. The thing I hate the most about PHP is that the support for classes is almost nil and has something that they try to pass off as classes. With mySQL there's a lack of triggers, subselects, and until recently transaction support. But if you're just moving a blogger homepage over then PHP and mySQL should be just fine since you're not going to be using PHP/mySQL for anything complicated.
Fri 28 Mar | Gavin | Movabletype isn't written in PHP, it's written in Perl. I'm not sure how much you'll have to dig into the source code, it installs and works out of the box. You can always write plugins if there's a feature MT doesn't support.
Fri 28 Mar | Andrew Burton | I'm a Blogger man myself, but I fielded a few Perl questions a while back when a friend converted. Chris is sor of right. You can use MT with out MySQL, but it uses the Berkley Database systems instead. I want to say you need DBI installed on the computer, but that's standard with the newer Perl installations (5.6 and 5.8), I believe.
Fri 28 Mar | Herbert Sitz | The Movable Type framework is written in Perl, but I think most of the scripting people do with Movable Type is actually done using PHP. At least, most of the questions and examples you'll see in the 'Tips and Tricks' forum on their support board discuss solutions using PHP and not Perl, though I'm sure you could use Perl if you wanted. Basically, most of the scripting involves writing a template page that uses PHP in combination with Movable Type 'tags' to access the data. The 'tags' are expanded using Perl, but you don't need to concern yourself with then when you're scripting. At least that's my understanding.
Fri 28 Mar |                               | Dotnet crumbles like a bitch
Sat 29 Mar | Alyosha` | 'The thing I hate the most about PHP is that the support for classes is almost nil and has something that they try to pass off as classes'. You sure you're talking about PHP here? I always thought it was perl, not PHP, that had the brain-damaged OO support (what's this about 'blessing' references? and the magic @ISA array? and why do I say 'package' when I mean 'class'?) PHP's OO syntax and support is pretty ordinary, as far as I can tell.
Sat 29 Mar | Matthew Lock | > I always thought it was perl, not PHP, that had the brain- > damaged OO support (what's this about 'blessing' > references? and the magic @ISA array? and why do I > say 'package' when I mean 'class'?) You've confused Perl's so called 'brain damaged' OO implimentation with you not understanding it. A common trait with 'wanna-be' Perl programmers.
Sun 30 Mar | Alyosha` | I'll take 'Unsubstantiated Ad Homs' for $1000, Alex ... This content-free comment of Matthew's aside, does anyone know what HeyMacarena means by PHP having 'the support for classes is almost nil and has something that they try to pass off as classes'?
Sun 30 Mar | SC | Better still, is there any web log software written in .NET? I'm holding off on blogging until I can find one. The only one I've seen is at: http://www.dotnetweblog.com/ I believe Scott has threatened to release the code to it at some point in the future.
Sun 30 Mar | Brad (dotnetguy.techieswithcats.com) | I haven't seen one released into the wild yet. A few people use home brew (I did for a while, but gave it up when I moved to Movable Type).
Best editor: Visual Slick, Vim, .. | Fri 28 Mar | Panna
Im reading Pragmatic Programmer and a large section goes about the importance of the right editor. In the last time I used Scite but it seems to be underpowered for a dedication. So what would you choose and why? Except of the price tag I think Visual Slick Edit seems a good decision..
Fri 28 Mar | Mike Swieton | I have to go with vim myself here. That's mostly because I know it well enough that I can work extremely productively in it, and if I knew something else better than that'd be the better editor. It happened that I learned vim first as the first really powerful editor. It's a good deal, too! But, go with what you know.
Fri 28 Mar | please | You're kidding right? Next topic: which is the better religion, Christianity or Islam? Ugh.
Fri 28 Mar | apw | Taste great. Less filling. Taste great. Less filling......
Fri 28 Mar | Kirk | I'm also intersted in which Java IDE is best, which operating system is best, and which pants are best. PANTS!
Fri 28 Mar | agnul | You forgot what home-computer is best ! My vote goes to Amiga. :-) Oh, as for editors.. Textpad works fine for me.
Fri 28 Mar | Gregg Tavares | I've been a user of Visual Slickedit since version 1.0 and I've been pretty happy with it. It supports all the smart tags better then VC++ and you can train it for new languages if you want. It's cross platform and handles all the various files line endings automatically. Of course I know that editors are a religious issue so I'm not suggesting that anybody switch but I know that most of the programmers I currently work with use various forks of emacs and they generally get jealous when they see me using VS. Sure it costs $299? But come on, for a programmer your single most important software is your editor. Whatever editor you choose, don't base you decision on price.
Fri 28 Mar | Brad (dotnetguy.techieswithcats.com) | Favorite editor? Textpad. Favorite IDE? Visual Studio.NET. Using the IDE is cumbersome, but the Intellisense value just can't be underestimated.
Fri 28 Mar | Ged Byrne | I swear by Scite. http://www.scintilla.org/SciTE.html It's free, open source and amazing.
Fri 28 Mar | | SlickEdit in a windowing environment. Emacs if at a console.
Fri 28 Mar | John | Never heard of SciTE before but it looks like it could be good (to this Vim user who's open to alternatives but very unlikely to change) One problem, though - I just can't help pronouncing the Sc as a SH sound.
Fri 28 Mar | Tom Payne | It's a religous issue, but... I'm a big fan of VIM. It's hard to learn at first, but the rewards are incredible. For me, its best feature is the ability to work at a meta level, i.e. operator on words/sentences/paragraphs/entire documents with a couple of keystrokes. For example it's two keystrokes