last updated:19 Aug 2002 11:58 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 07 Jul 2002) | View Other Weeks
Unit Testing Database Applications | Sun 07 Jul | Walter Rumsby
Hi, The more work that goes into the current project I am working on, the more convinced I am that we need to write unit tests to make sure were on track. Ive looked over some of the unit testing literature and it certainly makes sense to me. However, the application we are developing is very largely data-driven and Im a little unsure how to implement unit tests, i.e. if the method list all tasks extracts a list of tasks from a database then there is a very high chance that the result of this method will differ between calls, even when the same arguments are used. Given this, how can I construct meaningful tests and what should I be focusing on? Your thoughts most definitely welcome.
Sun 07 Jul | anon | Are you able to hook your unit tests to a database with dummy data? If this is not the case, unit tests make you refactor your code so there's a separation from your live database. You can then test multiple db's with corner cases.
Foreigners programming causing me problems | Sun 07 Jul | Sanjay Prakash Guntalab
I have worked in several Bangalore software firms for now almost 15 years. I dutifully provide for my wife and 2 beautiful daughters, and life was going along until now. Then, foreigners are setting up programming sweat shops in some African and Pacific countries, and now undercutting and stealing our work! Some of places charge less than half of our firm, for working for US clients, and there is facing pressure to reduce rates or lose the work! Becuase of the cheaper competition, our place has let go 7 of 24 developers this year, and the survivors must take up the pace....What am I to do? I am in a rock and hard place now, all becuase of these foreigners taking work from us by charging less. It is not fair, they can charge less becuase their living cost is so much lower than here in Bangalore. I have bills and expenses to pay? I would not devoted my career to this programming were I to know this would happen. If the bosses reduce our pay, I will lose my apartment. Where to go then? I have no other job skills, and have large monthly expenses to account for. -Sanjay Prakash Guntalab
Sun 07 Jul | Ollie Cromwell, XI | Sanjay Prakash Guntalab: Don't feel so self conscious... We american's tend to AIR our dirty laundry in the open[open letters, debates, etc...] The process helps to correct issues that might otherwise threaten the state of the union. Call it growing pains. But we adapt and will continue to grow despite bone head decisions by some of our political elite. If 1million americans invaded India today... local chaps would clearly have an issue with this. Even worse if these invading 'guest workers', are given preferential treatment with respect to employment prospects, the locals would be making more than a little noise.[I believe the tradition in India is something like a sorched earth policy(riots, mamings, killings and other such fanatical convulsions) ]. So on behalf of the more civilized among us Lazy Americans, please don't mind us.
Sun 07 Jul | Lazy Canuk | Sanjay Prakash Guntalab: Have you tried India? I hear they're hiring web experts. How about China or Afghanistan? Those places will be less of a commute for you.
Sun 07 Jul | Vijay Rao | Lazy Canuk(assuming you're canadian), You Canadians are very Racist!!
Sun 07 Jul | Lazy Canuk | Vijay, Canada isn't racist! It's just classist! Certainly beats having a H1B / GreenCard system with INS people locking everyone up cause they extend their stay for a few hours. :-)
Sun 07 Jul | Vijay Rao | Yeah sure whatever tuna breath: http://www.asian.ca/redress/art_20020623.htm
Sun 07 Jul | Vinod | Sanjay, You are obviously a jealous American no-talent, who doesn't realize that many Indian coders deliver better 'bang for the buck' than Americans. You see, Indians speak much better English than the coders in most 'African and Pacific countries.' Frankly, the best ones speak better English than some of the slacker Americans. Yes, I could get a coder in Rwanda to work for $5/hour less than in Bangalore, but I'd need to spend more than that $5 to remedy the communication barrier. Your final paragraph is the accurate lament of an American loser, not a skilled professional from Bangalore. It's pathetic, but mostly it's just laughable. Have you learned how to work the french-fry machine yet?
Sun 07 Jul | MadMan | I can't believe people are actually replying to this troll ! It's so bloody obvious, or is it? Kill this thread now, chaps. This is as good as flamebait gets.
Sun 07 Jul | Sam Wong | Protectionsim in the ugliest form.
Sun 07 Jul | Meek Observer | Prakash, A point you need to realize is that now bona-fide naturalized or native US citizens are without jobs. And you cost more than any of us, despite your talents. Hard fact: you leave now so Americans can have jobs. Not being mean, just telling it like it is, and the way it should be. We're without jobs, time for you to go home.
Sun 07 Jul | Just Surfing Through | :-) Immigrants have always taken jobs from current US residents because they are willing to work for less. Why did you choose a career than anyone from a third-world country can learn?
Sun 07 Jul | The Coach | They aren't immigrants, you stupid idiot. They are guest workers. At least try to get the terminology correct.
Sun 07 Jul | como Esta? | Why do software developers think their skills are somehow special? You have simply learned another language. Your salary should be the same as anyone else who happens to be bi-lingual.
Sun 07 Jul | The Planet | simple, Americans don't have the skills to pay the bills. they are lazy and greedy. an H1B can get the same job done better, cheaper, and with a lot less bitching. adapt or get fucked
Sun 07 Jul | Half Moon Bay | I vote for ending this program. The Silicon Valley economy is hurting enough. Why should greedy tech companies be allowed to import these drones who work for cheap? They would be forced to hire back talented American citizens. Doesn't anyone remember the recent posts about the people at Sun who were laid off, while the H-1Bs got to keep their jobs? Buy them a one-way ticket home......
Sun 07 Jul | Half Moon Bay | Sorry Prakash... nothing personal
Sun 07 Jul | Attorney in Training | Half Moon Bay, Companies would be forced to relocate overseas. The moronic 'entitlement' mentality displayed by poorly-schooled young Americans goes a long way to illustrate why the H1-B program is a good idea.
Sun 07 Jul | Voice of Reason | Any of these American workers who thinks himself so 'talented' has the right to start his own business, and reap the profits from doing so. If he can't handle that, then maybe he's not as talented as he thinks he is. If a rival company is wasting money on Mercedes-owning managers, then surely a talented young American can do a better job and undercut its pricing, right?
Sun 07 Jul | MBA in Training | Hate to rain on the parade, but the word from those who make money shopping outsourced programming in India and elsewhere is that tech blows everywhere. Too much spending on W2K, telecom, and dotcoms, in the 1998-2001 time frame. Now comes the hangover. The second problem is this: 70% of major corporate it projects fail. This is beginning to piss off the folks who write the checks for this crap. If 70% of your spending on tech goes right down the shitter, you might as well hire cheaper folks to do the flushing with. Third, signs of the apocalypse are actually a positive. When everyone says there are no tech jobs, the bottom will have been reached.
Sun 07 Jul | Muy Bien | I know this is probably flamebait, but here is some free education. Software development isn't just speaking another language, it's the application of higher mathematics algorithms to computer programming. It's the logistics of documentation, client communication, and maintaining a team dynamic. It's understanding the limitations of the system you work in, and understanding the limitations of the new system you design. It's putting your blood, sweat, and tears into every line of code you type into vim. When I hacked a VB program to catalog and archive my warez collection, I wasn't writing an essay in Spanish, I was making my likeness in VB. That thing was my fucking baby, and I treated it as such. Even though it took me all of 30 minutes to code and test the thing, I treated it like an inlaw because I put my HEART AND SOUL into it.
Sun 07 Jul | Micheal Blanc | Look everyone cool it!!! this is globalisation i though the liberal thinks that american are exploiting third world country (india) for their cheap wages, it turns out that it is india who is the winner Things happen
Sun 07 Jul | Lazy American | So if Indian's are so brilliant, what's this crap? Indians are racists? Oh man!!! http://www.npr.org/programs/specials/racism/010828.caste.html Prakash... no sympathy here.
Sun 07 Jul | life is like that | find out the answer to this: what % of american consumer goods purchased in america are actually made in america? but its fine unless its your industry, right? programmers in india are not better, or worse, than american ones. just cheaper. H1B programmers are not better, or worse, than american ones. just cheaper. compete or die. or, compete and die....that happens as well.
Sun 07 Jul | Beka Pantone | M-o-v-e t-o E-u-r-o-p-e We are cool.
From The Lair | Sat 06 Jul | Pierre Le'Bleu
My Goodness look what we have here. http://www.theindianprogrammer.com/forum_toc.htm
Sat 06 Jul | Pierre Le'Bleu | Bidding starts at $5[usd] when developers purchased in twin-packs http://www.projectspring.com/freelance/index.html
Sat 06 Jul | Sammy | You know, that's rather beautiful. I've always liked the thought that programmers from poorer nations could contribute positively to the world. I wondered where to find these places. I would definitely add a rating system though to that programming auctioning site. Like ebay. And have that somehow interact with bids. Maybe I should set up my own site. ;-)
Sun 07 Jul | Beka Pantone | http://www.elance.com Pretty useful and reliable source.
Do people hate when you send joelonsoftware links? | Sat 06 Jul | red meyer
Ive noticed something odd. Whenever I send someone a link to a Joel article, they end up disliking Joel, even if they AGREE with him. Normally, they like the links I send, and I dont do it often. Also, I feel the same way about Jon Udell. Someone sends me a link of his, and I end up skimming the piece out of courtesy. Is it that I like Joels writings because theyre not so serious, and I think of industry programming as a game? Many of my friends are very left-brain, serious types. Whereas Joel says la la la and even stupidhead. To me, thats nonchalance, but to them maybe its evidence he was responsible for VB macro viruses. Thoughts?
Sat 06 Jul | red meyer | Reading this again, I don't mean this to reflect badly on Joel. It's my belief that if they just happened to find a link on Slashdot or somewhere, they'd enjoy the articles. Maybe I'd like Jerry Pournelle if I hadn't gotten a gushing link too. Eh, whatever. This isn't exactly earth-shaking.
Sat 06 Jul | anon | I have sent 'Joel on software' links to open source devel lists and there was no negative reaction. I think his insights are welcome. Certainly no one has said anything derogatory about them. I can only speak from my experience.
Sun 07 Jul | Dustin Alexander | Joel is great because he is relevant to many elements of software development and an elegant enough writer to get his points across without drawning them in prose. I send his links to my partners all the time and, although they often disagree with his points, they have never castigated him for his opinions. Joel has a way of writing an argument that is both poignant and timeless. I think the majority of people who recieve links to his site would not regard them as time lost. This is, of course, simply one humble opinion and not a scientifc analysis. Perhaps such an analysis should be conducted? :)
Why open-source usability stinks | Fri 05 Jul | Jason McCullough
I give you: the only Slashdot thread youll ever need on this subject. I love the implicit assumptions. http://ask.slashdot.org/askslashdot/02/07/04/2341202.shtml?tid=126 Is There Such a Thing as Too User Friendly? Why do todays software and consumer electronics users expect to be able to fire up their new toy and magically have a complete understanding of how to use it? I feel that a large majority of the time it is mostly the users fault, and I speek from personal experience. My father often asks me to help him use his computer. He called me down once saying he installed new software and he think it broke his computer because an error showed up he had never seen before after he restarted, I go down and read it... it says something to the effect of Thank you for installing with the one button Ok. He didnt even bother to read it, he instantly assumed things were more complicated than they should be. And my favorite: Seriously though, I cant say I blame you...we are too lazy to read a manual...or possibly just to prideful. At the same time, I remember a Slashdot article a few weeks ago about manuals in other countries and how users there actually read them...
Fri 05 Jul | anon | I wouldn't take Slashdot as an example of what open-source people think. That's like saying programmers like talking about H1Bs.
Sat 06 Jul | Joe | I really think the chief complaint is with software that performs 'automagically'. Easy of use is a really nice thing but programmes that make silent changes are really insidious things. I certainly don't think all open source software stinks. Scilab by INRIA and Octave are quality stuff. Both are MatLab like programmes. http://www.inria.fr/inria/index.en.html http://www-rocq.inria.fr/scilab/
Sat 06 Jul | Matthew Lock | Open source also tends to tackle harder projects like Perl, Apache, Sendmail etc. It's hard to see how Apache could be made to be very 'user friendly'. For most people user-friendly really means, easy-to-learn. I prefer easy-to-use over easy to learn.
Sat 06 Jul | Eric Debois | User friendliness often contradicts efficency. What is good for an experienced user is rarely good for a newbie.
Sat 06 Jul | gringo | Did you notice 'The Opensource Way to Fame and Fortune'? http://newsforge.com/article.pl?sid=02/06/29/2127239 It seems a common opensource tactic is to release a tool under GPL, but make money on user-friendly tools. I think Ximian (the Gnome guys) want to do this too.
Sat 06 Jul | Sarain H. | 'User friendliness often contradicts efficency.' Likewise, User hostile software is often the most efficient. The user who is not intelligent enough to use the software should not be allowed to use it.
Sun 07 Jul | Krzysztof Kowalczyk | Sarain, maybe my irony detector is low today and you meant that as a joke. But if not... Following this logic we shouldn't make cars with auto-transmission because if people are too stupid to use manual they shouldn't be allowed to drive cars? To me such 'wisdom' is just a good excuse for designers who 'aren't intelligent enough' to properly design software. And how do you define efficiency? If it's 'how efficiently users can do their job in a given program' it seems to me that the efficiency of the user that doesn't use a given program is 0 and would be greater even in any program that is an alternative, even if this alternative is not very good. A 'user hostile' program can make a barrier to entry so high that only 'intelligent' (or persistent enough) people will use it and maybe those users will be 'efficient' no matter what software does, but that doesn't make the software efficient. I see zero correlation between 'user hostility' and 'efficiency' of software. I also think that people fall into the trap 'ease to use vs. efficient' too often. There might be correlation but I don't think it's as big as people make it to be. The downside of such thinking is that it gives an easy excuse to designers. Once you accept this folk wisdom, you stop thinking about how to make software both easier to use *and* more efficient. For example, it has been shown and measured that for many operations (say, copying files) GUI interface is both easier to learn (because of its discoverability) and faster to use than command line interface (on loosely defined 'average', of course; you can always give extreme counter examples where command line will be faster to recursively copy files whose names have 'r' as a third letter but this is not something that most people usaully do).
Sun 07 Jul | Dustin Alexander | 'User friendliness often contradicts efficency. What is good for an experienced user is rarely good for a newbie. ' I think this is a good point, if a bit off. The difference, in my opinion, is not in the actual implementation of the software, but in the implementors themselves. Here's my logic: Open source interests and corporate interests are unique at a very low level. This different extends to many levels, but it mainly comes down to a difference in the target audience of the product. Open source developers are ego centric and have a tendency to develop solutions to problems that they themselves are having or that they percieve as being an issue without market research. Corporations on the other hand have an interest in targeting the lowest common denominator in order to expand their user base and thus the sales value of the product. Hence, you have the open source projects developing highly technical and efficient applications while the corporations continue to make a killing in usability even without a backing feature set. The difference is a divergence of goals, not an contradiction inherent in the products themselves.
Sun 07 Jul | Sarain H. | Krzysztof, Yes, I meant as joke. Thanks for making the points in reply wich I agree.
Sun 07 Jul | Ed the Millwright | >Corporations on the other hand have an interest in targeting the lowest common denominator in order to expand their user base and thus the sales value of the product. Hence, you have the open source projects developing highly technical and efficient applications while the corporations continue to make a killing in usability even without a backing feature set. Dustin, This is sometimes true, but I'd mention MS products as a sucessful counterexample -- outrageously huge feature sets are part of the reason for their success. I agree that some applications have many features, others have few. Some are easy to use, some are hard. Some are made by big corporations, some are small open source projects. There are some weak correlations in there. I would guess only the following: pure opensource weakly correlated with poor usability big corporations weaklry correlated with many features
Sun 07 Jul | Dustin Alexander | Ed, You make a good point about the feature sets. It is true that over time usability of corporate products is often sacrificed for an increased feature set. When you look at corporate motives, the reasons for this become obvious as well. Once a product has sold a certain number of copies the UI ceases to be a selling point to the unwashed masses and the corporate implementor must attract the remaining audience through expanded features. Competition also plays into this. In order to attain an advantage over their competitors, who have often copied the user interface of the published product, corporations are forced into feature wars. What I find interesting is that this is a game of diminishing returns. Each version of the application is designed to target a smaller section of the population, the previously uncaptured audience. This implies that the product is going to become less usable for everyone. The people who have purchased the product previously have to deal with the added complexity of unwanted features. On the other hand, your correlation between open source software and poor usability is not entirely inherent to the development structure. In my opinion, the lack of usability in current open source applications has more to do with the origins of the culture than a flaw in the development process. Over time it bears out that the technological elite who are the current masters of that bazaar will be replaced or augmented by those who value usability over functionality. As a side note: Anybody who has played with the grep command line tool in Unix realizes that open source groups can saturate feature sets as well. The difference seems to lie in the availability of a simple form of use as opposed to a complex form. Grep works well because it works on a basic form that is fairly intuitive while allowing the user to use advanced options if they need to. This is at direct odds with most user interface programming, as the features are apparent in the interface and thus increase it's complexity.
The key to working 40 hour weeks | Fri 05 Jul | regualar poster that saw the light
if companies can hire cheap labout why cant we, a co-worker of mine offered me the services of some of his friends in india for 2.50/hr. If you are getting beaten down by mgmt. why not hire some developers in the foreign country of your choice!
Fri 05 Jul | regualar poster that saw the light | p.s. you will also have the added benefit of running pricks like this (who markup their labour roughly 400%) out of business! Anybody have some extra work that they would like outsourced to developers in India? Hourly rates starting from $5/hr for HTML developers, $10/hr for C++ developers $30/hr for MIT trained Managers $50/hr for London School of economics trained accounting auditors Let me know and we can exchange contact information. thanks S.H.K Sanjay Kapoor
Fri 05 Jul | regualar poster that saw the light | p.s. p.s. post your contact info here and I will forward you some names!
Fri 05 Jul | Joe AA. | The best cure to anyone that doesn't like working more than 40 hour weeks is unemployment. You'll be amazed at how they then consider 40 hours not enough.
Fri 05 Jul | regualar poster that saw the light | get paid for 40 hours = work forty hours
Fri 05 Jul | Joe AA. | If you are an hourly employee, then you are correct... work 40 hours get paid for 40 hours. Salaried employees are not hourly employees - no guarantee of only 8 hours per day, no guarantee of 5 days a week. Salaried employee != hourly employee
Fri 05 Jul | Nuff Said | The key to working 40 hr. weeks (or 60 or 20 or whatever) is to properly negotiate the terms of your employment with your employer, ideally before you take the job :P. Seems like most of what's happening out there is people writing their employers a blank check and then griping when the employer cashes it. Be a little more diligent about it and you'll have far less reason to be gnashing your teeth. This also acts as a good filtering mechanism to identify which potential employers are interested in working you to death and which are interested in you because you do excellent work during the time you commit to working.
Fri 05 Jul | regualar poster that saw the light | to Nuff Said, Jow AA 40 hours etc... 1) I think you are right in terms of blank checks, the trouble is that many employees are finding their terms unilateraly renegotioted by their employers: 'I know we told you you would'nt be here every night and weekend but... cost structre...' (I know i did) and successfully fought it, by basically refusing to work overtime without extra (Proportionate) compensation, I guess greatness has its rewards 2. I think you are missing the point though, if you are an employee who has to work for two, why not give up 5-10% of your salary (tax deductable) to go back to having a life!!!
Sat 06 Jul | Nick Machiavelli | Light Seer, You are indeed wising up to the secrets of shorter weeks. Here are some additional tricks from our bag: 1. Find well designed open-source code that does what you want. 2. Hire Offshore company A to create a great set of design documentation for the code. Indians, BTW, are fantastic at this and you can get it done absurdly cheaply. They are specially trained in making great documentation as part of their high valuation of formal methodologies. 3. Hire Offshore company B to use the design documents to to a clean room reimplementation. Add docs your team has drawn up to create a better user interface, install program, general usability improvements. It's unbelievably cheap and fast to get the code back this way. And guess what -- the code is now 100% proprietary closed-source. Hah! Check with an attorney if you doubt me. 4. Patent the hell out of everything in the program. 5. Sell the program for to corporate users for $20,000 or more per license. Target users disatisfied with the poor usability and uncertainty of your open-source competitor. 6. If problems arise, sue your open-source competitors. Badger them with your patents. Use your cash reserves to legally harass them with nuisance suits until they go under. Seize their homes and vehicles. Use your political connections to send in FBI agents to seize their computers and arrest them for having illegal porn on their hard drives. Try it -- this method works great and is guaranteed to succeed.
Sat 06 Jul | Larry From Queens | Yeah a really well thoughtout PLAN!!! Just one question, what cave did you evolve from? [Try it -- this method works great and is guaranteed to succeed. Nick Machiavelli ]
Sun 07 Jul | Dustin Alexander | Hilarious. Unfortunately, some of this is probably reasonably consist with current corporate practice. The whole overseas issue strikes me as a bizarre moral and economic conundrum. It seems there is very little reason to hire in country developers, if only because those developers require higher pay due to their living conditions/economic status. Meanwhile, you have off shore developers capable of making rather high quality solutions for lower cost due to the valuation of the dollar in comparison to their regional currency. On the one hand, corporations have a moral obligation to their shareholders to get the greatest value possible. On the other, they have an obligation to their country for providing them with an environment in which they can thrive... This is disturbing to me on many levels, both as a C level executive for a small corporation and as an individual who has done technology consulting in the past.
Sun 07 Jul | regualar poster that saw the light | Here is a moral quandry for you, if you as an executive have a 'moral obligation' toward your investors, why don't you give your job to a foreigner, that way they company will save quite a bit more than by paying you!
Sun 07 Jul | Dustin Alexander | This strikes me as a fairly good plan. I could get a robe, become a monk, forswear technology and grow corn. :) Obviously most executives morality, including my own, leans towards the local employee base rather than that overseas. This does not prevent me from understanding the logic of those that seek employees in other countries. I think there is also a lot to be said for the ease of communication between local workers who have the same social mores and cultural upbringing. Intangible factors like moral are also effected by such employment choices. My previous comment was in no way a defense of these hiring tactics. Sorry if it came off that way. I was more of a point of argument to measure an understanding of the people who make such choices.
Sun 07 Jul | Joe AA. | Morality is not an 'intangible'. It is not immoral for an employer to hire overseas employees and it is certainly not moral to hire only local ones. It IS moral to provide a useful service to your customers and a fair rate of return for your stockholders... failing to do so would be immoral, regardless of the makeup of your employees.
Sun 07 Jul | regualar poster that saw the light | JOE AA As I said before the #1 cost (and as we recently saw the #1 liability) in every company is upper management, other countries have cheaper upper management it is therefore upper management's fiduciary responsibility to the stock holders to fire themselves, and replace themselves with either H1B's or Overseas workers (or even teams of workers).
Sun 07 Jul | House of Tojo | Now there's a brillant suggestion, if I ever did hear one. I understand both the Indians and Japanese have excellent management schools, currently churning out excess, and relatively cheap loyal Middle managers and executive level types, ready/willing to make an immediate impact. [it is therefore upper management's fiduciary responsibility to the stock holders to fire themselves, and replace themselves with either H1B's or Overseas workers (or even teams of workers). ]
Sun 07 Jul | Cost Slasher | Yeah while we're at it, we should out source both the senate and congress to China. The legislators there would be happy with $10-20K per annum!! Think of the cost savings!!
Sun 07 Jul | Dustin Alexander | Joe AA, I wasn't implying that morality was intangible, although now that you mention it tI would have trouble putting a dollar figure on my values. (It would certainly be more than $40.00 US :) ) I believe that running a company within the boundaries of a society does create an obligation to that society beyond the typical tax obligation. I think taking jobs from an economy that provides the majority of your user base, especially when that economy is weakened due to external factors, is reprehensible. It also doesn't make good business sense to remove value from a closed market that provides the majority of your cash influx. Note that there is a line between some outsourcing work and outsourcing everything. I believe that the board of a corporate entity have not only a fiduciary responsibility to their shareholders, but also a moral obligation to see that the values of the majority are reflected in corporate activites. I think in many ways that this second responsibility dwarfs the first. Its not all about money.
Cost of Linux, one billion dollars of free beer. | Fri 05 Jul | Anonymous Coward
I love the articles here, Joel definitely has the gift of a great writing style. My partners and I especially liked the article on commoditization. The past article on software estimation inspired us to implement better estimate methods, even in our small organization. I found this article this morning, and thought it might find an appropriate audience here. http://www.dwheeler.com/sloc/
Fri 05 Jul | Joe AA. | Lines of code counters are about as useful as any other type of bean counters. I would like to see it recosted assuming all H1B labor (giggle).
Sun 07 Jul | Dustin Alexander | Anybody have direct information on the developer output model he's using here? He references some documents that are offline content. I'm interested in what he considers the average sloc of each coder in his little experiment. I like this kind of thing. Too bad the results are not as scientific as we'd like them to be, though.
Sun 07 Jul | Beka Pantone | LOC counters only impress management types. Which in exchange are oftenly 'turned on' by size and complexity. There's no better way of striking a manager's ego than to say: We are building the largest and most complicated system in our market. Any half-decent developer ought to have the exact oposite policy. Simplicity is beautiful and cheaper in the long run. Estimating the cost of a regular Linux distro by counting LOCs is preposterous.
Bella's Fan Club | Thu 04 Jul | Azazello
Bella, love your work! Keep up the good writing! Im officially starting Bellas Fan Club. Being your fan, (and hell, really, no sarcasm intended), Id like to ask you a question. You mentioned that the only way to handle the current situation in the IT industry when the jobs are being shifted overseas is to plan ahead. I wonder whats your plan.
Fri 05 Jul | Just me (Sir to you) | Since according to her own writing Bella has been making six figures a month during the 'consulting BONANZA' as she calls it, I pretty much doubt she will be in need of a plan besides worrying about how to spend all that cash.
Fri 05 Jul | Prakash S | Bella's 'plan' is not to tell you the plan:-)
Fri 05 Jul | East Bombay Cotton Collective | Azazello, don't waste your breath. Bella is from Madras India.
Fri 05 Jul | Prakash S | East Bombay Cotton Collective: How does that change anything???
Fri 05 Jul | Sammy | The Plan is simply not to be a Commodity.
Fri 05 Jul | Bella | Azaello, thanks for the vote of support. First, please allow me to clarify one thing. I personally am not leaving programming b/c of the job market situation, but becuase of quality of life issues. I am no longer interested in working the hours that are expected in our field. but, rather than complain, make excuses, find scapegoats, and blame others, I think it's easier to simply leave the profession. Here is a recap: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=5308&ixReplies=44 http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=4475&ixReplies=39 http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=8409&ixReplies=36 As far as my plan? Nothing is etched in stone yet. I am currently evaluating many broad possibilities, but will refrain from sharing them, b/c I don't need more competition ;-)
Fri 05 Jul | ac | I know what it is. You're going to consult with people who don't feel their ego is large enough. Maybe train them in the ways of condescending tone while slowly rolling their eyes. Or coach them on how to tell others that they are better off not trying to accomplish anything, because they don't have 'any business instinct'. Teach them debating skills, showing how to dismiss arguments from others early regardless of merit while using lots of profanity and personal attacks. Don't worry Bella, there will be no competition, you clearly have that market locked down.
Fri 05 Jul | Bella | Hey, wait a minte. I thought this was the Bella FAN CLUB thread.
Fri 05 Jul | Greg Kellerman | Gee, your fans sound a lot like you. So it's highly likely that it indeed is.
Fri 05 Jul | Amitabh Bachan jr. | Come Prakash, East Bombay Cotton Collective, is correct. Bella is from Madras man!! They're all gangsters [East Bombay Cotton Collective: How does that change anything??? Prakash S]
Fri 05 Jul | Prakash S | They're all gangsters ??!!??
Sun 07 Jul | Frieda Tonslaker | Here's an article that mentions a bit about Bela's professional career: http://www.fastcompany.com/online/45/spy.html
Sun 07 Jul | Prakash S | bella's writings reminds me off penelope trunk. http://www.geocities.com/penelope4515/
painless software management? | Thu 04 Jul | Newbie manager
I have just inherited a team of 6 programmers through promotion and am struggling in the face of some of the worst morale I have ever seen. Theyve pretty much had the lot, products cancelled at the last minute and without explanation, pointless reorganisations, colleagues laid off while extra directors and senior managers were recruited, promised pay rises not delivered and if that werent enough theyve been micromanaged half to death by produxt management. Given the state of the UK job market at the moment and the fact that I believe the company still has potential, I am intending to try to improve things, and was wondering if any of the sages who hang out on this forum had any suggestions.
Thu 04 Jul | Leonardo Herrera | Err, I was writing a lengthy response, but, you know what? Buy Peopleware and read it.
Thu 04 Jul | By The Numbers | For your own sanity, 1). find out the bounding conditions of your role[if it's narrow band, ditch!!] 2). is your marketing/biz dev. department accountable?[ if the response is no, ditch!!] 3). Get the vision directive from the people that count[if one is lacking, punch the exit now button!!!]. In other words, choose battles you can win, and avoid obvious setups for failure. If you're being denyed access to instruments for success, then you will probably flame-out.
Thu 04 Jul | Hugh Wells | I had a similar situation once. The main problem turned out to be a 'consultant' hired by the business manager ( and who was the business manager's brother.) I got the development team to give me a list of the 'contributions' made by the BM's brother, and their outcomes, and then packaged these into a memo straight to the CEO. Until then, the only written stuff the CEO saw was from the consultant and the business manager. Before the end of the day, the CEO had sought legal advice and terminated the BM's brother. Things improved after that.
Thu 04 Jul | Hugh Wells | I should add the the 'consultant' was not working in the development team; he had been hired by the business manager to snipe at the development team. He was a - wait for it - multimedia programmer - and he was hired to advise on a large C++ development project.
Thu 04 Jul | James Ladd | The title is an oxymoron. There is no such thing as 'painless software management'. soz.
Fri 05 Jul | DB | Newbie manager - if you'd posted a few months ago I'd think you were my boss... First off with the UK jobs market as is, the only thing keeping those guys there is lack of opportunity to move somewhere else. I guarantee you most of them are depressed both because of the crap job but also because of lack of luck finding anything else. None of them are going to want to stay once the job market picks up unless things change in a spectacular manner - and even then that may not be enough. Cancelling near-finished projects is incredibly demoralising - I know because I've had almost two years of working on projects that got cancelled within days of completion. It shows such total incompetence in management higher above you that the only thing you want to do is get out and leave them to it. In the face of such idiocy I doubt there's much you can do to improve things, but you can at the very least make the office environment a pleasant one. Mine is frankly awful, and as a result I can count on the fingers of one foot the number of people round here who care any more about the job they are doing. If your employer doesn't care that the office is too hot and cramped and therefore you are suffering... well then why should you care about the employer, or the task at hand?
Fri 05 Jul | Just me (Sir to you) | If possible start with small things that can have a direct impact on day to day working conditions. A new desk arrangement, better screens and chairs, new airco ... . At least it shows the team that no matter how little, the vector of change is pointing up again. If your team is that down it will not be easy, and there might be a lot of cynicism. But still, start making things better for them. Do not start with grand schemes that will pay of in the long run, but something with a limited but immediate impact. Timing is the most important thing here. The advantage of making a change the can be physically felt is that the experience is undeniable. Your team will be in a negative state of mind, and the change might be mentally minimized, but can not be denied. Anything that is not physical has a big chance of being swept away in negativism at this stage. Good luck.
Fri 05 Jul | XP Man | Buying the team things, certainly will not change the morale situation. The core of the problem is that they don't feel empowered, to effect positive change within the context of the projects/company. No one likes feeling like a slave[we humans value diginity above all else]!!!
Fri 05 Jul | Tayssir J. | Really, all that matters is that you gain their trust over a period of time. Your coworkers are the ones who will have the difficult job, of learning how to program correctly again in a healthy environment. As long as any mistakes you make are understandable and quickly discarded, you should be fine.
Fri 05 Jul | apw | 'I have just inherited a team of 6 programmers through promotion' I wouldn't concider it as a promotion, more of a lateral move to a different career path. I had the same oportunity handed to me a year ago. I took the position, 'tried' it for a year, and decided to move 'back'. One suggestion is to treat each team member as an individual, not cookie cutter developers. Try reading 'Herding Cats' by J.Rainwater. Managing is the art of being in control without making your people feel like they are controlled. If you measure your sucess by the sucess of the team and not your personal achievement, then you are heading in the right direction.
Fri 05 Jul | Leonardo Herrera | Hm... to the person who said that buying things will not improve the morale, I agree, but it helps a LOT. My first step would be trying to become a 'shield' for my reports against pointy haired management. If any manager has any urge to talk to my reports, I would jump right before him/her and ask 'Hi there! what do you want? Maybe I can help'. It can be stressing and certainly not an easy task, but I've done it and it's just great for your team, because they feel that you care about them. Of course, there is a risk of being fired... but if you're not, probably your team would improve productivity, and you will be able to brag about it :-) (that last part is important sometimes... self promoting is a basic rule of management)
Fri 05 Jul | MKH | Other posters hit the issue on the head when they mentioned shielding you programmers form management and empowering them. I suggest that you also try some type of team building adventure to improve their morale and help them pull together. Try taking the afternoon off and taking the whole team sailing, or to the pub for lunch and a few beers. The main thing is to do something for them that management would never consider doing.
Fri 05 Jul | Joe AA. | Attacking a 'morale problem' directly is always a waste of time. Attacking any 'effect' directly is always a waste of time. If you can buy your programmer's morale... what good are they?
Fri 05 Jul | Greg Kellerman | Joe AA:< Attacking a 'morale problem' directly is always a waste of time. Attacking any 'effect' directly is always a waste of time. If you can buy your programmer's morale... what good are they? /> Joe, you're not 'buying' their morale. Just feeling less shit upon. I know I don't like being shit upon so anything that management does to make me feel worthwhile doesn't go unnoticed. After all they don't HAVE to.
Fri 05 Jul | Amitabh Bachan | Greg Kellerman: Actually they have to, no developers equals no product, equals zero revenue, equals no cushy job for the 'MANAGEMENT' Developing quality software isn't quite like having 6/7yo's in Calcutta, weaving rugs until their fingers get too large. . [I know I don't like being shit upon so anything that management does to make me feel worthwhile doesn't go unnoticed. After all they don't HAVE to. Greg Kellerman ]
Fri 05 Jul | Leonardo Herrera | I've been programmer most of my life, and let me tell you, I'm very good at it. And yet I have no problem with my manager 'buying' morale for me. After all, I'm a human being, I like being reasurred from time on time. I like to just hang around with my coworkers sometimes, I like when my manager just pop up and throw some doodad to me -a new monitor, the latest Intellimouse, a new keyboard, faster processors, whatever. I know perfectly that they're not actually _giving_ anything to me; but I feel better, and when I feel better, I work better. Better for me, better for them. A win-win. Programmers are smart. They know you are bribing them; but they will appreciate it. Please note that the 'bribe' scheme just work _after_ the team feels good about their manager, not before (after all, we were told not to accept gifts from strangers.)
Sat 06 Jul | Jeff MacDonald | Newbie Manager... Make a bold statement to your group: Set a strict 8-hour day/40-hour work-week schedule. Kick every single one of them out the door at 5:00. The bottom line in all industries: Happy people = productive people.
Sat 06 Jul | Joe AA. | People are happy because they are productive. 'Making' people happy in hopes that they will then be productive is confusing cause and effect.
Sat 06 Jul | Jeff MacDonald | Joe AA, I disagree. In my experience, increased productivity is a benefit of a pleasant work environment. I've seen it in myself, as well as quite a few co-workers over the years. One of the worst feelings in the world is waking up in the morning and dreading going to work. Creating an environment where people are eager to get to work and contribute is tantamount to a positive, productive environment.
Sat 06 Jul | red meyer | The thing is that the orignal poster didn't have control over the people he supervises. So it's not clear what he should exactly do. But if he has good people, he just doesn't have to gratuitously make them unhappy. I mean, his job is just supplying the preconditions to doing a good job. If the people are good, they will succeed.
Sun 07 Jul | Joe AA. | And if they succeed, they will then be happy. Willing to get up in the morning and go to work, to be productive, to increase their happiness. But please Jeff, continue to insert an artificial happyness into your environment. Continue to believe you can achieve the effect without cause. You are in plenty of company.
Sun 07 Jul | Alyosha` | I agree with Joe AA on this one. The number one thing that brings me job satisfaction is being productive. The number two thing is to have my manager actively moving the obstacles out of my path, shielding me from the (frequently) unreasonable expectations of Higher Up. Yeah, it would be nice if he or she brought donuts in the office every once in a while or took us to the new Star Wars opening, but in the grand scheme of things, these aren't necessary to make me happy.
Am I supposed to work for free? | Thu 04 Jul | vanguard
I work for a large company on a fairly critical project. (Of course, if the company is large enough no project seems to really have an impact, but thats another topic.) Of course, the project is mostly staffed with H1B consultants that get paid by the hour. They said that today, the 4th of July, was an optional workday but the implication was pretty clear. They would like to have us in. Now, Ive been working between 12 and 14 hours a day for weeks. My family is missing me and Im getting tired. I asked if full time employees would be paid for the holiday effort like contractors were going to be. They said no but went on to say that I could have a comp-day after the project was over in October. I choose to spend the time with my family. Im putting in big hours and working my tail off. I hardly feel like a lazy American. Also, I would have worked for real money but comp time seems like an unfair deal. The 4th of July in exchange for another day at the companys convienence is not a good deal. Its also worth noting that this company hasnt given out raises in years. What would you have done? Would you have worked on the holiday to keep up with the (paid) contractors or would you have spent some much needed time with the family?
Thu 04 Jul | Just me (Sir to you) | Spent the time with the family. They will not keep you a day longer for having come in today, they will not give you a bonus, and if they are looking for an excuse to fire you, they will find one any day. Being in or not today will never make the difference. It sounds like you need a break. Plan something with the family, look forward to it and enjoy it to the fullest. Defuse before you explode in irrational behavior.
Thu 04 Jul | David Clayworth | Am I right in thinking that your contractors are being paid by the hour? Then I would definitely take the time off.
Thu 04 Jul | Greg Neumann | If you're looking for people's agreement, you've got it. Anyone can see the bullshit in this. I've made the decision to come in 'extra days,' and it was when working for a dot com that needed to be humbled by the fact that you can't get things done only with bubblegum and will for money.
Thu 04 Jul | Bella | I'd have taken the day off as well. That said, if you don't like your employer, then find a new job. Nothing could be more simple. If you are UNABLE to find a new job, then maybe that will make you more tolerant of your situation. It is a win/win situation. Good luck.
Thu 04 Jul | By The Numbers | Bottom line is, you need to look out for your personal interests on this one. Clearly the 4th of July is both a national holiday, and it has deep symbolic meaning. If they need your services that badly on a Natioanl Holiday, they can pay your for it also. Take the day off[guilt free], and enjoy it!!!. I bet the CEO and Co. probably enjoying a BBQ social somewhere. Happy 4th Everyone.
Fri 05 Jul | matt | My thoughts on this are fairly simple... They pay us money, we do work. If they are not prepared to pay money, then I would not be prepared to give up valuable family time. It sounds like they are already getting their moneys worth out of you....
Fri 05 Jul | Burned and Bitter about it | I worked every day for three months about this time last year, including weekends and July 4. This was to complete a 'special' project which had to be in by August. (There was no paid overtime and no comp time.) I did manage to complete it in time . . . and now I am one of many people who is about to be let go as they downsize our department. I wish I had gone out to see the fireworks instead.
Fri 05 Jul | Lazy American ;-) | 'Burned and Bitter about it', now you know better. Many of 'US' lazy americans regularly step up to the plate and go beyond the call of paid duty!!! The moral is, if the your contribution is soo critical to the company, they should be willing to compensate you accordingly. Forget the free work crap.
Fri 05 Jul | "asset" | When I learned that 'Estimates are commitments', I learned how to 'manage' my schedule. Too many projects start with an end date and the expectation that whatever effort is required will be made before that date. I have managed to shift the burden to my boss/client and I've been working 40 hour weeks ever since. There can be some cultural issues around this with regard to managements view of 'labor' but I don't want to get into that. Basically, if you as a developer are not perceived/managed as an asset, you will be managed as an interchangeable labor unit who must compete with those who are willing to work any hours under any conditions. 'that unit doesn't want to work 80hrs a week? Unplug it and plug in one that does. Next problem?'
Fri 05 Jul | Joe AA. | 'interchangeable labor unit' - Hey, I like that... an ILU. Now I can drop the term 'widget' and sound much more important!! Thanks!
Fri 05 Jul | Greg Kellerman | Vanguard, if you have a few years experience you MUST look for a different employer! I've been where I am for 2 years (first 6 months as a contractor). The first year at review time I was given a prorated COLA. The second year a COLA. It doesn't take a rocket scientist to see what I'll do when I'm confident that my experience will propel me higher does it? Get Out ASAP.
Fri 05 Jul | XP Man | Yeah I second Joe AA's comment. It has that nice detached formal feel to it. ['interchangeable labor unit' - Hey, I like that... an ILU. Now I can drop the term 'widget' and sound much more important!! Thanks! Joe AA ]
Fri 05 Jul | Sanjay Kapoor | Anybody have some extra work that they would like outsourced to developers in India? Hourly rates starting from $5/hr for HTML developers, $10/hr for C++ developers $30/hr for MIT trained Managers $50/hr for London School of economics trained accounting auditors Let me know and we can exchange contact information. thanks S.H.K
Sat 06 Jul | Matthew Lock | I didn't know they trained managers at MIT
Sat 06 Jul | Us | You name your school and degree. We supply the documents and verifiable references. We're quite good.
Sat 06 Jul | Matthew Lock | How about a philosophy graduate from the University of Walamaloo, Australia?
Sun 07 Jul | Andrzej Kocon | Rumour is that India in turn outsurces software development to another countries...
Sun 07 Jul | Bella | I'm sure you can get $5/hr HTML right here in the US. It's called interns. In that case, no need to outsource.
Sun 07 Jul | Grass eating flesh country[oh heck non-vegan] | Sadly but true, it's called the Sloan School of Management < I didn't know they trained managers at MIT Matthew Lock >
Sun 07 Jul | MBA Candidate... USA | Heck why even bother with that?... They need to understand from the beginning that if they want to eventually get a real job, they should move to indian. Besides, even U.S. interns are lazy with crappy attitudes to boot. What we need if yes/yes, men/women. < I'm sure you can get $5/hr HTML right here in the US. It's called interns. In that case, no need to outsource. Bella >
PCWEEK Article | Wed 03 Jul | By The Numbers
For those that still think the H1B issue, is purely fringe crack pots making noise, enjoy the following: http://www.eweek.com/article2/0,3959,299782,00.asp
Wed 03 Jul | By The Numbers | [H1B Clouds from Fog Creek] http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=10547&ixReplies=25
Wed 03 Jul | By The Numbers | [H1B WTF -- From Fog Creek] http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=9419&ixReplies=186
Wed 03 Jul | Joe AA. | What's your point? Now that we have more voters in, we can be justified in going out and shooting the bastards?
Wed 03 Jul | By The Numbers | Joe, just read the articles and draw your own conclusions! The very last response to the PCWeek article is actually very telling.
Wed 03 Jul | Joe AA. | By... I did read the article. The last entry is no more telling than any discussion we have had here, is just another opinion. Sorry... maybe I don't get it.
Wed 03 Jul | By The Numbers | if you look at the rates the guy was quoting .... the premise assumes a false ecomony. Where training engineers is basically free. i.e. irrespective of the production cost of engineering talent, US developers should be willing to accept $15/hr even if the cost of educating themselves far exceeds any pay back at the grossless reduced rates. A deflation of wages seems almost completely contrary to the principle of continued economic expansion here at home. In other words the model being proposed only works if we have large scale deflation of the cost of all goods in the system[housing, food, CEO compensation so on and so forth].
Wed 03 Jul | By The Numbers | Deflation!!!, ultimately resulting in a false economy. Products appear cheaper, but at the same time one sees are dramactic redution in consumers purchasing power. End result ... lots of WorldComs, Lucents, Significan employers dropping like flies. Cheap labor is great ...., but when consumers can't buy even at the reduced rate, sounds like a formula for major ecomonic woes. [Accordingly, I can find Web publishing services for $10 per hour, a far cry from the $100 per hour for American staff at the peak of the dot-com boom. I can now hire expert programmers for $15 per hour, and I see no downside to their being in India as opposed to San Jose. This scenario is not limited to tech services. I can get telemarketing services, including all phone costs, offshore, for $5 per hour. I can find accounting services, and any other administrative services, for similarly low rates. ]
Wed 03 Jul | Joe AA. | Deflation results in a false economy? Does that imply that inflation results in a 'real' economy? Ok, I ain't no economist. Even in this country of the USA about 20 years ago, $15-20 per hour for a contract programmer was darn decent money. But today, even at $100 per hour, the value provided by that programmer resource is about the same. Some would say less... and watching most VB point and click coders... I would agree. If the value of a programmer resource is worth $15 per hour to a company, than to pay more is to throw away money. Businesses that throw away money don't stay in business too long. If that means H1B, then so be it. But you are fooling yourself if you believe is the primary cause. Just an easy scapegoat. The primary cause are those programmer rates that exceed the value of a programmer to the business. You can't force someone to pay more for less value.
Wed 03 Jul | By The Numbers | Agreed in an ideal world!! However why do you think governments[specifically US] maintain price floors on specific strategic goods/services? Not a trick question. Think about it. [You can't force someone to pay more for less value. ]
Wed 03 Jul | ac | Why don't we just outsource every job in the US? Since it is cheaper right? Because we would have no money to spend, ergo the false economy. It's a tough issue to tackle and I don't envy the politicians.
Wed 03 Jul | By The Numbers | Actually it's the reverse. Sustained economic Deflation is something to be avoided at all costs. [Deflation!!!, ultimately resulting in a false economy]
Wed 03 Jul | By The Numbers | Good analogy AC.
Wed 03 Jul | Globetrotter | Joe A.A, You are right. It looks like the normal value of highly qualified developers is $25,000/year. US people had better get used to it. Agreed - there is certainly no high tech shortage. But we still need more H1b programmers! Many more! The fact is that H1b programmers are critical to the economic health of this nation. We must be able to have programming done for $25,000/year or our companies will go bankrupt. They will not be able to compete in the global marketplace. Competant US citizens are not willing to work for that rate since it is not enough to pay back their student loans and stay current in the field. Nor are they willing to put in the weekly hours needed at that rate. They are simply not dedicated enough - not hungry enough. It's therefore necessary that all development positions be filled with H1B workers. And why shouldn't we do so? The fact is, the vast majority of H1B programmers were educated for free by the US government at US universities. Our universities HAVE to accept all foreign students in engineering programs because US students just don't have what it takes to understand the program due to the poor state of the US primary and secondary education systems. Anyone who has graduated from a US university within the last 10 years can attest to the simple fact that there are very very few students who are enrolled in engineering. Students, proctors, TAs, and professors -- very few are US born. Of course the positions must be filled and since only fereign students have what it takes, it only makes sense that the US taxpayer pay for their education. Only 14% of foreign students make even a single payment on their federally guaranteed student loans. And why should they? The US is benefitting from their expertise. Lazy Americans, get out of the way and let the H1Bs do their business!
Wed 03 Jul | Joe AA. | 'However why do you think governments[specifically US] maintain price floors on specific strategic goods/services?' Oh I know... don't like it, but know.
Wed 03 Jul | Ed the Millwright | >But today, even at $100 per hour, the value provided by that programmer resource is about the same. Joe, Where can I sign up for the $100/hr rate? Does Microsoft pay that? Working 60 hours a week as is typical for an American engineer I'll make $312,000/year. Or wait -- is that a union rate? With overtime I'll be pulling in $364,000. Wow! I didn't know that's how much the average US engineer is paid! Everyone should be so lucky to be a high paid american engineer!
Wed 03 Jul | By The Numbers | Globetrotter, I doubt H1B's could live on $15/hr in any major american city. So one would recommend not being short sighted about your comments.
Wed 03 Jul | ac | 'Lazy Americans, get out of the way and let the H1Bs do their business! ' Haha. Good troll. I'll bite We aren't lazy. We are forced to work in an economy where it costs us $300k for a house in the suburbs (living in the city is out of the question) and since we live in the suburbs it costs us money to pay for transportation. That transportation costs money. My point is this: we aren't asking for high salaries for the sake of being greedy. We ask for them because we are forced to work in a society that has a high cost of living. It's sad how you associate that with laziness. I would love to see you come here (Washington DC) and live for 25k/year. You'd be eating Ramen noodles every night in a hovel. Or you could optionally live 2 hours away. Kind of hard to get used to a 4 hour commute I bet.
Wed 03 Jul | By The Numbers | Good article on Deflation: http://www.businessweek.com/investor/content/nov2001/pi20011112_3506.htm
Wed 03 Jul | By The Numbers | Globetrotter, AC's point is very relevant. I sense you already know this. Clearly every american engineer you've worked with isn't lazy. It's like saying india is basically under developed because indians are lazy. There's more to it than that.
Wed 03 Jul | Hugh Wells | Globetrotter - you say that companies will go bankrupt without h1b's. But American programmers will go bankrupt *with* the h1b program. American programmers are part of the economy and part of America and are entitled to have their part of the economy maintained at the same level as applies for other professions and management. If h1bs are educated for free by the American system, and also don't repay their student loans, then American programmers are entitled to ask why their economic competitors are being funded by their own tax dollars. On the subject of many university positions being filled by non-Americans, Prof George Borjas of Harvard's School of Public Policy has a fascinating article on the dangers in this, including its impact on native students. http://www.nationalreview.com/issue/borjas061702.asp Finally, this debate is of course not about the American economy as an homogenous entity; it's about corporate management increasing their slice of the pie while highly trained programmers get less. Do you know that, before HP announced its 1,000s of sackings, 6000 managers received 6-figure bonuses?
Wed 03 Jul | Globetrotter | ac, I appreciate your reply. And I agree with you! But the thing is, you are arguing my point for me! You said: 'We are forced to work in an economy where it costs us $300k for a house in the suburbs (living in the city is out of the question) and since we live in the suburbs it costs us money to pay for transportation. That transportation costs money. ' OK lazy is relative. A lazy person does less work for the same amount of money, or the same work for more money. That is certianly true of Americans compared to H1Bs, no? I agree with you that 'lazy' americans want to live like this. What is average salary for fulltime workers in US? Is it $24,000? $15/hr is more than that to be sure! So most people in US live not as good as american engineer who 'needs' to live in fancy three bedroom $300,000 house with garage! H1B does not need this. He is living in apartment in bunk bed with three other H1Bs. He sends most of his salary back home. He lives cheaply and does better work faster and higher quality with less bugs. Thus he contributes more to the US economy and keeps US tech alive! Because of H1B, US tech company does not need to move offshore. The US born engineer who 'requires' so much more salary instead is killing the company - it can no longer compete because big salaries required to live in fancy 1,300 square foot house in suburbs. You said: 'My point is this: we aren't asking for high salaries for the sake of being greedy. We ask for them because we are forced to work in a society that has a high cost of living.' I agree 100% - but the society the H1B lives in (the same one) has a much lower cost of living because H1B does not require to live like you do to think middle class or getting by. Being able to send $12,000/year back home makes the H1B a hero to his family and very very wealthy when he returns. On the money an H1B makes and saves, he can start own business in India, and live in a much nicer house than your $300,000 one and have servants and cook and many things when he returns. Because he is willing to sacrifice in the short term. But the 'lazy' american wants to live in his suburb and does not know what sacrifice is. You said: 'It's sad how you associate that with laziness. I would love to see you come here (Washington DC) and live for 25k/year.' Many thousands of people get by in Washington DC on less than that! But they have less demanding requirements. The point I am making is that since H1Bs do not expect or require a bigger salary, they can save the US tech industry. Without them, all development and all patents and all IP and all innovation will move overseas and that will be the end of the US economy. It is a reality of the modern world that the US (and western European) developer is too expensive. Tariffs are gone, no more. All must compete on equal basis. If the going global rate for competant development is $20,000/year with all costs included, then a company whose costs are 5 times bigger will go out of business after a while. You can see this now at Worldcom - they have a product people want (broadband and telecommunication) but their costs hiring americans are too high. If they used more H1Bs they would still be in business, like intel and microsoft.
Wed 03 Jul | Hugh Wells | Globetrotter, do you know you're getting ripped off yourself? PR firms charge between six and 30 times what they're probably paying you. I've been thinking about how a PR firm would handle this business of representing clients in internet discussion groups. They wouldn't do it using staffers because it takes too much time and is irregular. The couldn't use journalists because they would talk. The ideal would be grad students in business schools - committed to a business career, looking for extra money, reasonable English skills. Globetrotter / Fence Jumper / h1b, you should go direct to the client! Think how much money you could make.
Wed 03 Jul | Hugh Wells | By the way, Globetrotter, I'm sure you're aware that Microsoft and Intel's pricing and thus revenue are market-driven, not cost-driven. That is, they are as high as the market will bear, rather than being just high enough to cover costs. Both these two great companies can support market-driven pricing because of their exceptionally strong brands. I'm sure you know this, Globetrotter. They also both have war chests of billions and are cash-rich. It's not a bad argument, in debating terms, but completely invalid. If h1bs's are such a meritorious asset, why hasn't a Microsoft or an Intel emerged in India or China? Those nations have billions more people.
Wed 03 Jul | just_observing | Unfortunately, many of the skills related to IT tasks (good percentage of programming, MIS, HelpDesk, Call centers) are getting commoditized. There is every reason to be angry about corporate policies and their sense of fairness. But the ground reality is that that stuff is available elsewhere, so companies go there (today india, tomorrow china). Some slowly, some quickly. Interestingly, even H1Bs and other immigrants(permanent residents) are quite pissed off with the situation because they are forced to go back to their countries. Unless you are very good AND useful to company in a very meaningful way, survival as a programmer is going to be tough. It is just that developers were heroes in 90s and it is getting difficult for us to accept the fact that our days are over. We are like steel workers, farmers etc.. H1B issue is only aggravating the problem. Sure, it is a concern for us but in the long run, there won't be any H1Bs, the job itself will go to another country.
Wed 03 Jul | just_observing | If h1bs's are such a meritorious asset, why hasn't a Microsoft or an Intel emerged in India or China? Those nations have billions more people >> That is a very obvious and valid question. It is a question that lingers in many indians' minds. I worked in a couple of indian software products' companies. These companies do some bodyshopping to get revenues but their real interest is to produce great products and sell like microsoft, oracle etc. One of the core issues those CEOs mentioned is *access to market*. Real action and money is here, not in India (Ask about pc penetration..simple, india is a poor country). Naturally, the needs and evolution happens here. So, for a long time you will not see any company in the scale of microsoft, intel. But this is a work in progress, infosys, wipro, tcs are getting big and lots of small products in niche areas are getting developed. Current status is- ideas,sales, marketing in US and the labor is in India.
Wed 03 Jul | just_observing | H1B is only one manifestation of the problem. The real issue is how do you stop transfer of jobs?
Wed 03 Jul | Sammy | There are a few reasons jobs haven't shipped abroad. * engineering and management issues * market isn't that fluid * why cut jobs, when you can simply expand? * US job protectionism * improved market for domestic hiring The one negative is for companies that must absolutely cut costs because they can't expand. But look at Sun -- they saved a bit of money internally by using roamable offices for many of their transient staff. Add to that their use of India's Wipro for some things.
Wed 03 Jul | Nuff Said | Has anyone in this discussion ever even been in the same room as a decent economics book? If the business people understand technology as badly as the techies in this discussion understand economics, it's no wonder management always seems to have its head up its arse. (Pardons to the one or two that actually do seem to have an understanding of reality)
Wed 03 Jul | Bella | Ed the Millwright, 'Wow! I didn't know that's how much the average US engineer is paid! Everyone should be so lucky to be a high paid american engineer! ' I'm not sure why you take a sarcastic tone...Looks like you missed the boat. Everyone and their cousin was pulling in $100/hr (at least) during the boom. Any programmer worth his salt, and interested in making money,was consulting for $250k+ for the past few years. (sorry, no time and a half overtime) It was commonplace. honestly, it got quite boring to pull in $20k+ a month. Where were you? I feel sad that you think $100/hr is lot of money. Loads of programmers I know are pulling in $100/hr.
Thu 04 Jul | Prakash S | i know consultants who still make more than $ 100 an hour; these guys have on an average abt 7 years of experience.
Thu 04 Jul | Adrian Gilby | [ Has anyone in this discussion ever even been in the same room as a decent economics book? If the business people understand technology as badly as the techies in this discussion understand economics, it's no wonder management always seems to have its head up its arse. ] Let's complete the third side of that triangle. The business people don't understand technology... The technologists don't understand economics... The economists don't understand ... business ... ??? Anyway. Nuff Said, what specific 'economics textbook' arguments would you use to enlighten this debate? Adrian
Thu 04 Jul | By The Numbers | One needs to distinguish between bill rates, and what is actually payed to the consultant. Many consultants work for 'Consulting Firms', that may be charging $100-250/hrs for the consultant. Where as in reality the actual engineer is being paid a marginal fraction of this rate.[$40-60/hr], with virtually no benifts. $40-60/hr is about $65-80K/yr depending on where you live. It's certainly not exactly rich making. [i know consultants who still make more than $ 100 an hour; these guys have on an average abt 7 years of experience. ]
Thu 04 Jul | no, not really | 'We are forced to work in an economy where it costs us $300k for a house in the suburbs ' Really? Who has a gun at your head? Maybe you should call the police. 1) You do not need to buy a $300k house in the suburbs; 2) Nobody is forcing you to work in the economy in which you are working
Thu 04 Jul | Ed the Millwright | Bella, It sounds like you're saying that as a consultant you are able to bill for about 60 hours a week? Am I getting this right? Are you then able to bill for every working hour? Is that the typical way things are done now?
Thu 04 Jul | barf | (Intel & Microsoft) 'Both these two great companies can support market-driven pricing because of their exceptionally strong brands' Uh. Yeah. So it has nothing to do with both of them being in near monopoly positions in their markets then?
Thu 04 Jul | Prakash S | By The Numbers:' Where as in reality the actual engineer is being paid a marginal fraction of this rate.[$40-60/hr], with virtually no benifts. $40-60/hr is about $65-80K/yr depending on where you live. It's certainly not exactly rich making.' These guys to a corp-to-corp with their clients, so they get paid what they bill. Regd, benifits they have to take care of their own insurance and stuff like that. It is still good money!
Thu 04 Jul | Nuff Said | Thanks for the comment Adrian. Just to be clear, let me say that I wasn't speaking about 'economics textbooks.' A decent economics *textbook* is a rare find. The kinds of arguments I'd put forth to add to this debate would be similar to those found in Henry Hazlitt's work, or better yet Frederic Bastiat. For instance, when a producer is free to capitalize on a less costly alternative, wealth will naturally grow. Why? What the producer used to spend to build WidgetA can now be used to produce WidgetA and WidgetB. Think about it. The only people that gain by trying to put up barriers to this are the small (but identifiable) minority whose paychecks will suddenly start to feel a little lean. Their gain is at the expense of everyone else, however, who have to pay more for a product than they should. Since they are paying more for ProductA that leaves less over to also purchase ProductB. Notice that this damages the consumer of ProductA as well as the producer of ProductB. It also adds a tax burden to administer and enforce the barrier. It politicizes things so we get representatives of this minority lobbying everyone and stuffing money into pockets to preserve the barrier. In short, it shortchanges the many to benefit the few, and adds in a few nasty things on the side. As to shipping work overseas, ask yourself why it is that they import oranges rather than growing them at the North Pole. Why don't you have some orange farmer up there lobbying the government to put a stop to all this 'importing of cheap oranges because they're going to drive me out of business?' Because it's foolish to grow oranges at the North Pole, and everyone recognizes it. If it's sound reasoning to import oranges to the North Pole, then why is it not also sound reasoning to import software into the States, all else being equal? Anyhow, if you really are interested in doing what's best for 'the economy' rather than what's best for *your* economy, then you should be demanding that all trade barriers be removed. You should be demanding that the companies that produce what you buy get their raw materials from the least expensive source available, even if it is some H1B schmuck or some guy overseas with a funny accent. And if it's your economy you want to deal with, the solution is simple: be more productive than the other guy. P.S. What gave ya the idea I was trying to build a triangle?
Thu 04 Jul | Larry From Queens | Proper context[Perhaps we should start outsourcing pilots?]: What others make? --------------------------------------------------------------------------- A Deal They May Refuse Southwest's 4,100 pilots want to renegotiate a 10-year contract, due to expire in 2004, this summer, to close a 35 percent pay gap over the next five years. A veteran Southwest pilot makes $142 an hour, or $135,000 a year. Profit sharing and stock options for the most tenured can add another $80,000, but Southwest's pilots still trail 737 jockeys at Delta, United and American. --------------------------------------------------------------------------- http://abcnews.go.com/sections/business/DailyNews/forbes_southwest_020703.html
Thu 04 Jul | Ged Byrne | ---------------------------------------------------------------------- If h1bs's are such a meritorious asset, why hasn't a Microsoft or an Intel emerged in India or China? Those nations have billions more people ---------------------------------------------------- Just Observing Mainly because all their best staff are being poached by the Western market. Wait until they are all sent home, having learnt all your american tricks. It's only a matter of time. Once upon a time the Japanese manufacturers visited Leyland (a British manufacturer) to see how to build cars. Where is the british manufacturing now? Globetrotter is right, people become less keen as the standard of living improves. Could you convince an american 13 year old to make trainers? Here in the UK we are having enough trouble persuading out teenagers to attend school.
Thu 04 Jul | Ed the Millwright | This Just In: Tech Giants Woo India Developers in Web Battle http://story.news.yahoo.com/news?tmpl=story&u=/nm/20020704/tc_nm/tech_india_developers_dc_1 >BANGALORE, India (Reuters) - Cheap hardware, free trips to the United States, all the popcorn you can eat -- life's a junket if you're a computer programmer in India. ... >The courting is particularly competitive in India, where by some estimates more than 10 percent of the world's programmers work for some of the industry's lowest wages. ... >Exports of software and allied services from India ignored a slowdown last year, growing 29 percent to $7.5 billion in the 12 months to March. The current year is expected to see a 30 percent rise despite a sagging recovery in the United States. Aren't those numbers interesting! >Underlining the importance of the industry, Microsoft Senior Marketing Manager Daniel Ingitaraj says the number of programmers in India is expected this year to equal the 500,000 to 550,000 in the United States. Well imagine that! >The huge number of programmers is one reason for the low wages. >'There is an abundance of skills in Microsoft technologies. Because of this, the price at which you can hire the skills is lower,' said Gopal Kulkarni, chief executive of Kendra Technologies, which makes software to help human resource managers sift job applications. >In Bangalore, home to more than 1,000 software companies, you can hire a young programmer of Sun's Java language for around $200 a month -- less than a tenth of what a U.S. counterpart would cost. OK, now I want to get down to business -- is it true that average wages for a US Java programmer are $200 x 10 = $2000/month = $24,000/year ? I thought that was one of them hot skills? Comments?
Thu 04 Jul | TonyE | 'It's only a matter of time. Once upon a time the Japanese manufacturers visited Leyland (a British manufacturer) to see how to build cars.' Leyland failedbecause they produced rubish and were inefficient with it. Their downfall had nothing to do with the Japanese imports.
Thu 04 Jul | Katie Lucas | 'Where is the british manufacturing now?' Where I live I have car factories to the west of me, car factories to the east of me, a car factory to the south of me, and to the north of me - a tractor factory that's being shut down by predatory American companies. British manufacturing's having a rough time at the moment, but it's largely because the government only pays it attention when it kicks it to see if it's dead yet... rather than, say, erecting barriers to trade to stop people importing stuff made cheaper because the originating countries, say, don't have as many laws about stopping people falling in the steel vats. There's a factory only just over the horizon still makes most of the world's fire engines...
Thu 04 Jul | Bella | Ed the Millwright: 'It sounds like you're saying that as a consultant you are able to bill for about 60 hours a week? Are you then able to bill for every working hour? I personally don't work 60 hours a week anymore. The money is not that important to me anymore. But yes, I do I know some consultants who have been capped at a per diem rate. Previously, they would bill 80 hours if that's what they worked. $30k a month was commonplace....I know handfuls of people in their 20's whose houses are paid off as a direct result of the consulting BONANZA. Sounds like you missed the boat entirely. Be glad you have a nice safe dayjob, b/c it sounds like you have absolutley no business instinct.
Thu 04 Jul | By The Numbers | [Screwed up economics] If they succeed, you can kiss any form[at any level] of IT related work here in the USA good bye!!! It will ultimately even kill companies like Microsoft and the like. I bet before that happens, the politicians will erect trade barriers. http://www.cnn.com/2001/BUSINESS/asia/11/23/india.techforecasts/index.html?related
Thu 04 Jul | By The Numbers | My Rationale is simply that the projected $87 Billion revenue target, will have to come from someone's pie!!! from Microsoft's from IBM's from Apple's from Intels's, from SUN's etc...
Thu 04 Jul | Hugh Wells | just_observing, you're Globetrotter, right? Come back with a more collegial tone. And you're Nuff Said, too? And you're being paid to push this line as part of the lobbying effort. And you're a grad student at a business school.
Thu 04 Jul | Larry Gates | If you want to be REAL RICH start your own company and worry about H1B later.
Thu 04 Jul | Hugh Wells | These arguments about oranges at the North Pole and cheap labor are misrepresenting both the motivations of large employers and the realities of Western economies. The importing of cheap labor is not being done to improve the economy; it's being done to benefit one particular tiny group in society, at enormous cost to all other groups. The resulting cost savings are not flowing through to cheaper prices; they are retained as higher profits. Participants in democracies are entitled to stop criminals stealing from them and damaging their careers and livelihoods. Simple. If low wages are so good, let's put caps on CEO remunerations.
Thu 04 Jul | Hugh Wells | I have started my own company and I'll worry about h1bs' now, thanks very much. You see, I respect my colleagues and my fellow citizens, and this is one of the factors that makes Western economies the enyy of the world. And the reason many fine Indian and Chinese folks want to join those economies. The attitudes of the current crop of greed merchants are the things that will destory Western economies.
Thu 04 Jul | Nuff Said | Katie, I'm sorry to hear the sorts of things you mention in your message coming from someone in the land where the industrial revolution was born. If you look at British history, you'll note that the British industrial machine was the envy of the world at precisely the time when your government was least restrictive with trade barriers. Think it through and you'll see why. You'll also see why the sort of government interference you advocate can only rob your country of its wealth. Good luck.
Thu 04 Jul | Nuff Said | Hugh - all I can say is read my first post on this thread. Cheers!
Fri 05 Jul | Greg Kellerman | Hugh Wells, congrats! I think you're the first to get this word right! 'remunerations'. Good luck on your enterprise!
Fri 05 Jul | Sanjay Kapoor | Anybody have some extra work that they would like outsourced to developers in India? Hourly rates starting from $5/hr for HTML developers, $10/hr for C++ developers $30/hr for MIT trained Managers $50/hr for London School of economics trained accounting auditors Let me know and we can exchange contact information. thanks S.H.K
Fri 05 Jul | Legalize Whaling again | Boy the British Engineers must be Lazy and over paided these days!! What do you say about this Jolly old chaps? http://www.nytimes.com/2002/07/05/technology/05HEWL.html
Fri 05 Jul | Gent from Ilse of Man | More news from the front.... Seems no one is safe!!! Rumor has it that indians Killed Motorola http://www.msnbc.com/news/776488.asp
Fri 05 Jul | Grass Eating Flesh Country | Sanjay Kapoor, Are those prices legitimate rates ?
Fri 05 Jul | Sanjay Kapoor | Grass Eating Flesh Country, Completely Legit. We can arrange for some discounts, depending on project scope and duration
Fri 05 Jul | Prakash S | To Gent from Ilse of Man Your link seems to lead to info about Qwest and not about Motorola. FYI: there are quite a few indians working for Motorola, so I really don't see where you are going with this.
Fri 05 Jul | Gent From Isle Of Man | Yes Indeed Motorola is/was filled with 'Super Brilliant' H1B Engineers! I wonder what happened? http://www.computerworld.com/careertopics/careers/labor/story/0,10801,72283,00.html [To Gent from Ilse of Man Your link seems to lead to info about Qwest and not about Motorola. FYI: there are quite a few indians working for Motorola, so I really don't see where you are going with this. Prakash S ]
Fri 05 Jul | Prakash S | To Gent from Ilse of Man it doesn't say anything abt indians.
Sat 06 Jul | Pierre Le'Bleu | Look what we have here: http://www.theindianprogrammer.com/forum_toc.htm And they seemed so cute too!!
Sat 06 Jul | Pierre Le'Bleu | Bidding starts at $5[usd] when developers purchased in twin-packs http://www.projectspring.com/freelance/index.html
Sun 07 Jul | Bella | http://www.theindianprogrammer.com/_forum/00000178.htm USD exchange rate is 50:1 That means: 0-1 year = Rs. 8,000 - Rs 15,000 ($166-$312 / year) 1 - 2 Years Rs. 15,000 - Rs 20,000 ($312 - $416) 2 - 4 Years Rs. 20,000 - Rs 50,000 ($416 - $1041) I will leave it up to the reader to draw his own conclusions.....
Sun 07 Jul | XP Man | Yeah it's called dumping!!! Who the hell can keep body and mind together for $1041/yr, here in the US? Secondly they obviousky can't be that good even with exchange rate normalized salaries. [Well I suppose it explains why they want to come to US schools for computer sci education!!!] [USD exchange rate is 50:1 That means: 0-1 year = Rs. 8,000 - Rs 15,000 ($166-$312 / year) 1 - 2 Years Rs. 15,000 - Rs 20,000 ($312 - $416) 2 - 4 Years Rs. 20,000 - Rs 50,000 ($416 - $1041) I will leave it up to the reader to draw his own conclusions..... Bella ]
Sun 07 Jul | Prakash S | those are not the correct figures. FOB's from college get around 10000 - 15000 Indian Rupees PER MONTH( 1 USD = INR 49.85). These are from 'Blue Chip' companies like Infosys(INFY) , Wipro(WIT), Cognizant(CTSH). These companies are similar to companies like Microsoft. These pay scales are in the top 25 percentile with respect to other companies in India.( I read this somewhere, just can't remember where.)
It's not bashing but pragmatism | Wed 03 Jul | Gary 07/03/2002
What it comes down to is this: a basic lack of efficiency. As a former engineer, efficiency was paramount. The more complex it is, the harder it is to design, implement and support so it must complete its function with a minimum of waste. In any field, efficiency is the rule. When I programmed, it had to be compact and neat for the ICs I used. When I started in networking, I had to support machines with Windows software installed and most of the issues encountered were due to unprofessional coding or non-essential data. Remember youre first programming class? It may have been Assembler, Q-basic, Fortran or Cobol but the main thing taught was legibility and attention to detail. Code was hard to read without indents and if you were careless with your code, you could either waste time rewriting unworkable code or run the printer paper supply out with an infinite loop if it did work (too embarrassing!). Back then, it was permissable for an undergrad to eff up in such fashion because you were still learning but even then, there was still a right way-and you had to learn it. In the private sector, that is unaceptable. Timetables need to be met and they cant be when your clients pc is down due to sloppy coding and backups do not exist for their data (most companies are like this). Standardization is difficult when the company that issues the standard is itself holding back progress. How many times must I re-install dlls which were replaced by programs with an out-of date version for the software? The incompatibilities alone are nightmarish without the extras; untraceable error messages (with the help of MS support), incomplete patches (ex. nt4 sp6) and do-it-yourself tweaks, which a lot of programmers I know personally, have had problems with implementing. I have seen your test and I must say that I agree wholeheartedly (twelve should be the score for every company), but after that, I cannot understand how you can ignore the flaws in the rest of the industry? If Microsoft cannot live up to your own companys standard in statement and deed, your seemingly unquestioning support for them is an enigma to me (unless they are going to buy you out).
Wed 03 Jul | Gary 07/03/2002 | The above was in response to Strategy Letter IV
Wed 03 Jul | Your Return Key | Don't forget to use paragraphs occasionally.
Wed 03 Jul | anon | You know, this is why people read Joel's articles. Could you imagine if his weblog said things like, 'Software engineering -- you should do it too!' Or 'Sun is right -- GOTOs have no place in my programs or yours!' Yuck. Sometimes you gotta know when to study, and when to spend the night with the teacher.
Wed 03 Jul | Vincent Marquez | I recently transitioned from a small start-up like company to a much bigger (400ish people) company, and i'm finding myself having to write very clean code. The problem i'm having is that there seems to be a direct relationship between 'neat and clean' code and advanced, modular, compact code. The more efficient my code gets, the messier it looks. Maybe i'm a bad programmer (i've never considered myself bad)--I dunno, but lately I continually find myself going 'should I make this really fast and messy, or should I just do it simple so my boss will see that it looks pretty'. Any Ideas?
Wed 03 Jul | James Wann | Vincent, Unless you're writing kernel level stuff, neat and clean is almost always the way to go. It's much easier to run profiling software on a program once the application is mostly built out. It may very well be that your portion of the software doesn't need optimization. Once again, the oft-dreaded 80/20 rule applies. 80% of the time the software will be running through 20% (or less in lots of cases) of the code. -james
Wed 03 Jul | Darren Collins | Above all else, code should be easy to read. Premature optimisation is the root of all evil (and hard-to-read code!). If you have nice, clean, modular, easy-to-read code that's not fast enough, it's time to profile. Don't try to guess where your code is inefficient - you'll often be wrong. Measure it, and know for sure. Then you can optimise those areas of the code that need it, hiding your messy-but-efficient code behind nice interfaces so everything remains readable. Optimisation is one of the most common excuses for messy code. And it's usually not necessary.
Wed 03 Jul | Sammy | Gary, the EWD writings mentioned in a recent thread rock. Many EWDs debate this topic. Also, from the inventor of Fortran, 'Can Programming Be Liberated from the von Neumann Style?' http://www.stanford.edu/class/cs242/readings/backus.pdf Talks about how our tools, including fortran, suck. If we want to improve programming by engineering, we need to look at the tools. When you talk about how diligence is important, it sends out warning flags that our tools aren't made to deal with complexity. We keep on using system languages for applications.
Thu 04 Jul | Albert D. Kallal | Exactly what commercial product are talking about that runs too slow here? Is someone confusing the issue of bloat ware with the issue of speed, and poorly written code? Processing speed to today is cheaper than water. I am not suggesting in anyway that we stop writing efficient code. However, just what code are we talking about? Strategy letter IV is about making software, and the fact that writing software with constrains removed frees the developers to concentrate on features. When you remove the constraints of efficient code, and also remote the constrains of writing without regards to size, then you get a lot of software for the money. Years ago, software people used be concerned about the timing, and location of their data on the disk drive. By paying careful attention to this detail, one would be able to increase the speed of the their disk reads. We just don’t even think about this stuff anymore! In the old PC days of dbaseIII software, we would use a record “seek” command. In today’s environment is it quite common to see a WHOLE LINE of sql to retrieve ONE record. I want you folks to think about this! The sql engine is loaded. The sql engine then parses the sql for syntax. The sql engine then builds a query plan, from this query plan the engine decides what index, and the most efficient way to grab the record. THEN the record is retrieved. This whole process of the sql is LARGER THAN ALL of the dbaseIII environment. If 10 years ago you would have told me the single records would be retrieved via a TEXT interpreted sql, I would have thought you are NUTS. Today, this is COMMON practice. By the way, the little JET engine from Microsoft can easily do the above in a few thousands of a second! Why?, be cause processing is so incredible right now. The other reason is of course that the concepts of data structures have been *removed* from the code, and the data may be on a server on the desk next to you, or half way around the world (but your code does not have to care, or know anymore). Increases in processing, and disk drives allows a lot of stuff to be done on the cheap. The wide spread use of sql to read a record is a great example of this. It is incredible! A text interpreted string to read ONE REOCRD! Java today is great example of trading off some speed efficiency for ease of coding. Of course the same thing has always been said about VB vs. C++ also. However, as a thread of mine here showed, the speed of C++ is no better than VB on a per instruction basis anyway. The gains in C++ speed over VB come from HOW you solve the problem...not the actual speed of the code. For some people, I am sure they think that not worrying about placement of data on the disk drive is a waste. I am sure for some people that allowing developers to code without regards to program size is a waste. However, it is the consumer that is demands these features. Over time, it seems that much of the loss of efficient can be re-claimed anyway. c++ vs. VB is a good exmaple..as VB eventually go a native compiler in addition to the p-code compiler. Many people think that a automatic transmission is a waste of engine efficiently. It is a question of convenience, and how much bang you get for the buck. If you want real efficiency, then you can hand code your application in assembler. I doubt that any one can finish any kind of commercial project when code is written this way! Commercial software is all about converting code into dollars. No one is forcing you to drive a Mercedes Benz, or a BMW. Most consumers go with a average car. Most consumers simply cannot justify the extra expense to buy a newer car, or even a higher end car. In fact, a very high percentage of consumers actually save money, and purchase used cars (a good many probably *could* come up with the money...but it is just not worth the extra price for a newer car). The exact same thing applies to software. Very good, and very tight, and very efficient code cost more money. With the cost of processing and disk drives like water...it is the consumer that is making this decisions. The consumer wants more software at a cheaper prices. In fact, consumers can’t get enough software these days. The software industry has grown from about 0, to 300 billion or more in a very shot time. Consumers love this stuff, and purchase software by the truck loads. It is not the software companies driving this issue..it is the consumer. Perhaps we should tell consumers not to purchase cheaper cars. Higher quality code = more cost! Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Thu 04 Jul | John McQuilling | Albert, Higher quality code may cost more to build initially, but it can actually be cheaper if you factor in maintenance. We tend to concentrate on delivering the system and ignore the 5 - 10 years someone (hopefully not us) will have to support the code.
Thu 04 Jul | Simon Lucy | A good deal of 'code' written these days barely qualifies as such, for the most part its a set of instructions to another layer of interpretative code, whether functional or declarative. Stringing together a lot of calls to a third party API regardless of the language, or twiddling a few properties of a class and subclassing an event is just that. And I'm not decrying it, I do it myself, I'm quite happy to get lazier and lazier in the actual text of the 'code'. It does mean ,though, I have to get better at managing the design. As for a curve where the greater the efficiency of the code the messier (and less legible by humans) that code is. Yes that's true. Its bad only in the sense that someone human has to come along at some time and decide how the code does what it does. (I'm almost straying into the rewrite argument but I'll avoid it). The most efficient coding system we know is DNA/RNA and that's a mess. Its a mess because it evolved. No code starts out a mess (unless its plainly just wrong), but over time it accretes and adapts to changes in requirement, platform and the like. It acquires strange circumlocutions and intitialisations. Its not always possible to scrub out the mess because different platforms for the same code base need different bits of the mess. (Hmm that rewrite argument is looming). This is not a defence of overly complex code, its just a description of how it is.
Thu 04 Jul | By The Numbers | Your assertion is absolute rubish!!! DNA/RNA is not only efficient, it's also very elegant. One would certainly not call it a mess[suggest you review some of your A-level biochemistry] [The most efficient coding system we know is DNA/RNA and that's a mess. Its a mess because it evolved. ]
Fri 05 Jul | Rodger Donaldson | As far as developing commercial apps in assembler - I hate to burst the bubbles of any desktop developers by making them think about large systems, but there are still people hammering out assembler code in mainframe environments every day, and meeting commercial schedules. What's more, much of that code works far more reliably than the code cranked out in nth-generation, strongly-type languages with GC and other such fancyness to protect end users from programmer error.
Fri 05 Jul | anon | Rodger, maybe it's a nitpick -- but targetting a mainframe lets you write more complex programs. It's not just total control over the machine, but: - performance is pretty well-known - few side-effects compared to desktop apps, which are often all about side-effects I agree though, with the idea that people program in a tower of babel, building code with dependencies.
Sun 07 Jul | gary | Assembler is an extremely robust language which requires the attention to detail I mentioned. As demanding as it is, the finished product will rarely dissapoint when designed properly. Who can say that they don't want well designed products? Albert's reply wandered through various analogies without contributing to the topic at hand. How can one justify sloppy work by throwing more horsepower at it? No. Proper design equals well-made product. It is not about speed to me because that can be tweaked later. You cannot tweak code that is unintelligible. Unreconizable code will always lead to mistakes. The assertion that the speed gains in recent years justifies bad workmanship is the issue here, not the needs of consumers. I would simply like for someone to ponder that for a moment. Why can't programming adhere to stricter standards? Yes, the marketplace requires cyclic product updates and releases - or does it? Why can't a well made product justify the time that it took to create? It should. Run a mainframe with that type of thinking and see how long it takes for you to have an 'office session' with your director.
Sun 07 Jul | Joe AA. | In almost all of the posts on this board, there is a common thread running underneath most of the topics. I think it's an attempt to 'justify bad workmanship'. Yes, the comments that speed gains help justify sloppiness is just one. Others include the whiny 'should I work more than 40 hours'... 'should I work on holidays'... 'I need a private office to do my best work'... 'we could have quality if only we had more time'... 'we need to be protected against H1B'... on, and on, and on. Put them all together and they are actually quite contradictory. No, I disagree that it is about 'efficiency'. I prefer to do things 'effectively'. I always think... 'is it effective to do the wrong thing in an efficient manner'?
Sun 07 Jul | anon | > How can one justify sloppy work by throwing more > horsepower at it? Don't you think you're fighting a straw man? Does Joel's strategy letter justify sloppy work? Or is it about an engineering trade-off?
Good mailing list | Wed 03 Jul | Ronaldo
Hi all, Just want to what mailing list (preferably with digest version or sent weekly) that you subscribed ? Especially about tech and fun stuff. Its hard to find good mailing list review now, especially since creating mailing list is so easy with services like yahoogroups. Or, if you know a good site which reviews mailing list please let me know. My fave list is RCFOC (rapidly changing face of computing) Lockergnome. Danke
Wed 03 Jul | El Campesino | I'm subscribed to that list for only two weeks but it's very interesting to learn about web sites and search engines. http://www.axandra.com/archive/index.htm
Wed 03 Jul | Roman Eremin | WinINFO daily update http://email.winnetmag.com/winnetmag/winnetmag_prefctr.asp
Thu 04 Jul | Oliver Kahn (no, not really) | Maybe its just the strange way my mind works, but I find someone called Ronaldo saying 'Danke' quite amusing.
Sun 07 Jul | MadMan | If you're interested in web development issues, I heartily recommend 'thelist', a 3000+ member strong discussion list run by http://evolt.org - one of the largest web development communities on the Web. You can subscribe at http://lists.evolt.org Disclosure: I'm one of the admins (but I don't get paid or anything, so this isn't a commercial thingy)
How not to make a mess of it | Tue 02 Jul | Andrzej Kocon
From many recent topics one could conclude that good software could be done provided we had enough money, people, time, patience, skills, you name it. But theres a possibility that we simply dont know (yet) HOW NOT TO MAKE A MESS OF IT (although there are partial results, valid in any methodology, like avoid case analyses, separate concerns, avoid operational thinking, do not call bug a bug, call it an error, etc.). This possibility is articulated in EWD1304, for example, from which I would like to quote in extenso: In academia, in industry, and in the commercial world, there is a widespread belief that Computing Science as such has been all but completed and that, consequently, computing has matured from a theoretical topic for the scientists to a practical issue for the engineers, the managers and the entrepreneurs (...). This widespread belief, however, is only correct if we identify the goals of Computing Science with what has been accomplished and forget those goals that we failed to reach, even if they are too important to be ignored. I would therefore like to posit that computings central challenge, viz. How not to make a mess of it, has _not_ been met. On the contrary, most of our systems are much more coplicated that can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. The average customer is served so poorly that he expects his system to crash all the time, and we witness a massive world-wide distribution of bug-ridden software for which we should be deeply ashamed. For us scientists it is very tempting to blame the lack of education of the average engineer, the short-sightedness of the managers and the malice of the entrepreneurs for this sorry state of affairs, but it wont do. You see, while we all know that unmastered complexity is at the root of the misery, we dont know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy. We do not know yet whether trade-offs will be possible. We do not know yet whether we can invent for intricacy a meaningful concept about which we can prove theorems that help. (...) (end of quotation) (see also EWD1305 for further arguments) If such is the case (as I tend to believe, otherwise we wouldnt discuss the problem twice a week since the advent of programmable computers), then the term Software Engineering is of premature use, and truly stands for, as one put it, how to program if you cannot. No amount of programming languages, tools, tips or paradigms can hide the fact that the programming itself is not mastered yet. Budget, time and brilliant people can achieve amazing results, but these do not turn into a teacheable discipline. (EWDs are available from http://http://www.cs.utexas.edu/users/EWD/indexEWDnums.html ).
Tue 02 Jul | Joe AA. | I love Dijkstra's work. He rejects the term 'software engineering' because of 'testing' as a means to find bugs instead of formal proofs. Personally, I don't believe any progress will be made towards not making a mess of it... until: 1) People, managers and developers stop worshiping complexity as a virtue, and 2) Recognize complexity for what it is - a relationship between system and observer - not as a measurable attribute or property of a system (as they wish it were). Unfortunately, folk wisdom has too many people not dealing with either of these. I think it has to do with pretending the observer (e.g. yourself) has nothing to do with complexity - it's easier to blame the system.
Tue 02 Jul | Bill Carlson | Great points by both prior posters. There is one ingredient that is often present when you see a quality piece of software: Continuity. Continuity of teams, management, expertise in the problem space, etc. When a team grows slowly, there is a natual settling of human elements. Those that are natural followers, follow, those that have a strong vision get into a position to project that vision. The poor programmer doesn't get assigned 'mission critical' tasks. This all takes time, sometimes quite a lot. But, the problems solved by it are immesurable. People have too many axis to be able to quantify their abilities without working with them for a period of time. A 'senior engineer' may be great at writing code, but lack the patience for highly detailed, error prone work. Or, they may be technically proficient, but unable to communicate what they're doing. They may not understand the fundamentals of what they're doing and paint themselves (and the project) into a corner. The point is, you can't call up your friendly recruiter and order 'competant engineers' like widgets. Great software comes from people doing what they're great at and what they enjoy doing. Without long term continuity of team, it's difficult to get to that point. Comments?
Tue 02 Jul | Dustin Alexander | I think perhaps that software engineering has been mastered on the micro and not the macro scale. What I mean by this is that any given application developed by a set of brilliant engineers can often excel at a given task. You don't see many people, for instance, complaining about the software that is winamp and how much of an engineering failure it is. On the other hand, we've got large projects, put together by teams of dozens of developers, that require both a large monetary and temporal investment. It is in these projects, whose engineering equivalent would be bridge building, where we see the flaws of the team come through. It is in these macro scale efforts that the previously insignificant errors of the individual grow into the significant and nearly insurmountable errors of the group. Something as simple as a memo misplaced or an email deleted can result in insecure and intolerant end user software. When you are dealing with systems as complex as today's large software project, where actual development moves at the behest of larger socio-political structures, is it apparent that flaws are both inevitable and in many ways impossible to resolve? This problem becomes even more pronounced when you move into the basic toolset of usability on a system: the OS. Most major applications depend in many ways upon the OS ' backend implementation for most of their functionality. There are two types of OS: the corporate pet and the public playpen. Both of these are subject to built in flaws due to the size of the projects. The very idea of an OS may be flawed due to a lack of fundamental modularity which can cause any flaw in a groups design to permeate through the whole system, thus corrupting the end users experience. But the answer cannot lie in modularity, for another of the flaws lies in the splintering of the end user experience. Each application developer has a different paradigm for what is and is not usable and this creates a system that (as someone in a previous post mentioned) has too many options and differences for a single user. Is there not an inherent paradox here, then, between modularity and consistency? Modern day engineering systems, such as bridge building and common building construction, rely on a consistent and unchanging base of laws provided by physics. Thus the comparison between software development and engineering may not be an apt one, as the people designing bridges don't have to deal with an inconsistent and unstable base [an OS, for instance]. Nor do people who build bridges have to deal with the issues of modularity, as almost everyone will agree on the design goals and usability concerns of a bridge. I think a more apt corollary to the software industry would be a society as whole: A common group trying to agree on a system for dealing with disagreements born of adverse and often unreconcialable views. In the same way that the nature of society dictates that it shall never be a stable entity, the nature of software engineering as a amulgam of personal goals and priorities prevents us from achieving perfection. Software is and may always be an art rather than a science.
Tue 02 Jul | pureanonymous | Thank you for the link to the EWDs! I'm right now going through all of them; I've only read a few before. I notice the earlier point about team continuity. That reminds me of Peopleware, which mentioned the same thing. What I remember is that Peopleware also mentions that the best organizations are preoccupied with being the best. They talk about it in hallways. And right now I'm in an organization that just wants to be mediocre. I envy those organizations so much. Oh, for the obligatory Microsoft put-down, from EWD1283, when MS offered fellowships in return for making NT a core part of CS: 'Since I do not want MS to sue me, I won't tell you how much I appreciate their offer.'
Tue 02 Jul | Bill Carlson | Dustin makes some excellent points. A medium sized app with 15 developers might be handled by the 'demi-god' approach; one project manager with deep knowledge of the problem, knowledge of the technology, knowledge of software development management, and knowledge of the market. That combination is exceedingly rare, but the ability to imprint one vision can be powerful. This person, with 3 or 4 managers for sub-projects, could 'get it done'. The point is well taken, though, that we don't really have an answer for the true 500 person project (not the ten person project disguised as a 500 person ordeal). Perhaps additional attention needs to be given early in the architectural stages to allow for modularity. Database driven apps have a great advantage here, since modules often 'talk' to each other through the database, reducing 'breakable' interfaces. My team is pretty small (10), so I'm not really fit to comment on huge projects...but I will make a few 'FWIW' large-team suggestions anyway: - Team consistentcy over time (see earlier post) - No tolerance of 'rogue code'. There's always the developer that feels the need to prove themselves by using some technique they read about in Dr. Dobbs. Occasionally this is harmless, but if odd APIs are used that wouldn't normally be, you could be in for trouble. At my company, we've wrestled with this issue a great deal. It's gotten to the point that we've had to remove someone from a project because their code was consistently 'weird'. - Have your best developers work on code early in the process. Less experienced developers should have something good to copy from. A code base takes on a 'culture', and it's essential to have a good start. - If possible, keep developers working on a module through the first or second release cycle (and beyond if possible). Senior developers writing code they don't have to live with and maintain is a bit of a negative feedback loop. People should need to live with the consequences of their decisions. - Hire good communicators. You will pay more for this skill. - Hire well-rounded people. My personal experience is that development is about balancing tradeoffs. Someone who knows how to do this with their personal finances and relationships has a better chance of success in a large project. This person may not want to work a 60 hour week. (touchy subject. opinions welcome.) - Allow long 'ramp up' time. This is hard to do. The idea is that you let someone know what project they'll be working on 3 months before they start. A good developer will start 'the wheels turning' and have ideas, have spotted pitfalls, etc. before they start coding. I find this extremely helpful personally. - Have 'gurus'. Sometimes there's no subsitute for someone telling you 'that's a bad idea' before you spend 2 weeks on something. Or help resolve a spat between two junior programmers. Or casually let QA know that someone's module will require 'extra care'. Or has the 'weight' to question managements insistence on a new feature. You get the idea. It's not possible to fit these things on a line-item, but they do help oil the machinery.
Wed 03 Jul | John McQuilling | I also hate buggy software and would like a way to create bug free code, but I wonder why IT/programming is the only part of a business where we expect perfection. Do we expect marketing to sell to everyone that sees the ad? Does the sales department close every deal and make each quota? Is there a science that will allow a CEO to always make the right choice? We can sure do better but maybe we should look how the rest of the world operates, for example, in a lot of cases being able to quickly correct a problem or make an adjustment works as well as being perfect. Sometimes you cannot tolerate errors such as with air craft. There both the human systems and software systems are handled differently. I don't the exact details but commercial pilots have more training that 16 year olds who get their drivers license. Similarly, software for airplane control must be reliable. MS Word has bugs and is not perfect but I can produce better quality work with it than I could with a typewriter or a pen an paper, so I use it. I maintain a critical system that is easy to change so problems are handled sometimes in minutes. No one likes errors but they know it can be fixed so they don't panic. My advice is to design the code so that change and problems can be handled easily.
Wed 03 Jul | Claus Christensen | The first posters mentioned complexity and I think this might be a key to our problems: Complexity in other engineering disciplines is normally limited by the physical world and their constraints. It is not in our world of purely virtual systems. Complexity in the software world is only limited by what we can handle with our methods and minds. And so it could very well be that we will forever (while Moore's law lasts, that is) play catch-up by developing better methods to solve Problems of ever increasing complexity. Scaring though, isn't it?
Wed 03 Jul | Joe AA. | Claus... let me take the liberty of revising some of your statements - to help me clarify my post on complexity: The first: *Creation* in other engineering disciplines is normally limited by the physical world and their constraints. It is not in our world of purely virtual systems. Now I can agree. Physical laws, or the laws of nature, sometimes called 'first principles' cannot be broken. Attempts to do so can result in death. The second: Complexity in the software world is only limited by what we can *create* with our methods and minds. Many of our software developments have outstripped the minds of the project individuals. But this has been the result of those project individuals... not the cause but the effect. Both of these together is why I believe the world of art has much more to offer than we give it credit for. Many of our developments, should such an abstraction be presented, would resemble the work of M.C. Escher like 'the Waterfall' (a picture I love BTW) - but which no engineer would undertake to physically construct because of the violation of first principles. The third, I cannot rewrite, so I quote it: 'And so it could very well be that we will forever (while Moore's law lasts, that is) play catch-up by developing better methods to solve Problems of ever increasing complexity.' The implication here, is that a 'complex' problem (as it is perceived) deserves or requires or mandates an equally 'complex' solution. Complexity is never a 'given'. It is always a choice and it is always an irrational choice. A rational person does not seek complexity, he 'tames' it. Look to your own experience. What is rewarded? Is it not the 'complex' problem with the 'complex' solution? Is it not the person that creates the most messy kludge the one that receives the greatest rewards for his... dedication, technical or managerial skills, long and hard hours, countless numbers of bug fixes and defect counts. This is the one that gets the praise - for 'attempting the impossible against all odds'. If you have it in your experience... look at something that you consider 'elegant'. What reward did the person receive that developed it? Most likely little to nothing. Elegant is also 'the lack of complexity'. It is elegant because when it is perceived it triggers that 'AH HA!' response in your brain - you can see it clearly, how nice and neatly it controls 'the problem', how nothing about it seems wasted or without purpose. You admire it... wanting to be capable of producing something so wonderful yourself. But for most, the feeling in that last sentence only lasts a moment or so. Why? Because now it seems so simple. You reason or delude yourself into believing that, because it is simple, then the problem must not have been as 'complex' as originally believed. Because it is simple, you make the erroneous conclusion that *anyone* could have done it. Then you slip back into your normal routine of complexity worship. Those individuals out there that have created 'elegant' solutions, know something else... They know that 'somehow it just came to them'. They know that it wasn't a function of the length of time they were allowed - and in most cases, the time was much shorter than others felt the problem deserved... to be 'solved correctly'. They know it wasn't the volume, weight, or details in the volume of documents that may have proceeded it's creation. They know it wasn't a result of following the practices and routine of 'software engineering' with rigor... and they also know if they had taken that approach it there would be a high probability it would never have existed. I think it was Bill Carson that mentioned 'the true 500 person project' somewhere above. There is no such thing... this is what happens, but it will take an awful brave manager type to admit it. When faced with perceived complexity, the mind shuts down and we go into kneejerk response mode. With the mind shut off, we demonstrate and use complexity as the justification of our inability to handle it. This justification gives us dollars to bring on loads of people to throw at the problem in hopes of somehow solving it. We then adhere more or less strictly to some 'mythology' to guide us through the complexity nightmare further providing us an excuse of keeping our minds shut down. We then organize the herd into compartments. The compartments may be groups of a functional or technical nature, it really doesn't matter... but with our 'organization' under control, we proceed to document 'the solution' guided only by faith... safe in the knowledge that any cross compartment communication about the problem has been effectively prevented. There is no way to validate 'the solution' because we know nothing about 'the problem'. We fix the bugs, the defects, implement a kludge, receive our rewards for our magnificent achievement, update our resume with all the new buzzwords... then move on to the next failure to be conducted in exactly the same way. 'The Universal Scenario'... always playing at a location near you. No, we have nothing to do with it... 'complexity' is the real problem. It is not our fault, after all, we followed the ABC mythology highly recommended by the XYZ institute of Software Engineering!!! We even received a purdy award for our level 5 performance. When nothing really 'new' has to be achieved, then work can be formulated into a blind process. That is why, and only why, the NASA software performance is so good. But when something 'new' needs to be created, it can only be created by the intellect. Forcing a blind process onto the intellect guarantees it will not be used. Switch on, switch off. The mind in innovation is binary.
Wed 03 Jul | Greg Kellerman | Quote from JoeAA Why? Because now it seems so simple. You reason or delude yourself into believing that, because it is simple, then the problem must not have been as 'complex' as originally believed. Because it is simple, you make the erroneous conclusion that *anyone* could have done it. This seems to go hand in hand with the expression that says: A Pro makes the difficult look easy. This also gives rise to frustration of having achieved something and trying to impart to others only to lead them to the water's edge but not being able to get them to drink!
Wed 03 Jul | Joe AA. | You can lead a horse to water... but have you ever smelled a wet horse!!
Wed 03 Jul | cheeto | 'When nothing really 'new' has to be achieved, then work can be formulated into a blind process. That is why, and only why, the NASA software performance is so good.' I work in the Space Shuttle Flight Software devlopment organization. If you don't count the tools people, we are actually only 250 strong. The reason why our performance is so good is because we work with an intelligent customer who understands their own requirements. We work within a framework that rewards superstars but does not depend upon them. The process is not blind, the process is repeatable and transferrable to new employess (probably limited to about 20% attrition). We are given reasonable schedules and spend very little time actually writing code (that's the easy part). By the time the change request gets to the coder's desk for implementation, there is really not much left to do.
Wed 03 Jul | Joe AA. | cheeto - 20% attrition? That's 50 people a year. I've worked in sweat shops with less attrition than that! Is it possible your attrition rate is due to boredom? I really don't mean to sound so sarcastic. The reason your process is repeatable and transferrable to the newbies is because nothing really changes, nothing of any real significance happens. Your process is dedicated to your product - not much different than a factory assembly line may be dedicated to producing a certain style of vehicle. But without a lot of retooling, that same assembly line cannot be used to make airplanes. If I only had one software product and it was already created, then I could have widgets making additional copies for me. It wouldn't take a rocket scientist (sorry, couldn't help it) to put on a new style hubcap if I needed it. If you had to start all over, on a brand new product... say a CRM application (an example from someone else), then your current process would make just as much a mess of it as we are able to do.
Wed 03 Jul | cheeto | I knew that phrase about the attrition wouldn't come out clear. I meant that you could probably lose about 20% without noticing much effect in the end product. After that, there wouldn't be enough of the experienced people to adequately train the new guys. I agree that our process is dedicated to our product. I disagree that we don't do anything significant. Outfitting the software so that shuttles can use GPS was major, modifying our control algorithms to boost the ISS without tearing it apart was major, stretching the abort capabilities so the crew spends fewer and fewer seconds in the 'black' zones is major. I am trying to defend what we accomplish without sounding defensive, I hope I can pull it off ... As far as new development goes, we are chin deep in yogurt trying to develop the new display system for the orbiters. New computers, new OS, new language. Much of this process was borrowed from the FSW side and they actually aren't doing too bad. But we haven't got into the verification phase yet... What it basically comes down to is some products and customers cannot afford our process (time/money), but we can't afford not to use it.
Wed 03 Jul | cheeto | Our actual attrition is probably around 2%. I'm in a dept. of 16 and have seen maybe 5 people come and go in 6 years.
Wed 03 Jul | Joe AA. | cheeto - you never had to defend what you accomplish, and don't think I was degrading them. I admire your accomplishments. Thanks for clearing up the attrition figures! (whew!)
Thu 04 Jul | Claus Christensen | Joe, thanks for this intelligent discussion! Isn’t this what we came for to Joel’s site in the first place? Yes, I agree with what you said about the worship of complexity and I remember so many times when I showed others an elegant solution and earned only blank stares and a “so what?”. Fortunately, I usually work on small projects with good developers and the time saved by an elegant solution is enough motivation for me. I guess you are right – much if not most of the perceived complexity in large software projects is only that - *perceived* complexity that is waiting for someone to perceive the simple underlying problem and thus find the elegant simple solution. But I still think there are many problems thrown at us programmers today with rising inherent complexity because we don’t (and can’t have) total control about every aspect of the problem *formulation*. Example: Why are large accounting packages so complicated? Accounting is super-simple, just add the numbers! It just gets horrible complicated because the structure of multi-national companies and the taxation laws. Tax is immensely complex with all it’s exceptions and exceptions from exceptions and the software just has to follow this complexity to be of any use to an accountant. The software developer cannot find the simple elegant solution in this class of problems alone. There just isn’t any pattern to taxation laws that could be discovered (IMHO). The solution would be to create a simpler company structure, simpler taxation laws and hey, let’s change the world financial market structure to something simple and elegant while we are at it. See the pattern? Some complexities are not in the problem, but only in the shape of our tiny (software-) part of the problem formulation. And that is what counts – the problems that are actually thrown at us, not the larger (and probably simpler to solve) underlying problems that are never shown to us. I just stay away from excessively large projects as long as I manage to make enough money otherwise. In smaller projects you do tend to have more control even over the environment of your part of the solution. But they are smaller projects and I can understand why someone would want to be a smaller part of for example the space shuttle flight control software team. Cool project, cheeto! But I already hate all that paperwork that I am doing for a small aircraft engine control software and I dread imagining what kind of paper trail developing for critical space applications requires.
Thu 04 Jul | Andrzej Kocon | Joe, your second post is mainly on 'worship(p)ing complexity', but I still don't get your other point: > Recognize complexity for what it is - a relationship between system and observer - not as a measurable attribute or property of a system (as they wish it were). (...) I think it has to do with pretending the observer (e.g. yourself) has nothing to do with complexity - it's easier to blame the system. Granted, one can't blame a theory or a system for being too complex for him to understand it, but only in the case this complexity is 'inherent' (inevitable), and not 'accidental' (i.e., unnecessary). Otherwise you may defend any mess by blaming dumb readers or users. A paper's title, 'Higher Order Functions Considered Unnecessary for Higher Order Programming', serves as an example, and the 'unnecessary' here meant also 'more complex'. > Complexity is never a 'given'. It is always a choice and it is always an irrational choice. A rational person does not seek complexity, he 'tames' it. Tames how? By an irrational choice? Like in chosing between Arabic and Roman numerals? Avoiding certain programming constructs on the ground that they make reasoning about programs more difficult is irrational? Avoiding case analysis where a single argument would suffice is subjective? Cheers,
Thu 04 Jul | Andrzej Kocon | Thanks for the responses, but... Let's separate things for a while, putting the commercial software development, team management, schedules etc. aside. The point is that even in 'laboratory' conditions, where the business aspects do not interfere, 'the computing's central challenge (...) has not been met'. So those other aspects are at best about how not to worse the situation. As for the art analogy, the art (like engineering) implies mastering the underlying matter and techniques, and since we are far from it (even in laboratory conditions), alchemy would be a better term, unless you consider filling hundred buckets and naming it 'By the water' an art (authentic). On the other hand, 'mastering' does not imply that the process becomes 'blind' or automatic. What is the eldest paper evoking the art analogy? Certainly not the Knuth's Turing Award Lecture, 'Computer Programming as an Art', 1974, CACM 17(12). Pureanonymous, I hope an occasional anti-MS remark (MS being only an example) won't result in missing the critiques of OUR daily practice (as in EWD1305, for example)... BTW, what about EWD1209, 'Why American Computing Science seems incurable'?
Thu 04 Jul | pureanonymous | Well, the EWDs preach to my choir. Like in EWD 648. Before I code a line, I like to lie in bed, thinking of how to understand the problemspace and express it in its own syntax. I rarely write bugs, mainly because my code follows my design. I see that functional languages are making a big comeback. It's everywhere on the web. I wish the formalists did the same, leveraging the web to make up with spotty CS departments. Until that happens, what is there to say? Berate people for not being more formal, but not how to do it? The market's bad, and people are looking to differentiate themselves by getting deeper skills. A good time as any to introduce the old ideas that failed to catch on before.
Fri 05 Jul | Joe AA. | Andrzej Kocon - You can classify complexity any way that you want. You can pretend some of it is 'inherent' and you can pretend some of it is 'accidental'. Both are strategies that assist in ignoring the observer's role - it denies the relationship by placing complexity of any flavor as a 'system attribute'. It is still 'Out There!', somehow existing in that thing that is deemed to possess complexity. But it doesn't exist... relationships are not entities - they have no weight, no form and no measure available to them in physical reality. Change the relationship by changing the observer and 'complexity' will appear to change. If complexity is really in 'that thing', then how can it appear to be more or less based on the observer? It seems that you got my remark about taming complexity backwards - irrationality cannot tame it. Irrationality runs through our business and software engineering. 'Problem solving'... as taught in school, as it is used in software engineering has an assumption that is enforced through practice, but through practice has proven itself time and again not to be true: The presentation of a well formed problem statement. Problem solving is then assumed to be nothing more than a 'multiple guess' type of test, matching up an appropriate solution 'answer' to the question presented by the problem. And with all tests, each and every problem has one and only one correct answer. Structure... meaning the mental overlay that you place on a problem is the method to taming complexity. There is no standard overlay, it varies with the problem. Until you know absolutely everything there is to know about the problem, the overlay you place on it will probably cause more harm than good. Study the work of Ashby. Even if you call that overlay 'software engineering'. Software engineering is nothing more than following a process in hopes that the process will work. That a miracle will occur by going through the motions. And if you look at the stories of significant *new* engineering efforts, they are not achieved by following the same old stagnant process that creates the normal run of the mill engineered result. Study the history of the Empire State Building - erected in record time, shorter than the 'unreasonable' timeframe given to the project, with less deaths than predicted - and No, it wasn't all planned out to the nth degree. Hoover Dam is another example - the number of untried, untested 'techniques' used during it's construction is simply amazing. The building of the first atom bomb - only achieved through a 'skunkworks' with lots of trial and error... and regardless of the end result, the achievement itself was significant. There are ways not to make a mess of it, but none of them involve following a 'checklist' approach to development. The great lure... the ultimate bait of software engineering, is that any idiot can be trained to follow the process. It simply costs less to use idiots if the same result can be achieved - and that my friends is what causes the mess. Not the lack of time, not the lack of resources, not the lack of private offices, not the lack of certification, and not the presence of H1B. Mastering techniques is not the same as mastering an art nor an engineering discipline. The 'naked chef' ain't good because he knows how to slice and dice better than anyone else...
Sat 06 Jul | PC | 'Software is and may always be an art rather than a science.' I think software is both an art and a science, according to the real meaning of the words. 'Art' refers to things made by humans, as opposed to nature. 'Science' refers to a method of discovering and learning about the world. Software is something completely different from what people think it is. It is much more than a way to build a business application. It is a way of thinking, creating and discovering, different and in a sense better than any we've had before. Please don't expect software development ever to be like architecture -- the smart people draw up the blueprints and then hand them to the less smart construction workers. Software development is inherently complex, inherently creative. Yes the process needs to be well-organized and standardized or you wind up with a big mess. But it won't ever become the mindless activity you are hoping for. Maybe some aspects of it will, but I and I'm sure many others will stay as far away as possible from those areas. Technology and society keep evolving and becoming more complex and, like it or not, we are all part of that evolution. People who can't stand boring jobs will always find a way to be involved with complexity and uncertainty, wherever that may be. Long live complexity.
Sun 07 Jul | Andrzej Kocon | So, Joe, not only beauty, but also complexity is in the eye of the beholder? Now I understand, we simply use the term complexity with different things in mind. In our field we have already grasped the computational complexity it terms of time or space or energy the execution of a program will take. This specific complexity is independent on the observer (except he has quantum computers), and lower bounds deserve the 'inherent' adjective. Also, these are not arbitrary measures, as they lead to meaningful and useful results. Certainly it does not cover the whole idea of complexity in our discipline. But is it the only meaning of complexity we can grasp in this way? How to compare two programs of equal computational complexity? Is it that it only seems to that one is less complex in a way than another? Should we give up and declare that there are no coherent and useful measures we could invent in this case? We do not want to mathematically define all the meanings one could associate with the term in question, but to cover another technical aspect of it for our purposes. There are attempts that deal with the order of mathematical concepts necessary for correctness or derivation proofs, or with the length of such proofs. I'm well aware of the fact that practice seldom waits for a theory to be accomplished, even if that would cost lives, as it was with the atom bomb tests on own unprotected soldiers (btw., the possibility of the bomb was theoretical first). I know the examples of architectural achievements done without complete knowledge of the projects. These are not *new* approaches, as the dispute between 'schools' lasts centuries (one school would not build anything if it could not be 'computed', the other quite so). But these arguments are irrelevant here. I didn't exhort to refrain from programming until we knew everything about it. The point was that theoretical deficiences may also have something to do with the general lack of software quality, point. I didn't say that mastering techniques was 'the same' as mastering an art (please verify). Art school graduates are not artist, but are prepared to try. I didn't say programming would ever become mechanical ('checklist' driven) thanks to a theory. Applying well known mathematical results and techniques is not a thing 'any idiot could do'. Certainly, to make a mess 'it costs less to use idiots'. But it costs tremendous amount of resources and effort to make decent software even by the most skilled (and for 'well formed problem statements'). Does it have to be so? Is it that we don't expect any help from computing science? Regrettably enough, I'll left remaining remarks without comments (problem solving, 'mental overlays', H1B's, etc.). Interesting topics as they might be, they are out of the scope of this thread. Regards,
Sun 07 Jul | Joe AA. | So you are calling the measurable... performance? of a program 'computational complexity'? I see... you never got that riddle about the number of legs a dog has by calling his tail a leg. 'But it costs tremendous amount of resources and effort to make decent software even by the most skilled (and for 'well formed problem statements'). Does it have to be so? Is it that we don't expect any help from computing science?' I'm not sure what you meant by this. Sure, we throw resources and effort in an attempt to make decent software, but because that is what we do... it does not imply that it is necessary to do so. And, just like engineering projects that have been done without the flavor of the day checklist approach (*new* at the time, some considered impossible, but then everything seems consistent with 20/20 hindsight) - well below the best 'state-of-the-art' effort, cost, and even death rate estimates - great software has been developed in our history by people 'foolish' enough not to deem it impossible because of 'complexity' and 'stupid' enough not to know it is a requirement to throw away resources to develop it. Visicalc is one example that springs to mind. PC... your comment: 'Please don't expect software development ever to be like architecture -- the smart people draw up the blueprints and then hand them to the less smart construction workers.' is 'unfair'. It is clearly documented in the field of architecture that the lowest cost and highest quality comes from architect/builders - NOT from the ones that operate an 'assembly line' process.
Mozilla might be committing suicide. | Sat 29 Jun | Ramón
Mozilla does not support Internet Explorer javascript extensions such as document.all, window.event and some others. The result is that many pages do not work with Mozilla. At present, Internet Explorer accounts for about 91 % of web access. Therefore, most web developers test their pages with Internet Explorer only. Therefore, the web pages they develop often contain Javascript code that does not work with Mozilla. My experience in Spain is painful. Mozilla is locked out almost all commercial web servers. For instance, www.abbyss-computer.com blocks mozilla by the usage of document.all; www.ebankinter.com (one of largest banks in Spain) uses a regular expression not supported by Mozilla; www.auto-res.net requires HTMLElement.outerHTML ; www.iberia.com (the leading Spanish airlines) requires either document.all or Netscape 4.x document.layers I wrote a patch that partially fixes those problems, and allows me to work with the sites that I need. I also posted a request for enhancement through the Mozilla bug tracking system ( http://bugzilla.mozilla.org/show_bug.cgi?id=154589 ) Unfortunately, it has very few chances of being accepted. Some opposition is well founded (some pages check for the existence of document.all for using more extensions, and therefore my patch is not enough. However, this problem can be solved. Most of the opposition is purely religous. Bob Clary, manager of the Tech Evangelism (whose job is to evangelize web developers to make pages that work with Mozilla) thinks that implementing these extensions would do harm the web at large (see comment #30 in the link above). It seems that they cannot accept that they have no influence on what is used on the web. What do you think? Note: if you want to add a comment in the bug tracking page http://bugzilla.mozilla.org/show_bug.cgi?id=154589 you need to be registered in the bugzilla tracking system, at http://bugzilla.mozilla.org/createaccount.cgi
Mon 01 Jul | Szasz Attila | >>...and lots of nice games. Yeah, right. Like Shock the monkey banner ad. Hahaha.
Mon 01 Jul | yawn | may the gods help us... microsfot is evil! no its not! yes it is! ...this is the conversation of a deranged drongo on mind altering drugs, surely not the stuff that we came here to read (and write)?... ..I often wonder where these people come from...it happens on mailing lists as well...an apparently normal mailing list starts a slightly controversial topic and suddenly all the deranged maniacs come out of the woodwork and begin a debate on which of them is less intelligent...
Mon 01 Jul | Ged Byrne | -------------------------------------------------------------------- ...I often wonder where these people come from ------------------------------------------------------------- Yawn I'm still waiting for them to start knocking doors. Linux witnesses getting me out of the bath on a saturday morning to quote Man pages at me.
Mon 01 Jul | Tekumse | Ramon, I belive the best thing to do is to petition the websites to modify their code to support Mozilla. You can even send them a sample javascript code that will work with Mozilla. If their site is done well, the code is probably reused so it won't be too ahrd to fix it. If enough users complain they'll have to fix the code or lose them as customers.
Mon 01 Jul | Robert Moir | 'If enough users complain they'll have to fix the code or lose them as customers. ' Uhhhh 90% plus of their user base currently won't see the problem and complain. I think thats the point. Of course, its poor customer service to piss off 5-10% of your customers for no good reason but I'm guessing that out of every 100 page views, 6 fail because of this, and 2 of them write and complain. Its easy for the wrong kind of company to tune that out.
Mon 01 Jul | Leonardo Herrera | I strongly believe Mozilla is going to gain some market share. Probably not much, mind you, but enough to make webmaster's habits to change again. And if some site is using stupid and buggy javascript code that makes that page unusable for anybody except for those using the latest IE release, probably is not worth a visit. (hope my english is clear enough) Regards,
Mon 01 Jul | Will M | IE 5 and 6 have standards support that is comparable to Mozilla's. Each of the browsers have their shortcomings, but they do a good job supporting the basics: HTML, CSS and ECMAScript. I have never had to re-write a page that worked in IE 5+ to make it work in Mozilla. If you write according to the standards, anyone can see your web page, regardless of the browser they use (well, except for Netscape 4, which you actually need to hide your CSS from). Is it really that much harder to type 'document.getElementById' and it is to type 'document.all'? That right there will fix almost all of your Mozilla-IE incompatibilities, in my experience. And, the Mozilla team was even kind enough to provide web developers with Microsoft's proprietary '.innerHTML', and to mirror as best they could Microsoft's proprietary XML handling stuff. I hate to add to this horrible thread, but I felt the need to say something.
Mon 01 Jul | Ramón | Will. M. You are right. But it seems that most pages are written by idiots working in cheap consultories. There is not reason to use document.all. document.getElementById is supported in IE 5.x , Mozilla and easy to emulate in IE 4.x.
Tue 02 Jul | Lachlan | I'd hardly call that Mozilla commiting suicide. The owners of those sites, sure. Personally, I think and hope that Moz will gain a lot more browser share. It's a great browser.Especially with extensions like optimoz. It's like taking the things I loved about Opera and adding them into a kickarse (for rendering stuff) browser. Also, I believe that with more and more people switching over to CSS for site design that a lot of people who use browsers other than Moz will see inferior versions of the site. not unusable, but inferior. for instance my site. It renders fine in IE / Opera, but it only renders as it's supposed to in mozilla. It's perfectly fine for IE and Opera users, but Moz users get that little bit more. Also, once some users start to use the other features that differentiate Moz, I think a lot of them might start viral marketing for the thing. Stuff like the ability to block pop-up windows out of the box, tabbed browsing and mouse gestures like Opera but without the ad, themes even are all ways of Moz differentiating itself from the competition. On top of that, more extra projects for Moz enhancements will start to appear, such as the mouse gestures one, and people will be able to pick and match what they want in a web browser. I could of course be wrong about all this though.
Tue 02 Jul | Martin | Not *all* major spanish sites exclude Mozilla. Take a look at http://www.meliaviajes.com
Tue 02 Jul | DB | Hey guys! We've produced this incredible new video recorder! It has built-in Dolby 5.1, can fit 18 hours onto a 3 hour tape with no quality loss, washes the dishes, mows the lawn, but because we're anally retentive die-hards, it's Betamax only. Yes we know everybody uses VHS but Beta was much better technically, and we don't want to support VHS because, er, we wouldn't be 'different' enough then. Religious wars are soooo boring. They just go on and on and on and on until finally the zealots realise the rest of the world has moved on and left them behind.
Tue 02 Jul | Tekumse | DB, I wonder how can you be so stupid?
Wed 03 Jul | Robert Moir | tekumse, I wonder how you can be so constructive.
Wed 03 Jul | Tekumse | I rarely do this, but DB has missed the entire point of the conversation. There were no flames or religious wars in this thread and his post was compeltely offtopic with a touch of troll and flamebait.
Wed 03 Jul | Joe AA. | How was your response to him any different?
Wed 03 Jul | Tekumse | I should have known better but just couldn't help myself. I wish this forum had some kind of moderation.
Thu 04 Jul | DB | If there was, your reply to mine would have disappeared pretty quick I imagine. No flames or religious wars in this thread? 'It's only mindless rhetoric to you guys who feed at the Microsoft trough.' Just one example. My point was that it's utterly pointless creating something 'better' than something MOST people already use, if it has flaws that make it unuseable for many of them. You can bang on about standards as much as you like but the most important standards to the USER are de facto ones, not those dreamt up by those who are out of touch with what users actually want. Do please bang on about nothing in particular if it makes you feel good.
Fri 05 Jul | Joe AA. | 'Moderation' is censorship. Why post if you are only going to be censored? And on the news... 'today, just like yesterday, and it is predicted for tomorrow - everyone on the fog creek bulletin board was in complete agreement about everything' Yeah, right!!
Fri 05 Jul | simm_s | The fact that Microsoft can take a standard, alter it, and use their large market share to break applications that adhere only to the standard bothers me. The whole idea of locking people out of the web sickens me and should sicken anyone reading this thread. Ramón García makes a good point about Mozilla needing to support Microsoft standards from an engineering/market-share point of view. People should look at this from an ethical point of view as well.
Sun 07 Jul | Joe AA. | I really don't understand what you consider to be an ethical issue with Microsoft business practices. Their customers make them work, they are filling the desires of their customers. If Mozilla or anyone else wants to compete, they need to produce a better product. Not just 'technically' better, but better in the eyes of the customer.
PayPal, digibuy and friends | Wed 02 Jan | Alex Peters
I am considering selling some simple software products via my web site later this year and I was wondering what experiences people have had using the standard credit card transaction companies. I know Fog Creek uses Digibuy and when I brought CityDesk it was a very painless experience, but they seem to charge 14%. Is this typical? Anyone from FogCreek care to comment on how good a job Digibuy does for them? Anyone got anything good or bad to say about other firms?
Sun 07 Jul | Kelvin | I don't accept any payment from paypal I only accept payment from http://paydollar.cc
Sun 07 Jul | Kelvin |
Caffeinated Soap | Sat 06 Jul | Matthew Lock
Any coders tried this Caffeinated Soap to get started in the morning? http://www.thinkgeek.com/stuff/caffeine/5a65.shtml I use coffee and diet coke myself.
Sat 06 Jul | Sarah Tonin | 'I use coffee and diet coke myself.' Wouldn't that leave you smelling sort of weird? I use Ivory -- it's 99.44% pure (always makes me wonder what exactly constitutes the other 0.54%).
Sat 06 Jul | Matt Conrad | You're not the first to wonder, Sarah: http://www.straightdope.com/classics/a4_157.html
Sat 06 Jul | Picky | What about the last 0.02%??
Yet another proposal for defect free... | Mon 01 Jul | Joe AA.
Ok... Lemme ask: How long are we going to wait for Software Engineering (see the purdy fireworks display) to save the world of software development? Im serious. Engineering is about constructing something physical. The end result is something physical, it can be touched, weighted, evaluated objectively. It is engineered by observance of the laws of nature. The end result of software development is yet another abstraction. Abstraction runs all the way through software development. At the end, what do you have? Something that cannot be considered physical (pixel display?), cannot be touched, has no weight, and if you look at some of the other threads like the one about Word features - is never evaluated objectively. So, consider this: By a selective re-creation, art isolates and integrates those aspects of reality which represents mans fundamental view of himself and of existence. Out of the countless number of concretes - of single, disorganized and (seemingly) contradictory attributes, actions and entities - an artist isolates the things which he regards as metaphysically essential and integrates them into a single new concrete that represents an embodied abstraction. - Ayn Rand Anyone for a Software Artist mythology? Why not?
Mon 01 Jul | the cluetrain | Good god, where have you been? See any number of programming as art versus programming as science discussions during the past 20 years. Half the problem is people like yourself that didn't bother to read any of the previous literature then all of a sudden think you've discovered some brilliant fscking idea.
Mon 01 Jul | the cluetrain | lemmee finish. People objectively evaluate software all the time.
Mon 01 Jul | the cluetrain | and yet again..... What we have right now is a bunch of artists (hacks) that think they are above {engineering principles|software best practices|plain fscking common sense}. How would your proposal change anything?
Mon 01 Jul | yawn | 'and yet again..... What we have right now is a bunch of artists (hacks) that think they are above {engineering principles|software best practices|plain fscking common sense}.' seems unfortunate....have you considered hiring some computer programers instead?
Mon 01 Jul | the cluetrain | They are computer programmers damnit!
Mon 01 Jul | yawn | 'They are computer programmers damnit! ' ??? sorry, I must have misunderstood your previous post, I thought you said they were: 'a bunch of artists (hacks) that think they are above {engineering principles|software best practices|plain fscking common sense}.'
Mon 01 Jul | Joe AA. | I didn't claim to discover any bright idea. I spent the last 20 years having software engineering rammed down my throat like the rest of the world. Have you seen any real change in the failure rates? I haven't. Can you point me to any of the wonderful literature you mention promoting the art viewpoint, or are you just kneejerking at your conditioning?
Mon 01 Jul | the cluetrain | I haven't seen any real change because nobody fscking does it! Except NASA & a few Govt. institutions. And they have minimal failures. As far as doing your research for you: type this in google: programming as art versus science Also see: Mary Shaw 'Abstraction and Codification in Software Engineering.' She's from Carnegie Mellon though -- ya know, the uni that brought us the SEI.
Mon 01 Jul | the cluetrain | Sorry for being harsh... I'm a powerless developer that is suffering from mgt. AS I TYPE and I'm lashing out.
Mon 01 Jul | Joe AA. | No problem, I can take it. I was really interested in individual thoughts.
Mon 01 Jul | Ian Stallings | >How long are we going to wait for 'Software Engineering' >(see the purdy fireworks display) to save the world of >software development? From what? Is there some impending doom we all face if the amount of bugs doesn't decrease? I don't think our industry has anymore problems than any other fledgling industry in the past. The first cars were certainly not the standard for quality. They broke down, they stunk, they were expensive, etc. But as time progressed people got better at bulding cars, competing with each other using quality as a competitive edge. Those that could build better cars faster than others won out. As for your 'software devleoper as an artist ' argument, I partly agree. I would say that we are half and half. Equal parts right and left brain. We use left brain discipline to create software structures while using right brain creativity to come up with new ways to tackle problems. But this is no different from what an architect faces every day. They create structures using both left and right brain, building functional structures that also convey meaning.
Mon 01 Jul | Chris Tavares | Software development isn't an art. Right now, it's a craft - like woodworking. We may be quite creative in how we build our software, but the goal isn't to produce art for art's sake (well, not usually) but to make something that is practially useful. The goal of the 'software engineering' types is to take software out of the craft phase and into the industrial world, with repeatable processes, interchangable parts, and all that other good stuff. I think we'll get there eventually, but we probably need another 50-100 years.
Mon 01 Jul | the cluetrain | Don't be a dumbass yawn. We have people here that THINK they are artists. They think they are good, but really they aren't. They could use a dose of 'best practices' or whatever. They could definitely use SOMETHING. Surely you were clever enough to interpret my statement. But if not....
Mon 01 Jul | Rodger Donaldson | Of course, it may be an improvement for the end user if methods of industrialisation are applied to software development (or it may not; the end users inside clients of mine are notoriously uninterested in anything resembling more rigorous methodologies, lest it cramp their ability demand incoherant and condtradictary outcomes), but it won't be much fun for us craftsmen as we get turned into factory workers (with attendant shitty pay and conditions, with all our jobs shifted to the country prepared to impose the most horrible conditions on its citizens).
Mon 01 Jul | Nat Ersoz | Joe AA. Some questions for you, in regard to your question: Q 1: What's the difference betweern VHDL and C? Q 2: Why, after 6 months of development, can a team of 5 ASIC engineers write VHDL or Verilog, tape out, and then get an IC that 'bloody nearly works'? Q 3: Why does it take large software companies 10 years to write a windowing system that 'bloody nearly works'? Partial Answers: 1. VHDL and C. Well syntax of course. What they are describing obviously. While they may seems worlds apart, in an abstract sense, they are not. One describes hardware states, the other software states. Yet they are both descriptive languages for 'engineers' to create the executable machine. C compiles more easily (usually), and is vastly more 'simulateable' (sp?) which makes it that much more easy to to debug. Is this a good thing or a disease? 2. Some thoughts come to mind: . In ASIC land you get 1 chance to get it right, so you do it right the first time. . Test coverage. Test engineers in hardware land spend their career evaluating your design for 100% coverage. Every state gets covered, every logical gate input stimulated, every propagated output tested for correct behavior - whether that state was designed in or not. If your design isn't capable of 100% coverage, they'll persuade you to add in test busses and mutiplexers so that they can get coverage. The tools for hardware test coverage are expensive, powerful and they work. In an interesting twist, let's remember that these tools are written in 'C'. How ironic. 3. Who knows. I'll tell ya my impressions though: writing bug ridden software in Seattle seems to be business as usual. I thought that Redmond was a unique instance of not giving a damn, but its not. Its a cultural phenom which seems to take refuge in the lame notion of 'art and science' of computer programming. Makes me sick. It comes down to one fundamental, IMO: If you know the correct behavior, and you know you have a bug, do you fix it? Seems obvious, right? But nobody wants to debug everyone wants to design. Enough!
Mon 01 Jul | Marty Eichelman | > From what? Is there some impending doom we all face if the amount of bugs doesn't decrease? Doom? I hope not. But in our increasingly litigious society where everyone's looking for a scapegoat, software companies are more and more becoming the focus of public's ire. Referencing the recent calls for companies to be held accountable for bugs in the software they produce, these suggestions are only going to get louder. To anyone that produces anything from freeware to expensive commercial applications.. can you imagine having to defend your company in court on a regular basis due to the incompetencies that we all know exist on the user level? We all strive for defect-free software (at least I hope we do), but redefining the development process as an art as opposed to a science I fear would do more to mask a 'hack' than justify a 'genius'. And 'cluetrain', everyone has management issues, but no one appreciates a hot-head that insults rather than discusses. Perhaps you should take that 'train' to get a 'clue' about how to handle your present situation.
Mon 01 Jul | Mr. Adult | Joe A.A. == Bella the cluetrain == potty mouth Hey Joel, How about a minimum age requiremnt for these boards? Or maybe a small quiz that would ensure posters really are developers... Thanks,
Mon 01 Jul | Doug Withau | Some real reasons software engineers are not artists: 1. I look goofy in a black turtleneck 2. My wife would leave me if I grew a pony tail. 3. I will not sell my nice suburban home and move into a downtown loft. Never. 4. No one will buy 'programmer excriment in jar' 5. My code must look like something recognizable when it is finished. 6. Rich morons will not pay me to hang out with them because I am hip. I am not hip. 7. Most artists starve. Most programmers make more than the average US two income family. It has been a long Monday, so I am treating this question with all the respect it deserves. Sorry if I offend. To Nat: Have you done many ASIC's using HDL? In my experience it is not any easier than designing code. The cost of failure is higher so there is more reason to test. For most software, the cost of bugs is not as easy to account for.
Mon 01 Jul | the cluetrain | Sorry for offending you Mr. Adult. Yes, I am a real life actual developer. You think a non-programmer would be reading Mary Shaw?!!! As for the f-bombs, well, I did use the linux zealot official spelling! You should've heard how me & my boss were yelling at each other! Ahhh, the fun of a startup.
Mon 01 Jul | Ed the Millwright | Hi Nat, >Q1: VHDL vs C Imagine that every single statement in your C program is running concurrently. Imagine the synchronization issues you would have to deal with. Or that you have to think carefully about the capacitance as a result of wire lengths affecting rise and fall times of your individual bits. How would you handle it? >Q 2: Why, after 6 months of development, can a team of 5 ASIC engineers write VHDL or Verilog, tape out, and then get an IC that 'bloody nearly works'? >. In ASIC land you get 1 chance to get it right, so you do it right the first time. Nat, this is the main thing. You can expect the first metal fix to be free or at least expected and part of the cost. But after that it starts to get incredibly expensive. If you have to layout and remask a version, you're looking at $100,000-$500,000 each time you do that. There are almost always small errors, but often they can be fixed by changing the metal interconnect layers (a metal fix) which is not as expensive since wafers without the metal are set aside after each run for just this purpose. Still, your metal fix should be your last chance to get it right so you make sure you have fixed everything you can before doing this. I have heard that a typical chip goes through 8 revisions to get it right. I don't think this is true any longer. The first two chips I designed got it right on the second try. The last chip I designed was perfect the first time. How can we do this? Well Nat knows part of the answer: >Test coverage. Test engineers in hardware land spend their career evaluating your design for 100% coverage. Every state gets covered, every logical gate input stimulated, every propagated output tested for correct behavior - whether that state was designed in or not. If your design isn't capable of 100% coverage, they'll persuade you to add in test busses and mutiplexers so that they can get coverage. The tools for hardware test coverage are expensive, powerful and they work. In an interesting twist, let's remember that these tools are written in 'C'. How ironic. Actually Nat, none of my chips had 100% coverage in simulation and verification. But it got enough done to see that it would work. I absolutely hate doing the simulations. It is a massively dreary pain in the ass. But it has to be done because if you screw it up the company goes under. These are expensive projects and failure is lethal to the health of the company and to your career. I do have to write programs to generate and evaluate the testing and yes it's all done in C. But these are not complex programs -- it's the analysis to know how to do this that's the hard part. When that chip comes out of the foundry, I need to know for a fact that any failures whatsoever are subtle timing errors that the model failed to be able to predict. Anything else, it's my responsibility to fix before the 'program' is 'compiled' (to silicon). >3. Who knows. Here's the other thing Nat, everybody who is successfully designing ASICs is the absolute top of the line. None of this 'no degree needed' stuff. You can't do it without a degree. Now maybe your degree is in physics or even english lit (though I haven't seen that) but the sort of people who have the brains to do this always make it to college one way or another because in their youth they craved the companionship of other thinking people. It's OK to have sloppy thinking and a 'build it to see if it works' mentality when the cost of a build (compile) is a few cents or dollars but you can't have that when your cost of doing a compile runs in the hundreds of thousands of dollars. You have to know there are no errors in your code and be very surprised at the errors that do turn up. You certainly don't see errors in the silicon as a normal part of the process, you see that as physical evidence of incompetance. Regarding art vs science, chip design is an art in which the highest and most meticulous levels of craftsmanship are required. Getting this right requires the mind and attitude of a scientist. Think of DaVinci -- he was a great artist because he was a great scientist. He was interested in getting it perfectly right the first time and that he did.
Mon 01 Jul | Bill Carlson | We all hate buggy software. So, why do we keep using it? Usually, because alternatives are scarce, too expensive, or don't have the features we need. Software, like any other product, has cost/benefit tradeoffs. It costs more money to produce software with a reduced bug count. More QA people, better management, experienced developers, etc. These all cost money. I think most any company can dramatically reduce bug count. Just hire the top software person from NASA, let her hire who she wants to, allot a unlimited budget and a five year delivery date and accept that you're only going to get 1-2 LOC per day per developer. Unfortunately, the market hasn't voted for these expenditures. I want to buy to a car with the craftsmanship and features of a Mercedes and I only want to pay $12,000. It's good to want things, but not always realistic. A big-mac ain't going to be made with ground sirloin. One of my favorite software development sayings is: 1. Good (features, quality) 2. Fast (delivery schedule) 3. Cheap (cost to deliver) Pick two, cause you can't have all three.
Tue 02 Jul | Wayne Venables | 'We all hate buggy software. So, why do we keep using it? Usually, because alternatives are scarce, too expensive, or don't have the features we need. Software, like any other product, has cost/benefit tradeoffs. It costs more money to produce software with a reduced bug count. More QA people, better management, experienced developers, etc. These all cost money.' We all hate buggy software. So, why do we keep building it? I'm the sole developer on a very large application that's been developed over the last 3 years. It has no serious mission-critical crashing bugs; it does however have a few annoying bugs that rarely occur. It probably even has some bugs that nobody has found. It even has some dubious bits of design and some legacy code that does very little. I hate bugs. With a passion. I feel it reflects badly on me to have them in there. I also hate poor design. I have to LIVE with my design decisions (I like a clean house too). BUT... I have about 100 other (more important) things to do. I don't have time (money, etc) to redesign the poorly designed areas or fix the bugs that people don't come across.
Tue 02 Jul | John McQuilling | Engineering may not be the best model for software development. An engineer can build a bridge or chip without errors but can an engineer build a CRM system that works? The problem is that no one knows exactly what is needed for CRM, or word processing. There is no exact answer to many of the systems built today so it is not surprising that there are problems.
Tue 02 Jul | Ed the Millwright | Hi John, I agree with you on the bridge but not the chips. Chip development is aften done free-form nowadays, with features added in the middle of development because they seem cool to the developers or somebody at the time; this methodology if you can call it that it shares with software development but does not affect the error rate. In other words, it is _not_ the usual situation that the feature set, specifications and functionality of an ASIC are spec'd out in advance and then developed according to some master plan that is not diverged from. The design tends to be more of an evolutionary process. It's just the level and intensity of testing and the quality of the developers that is different. VLSI ASIC engineering is only 25 years old, whereas software development has been around for 60 years now. So ASIC engineering is even more of a black art or wild west scene than software engineering.
Tue 02 Jul | Ed the Millwright | I should also mention that another big difference is that most buggy software tends to be software that is being forced to run on a certain notorious OS platform known for its instability and complete lack of ability to hardwire exactly what sort of hardware the software is running on, or what other software might be running concurrently on the same processor, or even what versions of drivers can be relied upon being present. When you design hardware, you have total control over everything. OK, sure, someone else designs your cell library, but it is genuinely error free and you don't have to worry about other chips suddenly appearing on your PC board unexpectedly and doing unexpected things. The software side of things might be embedded systems programming where again you don't have to worry about viruses or the user suddenly downloading an incompatible graphics library into your toaster firmware so he can play pong while waiting for this bagels. Because of the situation on the PC platform, I personally believe that the software quality problem is insolvable, given the current constraints (software must run on unspecified hardware running unknown and unknowable state of OS and other programs). If hardware design had to live under the same conditions as PC software does, it would be full of errors too.
Tue 02 Jul | Hardware Guy | 'When you design hardware, you have total control over everything. ' Now *that's* funny.
Tue 02 Jul | jb | 'Ok... Lemme ask: How long are we going to wait for 'Software Engineering' (see the purdy fireworks display) to save the world of software development?' Maybe at around the same time that the requirements for software stop growing in scope at an amazing rate. I don't know about you, but the systems I'm working on are probably about 50 times as complex as they were even 10 years ago, and every time I start a project it contains a large proportion of new stuff. I expect that at the point where people are happy for new software to do more or less the same as their old software, and at which it can be made up of simply plugging together a few dozen components then it will work as you wish. There are few industries where we are asked to use new technologies to build a new bigger system, with different requirements, all in reduced time every time something is made. I think the question should be how do we do as well as we do, not why is it so hard. (Although that in no way means we shouldn't try to do better still) Also, people are willing to pay many millions of [insert local currency] for a bridge or something because they understand that absolute reliability is important, and they *expect* it to cost that much. Software could be much more reliable but people are simply not willing to pay anything like the amount that it would cost to produce. For example, I find windows to be very reliable in recent release, but there are still bugs. I'm sure that microsoft could improve it so that instead of coming across a bug once a month, you only come across a bug once every five years. But they'd need a whole team working on each part that currently takes one person then windows would cost $5000 per copy instead of $200 (not intended to be exact figures) and nobody would buy it. To sum up - people are getting the exact quality of software for which they are prepared to pay.
Tue 02 Jul | Just me (Sir to you) | 'I'm the sole developer on a very large application ' Does anybody else feel this is a contradiction?
Tue 02 Jul | blech | 'We all hate buggy software. So, why do we keep building it?' Perhaps because usually the customer is not willing to pay for it to be defect free (or as near as as is humanly possible)? Is NASA code good? Yes, of course, but theirs is a situation where not only are they willing to pay for it to be so, they damn well have to - the costs of losing a satellite, or worse a manned mission, are huge (not just the cost of 'replacements', also bad publicity and quite possibly a loss of budget as well). You only have to look at the discussion above about producing chips - the driver is cost, not whether the product 'should' be excellent quality. Don't worry, I'm going off on one again. My gf doesn't understand why I complain that the doors in our rented flat are cheap or that there is not a light switch immediately inside the front door of our building. The reason those things are wrong is because someone decided that it was 'good enough' and that they could make more a few pennies more by not picking up the extra costs. Its a sh*t attitude, and to be honest I'm pretty pig sick of it.
Tue 02 Jul | Ged Byrne | ------------------------------------------------------------------------- Surely you were clever enough to interpret my statement. But if not.... -------------------------------------------------------------- cluetrain Wow, cluetrain is even more inyourface than Bella. I can't wait for them to have an argument. Personally, I do agree with cluetrain. There are far to many Prima Donna programmers who think they are producing clever code when really theyre creating unsupportable code. Those of us who have to maintain all this 'art' have a very different view. I would argue that programming art exists - take the 5k competition http://www.the5k.org/ . I'd say that these entries are art. This entry is amazing: http://www.the5k.org/description.asp/entry_id=946 Its not very practical, though. Monochrome, unintelligble listing, tiny window. Sadly, too much commercial code is the same.
Tue 02 Jul | Ged Byrne | -------------------------------------------------------------------------- The reason those things are wrong is because someone decided that it was 'good enough' and that they could make more a few pennies more by not picking up the extra costs. Its a sh*t attitude, and to be honest I'm pretty pig sick of it. ----------------------------------------------------------------- blech Blech is right, the problem isn't unique to software. It happens whereever people try to do thing as cheaply as possible. Its not just the deliberate cheapstake decisions, either. Lack of quality control is there too. Last weekend I had an expensive clean up bill because my flats builder's couldn't be bothered to fit together two pipes properly.
Tue 02 Jul | blech | Ged - I don't mind the honest mistakes so much, though admittedly I haven't had to pay because someone failed to connect my pipes correctly (weren't they insured?). Anyone can make a mistake, it is the deliberate decisions to fsck someone else that I object to.
Tue 02 Jul | Joe AA. | Yes Ged, and I am tearing out the wall in one of the bath rooms now because the builder was too cheap to use concrete backer board and opted for plain drywall. --- I didn't post the question to generate an argument based on stereotypes of artists vs engineers. As a self-professed generalist, I have no problem stealing a technique from any profession as long as it helps me in mine. I have many problems with 'strict engineering' when it is applied to software. For one, it has been stated many times that one of the goals of this approach has been to use the least able in place of the most able by building in (or assuming, pretending) that the real intelligence lies in the dogma of process and not the individuals. The Ayn Rand quote, especially the second sentence, caught my eye because that is what I believe developers are expected to do. The variety and the changing of requirements and so forth mentioned in the other posts seems to help justify that belief. The 'requirements' process in software engineering seems to be lacking. I believe it is because requirements are supposed to be accepted as 'givens', and are driven through the rest of the process. One company I know of brags how something in a technical spec can be traced all the way back through various 'design' documents directly to a requirement. Their software product is extremely buggy, unstable, and composed of a large number of third party products. XP also advocates this approach, with the stories being independent and used in negotiations for scope control. My basic problem with requirements as independent entities ignores the possibility of something I don't really have a name for... I have used the term 'meta-requirement', meaning a requirement about the detail requirements themselves. A requirement that when implemented, fully supports any number of individual, and previously thought independent, requirements - so much that the detail becomes redundant, unnecessary. So enter the artist aspect - not as a stereotype of drunken paint slopping on canvas, a mindless hacker, or someone that has an unsupported image of excellence about themselves... but a person that can integrate seemingly unrelated aspects to create my meta-requirement. Yes, I believe we make our own bugs. I don't think it is due to cost-cutting measures or the willingness of what the 'user' will pay. In fact, I believe it is in the best long term interest of our industry to further cut both costs as well as bugs. Both 'real' art and 'real' engineering have created works that have survived without peer for centurys. Consider this in your replies, and please stop hammering the stereotypes. BTW... how many of you know that during the building of the Empire State Building, the engineers were designing the next floor while the current one was being built. So much for the argument that quality depends on a complete design up front.
Tue 02 Jul | Hugh Wells | I think good software engineering is art. If we look at the things society considers to be art, such as paintings, music, drama and literary writing, we see that they are the products of distinctive talent. They are things that only certain talented people can do, and which the rest of society admires and values. The distinctive characteristic is that they are manifestations of restricted talent. Using this criterion, I would argue that good software engineering is also art. There is art in assimilating a mass of competing requirements at the code level and designing a clean structure that accurately does all the things required of it and that can be easily modified when required. It's the difference between a million lines of code with multiple parallel implementations of the same concepts, and 1,000 lines of code that beautifully provides the same functionality in parameterised form. That's art AND software engineering. A few folks interpret 'art' as being mutually exclusive with quality, but I think it's the other way around. FWIW.
Tue 02 Jul | Wayne Venables | --- 'I'm the sole developer on a very large application ' Does anybody else feel this is a contradiction? --- Next time remind me to include 'relatively' and 'for a single person' when I say that!
Tue 02 Jul | Nat Ersoz | 'Using this criterion, I would argue that good software engineering is also art.' I'd extend that and say that 'all good engineering is art'. Like a 30,000 transistor ARM core, is that not as elegant (or more so) than a well written network driver? My bicycle, a Bianchi, IMO is a work of art. Beautifully machined and symmetric, yet it pales in comparison to some other Italian bikes. My commuter bike is ugly with fenders and grime. Poor thing. The point being that software engineering is not unique in this respect. Less is always better when function is the same or improved. Elegance is usually a metric of a job well done.
Tue 02 Jul | Ged Byrne | Joe, I agree with what you say. Personally I prefer to think of myself as Craftsman rather than artist. The problem I have with Artist is that implies something for its own sake - rather than fitness of purpose. I personally think that the best code is the simplist code possible to do the job - an idea emphasised by XP. Although I agree with most of the aims of Software Engineering, the one I disapprove of the most is the reduction of the coder to a manual labourer. The goal seems to be a division of labour - with the skilled architect designing the system and the programmer just a labourer.
Fri 05 Jul | Joe AA. | Art has never been produced for it's own sake. Well, maybe by the pseudo-artists. Music is also art. I read a study once... about what other professions would be good at programming. Musicans were at the top of the list, and the reason given was because they were capable of being creative within a structure. Don't know if that is true... no one can be creative without some sort of structure. Creativity requires constraints, otherwise it is just random motion.
Fri 05 Jul | Art Kreitik | > Art has never been produced for it's own sake. You're right. Michaelangelo's David? Not Art. Van Gogh's Starry Night? Not Art. Da Vinci's Last Supper? Not Art. Botticelli's Birt of Venus? Not Art. Coke bottle? Art. Empire State Building? Art. MS Windows? Art. The Great Pyramid of Egypt? Art.
Sat 06 Jul | Joe AA. | Artists create art for themselves, for their sake, not for the sake of the 'product'. Much like good engineers. Lousy artists and engineers slap something together primarily for the paycheck.
Java Book | Sun 30 Jun | Object beginner
Hi, If I want to start to programme in Java which book should I read ? Thinking in Java ?. And what do you thing about Object-Oriented Software Construction OF BERTRAND MEYER is it a good book for a beginner about object programming ? Thanks !!
Mon 01 Jul | James Ladd | I would read 'A quick trip to object land' to get a good understanding on OO. Of course its on Smalltalk and not java, but you will be a better programmer after reading it ;)
Mon 01 Jul | Sammy | When I leafed through it, I didn't like Meyer's OOP book. That's not a damning statement, it's just I thought he was blowing out of proportion too many well-known things. Maybe that makes it a perfect book for a beginner. My view of objects is that it's a collection of good notational techniques, rather than some all-important worldview. State is evil, so you have to use techniques to manage it. So you give objects a Purpose, arm them with personal functions, and control information like a madman. Really fun object systems let you add stuff at runtime, like data or object functions.
Mon 01 Jul | Just me (Sir to you) | I personally found 'Core Java' to be a very good introduction. While the early editions of this two volume set are a bit outdated with respect to the technology, I found them textually better than the more recent ones. This might however be because I am moving away from Java myself. http://www.horstmann.com/corejava.html
Mon 01 Jul | Paul Brinkley | I learned Java by reading O'Reilly's _Java in a Nutshell_. However, I already had 15 years of programming experience by then, including OO Pascal. YMMV.
Mon 01 Jul | Adam | The Java Cookbook is a great book becasue it contains examples of the msot common programming tasks that you want to do. While Thinking in Java is probably the best Java Text book (I've looked at quite a few) the COokbook is probably the best practical book on how to get things done in Java. Effective Java Programming is also a great book, but a little more advanced.
Tue 02 Jul | Daniel Shchyokin | The one by wrox press is my favorite
Tue 02 Jul | mark | I'm with that crazed canuck, Wrox Press 'Beginning Java Objects' by Jacquie Barker 'Beginning Java 2' by Ivor Horton I must warn you that they go into quite some detail and can be quite boring at times (especially Horton). Another good way to attack learning Java is Wrox's Beginning JSP. Here you get introduced to Java though web programming, making it slightly more interesting, because you're not doing all of this command line crap. Everything is browser oriented. They cover jsp, JDBC, and JavaBeans in an easy to read package.
Tue 02 Jul | Nick Stiles | As a beginner I really like the Deetle and Deetle Java programming book. A little expensive, but well worth it.
Tue 02 Jul | Nick Hebb | About a month before I was planning to take a Java class, I came across Beginning Java by Herbert Schildt on sale for $10. I thought what the heck and grabbed it. I loved that book. It was very 'for dummies' and would never make it on anyone's list of Java books. But I loved it anyway. It's clearly written, uses simple language, and is full of explanatory ballons and bulleted lists. After every few sections there's a mini-quiz and another longer one at the end of every chapter. I was able to finish it in a week, reading only a few hours a night. Then, I put it on the shelf, moved on to 'serious' Java books and never looked at it again. Even though the content was light, skimming through it quickly and understanding everthing that was written helped me grasp Java that much more quickly in the long run. Sometimes it's nice to give up the pretense, and settle for a true entry level book when you're new to something. For more 'serious' entry-level books, I liked the Cay Horstman Core Java books, and Mughal's Java Cert book (never mind the cert part, it's just a well written book that goes into a lot of detail.) When you're unclear on something, check the on-line Thinking in Java for a 2nd reference and the JavaDoc pages at Sun.
Wed 03 Jul | Joe AA. | It's a funny thing about Herbert Schildt books... people either love them or hate them - no inbetween.
Wed 03 Jul | Sammy | I had a copy of Schildt's annotated C standard, the famous 'Bullschildt.' But it was actually cheaper than the standard, so no prob ignoring half the pages. I hear the other books aren't as disastrous.
Sat 06 Jul | anon | I have Schildt's 'C: The Complete Reference' and I've found it pretty useful. It seems to be pretty heavily bashed on the Internet though. What is the major complaint people have about that book?
Prototype Sandbox | Fri 28 Jun | David Blume
I made a prototype sandbox for my 1 1/2 year old daughter. But since Im a programmer, not a carpenter, the sandbox is the computers keyboard. http://home.earthlink.net/~daliblume/Download/Maddie.html The intent is that if this is the only application running (such that Alt-Tab does nothing), the QUITWORD and Ctrl-Alt-Del are the only ways out of the sandbox. First: Youre all welcome to the program, although you wont want it unless you have a kid just the right age. Stricted disclaimers in place, of course. Second: If I miss my intent for the sandbox, or you have other criticisms, please let me know. I expect to release version 1.0 in a week or two.
Sat 06 Jul | David Blume | Version 1.0 is out. Maddie took a nap today, and I got a little programming in. http://home.earthlink.net/~daliblume/Download/Maddie.html Anybody who wants the source (such as it is), please email me. (Evgeny Goldin, hope you read this. I don't know how to get it to you.)
typedef is evil, and other truisms | Thu 27 Jun | Nat Ersoz
From LinuxJournal, kernel modules style: =========== typedef Is Evil typedef should not be used in naming any of your structures. Most main kernel structures have no typedef. Using a typedef only hides the real type of a variable. There are records of some kernel code using typedefs nested up to four layers deep, preventing the programmer from easily telling what type of variable they are actually using... Never define a typedef to signify a pointer to a structure, as in the following example: typedef struct foo { int bar; int baz; } foo_t, *pfoo_t; ========== So true. What else is evil? typedef unsigned long DWORD; Oh the insanity! A word, prior to MSFT new math, was a machine type, in 286 land 16 bits, in RISC land 32 bits. Now we have code littered with meaningless DWORD. Pittiful. char *lpszMyString; Hungarian crap. Pathetic! long pointer to string, zero terminated. Arent all ANSI C lib calls based on null terminated strings? (redundant), long is obsolete, and its not a pointer to string, its a pointer to char. Just plain wrong an lame. #define IN #define OUT Lame, lamer, lamest: int func( IN int x, OUT void*y ); x is non mutable to the caller, so IN should leave you scratching your head - huh? OUT?? Well if it were not to be modified, then use const, otherwise its assumed it will be modified. Disgusting. I could go on... but that felt good...
Sat 06 Jul | KJK::Hyperion | Sometimes I can't believe at how some people can hate something that they just don't understand... A double-word being two packed words, where each word is two packed bytes, is a convention. You can cry and rant as you like, but Microsoft didn't invent this. Blame who used this terminology first. typedef'ing structs: I won't even comment on this. And I think that Linux kernel hackers are the least qualified people to teach good programming practices. typedef'ing pointers to types: the explicit pointer syntax is only used to mean a paramater 'passed by reference'. So, PCHAR means a C string, while * CHAR means a char-sized buffer that will be filled with a character. Get it? IN and OUT: IN means the parameter is only read and left untouched, OUT means that the parameter will be written to, *but its original contents will be ignored*, and finally IN OUT means that the parameter will be read from *and* written to. Try to express that with 'const'. You also forgot the prototype macro OPTIONAL. OPTIONAL means that a zero can be passed for that parameter, and it won't affect the function. See, it's not that 'lame'. It's consistent, it makes sense. Especially for a (fairly) language-independent API like Microsoft's.
Formal software development book | Wed 03 Jul | Tayssir J.
Hi, does anyone with experience in formal software development know good books to read on the topic? Im eyeing the Sannella & Tarlecki book, which seems to start from the basics, but it wont be out for at least another year. http://www.dcs.ed.ac.uk/home/dts/book/index.html Thanks for any knowledgeable help.
Wed 03 Jul | Nat Ersoz | 'Agile Software Development' by Cockburn.
Wed 03 Jul | Tayssir J. | I just looked at the Agile Manifesto, and I'm more looking for 'formal methods,' like proving correctness. A fundamental book, that explains stuff like category theory Sorry if I wasn't clear!
Thu 04 Jul | Andrzej Kocon | A subtle point: are you interested in the so called 'a posteriori verification' (i.e., 'putting the cart before the horse'), or in any subject to make a degree with, or in the formal techniques of *deriving* correct programs? In the latter case, Dijkstra's 'A discipline of programming', Englewood Cliffs, N.J.: Prentice-Hall 1976, is still a good start that illustrates the point. See also http://www.cs.buffalo.edu/~rapaport/451/progver.bib.pdf for a bibliography (esp. #8).
Thu 04 Jul | Tayssir J. | This isn't for a degree, but for my own development. Basically, I would like to know how to come up with a good notation for things, how to reason (with rigor) with it, and at some point I can translate it into whatever language I implement with. Of course, maybe that's bassackward. I'm a formal methods newbie. ;) Thanks for the tips, by the way. I'll order the Dijkstra book, but too bad Colburn's Program Verification book is $350 at Amazon.
Thu 04 Jul | K. Ĺkesson | If you are interested in formal issues of concurrency then I think that 'Concurrency: State Models & Java Programs by Jeff Magee, Jeff Kramer' has a good balance between theory and practice.
Thu 04 Jul | Andrew Simmons | I'd second the Dijkstra recommendation. I don't know if it's still in print, but there's an excellent and slightly gentler introduction to Dijkstra's ideas in 'The Science of Programming' by David Gries. It's also worth looking at 'Programming from Specifications' by Carroll Morgan, which is available on the Web at: http://web.comlab.ox.ac.uk/oucl/publications/books/PfS/ If you're interested in concurrency, check out 'Communicating Sequential Processes' by CAR Hoare, and have a look at: http://web.comlab.ox.ac.uk/oucl/publications/books/concurrency/
Fri 05 Jul | Peter Ibbotson | Formal correctness proofs are interesting stuff, Richard Bornat (an old lecturer of mine) is heavily into this stuff see http://www.dcs.qmul.ac.uk/~richard (several other members of the dept. such as Peter Landin were involved in the early days) http://www.dcs.qmul.ac.uk/research/theory/ has a better page for this stuff. It's worth pointing out that our primary first year computing course consisted of proving programs written in ML (IIRC it wasn't exactly ML but some bastardisation of it)
VIM | Wed 03 Jul | Peter Larkins
Id like to be able to send end recieve VIM emails from VB6. That simple.
Wed 03 Jul | wuh? | Yes? And?
Wed 03 Jul | Joe AA. | I prefer the VIGOR emails myself.
Wed 03 Jul | Greg Kellerman | Sometimes I think myself a Putz. Then I read something like this. I feel much better now.
Thu 04 Jul | Simon Lucy | Oh I missed this, I was busy trying this new penile extension I got in my email.
Thu 04 Jul | Ged Byrne | I'd like to transfer money from Bill Gates account into mine, without leaving a trace, in VB6. That simple.
Thu 04 Jul | Hackers R not us | Ged - that's trivial. I've quote the necessary code below. I hope you get to read it before Bill's lawyers have it removed.
Thu 04 Jul | Leonardo Herrera | Damn, I've whacked this damn monkey about ten times, and still haven't received my prize. Perhaps if I try again...
Fri 05 Jul | Ged Byrne | Wahay, Thanks hacker. Now I'm richer than Bella!
More posting, less not posting, please! | Tue 02 Jul | Mick Roranis
So I tell all of my friends about this great site called Joel on Software. Now its never updated. What are you trying to do, make me look like a fool?!
Tue 02 Jul | Joe AA. | Ok, so who is this fool and who forgot to send him the memo about not posting? HA HA HA!!
Wed 03 Jul | Paul Brinkley | Joel has a job. The job is not 'columnist'. I suspect he writes when he (a) has time and (b) has something interesting to say. He could probably write an article every day, but then it would be fluffier, less distilled, and the reader would have to look harder for the good bits.
Wed 03 Jul | Mick Roranis | Yeah, so, anyway, I still want more posting, and not in Hungarian. MORE MORE MORE!
Wed 03 Jul | Joe AA. | Come on Mick... you got simplified Chinese also!! Get a grip!
Wed 03 Jul | Mick Roranis | Yes! I love simplified Chinese! I'm using it right now!
Thu 04 Jul | Ged Byrne | To be honest, I keep coming back for the lively discussion rather than Joel's postings.
Thu 04 Jul | Just me (Sir to you) | Articles provide discussion focal points. Of course, if you mainly want to chat about H1B or M$uX, everything is fine.
Fri 05 Jul | Ged Byrne | To be Honest, I keep coming back despite the M$uks and H1B postings.
Fri 05 Jul | random java drone | The extreme difficulty of sniping at M$FT is that they seem to treat their employees very well, but by game theory you simply must attack the monopolist. By most measures, a bad company is one that is terrible to employees and kills wildlife. But there is still a need to pushback M$FT hard.
Software Errors Cost Billions | Fri 28 Jun | David Blume
(In a recent Reuters article...) In other news: Vehicles Kill Thousands, and Water Drowns Hundreds, and Worlds Children Cost Billions Not to mention gems like, software users contribute about half the problem, where the stat could easily be, 95% or 10% depending on how you define software error and problem. And, Currently, over half of all errors are not found until ... during post-sale software use. Cripes! When do these auditors start counting bugs? In pre-alpha, alpha, Beta? Not at release, because then the stat should be, all. Over half?! Ive released much software, and I have roughly 20 post release bugfixes, out of hundreds and hundreds of prerelease bugs. USDoCs NIST, indeed. What pure tripe. New headline: NIST Wastes Money. Ahhh. Fun rant. Have a nice weekend, all!
Mon 01 Jul | Bella | Software itself costs maybe trillions. What's worse?
Wed 03 Jul | X. J. Scott | java drone, Thanks for posting the location of the actual paper. Over 300 pages but 125 of them are appendices. Anyway, there's lots of interesting stuff in there. First I make the observation that the numbers throughout the report are largely wild speculative guesses. And the conclusions are more random speculation. I wasn't even sure if they were or were not saying that fixing errors was cost-effective! But I did like this one hard number: 'In 2000, total sales of software reached approximately $180 billion. Rapid growth has created a significant and high-paid workforce, with 697,000 employed as software engineers and an additional 585,000 as computer programmers.' The workers were further broken down elsewhere: 'Computer programmers 585,000 Computer software engineers: applications 380,000 Computer software engineers: systems software 317,000 National total 1,282,000' Now not all programmers work on software that is *sold* -- quite a few of them work on projects for the use of the company they work for. But if every last programmer was working on software that is sold than each one generates $180 billion / 1,282,000 = $140,406 worth of sales revenue. Hm, that's not much so it must only be a small fraction of programmers that are working on for-sale software. Anyone know how many? But then again that $180 billion doesn't even begin to represent the cost savings that the software purchase represents. When my mom worked at general dynamics, the art department took a team of 20 six months to produce a 200 page manual. This involved several hundred thousand dollars worth of printing and photographic equipment as well, though that is spread out over several projects. Using MS Word, it takes me less than a month to do a 200 page manual singlehandedly. Total cost of equipment - maybe $1500. And $200 for a copy of MS Word. So because of software, a $130,000 1965 job (in 1965 dollars) now costs a few thousand 2002 dollars. Those dollar amounts are a result of the programmers too, not just their trivial $180 billion in actual sales. Anyway... About that 1.2 million total programmers. That's not enough jobs for everyone in the US to live off of. So the idea that we are becoming an information economy and we don't need to manufacture stuff anymore, I think is false. Also, didn't I see somewhere that the total number of unemployed and underemployed programmers in the US was OVER 1 million?? Why are we even bothering to fund engineering programmers at public universities -- it's obvious we have a massive oversupply of them and that is depressing wages.
Fri 05 Jul | random java drone | Oh yeah, note that the method they use is calculating the cost of fixing bugs in a waterfall model. Bugs found later are many multiples more expensive then earlier. This is precisely what Agile-type engineering methods are designed to counter.
Fire and Motion | Sun 06 Jan | Joel Spolsky
Discussion of Fire and Motion http://www.joelonsoftware.com/articles/fog0000000339.html
Fri 05 Jul | Nitin. | Hello! This is my first message to this board. I am a Masters student at a not-so-reputed-but-not-bad-enough-to-make-a-big-hit University. I am doing my Summer Internship in a big company and there have been days similar to what Joel writes. Frankly speaking, Exactly the same! The only difference is that this is the beginning of my career and hence such days freak me out completely. The confidence level drops tremendously and sometimes I begin to doubt my existence in this field. I am happy to read this article not because it gives me an excuse to continue wasting time, but it does give me a reason to 'think' that 'the time wasted is wasted'. I can 'still plan' and go ahead. I have my full appreciation for this article in particular and other articles in general. I am reading all the articles in the archive! Best, Nitin
Microsoft shares Hotmail users data without asking | Wed 03 Jul | Sam Wong
Link here: http://www.theinquirer.net/02070203.htm Interesting story.
Wed 03 Jul | Robert Moir | * old news doesn't become new and interesting just because you / the inquirer didn't notice before now * slashdot is two doors on your left.
Wed 03 Jul | Ged Byrne | Microsoft aren't even leading the way. Yahoo did exactly the same thing ages ago.
Wed 03 Jul | Tekumse | Greg, and that makes it OK?
Wed 03 Jul | Ryan | No it doesn't make it ok. It just makes them the same as many other large corporations that house valuable private data and sell it. Find companies that have strict privacy policies and adhere to them. I know, it is hard to do though, and sometimes we have no choice but to vote for people that support opt in legislation. Ryan
Thu 04 Jul | Ged Byrne | No, I stopped using Yahoo back then. I'm saying its old news. 'Big Companies try to make profit, film at 11.' Personally, I've stopped using Email. I do most of my correspondance through web discussion boards.
Thu 04 Jul | David Clayworth | I'm not sure of my facts here, but if you can find a provider or hotmail equivalent which runs out of the UK, I believe that it is illegal for them to pass on data stored on computer without your knowedge. Anyone confirm?
Thu 04 Jul | Dunc | Sam, It's not interesting because it's written by an ignoramus. The 'privacy' checkboxes are to do with the Passport autentication system. By selecting them you are granting other Passport sites that you VISIT AND EXPLICITLY LOG ON AT the ability to get your address when you do so... that's all. ------------ >>Microsoft shares Hotmail users data without asking >>Link here: >>http://www.theinquirer.net/02070203.htm >>Interesting story
Usability of Printer Friendly Versions | Tue 02 Jul | RmH.
I was recently reading an article on a web-site which provided a Printer Friendly version, which I was viewing. In the article, there were several pictures (thumbnails of diagrams), with the caption below Click to view larger image. I sent feedback to the webmaster of the site telling them that on the Printer-Friendly page, the pictures should be the full size (larger) pictures, so that when I print them (which, I had assumed, is what the printer-friendly version is for), the diagrams are large enough to read. This is the response I received: The purpose of our printer-friendly version is to give our readers a compact version of the article. Including the full-size images as part of the printer-friendly version would prevent this (and Im sure we would receive plenty of complaints!). We want to give readers the choice to print out the full-size images separately only if they need to. My response to this is that the printer-friendly version is to give a *COMPLETE* version of the article (so that it could be printed!), not compact, and that I didnt think people would complain if this is done. I dont want to have to print each individual diagram! What is your opinion? Would you want full size pictures to be displayed in the printer-friendly version of a document, or do you like the thumbnails? NOTE: I understand that there is a place for thumbnails, but in the technical document that this was, the pictures are just diagrams, and the full size pictures would not be too large to place in the document. ALSO: I dont intend to bash the site, I just wanted to get other opinions.
Tue 02 Jul | Ryan | Printer friendly usually means without all the banner ads and pictures. Friendly cause it doesn't take a ream of paper and a barrel of ink to print.
Tue 02 Jul | Walter Rumsby | I would agree with your reading - it's just a matter of completeness, but most sites don't go the extra mile. Alternatively the could provide thumbnails in the body of the printed text and full size images as appendicies.
Tue 02 Jul | Nick Hebb | I know this doesn't address the usability design issue, but if you're using IE there is a way to get them to print with the document. Click Print from the File menu (not the toolbar icon), then select the Options tab from the Print dialog. Under Options, check the 'print linked documents' box. The usability of this, of course, depends on how many links there are on the page.
Tue 02 Jul | Rikard Linde | When pictures contribute to the content I would want full size pictures to be displayed in the printer-friendly version of a document. However if the pictures are there for decoration (the way Joel sometimes use them) I'd like them removed from the print- out. Considering that the pictures in the document you refer to were not just decoration they should have been printed full- size.
Wed 03 Jul | John | A frequent problem I have (using Netscape) is when a supposedly 'printer-friendly' version is perfectly formatted, but opens in a popup with no menus. The right click menu from netscape has no print option, meaning that the page may be printer friendly but it's just impossible to get it to the printer. Of course it's usually possible to find the page address and open the page in a new window, but my point is that the average user should not need to know this.
Wed 03 Jul | Rob | A couple of ideas to make printer friendly pages more user-friendly, that I have seen the work well.
1. Open the Print menu option (www.slate.msn.com does this when you click on their printer friendly form the menu at the top of the document, (I think that it even works with Netscape 4.X, don't remember for certain, and don't have it on this box))
2. Create a new open window using JavaScript, framed so that the user can see the page that they opened from.
3. Put at the top of the page instructions on how to print, (Click the printer icon or press Control+P, etc) and tell the user how to close the window.
4. Use a decent font on the text, ie don't set it to 8 point something
Thu 04 Jul | Erik van Linstee | It isn't (always) necessary to have a specific link to get to a printer-friendly version. Most pages these days use CSS for at least some formatting. The same CSS allows you to specify alternate style sheets for, amongst other things, a printer. This way the browser will apply the alternative style sheet when the user sends the page to the printer and no other manual intervention is required. Erik
Teaching the wife how to use a computer | Tue 02 Jul | ChiLambda
Im trying to teach my wife how to use a computer (with Windows 98) for general-purpose. For those like her that have no experience whatsoever with computers, much less a Windows-type interface, how do we begin teaching them to be proficient in things we don’t even think about anymore? What would be your lesson plan? At first I assumed that this would be an easy task, but as I started on the basics with my wife I realized that I am teaching her a new paradigm. Things like copying and pasting, understanding Windows Explorer, formatting a Word document, adding a new e-mail address to the address book and scanning a photograph actually require many, many choices, which can be frustrating to the new computer user.
Tue 02 Jul | Albert D. Kallal | This is a excellent question! You have many things to start with. Perhaps the best start is solitaire. You can click, double click, and can even drag and drop a card. I would startup with solitaire. How to find it. (she will learn the use of the start menu here!). Then how it works. The next thing I would teach is the web, and surfing. The reason for this is one of motivation. The web is so cool, and she can pick any subject she is interesting in. Get her using a search engine, and again the key is enjoyment here!. That is good start, and will keep her busy for hours. After the above two, then you might start on email Word processing is most useful...but I would start with solitaire as it does not require typing skills! So, first find something that does not need typing skills, and then browsing the web (again, little typing is needed). There is also a ton of beginning books etc for new users. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Tue 02 Jul | Blah | Why does your wife have time to play with the computer? She should be doing the ironing and cooking your dinner!
Tue 02 Jul | Nat Ersoz | I let my kids teach her...
Tue 02 Jul | Jutta Jordans | In once gave Windows usage courses for housewifes from the neighbourhood. It was a lot of fun, but I had the same problems you describe: Where to start? I settled for concentrating on the things they wanted to DO with the computer (like typing a letter for example, or sending and receiving e-mail). Windows always gives you multiple ways to do things. That is nice. It is also totally confusing for a beginner. So if you show a way to open a file in Word, for example, show only one way at the beginning, like always use the toolbar button. Do not bother to explain that there is also a menu entry doing the same thing or that you can also drag and drop files into word or that you can also doubleclick on the file in the explorer. Do not change the places where files are stored away from the default folders (My Documents). Looking for files on the harddisk as long as you are not familiar with the file system and using the explorer is awful. Leave it for later. Have fun,
Tue 02 Jul | guy | have you tried to teach her to drive? best solution in both cases, pay someone else to do it.
Tue 02 Jul | Jan Derk | - Ask what she wants (email, browse the Internet, type and print letters) - One step at a time - Get some good books My mother started to use a computer a few months ago (her only hardware requirement was a non-beige flat screen). It was an interesting experience to say the least: 'You have to press that button on the white box to switch the computer on. No, you don't use that same button to switch it off.' I was impressed with the quality of some of the books for absolute beginners (many of them are targeted at seniors). They explain very well with lots of pictures how to perform standard tasks (starting the computer, moving/resizing windows, sending an email) step by step. The important thing here is that the book is covering exactly the same system that the user is working on. A book for Windows 98 on a Windows XP system will not work (or you will get asked/called a lot when that button in the book isn't in on her system). Also WindowsXP is really good for absolute beginners. Having the close cross in red makes it much easier to find. As much I hate the My Documents and My Images folders, it really helps users that are confused by the file system. You know when they are ready for the next step, when they ask for it. And yes my mother is addicted to solitaire too.
Tue 02 Jul | Linus Torvalds | I would recommend that you introduce your wife to Linux. GNOME 2.0 was just released and its usability has really improved. I think it surpasses Windows XP and Mac OS X combined. Plus most Linux distributions include so much free software, she'll probably never need to worry about installing any other applications. But if she does, it's very easy to just do an 'apt-get mozilla', for example.
Tue 02 Jul | billg | Yeah? My wife can beat up your wife.
Tue 02 Jul | Joe AA. | Big deal... my wife can beat up me.
Tue 02 Jul | Dustin Alexander | Actually, I'm in much this situation with two of my clients. They recently purchases a POS system from us and we installed the computers and the network for them. Since they didn't have much money, the choice was made for them to try Linux and the new KDE [3.0]. So far they love it. After introducing them to a few details about how to treat the systems [Care and Feeding of Linux Boxen] and how the mouse clicks work, I had one of them customizing the look and feel using themes and the other playing solitaire and minesweeper. In my opinion, getting them addicted to games was a good idea, as their technical skills seem to be increasing very quickly. My goal is to have them recompiling their kernel in two years or less.
Tue 02 Jul | Bella | There are tons of 'windows for dummies' books and multimedia tutorials. Your time is best spent starting her off on one of these. This will also prevent fights and yelling, if youre the impatient type.
Wed 03 Jul | Gary 07/03/2002 | Keep it simple for her by ensuring any shortcuts she is unfamiliar with is not cluttering up the desktop. Show her how to access the programs/services from the Start button. Let her do this at her own pace (of course with you riding shotgun). Giving her a cookie when she is finished is optional, but make sure she can take a joke - run and duck if she can't.
Thu 04 Jul | Yes, I know I shouldn't bother | Dear billg, Mrs Torvalds was Finland's karate champion for several years
Whats a little requirement between friends | Mon 01 Jul | Jack lives over there ->
I recently had a disagreement with my boss on what requirements analysis and functional specification should document. I’d like to discuss my thoughts and situation and see if I’m not being too pedantic. Personally I believe that a requirements analysis should state _exactly_ what the client would like the application to do. If at any point the developer creating the functional specification is confused as to what goes where then the requirements doc isn’t complete. For example, Big Boss Bill at Cuppa Joe’s wants a simple “form” developed that he can send to all his staff to find out exactly how they have their coffee. They will fill in this form and send it back to be collated into a single repository which he can use to generate a report. The following will deal with the “form”. After talking with the Big B the requirements for the “form” include the following information. It needs to run on everyone’s PC without requiring the installation any 3rd party software, should gather the persons details (name, location, email) and their coffee particulars (coffee brand, quantity, sweetener type (brown sugar, white sugar, honey, sucrose, sweet n light), quantity, creation steps). You may have noticed that there’s a lot more information that could be added here, but we’ll leave it at that for the moment. In basic terms this information will then placed in the requirements analysis document using number bullet points for each requirement which is then signed of by the Big B and the project manager/business analyst/you get the picture. The functional spec will be developed from this document. It will document how the requirements set out in the requirements analysis (identified in this document by the requirement number) will be implemented (what application are you using, what does the form look like, what fields are in the form, where are the fields placed, etc). Now, using the previous example, the Dev’s just finished his functional spec with all requirements having been met and documented, had it signed off by his project manager, and created revision 1 of the application. When the Big B sees revision 1 he asks why there isn’t anywhere to enter the fact that he adds a splash of full cream milk. Doh! From here the requirements analysis gets modified to reflect this additional data. This again gets signed off, the Dev modifies his func spec and hey presto revision 2 of the “form” is born. My view is that the requirements analysis is wrong. If it had correctly detailed that this piece of data needed to be gathered then the rest would have followed. My boss’s point of view is that the requirements analysis document explains basic top level requirements. The Big B wants an input sheet for gathering information that needs to run on everyone’s PC without requiring the installation any 3rd party software, a database for storing information and crystal report for reporting on the collated data. Information pertaining to what data is to be collected should be documented in the functional spec. Am I totally insane? Do I expect too much from a requirements analysis and too little from the functional spec? Dazed and Confused.
Tue 02 Jul | Wayne Venables | Being fresh (relatively) out of university on this topic, I'd have to add that you are correct. Requirements should detail 'everything' including the 'details' (the what). Functional spec should be the high-level implementation details for the requirements (the how). However, if you take it too literally then you spend alot of time writing documentation and very little implementation. If the client is non-technical and/or this is something entirely new for them. They don't know what to expect and you'll probably get only 50%-60% of the 'detailed' parts of the requirements out of them (maybe even less, depending on the size and complexity of the details). Your boss is essentially cutting that corner; he's skipping including the messy details in the requirements spec. You know it's going to be incomplete or incorrect anyway, so delay the messy details until later. Since your building a desktop application with (most likely) a quick turnaround for changes and speed/ease of getting out prototypes I don't disagree with your boss. It's a trade off between documentation time and built/installation time. If your building a huge application with a costly implementation you need to get as many requirements as possible (it's costly to do otherwise). The smaller the application the more the scales tip the other way. But then that's just my opinion... ;)
Tue 02 Jul | Big B | Some people will say that there is no difference between a requirements document and a functional specification. It just depends on which part of the country you come from. Inadequate requirement analysis is extremely common. You should appreciate your responsibilitiy as a spec writer to think critically about the requirements from Big B and question anything that you think might be wrong. You need not be a coffee expert to realize that some people might use cream. The three most likely places you'll discover inadequate requirements analysis is when writing the spec, writing the code or during testing. It really doesn't matter what you think constitutes a requirements document within your enterprise. What matters is that the real requirements are discovered as early as possible, i.e. before the code is written. That away, you'll write the right thing the first time, on time and on budget and everyone will be happy.
Tue 02 Jul | Jack lives over there -> | Wayne, thanks for your input. I understand what you're saying about trading off detail for certain projects and it's certainly true that a requirements doc will rarely (if ever?) achieve a 100% hit rate, but you can't blame the client for not being able to deliver the requirements to the dev's satisfaction. I would think that this has a lot to do with the person asking the questions rather than the person producing the answers... there are no bad students only bad teachers? I'm currently developing software for technical tasks which few people outside of the product line departments within my company have more than a basic understanding of (I have almost zero unstanding). It's not part of my role to know what they do in detail (there's way to much info for that), but it is part of my role to get the information I need from them. That's the biggest reason as to why the req analysis needs to be as detailed as possible. Still dazed...
Tue 02 Jul | Simon Lucy | This is one of my favourite bits. When you say its not your job to know the details you're wrong. Its exactly your job to know those details, respect the domain experts in that department and use them properly. Don't interview them, people forget half what they really know when its a direct question. Learn how to gather information without directly taking notes, have conversations. The majority of absolute measurable information is usually in the forms, its the way those forms are used and misused that is important. Don't underestimate the resistance of people to being told that some analyst is going to specify a system that they'll use. They've probably been burned a number of times already. Give them a true sense that they can be involved in the specification and use of this system, you really have to become their representative to management. And finally never obfuscate or lie to them, if you don't know tell them.
Tue 02 Jul | Jutta Jordans | > I would think that this has a lot to do with the person asking the questions rather than the person producing the answers... there are no bad students only bad teachers? Well, up to a certain point you are right, I guess. If the customer is not asked precisely and is not informed about what kind of input is needed, there is no way she can provide proper requirements. But this asking the right questions is only part of the story. In many cases the customer really does not know what she wants from the start and, what's worse, does not want to spend too much time thinking about it. It is so much easier to wait for an output and then criticize it than to think beforehand. Sometimes this is not a bad approach, either, as long as both sides know (and constantly keep in mind) that the first thing the programmer produces is a prototype, not the attempt on a finished product. And the second and maybe the third also and then we might go for the real thing. If the customer wants the resulting software to act as she has it in mind, she has to spend time on communicating those thoughts to the developers, either right from the start or in intervals over a longer period of time. It requires work on the side of the customer. It is important to make that clear from the beginning. Asking for a specific software to be build is not like ordering a new washing machine from a catalogue. There is work involved on both sides. (This is true for external customers as well as internal, like the sales department or whoever is giving the requirements for a from-the-shelf product). Of course I love precise specifications from day one. It's programmers paradise. But I can also live with the prototype approach, as long as I know that what I am producing right now is a prototype. What really drives me mad is when I (and the customer, too) think that I have all the input I need, build something I fall madly in love with, and then the customer tells me that this is not what she meant from the beginning. Even though I know this problem and try to avoid it from the beginning in the projects I am involved in, it normally does not work. The main argument seems to be time: 'We do not have time to do a prototype first, so head for the real thing straight away.' Needless to say that it does not work, because we end up with a 'real version' that is treated as a prototype anyway and we could have saved a lot of time planning it as such from the beginning. Sorry, that was a rather longish post, have fun,
Tue 02 Jul | Simon Lucy | I loathe and detest prototypes. They give the impression that stone pixies have chiseled the thing out, that the app is done and dusted since, hey it looks like it works. Prototypes are millstones, leave them to grind corn not hang round your neck. If you ask a carpenter to produce a bookcase (a very expensive bookcase), do you expect him to provide an almost working model? Yes he may produce a sketch but that's what it is a sketch. Oh, someone might say, what about an architect and a shopping mall, surely they produce models. And so they do, what bearing they have on the actual finished building is moot, they are largely selling vehicles, either to convince the money or to convince the poor schmucks who have to live with the real thing in the end. If you use the right techniques, do what you need to do when you need to do it, then you can achieve the same thing by developing the app and presenting it as it goes along. Because you are building the app you can change it as people's expectations and requirements change. All too often I've seen more effort put into revising prototypes than in actually producing a product. Just say NO.
Tue 02 Jul | Matt Christensen | Are you seriously proposing that the only reason architects build models is to scam customers?
Tue 02 Jul | Simon Lucy | Where did I say scam? I think its best to maintain some sense of humour. I don't think anyone could justifiably point at some shopping mall and say 'its different to your model' or even that it was necessary to have a model to build a shopping mall. I suppose I made those comparisons to partly point out that the building of software applications has nothing to do with physical engineering in any of the disciplines.
Tue 02 Jul | Mr Jack | Precise requirements are a myth for students. You just don't find them in the wild. This leaves you with two options: You can pretend that you have them, that the list of requirements the customer has given you are complete and exact. That you can trot off and build it and everyone will be happy. OR you can accept that the requirements can't be that, and instead gather requirements that are true and build from them. In the example given BigB wants a form to gather some basic information about the coffee which will run on pretty much any machine without hassle. I'd argue that's a pretty good requirement. You'd want a few limits, for example, you might say that he has just one page to gather this information - and if he asks for more later he's violated the agreed specs, and so forth. This isn't to say that it would be nice to have precise specs, simply that they aren't a real world thing and acting like they are will cause pain in your schedule, and your relationship with your customer. Prototypes are a good thing, just build them so they LOOK like prototypes so no-ones fooled.
Tue 02 Jul | Joe AA. | Sorry, I kinda got into a 'fault with requirements' discussion on another topic. 'Precise requirements', whatever that means, is just an illusion. It assumes and places the burden on the customer slash user to tell you what they want. It can be used as a means of deflecting the blame when you fail, and maybe you will buy it also... as long as you never recognize that most customers will sign off on anything placed before them... trusting you to do your job. As development proceeds toward implementation, you will find out the customer doesn't know what they want. Then you will start the next project under the same assumption, further assuming that to make it all right just needs more detail, more precise information, more volume of paper. More work to find out what the customer wants which you have already proven doesn't exist. An alternative is to use the 'what the user wants' requirements as a symptom of a requirement, not as the requirement itself. Then (*after a miracle occurs*), you provide what the user 'needs', not what they said they wanted. Then they will be able to tell you what they want - exactly what you gave them.
Tue 02 Jul | Wayne Venables | On the topic of prototypes... If the customer sees something (a screen) they will assume its working. Show them a complete prototype (with no underlining code) and they'll think it's nearly done. I never give my clients hollow prototypes. Get enough information to build something then release early and often. Get them something basic in their hands that they can use. Maybe it's only 5% of the total project. (and don't show the buttons for missing 95% -- add the options as the parts get complete). Once the clients have something, they are MUCH more capable of giving requirements / explaining their needs.
Tue 02 Jul | Joe AA. | Hmm... another offhanded thought I had... is what about 'game developers'? Certainly they want to provide something of value to their customers, but do they really ask their customers for 'requirements'? I don't know, just asking.
Tue 02 Jul | Hannan | In a small company that I work for in the midwest (US), Requirements and Functional Specs are used interchangebly. It is not of much consequence, however, since it seems that sometimes we prefer to have the illusion of development process, rather than process itself. I would agree that precise requirements are an illusion, though I don't know how much of it is attributed to being lazy or not doing one's job. Here, we work through several layers of indirection when gathering requirements :P, e.g. Users of their product talking to their staff, who then talk to their managers, who then talk to their administrative sales contacts, who then talk to our sales contacts who then talk to our managers who then talk to us lowly developers. It does seem however, that some sales people & managers are very good at getting at the meat of the requirement, or the 'need' as a Joe AA put it. Whether that *then a miracle occurs* step is purely luck on the part of those certain people, or possession of some kind of requirements divining rod, is beyond me. But when it's right, it's no question that my job is a lot easier.
Tue 02 Jul | rwh | Ben Kovitz's book 'Practical Software Requirements' gives the best description I've seen. The computer is a machine that you can configure to have some effect on the outside world. The requirements document describes the outside world (libraries; pizeo-electric speakers), and what the machine will do for the outside world (record book check-outs; drive the speaker at three frequencies---but not five). The specification describes exactly how the machine will appear to the outside world as it does its work (the screens and forms for data entry; the +/-1.5V sine wave on a copper pair). The design can then be anything that satisfies the spec---except that the real world may impose certain limitations (which will appear in the requirements document).
Tue 02 Jul | Contrary Mary | My solution has been to break the 'details' out of the requirements. For example: >> System will let users choose coffee options. Note: For next version, options offered will be 'black, cream and sugar, milk no sugar.' Final list of options will be obtained by surveying staff and including the top 10 requests. >> If someone wants to obsess over the details, I try to hand the job over to them. I try to design the system so that these things are able to be changed quickly and easily. Also, it can help to get a senior person on your side. Explain that you can handle any emergencies or actual important changes, but that silly whiny wanking and nervous nellying will destroy the budget and deadline. I got a senior VP to agree that any changes after a certain date had to be approved by him. Amazing how the ego driven, procrastinating BS just faded away.
Wed 03 Jul | John McQuilling | I think worrying about the particular coffee ingredients is part of the problem. We know the boss wants to capture coffee making information but we may not know all of the data we will need to capture. Iced coffee may become the rage next week for example. The system should be made to allow for new items (I know this may be hard with a paper form). Instead of trying to nail down everything plan to add new choices. Then the reqirements become much simpler and the system becomes more robust.
Wed 03 Jul | Mr Jack | 'Hmm... another offhanded thought I had... is what about 'game developers'?' We 'pitch' a concept doc for the game. This has flashy artwork in that will in no way resemble the completed game but impresses publishers; as well as describing the game in broad strokes, with a few details we'll later change. After the publisher takes the game on, we develop a 'Design document' which will rapidly become inaccurate as the game progresses, and invariably contains a number of long-since dropeed ideas. The publisher agrees to everything in this document, and then changes their mind later without letting us make any change to the schedule. Generally these changes are spurred on by someone in marketting who has never played a game but has heard that 'Quake' is fun, and thinks we should incorporate a RailGun into our Olympics sports title, or by someone who has seen our functionality-complete but graphics-unfinished frontend and decided it needs a complete rethink because the graphics aren't very good. 'If I sound cynical, it's because I am.'
Wed 03 Jul | Just me (Sir to you) | Prototypes would be so nice if only the client could be made to see that they are not the full product minus a few small details to be completed. Do you guys think it is helpfull to never show the client the actual prototype on a computer, but only screenshots of it printed out on paper after you have pulled them through Photoshop and applied those nice filters that make them look like handdrawn sketches? I know it sounds corny, and I haven't tried this myself, but it might just do the trick.
Wed 03 Jul | SB&T Club | *chokes on glass of water* Mr Jack, you are a sick, bitter, and twisted person. Your membership badge is in the post.
Wed 03 Jul | Chris Tavares | Powerpoint is really good for prototypes like that. That way they get to see what the software will look like, and it's blatantly obvious that it's not done.
Thu 04 Jul | Simon Lucy | But it isn't. I've seen CEO's and the like so impressed with Powerpoint and Flash prototypes that they take the functionality demonstrated as if it were done and dusted. Writing the app seems relatively trivial to them. If its worth expending all that energy to build a prototype build the damn app instead.
Good Documentation of C++ Standard Library | Mon 01 Jul | Benji Smith
Im a programmer making a transition from Java to C++. I really like the power that I have with C++ to do low-level system stuff. And I really appreciate the ability to work with pointers and references. Im not having any trouble with these concepts. In fact, they have come to me quite easily. What drives me bananas is that the entire c++ standard library is composed of obscure abbreviations and bizarre uses of operator overloading. Consequently, its very hard for me to read c++ code. Im used to Javas standard libraries, and I would much rather refer to a FileOutputStream than to a ofstream. So, what Im looking for is some really good documentation (preferable in HTML format) that gives all of the details of the standard library. Ideally, it should have the names of classes, the header files that need to be included for those classes, the names of classes that the class inherits from, all properties in the class (or inherited from and other class), and the prototypes of all functions in this class (or inherited from other classes). In short, what Im looking for is a JavaDoc for the c++ stdlib. Ive spent a few hours googling around looking for something, but without much luck. The closest thing Ive found is a set of documents from dinkumware ( http://www.dinkumware.com ). These are reproduced in the msdn vc++ documentation at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/HTML/stdlbhm.asp . This set of documents shows all of the header files and lists a few details about implementation, but they assume quite a bit of existing knowledge. For example, the page for cin lists only the following information: The object controls extractions from the standard input as a byte stream. Once the object is constructed, the call cin.tie() returns &cout. Which doesnt tell you much about _how_ to use a cin object. It doesnt tell you anything about the overloaded >> operator. And it doesnt say anything about using stream manipulators. All in all, its not very useful. Does anybody have any recommendations for a good set of stlib documents? (Im even willing to buy a physical book if it comes with the electronic reference Im looking for).
Mon 01 Jul | those who know me have no need of my name | C++ streams? Argghhh!!! I've picked up most of my streams knowledge from a hodgepodge of places. I think I remember Eckel's book & the gnu docs as being good sources for the basics. I find myself using good old FILE*'s more & more these days, although I love the stringstreams and formatting operators. For STL though, the SGI site wins hands-down.
Mon 01 Jul | Larry From Queens | Just give in and pickup the classic: STL Tutorial and Reference Guide by David R. Musser, Atul Saini Addison-Wesley. [Does anybody have any recommendations for a good set of stlib documents? (I'm even willing to buy a physical book if it comes with the electronic reference I'm looking for). ]
Mon 01 Jul | Larry From Queens | Oh additionally, you might want to take an 'Advanced C++' class at your local public university.[advanced usage of templates, operator overloading etc...]. It will take the misery out of all that stuff!! Enjoy
Mon 01 Jul | Nat Ersoz | Specifically related to iostreams, the 'C++ IOStreams Handbook' by Steve Teale is the most comprehensive text on the subject. It not only tells you how to use iostreams but whay lies underneath. Its nicely written so that you don't have to understand the 'why' just to get to 'how'. FWIW,
Mon 01 Jul | Chris Tavares | The Teale book is, unfortunately, obsolete, and has been for years. There's a new C++ iostreams book out by some of the columnists from the old C++ Report, but it's rather a tough read. I would suggest that you break down and buy a copy of _The C++ Programming Language, 3rd Edition_ by Stroustrup. It won't give you the reference information you're looking for, but it WILL give you the background to understand how to read the reference info you've already got. In addition, you'll gain a much greater understanding of why C++ is the way it is.
Mon 01 Jul | Larry From Queens | Bad Idea! It's treatment of the subject matter in question is much too light. It's a good book, but in as far as STL / iostreams go, skip Stroustrup. [I would suggest that you break down and buy a copy of _The C++ Programming Language, 3rd Edition_ by Stroustrup. It won't give you the reference information you're looking for, but it WILL give you the background to understand how to read the reference info you've already got.]
Mon 01 Jul | Chris Tavares | Light??? It's got like 300 pages on the design and usage of the standard library! Plus discussions of design decisions, tradeoffs, and how you'd write such things yourself. Light compared to what? If you're talking about iostreams, maybe I can agree with you. But the original poster wanted the basic background - what's a cin? Stroustrup gives that to you, and gives you the background to learn more.
Mon 01 Jul | Larry From Queens | Chris Buddy, The orginal poster seemed fairly advanced. So why dick around with light reading? Hey look, Strou's book is excellent! it's on my shelf as we speak. But it's still very light as it pertains to both iostreams and STL. [some people just like full coverage!!] ->NEXT [If you're talking about iostreams, maybe I can agree with you. But the original poster wanted the basic background - what's a cin? Stroustrup gives that to you, and gives you the background to learn more. ]
Mon 01 Jul | Larry From Queens | And Yeah it's definitely light with respect to STL. Get the book previously mentioned[400pages of pure STL reference]
Mon 01 Jul | Nat Ersoz | Chris, Is the Teale book really that obsolete? From what I can tell, some headers changed: ==> and uses namepsace std.... But are there substantive differences? Apparently I am obsolete also, because I haven't changed my usage in the last 10 years... (of course, I'm using glibc, which seems to be significantly behind also).
Mon 01 Jul | Chris Tavares | Well, the istream class doesn't exist anymore, for one thing - istream (and ostream, and fstream, etc.) are all typedefs for basic_stream, which is templated. strstream is gone - replaced with the much more reliable stringstream. Everything's been turned into templates templated on character types. There's a whole boatload of internationalization stuff that's been added. streambuf's have grown a new method, so if you're getting into advanced usage Teale's book won't help you. The very basic usages haven't changed, but there's a lot of gotchas that have.
Mon 01 Jul | Benji Smith | Just to clarify after seeing some of these replies to my original message... Yes, I know what a cin object is. I was just using that as a basic example of what I'm looking for and why the documentation I'm finding doesn't fit the bill. To get the idea of _exactly_ what I'm looking for, take a look at Sun's excellent documentation of the core Java API ( http://java.sun.com/j2se/1.3/docs/api/ ). ...Or look at the excellent PHP manual ( http://www.php.net/manual/en/ ) ...or the equally excellent mySQL manual ( http://www.mysql.com/documentation/mysql/bychapter/ ). I'm looking for some excellent documentation that breaks down the stdlib, class by class and function by function, and maybe shows a tiny slice of example code for each. If this doesn't exist, why not? Do thousands of developers have the entire STL memorized? Are C++ programmers still turning to printed pages when they need to look up a function prototype they've absent-mindedly forgotten?
Mon 01 Jul | Nat Ersoz | Chris, Thanks. I'm wayyyyy behind...
Mon 01 Jul | Nick Hebb | [Just to clarify after seeing some of these replies to my original message...] Benji, I think you missed the reference above for the SGI site. The link is: http://www.sgi.com/tech/stl/
Tue 02 Jul | Tim Sharrock | The book I would suggest for this is 'The C++ Standard Library - A Tutorial and Reference' by Nicolai M. Josuttis. (see the ACCU review at http://www.accu.org/bookreviews/public/reviews/cp/cp002018.htm). This is the one I keep on my desk - it describes the STL as adopted into the ISO C++ standard, along with standard iostreams and other non-STL parts of the standard library. For deep-tweaks of iostreams you might want 'Standard C++ IOStreams and Locales' by Angelika Langer & Klaus Kreft, but Josuttis has what I nead nearly all of the time Tim
Wed 03 Jul | Matt Watson | If you are really really sadistic and want to get down into it at a LOW level you can look here at the C++ standard: http://std.dkuug.dk/jtc1/sc22/open/n2356/
Thu 04 Jul | yowkee | Second the book : 'The C++ Standard Library - A Tutorial and Reference' by Nicolai M. Josuttis.' I didn't find any navigate-friendly help/manuals/documents on C++ standard library either. However, the book is the key to understand and use it effectively. Dinkumware's documentation should serve you well, though it didn't follow the approach of Javadoc or php or mysql...
Thu 04 Jul | Nick Hebb | <> Once again, I try the Silicon Graphics STL page. It's way better than Dinkumware's and the format is more toward the javaDoc style (but without the left index frame). http://www.sgi.com/tech/stl/ Alexander Stepanov (STL author) has been working at SGI since the mid-90's, so they have a vested interest in maintain a user friendly STL reference. Also, the whole thing is downloadable.
IT Degrees (Again) | Mon 24 Jun | Matt H.
(I took a three-day holiday) ... Earlier, X.J. Scott Wrote: >The way you mentioned it sounded like this is a common >thing. The classes posted look like for an AA degree, or >a sham BS from a Coleman College like place. Is this >correct? Or is this a degree now offered by actualy >universities (say it aint so) & if so, could you post some >examples? Im talking about a specific flavor of degree: Its not straight CS (which has to be acreditted) and its not straight BBA (which also has to be acreddited) but its somewhere in-between. Part of the theory being: Every company with 400+ employees needs a network guy/PC Tech, an accountant, and a Accounting/PC Supervisor, but not all of them need a coder. So the degrees tend to be either old business (COBOL), IT Infrastructure (Networking), A bit of CS, or an attempt at all three. Examples: Michigan State Universitys Degree in Management Information Science (MIS) Grand Valley State Universitys Degree in Information Systems http://www.csis.gvsu.edu/Academics/ismajor.shtml Salisbury Unversitys MIS Degree http://www.salisbury.edu/schools/Perdue/InfoSys/curricula.asp To be fair, Salisbury and U of M have a lot of accounting and business stuff - I think they are designed so that the graduate go off and do systems analysis - setting up things like the technology backbone, automating the accounting and payroll systems, etc, for a bank or other non-technology company. (See above about 400+ people companies.) Except, of course, this sets them up for a management position right out of college ... and nobody wants to hire a manager with 0 experience. So they go out and they become coders ... often in C/C++/Java Environments. (Unless they are lucky and get to work in a COBOL Shop.) So youve got this guy with one semester of C++ who is working as a coder, and just doesnt get that the bubble sort is inefficient, and people like Bevin end up thinking that a degree is a waste of time. :-) just my $0.02. Most hard-core CS Programs (esp U of M, Carnegie-Mellon, MIT, etc.) are very very very good. Its the compromises that ... compromise. Comments? regards,
Tue 02 Jul | Hugh Wells | Those, no the profitable business unit was not shut down. The MBA's were the joke of the company when they presented that one. Again, as well, I have never said I have trouble communicating with MBA's. What I have said is that when I see their reports, not necessarily prepared in consultation with or for me, I find them lacking. As far as I can recall, I have mostly phrased my views here as views, not some attempt at statistical fact. Take it or leave it. You could also read the papers, these days.
Tue 02 Jul | those who know me have no need of my name | But you see Hugh, you always have to throw in something like 'you could also read the papers', like that is proof of something. Pathetic.
Tue 02 Jul | Joe AA. | Reading the papers is proof of something, and I don't do what it proves - it would prove I like fiction.
Tue 02 Jul | Hugh Wells | Yes, that's right. The MBA's were creating fictions, and they knew it. Enron, Worldcom, ... and the many, many smaller entities. Perhaps most importantly, let us consider the 100,000's if not millions of trusting retirees and loyal workers screwed by these jerks.
Tue 02 Jul | those who know me have no need of my name | I give up. You are Pathetic.
Thu 04 Jul | By The Numbers | A bit late on this one!! However Hugh has a valid point. You don't need an MBA to be an excellent businessman/manager[history already proves this]. MBA == legal license to defraud. Another example of expensive certification that yields virtually no value to society!!! It's sort of like OH yeah we're not going to codify the process of how to make common sense[now that is pathetic].
H1B Storm Clouds | Thu 27 Jun | Larry From Queens
For Your Reading Pleasure: http://www.eweek.com/article2/0,3959,274443,00.asp Never bury your head in the sand with predators about
Mon 01 Jul | Oliver C. | [Seems Related] http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=9419&ixReplies=186
Mon 01 Jul | Truth Be Told | Internal Memo To EDS Employees [PART 1] To EDS employees -----Original Message----- From: Vervynckt, Lawrence Sent: Thursday, June 13, 2002 4:10 PM To: Brown, Dick (mail centre); Brown, Dick (Mail Box) Cc: EDS Americas Employees; EDS Employees; EDS; 'presweb@pobox.upenn.edu'; NISC ALL EMPLOYEES Subject: memo to Dick Brown Dick, There are ethical ways to cut costs, and then there is executive greed. Your comment at the recent shareholder's meeting will be your legacy, like it or not ('I have to make that much money, I have an expensive wife.'). Most of the people were proud to work for EDS and liked/like what they do/did at one time, but no more. Most EDS employees made personal sacrifices (eg. worked long hours, traveled extensively, worked weekends) and that wasn't enough to keep their jobs. It seems to me that your MBA is not worth the paper it is printed on. You don't understand that all EDS has is its PEOPLE! It does not make ANYTHING! Some clients have good working relationships with certain (ex)employees and when you have a (mis)manager (that, by the way, couldn't manage his way out of a paper bag) get rid of a person like that, then the client is very unhappy - service slips, and bad feelings fester. I know, you will say the 'dashboard' doesn't show it. It's like the old saying - Those that can, do; Those that can't, teach; and Those that can't teach, manage. You have shown that you care only about short-term gains (and it ain't happening right now) at the expense of long-term harm to the company. Some people are being let go because they use the open door policy. Everyone knows that if you complain about anything going on you're next in line to be let go from the company. People are let go for 'workforce reduction' - NOT performance (as you have said in the press), NOT because their skill sets had slipped (as stated by Jim Daley in the press). Dick, NO ONE believes you ANYMORE. Your memos are a laughing matter for 90% of the employees (the 10% are your 'yes-men' you have surrounding you). Paydays are so stressful and tense, it is pathetic - the backstabbing of employees to climb over each other is cannibalistic in nature - Is this your new corporate culture? Because that is what's happening. Talk to some of your former employees - they have nothing to lose by telling you the truth - if you dare to talk to any of them, or if they would talk to you. There are ways to save money that doesn't involve cutting employees - But I will not list them here. Here are some questions that I believe you should answer for the employees- 1) What are your IT contingency plans for third world unrest? 2) How can you justify your $55 Million Salary when the stock price has not consistently been rising and remaining at levels close to or above IBM? The answer you gave at the shareholder's meeting is unacceptable and makes a mockery of the company. 3) Why has EDS not been at the forefront of Software development? With the talent that existed (and still exists), surely some revolutionary software could have been produced that would catapult EDS to household name status. 4) Why is there no consistency of management practices between accounts? 5) Why is it that you can visit Copenhagen, Fiji, Tokyo, or Bremerhaven for the EDS image yet cannot visit Bethlehem, PA, Fairborn, Ohio, Richmond, VA, St. Louis, MO, Winchester, KY, or South Carolina for boosting employee morale? 6) Why are you so inaccessible to the average employee?
Mon 01 Jul | Truth Be Told | Internal Memo To EDS Employees [PART 2] To EDS employees 7) What is your corporate plan - In specific detail? I'm not talking about the weekly Science Fiction newsletter that you produce. I'm talking of YOUR Goals. Where are you leading this company? Where do you envision EDS to be 5 years from now? 8) Are you aware of the discrepancy between your vision and the vision and attitude of middle management? When will you get them on the same page as yourself (provided you have a plan in place)? If you don't realize, middle management has a feudalistic approach to their employees and accounts they manage. Many of their practices go against EDS corporate directives. 9) If some accounts warrant H1B employees and outsourcing to places such as Mexico, India, etc. why don't you discuss them with employees and let them know what is going on (status of contracts, terms, etc)? 10) How is it that there is no coherent retraining policy within EDS? If someone is currently on the bench, they have to fend for themselves via EDS University with no clue as to what is available - what projects are upcoming, what technologies are needed to make them billable once again. For Example, an employee comes on the Bench. He/She is mainframe oriented. There is a project coming up somewhere else that requires SAP. Shouldn't management and yourself be responsible for guiding that employee in the right direction so that they can get onto that SAP project and become billable once again rather than have the employee slog their way through online courses with no direction whatsoever. 11) You maintain that the IT industry is a very fluid culture. Why is the company still adhering to IDP's? In the example of #10 above, the employees IDP may not list SAP as a personal goal. However, if it were a difference between being employed and not being employed, the employee would definitely make the sacrifice and learn SAP. This makes the IDP useless. 12) Why does EDS still adhere to the 'Bell Curve' for ranking employees? This forced ranking is a failure and has proven such in many school systems. 13) Why is it my Director has the autonomy to make significant business decisions nationwide, yet a .50 cent raise request has to go to 3 levels above him to someone who has no clue regarding the validity of the request? 14) Why are we, 'the leaders in global technology solutions', still using such as antiquated system as CAS? 15) Why does a staffing request to replace an entry-level, $8/hr employee have to go all the way to Paul Chiapparone? 16) Ah yes - the forced ranking system. So - you have 5, highly tenured, highly skilled leader-level employees. However, based on the 'rules', somebody is going to get screwed. 17) Why is it that we repeatedly hear the rhetoric of how valued our employees are, and how we reward the top performers, yet a '1' employee's raise request submitted 30 days prior to due, ends up getting approved 3 month's late because it sat in multiple Upper Management's 'to-do' list too long. 18) Isn't it fraud (to your customers) to sell a contract using a domestic model, then shifting processes (using personnel not involved in the development of those processes) offshore, where work ethic and fundamental service ideals are radically different from those sold as part of a contractual obligation to a customer? (In traditional manufacturing industries, the aforementioned practice is known as bait & switch) 19) Isn't is also fraud (to the stockholders) to form a shell corporation (namely EDS Resource Management Corporation) for the sole purpose of masking compensatory losses by way of transferring personnel without their knowledge to this corporation prior to laying them off, thereby operating that business at a loss, so as not to impact the stock price of EDS? 20) Isn't it fraud (to your domestic labor force) to harness talent and resources only long enough to construct process framework, only to leave them high and dry without severance, then tie up their 401Ks (that in some cases are propping up your stock price) for weeks on end? 21) Isn't it fraud (to your remaining domestic workforce) to tell them that their jobs are secure, provided their performance and production is up to EDS's 'high standards (until you have their functions documented and shifted to cheaper labor)? --- If you have answers to any of these questions that would pass as anything other than doublespeak, please feel free to address them in future 'letters from Dick' internally. Please be sure to quote the above questions verbatim when responding, so as not to diminish the intent of the question. Please also free to address these questions (again VERBATIM) with your Board of Directors who, if they are not yes-men and woman, may take a dim view of the direction of your 'leadership'. Larry Vervynckt Information Analyst EDS - DBA AND PHILIPS SEMICONDUCTOR TEAM MS TRNG 1401 E. Hoffer Kokomo, IN 46902
Mon 01 Jul | Gokul Das | Someone must have a vary vary bad weekend!!, EDS India is GREAT!!
Mon 01 Jul | Innocent By-Stander | A new phenomenon; the corporate suicide bomber.
Mon 01 Jul | Meek Follower | Whoah! Kudos to this Corporate Kamikaze. I hope he wrote a haiku and chatted to his ancestors before flying off on this mission. Given George W.'s recent interest in that big ole'pile of donations producing thing called 'business', maybe he shoulda cc'ed it to the President. Most of the posters in this thread have commented upon the outstanding Chutzpah/cojones/nerve that this guy's got, and AMEN to that. Who wants to take bets that he's gonna get it Right Up The Ass as a result - hey maybe he's terminal and has nothin to lose. Looking inward, I'd be surprised if I ever tried the same thing in business and I think that's why many of us here have commented on his self sacrifice (or insanity, depending). If each of us (you reading/trolling) had this level of committment, would it make a difference to the scams the Top Pyramid gets to play? I reckon so. Rock on to Lawrence 'No Fear' Vervynckt, may we all enjoy so glorious an end! Ra!
Mon 01 Jul | Steven Hamachi | Is America a great country, or what? I mean, where else can a CEO like the dick that runs EDS can get paid 55 million dollars a year AND fuck his employees in the process. Come on, name one country where somebody can do that. I predict that, one day very soon, CEOs will pay themselves a 100 million dollars a year and force their employees to PAY to work at the company. Sounds ridiculous? Remember we're talking about American workers here. Never underestimate the stupidity of most American workers - they will stand there quietly and let others slowly but surely bleed them dry. To the fellow who wrote this memo - congrats. America needs more people like you - people with backbone and the brains to see what is really happening. It's time for a revolution folks!
Mon 01 Jul | Withheld to protect the Guilty | Wow. I haven't read a rant email as well thought out, lucid, and brutally honest as that one in a long time. Congratulations to this guy. He might go down in history as the symbolic first martyr in a jihad against corporate excess and welfare. Somebody needs to get this to all the mainstream media outlets like CNN, etc. At least, give this guy some cover as a corporate whistleblower.
Mon 01 Jul | Larry From Queens | Hey that Larry is definitely not this [Larry]!!! Je..us. F..king Chr..st
Mon 01 Jul | Leonardo Herrera | Ed the Millwright wrote: > No, sadly, workers in the US have few rights compared > to most other modern 'democratic' countries. > > Are you italian? What are the laws like over there > regarding these sorts of situations? No, I'm chilean. We have pretty good regulations on this matter. OTOH, we are already cheap labor in our own country :-) A good programmer gets something about $20K/year... a 4+ years experience software engineer can make about twice that money. Alas, our living cost is pretty low, so you can have a nice home and a car with that kind of money.
Mon 01 Jul | Joe AA. | I don't know about Larry Vervynckt... my first thought being that if things are really that bad for him (and he seems to have placed himself in the position of spokesmen for all other EDS frontline people), is... Why are they still there? I am not defending him, as I don't believe he needs it... but Dick Brown is an intelligent and quite competent person. He doesn't put up with appearances, and I would really be surprised if he tolerated any 'yes persons' as his direct reports. I worked at an EDS shop as a contractor for 10 months or so. I looked forward to his weekly 'science fiction' memos, and they contained a great deal of wisdom. But it is true, that most of the frontline people didn't read them, and found it funny. He also produced a book, about EDS and his objectives - the frontline people didn't read it either. I obtained a copy from my manager and found it to be fascinating reading. Dick Brown is also well aware that EDS middle management is the largest hurdle. Unfortunately, the EDS frontline people I met do think like Larry Vervynckt. The CEO is directly responsible for everyone's problems. The 'problems' smack of protectionism (for lack of a better word) - I am too stressed out, I want job security, I want raises... I want, I want, I want, and it is your job Mr. CEO to give them to me. Dick Brown inherited a company with a really lousy corporate culture. The 'old' EDS stressed 'obedience to authority' and I have seen enough frontlines automatically place themselves into 'asskissing mode' when management walks by, that it made me sick. I have heard them agree to plain stupidity, give themselves unrealistic due dates, all the while pretending to be so friendly only to stab their management in the back when they were gone. If you refuse to take responsibility for yourself and your situation, there ain't nobody that is going to do it for you. You can place the blame anywhere you want, and you will probably get thousands of your fellow widgets to agree with you, but the blame is all misplaced. Ok, my rant is over.
Tue 02 Jul | By The Numbers | For those interested: http://www.whitehouse.gov/omb/budget/fy2003/pdf/budget.pdf
Wed 03 Jul | Joe AA. | Anyone on a slow link, be warned that budget.pdf link is only 22.7MB. If you are really interested in the US budget proposal for 2003... download it first.
Wed 03 Jul | By The Numbers | For those that still think the H1B issue, is purely fringe crack pots making noise, enjoy the following: http://www.eweek.com/article2/0,3959,299782,00.asp
Performance Appraisals | Wed 26 Jun | Matt H.
Adiran Wrote: { I suspect (a good appraisal) is quite rare. Ive also had appraisals where I got the feeling that the person giving the appraisal didnt really take it seriously. There was no thought given to my appraisal before we sat down to do it, I didnt have time to prepare anything, etc. } I think its a culture thing. In many software companies (or IT Departments), the value of the appraisal is never really sold. So, its just one more thing to pencil-whip or else we cant get merit increases. Anything that is done just to do it isnt going to have real value - witness XML, MBO, TQM, Six Sigma, ISO 9000, or even, as we have so recently discussed, MBA degrees for people who just want to make money. :-) Yet I think we would agree that real opportunities to have feedback do have value - just as XML could have some value if used right, TQM can be useful if used right, etc, etc. The question is do I need a performance appraisal to do it? because without the appraisal, so few managers would actually keep accurate notes and provide feedback? Well, Id submit that a mandated performance appraisal isnt really any better, because its just going to get pencil-whipped anyway. :-) comments? regards,
Wed 03 Jul | Rob | I think that annual performance approvals are a good thing, from both the employee and the managerial perspective, and this is why. They give both parties a chance to sit down and talk about what has happened over the year, and plan for next year. (What tools are we going to be using? What things should you start learning for the next year? What training did you use last year? What training do you want next year? What new skills have your learned? What goals do you wish to accomplish over the next year?) They give both sides a chance to align their interests, and look at longer term solutions. (Have you spend the six months of the last year firefighting problems? You can review what has happened and will happen with your projects, and look at solutions to longer term problems. Match job descriptions (and pay categories in larger companies) with what you are actually doing. But and however many managers do them incorrectly and set them up so that they are failures by not planning them (You should know everything that is going to be talked about in the meeting before hand), by setting unrealistic goals for the next year, by setting pay raises to them (makes the employee feel nervous and worried) and by dismissing the process. A good performance appraisals tells both the employee and the manger a lot, and should be done, but only if it is done correctly, other wise it is a waste of time and money.
Is Microsoft playing dirty tricks with .NET? | Mon 01 Jul | Ramón
According to http://bugzilla.mozilla.org/show_bug.cgi?id=148657 , Microsoft ASP.NET returns wrong HTML if the browser is Mozilla. Can anyone confirm this? I find it a bit difficult to believe. It would be something so obvious monopolistic. Ramon
Mon 01 Jul | Ryan LaNeve | This isn't exactly true. ASP.Net does not return 'wrong' HTML - it returns the HTML which it thinks is compatible with the browser making the request. By default, ASP.Net uses a class which only produces HTML 3.2-compliant tags/attributes/etc... It is then up to the settings in the machine.config file of the ASP.Net server to alter this default for browsers which can handle the newer tags/attributes/etc... In the machine.config file which ships with ASP.Net, the browser match for Mozilla does not alter the default tag writer to be used, and hence only HTML 3.2-compliant tags are written. The server operator may certainly update the machine.config file to alter this, and it takes only one line in the proper place to do so (tagwriter=System.Web.UI.HtmlTextWriter). One final note - MS is not responsible for maintaing this section of the machine.config file. This is the replacement of the older browsercaps.ini file, which also was not maintained by MS. A company called cyScape maintains this information (the makers of BrowserHawk). In short - no, MS didn't do anything wrong here. Update the server's browser capabilities information and all is well, which is exactly how the system has always worked (with the older browsercaps.ini file and now with machine.config).
Tue 02 Jul | Ramón | I cannot believe that this 'mistake' was by chance. It is not the kind of things where Microsoft products behaviour is by chance. Most administrators will not notice or will not care. Thanks for the information, anyway.
Flash as a serious environment? | Mon 01 Jul | Jess N.
It seems that Flash is coming from below to become a really serious medium. A 95% browser penetration, if thats true, makes anything fair game. I am wondering if programmers can use their tools with Flash. For example, if handlers can be written in Java. I find a lot of basic tutorials on Actionscript, but nothing is really well-organized.
Mon 01 Jul | what a stupid edit box, you can type anything in here | flash is like html in email - unnecessary bloat.
Mon 01 Jul | Jess N. | I don't want to get into a religious war, and I do agree that Flash is new and very overused. But like any new tool, it can mature. I familiarised myself with the binary spec some months ago. It is not bloat, but very tight. Many features were cut that SVG has, like no support for circles or even cubic splines, and you have to approximate them with quads. I just don't know how people tie these little movie objects together into a strong useful app.
Mon 01 Jul | Larry From Queens | Just to Set you straight Kid! Non-open standards no matter how really kewl, will ultimately fail[Flash included]. Most web surfers go out of their way to avoid sites with PDF, and FLASH. Why you ask? a). low bandwidth[connections], have an inverse affinity for 'rich' content. All bandwidth connections, have a direct aversion to rich content that soaks up excessive amounts of local working set.[i.e. it's not ok if the FLASH presentation takes up 50Megs of Local RAM]. Speed is life and small things are fast. b).when a plug-in's memory requirement starts exceeding that of the invoking browser[You definitely have a problem]. c). Creative use of DOM primatives can easily match the feature/benifts of FLASH. [Yeah, you have to do that thing called programming, Bit..ch UH?]
Mon 01 Jul | Not a flash user | Just because YOU avoid sites with Flash doesn't mean MOST people do. On the contrary, most people I know LOVE flash sites, when they're done well. One person I know said recently that Flash makes the internet 'look like the future'. Yes, there are horrible, crappy flash apps, but there are also horrible, crappy web sites. Well done Flash, used judiciously, are really nice looking and behaving. With the new additions of 'standard' widgets, database and SOAP support, Flash is poised to be a very strong player in the online-app market. Companies like Balthaser are doing amazing things with Flash. Leave your personal biases at the door, and take another look at Flash. It's quite a product.
Mon 01 Jul | Kevin Dangoor | 'Most web surfers go out of their way to avoid sites with PDF, and FLASH. Why you ask?' Actually, no... I ask 'where do you find such a statistic?' Flash content can actually be very fast to load, depending on what it is, and many, many sites have flash. I don't think I know anyone who specifically goes out of their way to avoid Flash. Kevin
Mon 01 Jul | Larry From Queens | Have you ever produced a FLASH animation my friend? Clearly NOT, otherwise you'd have no need to ask such question. Go get some knowledge, come back, then let's have a discussion. [Actually, no... I ask 'where do you find such a statistic?' Flash content can actually ]
Mon 01 Jul | Larry From Queens | I wonder how macromedia is doing these days? :-). Hey look tell you what. This isn't like a religous war or anything. There are generally two camps when it comes to FLASH. Graphics Artist/Content types that think they can program, and those who know better[I would suggest digging to into the implimentation/exposed functionality of FLASH]. You might learn something. Road kill comes to mind. [Companies like Balthaser ]
Mon 01 Jul | Patrik | --- press here to skip flash intro --- Flash is appropriate for move promotion sites and such, but not for serious web applications, just as roman numerals are ok for movie copyright dates and names of popes, but not much else. I think the major flaw with Flash, is that it promotes the creation of 'home brew' navigation and menus on web sites and web applications. I for one think of Flash as a 'creative-guys-do-artsy-things-on-the-web' kindof tool. Usability is the big problem of web sites. I think the solution to this is to do away with the web-browser, as we know it. I know this sounds insane, but if you could have the web-client (or browser) fill its 'File..Edit...View' menu and toolbar with buttons and menus to perform navigation of the web site that would surely help people. Do away with the navigation from the 'work-area' of the application and leave that for interaction with the users. Just like any Windows program. That would result in my mother being able to navigate the web sites she uses, simply because she knows how to handle the menus in Solitaire and Tetris. So, to sum up I think that Flash allows for too much of 'creative-freedom' to ever be used in creating real web applications that people have to use on a daily basis. Just my 2 cents...feel free to disagree :-)
Mon 01 Jul | Jess N. | Patrik, I think a good analogy is to Unix. It's a powerful environment, but the downside is that people are able to go wild. I remember when one day my HP/UX Apollo was upgraded to use CDE, the 'common desktop environment' for unix. It was very unusable, but at least it was consistently unusable. So things start out raw but powerful, and they evolve to have standard interfaces that rein in the power. How do people make standard interfaces if they can't experiment with a raw system? Things need to evolve. Anyway, this is a board about 'painless software management,' and I think I attracted fun trolls like Larry from Queens. ;-) I really wanted to know how to use proper programming tools with Flash, but maybe that's more a research than a management topic.
Mon 01 Jul | Not a flash user | Patrik, the lastest version of flash includes standard widgets, so that people won't create their own. Larry, obviously you're talking out of your ass, since your comment 'get some knowledge' instead of providing a factual argument calls your comments into question. Standard argument formation includes citing sources. So why don't YOU go get some hard numbers before shooting off your mouth?
Mon 01 Jul | Joe AA. | 'Standard argument formation includes citing sources.' Yeah, you tell 'em. Where do these people get the idea they can think for themselves? Agree with the ex-spurts, that's what I always say.
Mon 01 Jul | Leonardo Herrera | To me, Flash is a good thing for entertainment, but a Really Really Bad Thing (TM) when people try to use it as a complete web platform. I haven't seen a site made with flash that would qualify as 'usable'. No clipboard, no bookmarking, the back and forward buttons of the browser renders unusable, no cache management, and an excessive focus on appearance instead of usability makes flash made sites a true pain, at least to me. Sure, I enjoy flash games just as much as the next guy, but I don't like entirely flash made sites. I can accept a logo, or a toolbar made with flash, but please don't broke my GUI. Regards,
Mon 01 Jul | Not a flash user | Joe AA: It has nothing to do with thinking for yourself. Argument isn't a creative endeavour that allow you to just willy-nilly make claims without backing them up. Otherwise, argument merely degenerates into 'Yes it is!', 'No it isn't!', which, as we all know from Monty Python, isn't an argument. If someone wants to point to some hard numbers to prove that 'most people avoid flash sites', please, come forth. I'd love to see them. Otherwise, it's merely opinion, which counts for much less, if you recall essay writing from grade school.
Mon 01 Jul | OzzieGT | Well Larry, I have created flash animations. If you avoid using bitmaps, properly use tweening, keep your graphical objects simple, minimize the use of audio, optimize loading so some parts load in the backkground, etc., you can make flash presentations that have a small enough footprint to be tolerable on a low bandwith connection without losing any of the cool functionality. They may take longer to load than a webpage, but if they are meant to be 'web apps' rather than web pages, the load times are totally acceptable.
Mon 01 Jul | Larry From Queens | Clearly your first language is not English!! What part of go get some knowledge don't you understand? One can't have a discussion about a topic unless both parties have something of value to contribute. Put another away, prerequiste for meanful discourse on this FLASH topic requires symetric degrees of domain expertise, by all parties concerned. So hurry up and finish going through the FLASH API set. We'll wait for you :-). [If someone wants to point to some hard numbers to prove that 'most people avoid flash sites', please, come forth. I'd love to see them. Otherwise, it's merely opinion, which counts for much less, if you recall essay writing from grade school. ]
Mon 01 Jul | Joe AA. | Oh I agree!
Mon 01 Jul | Larry From Queens | Now I'm laughing...!! Sort like saying oh yeah I succeeded in squeezing an elephant on to the head of a pin.[So what part of the elephant did you put on the pin?] Stripped down flash is a sort of an oxymoron!![sure if you leave out all the goodies, it's really fat free, with no taste too] Your usage is tolerable comment ... is very insightful. You see my friend end users don't want tolerable. They demand usable. Otherwise just as on with TV, they'll just it the next channel button. [Well Larry, I have created flash animations. If you avoid using bitmaps, properly use tweening, keep your graphical objects simple, minimize the use of audio, optimize loading so some parts load in the backkground, etc., you can make flash presentations that have a small enough footprint to be tolerable on a low bandwith connection without losing any of the cool functionality]
Mon 01 Jul | Patrik | Jess N, >How do people make standard interfaces if they can't >experiment with a raw system? >Things need to evolve. Agreed. Things need to evolve. My main concern was the 'creative-freedom' that Flash not only allows, but encourages, so in order for Flash to be useful it needs to be more standards-oriented in lack of a better word. As Larry pointed out, and I can second, most of the Flash guys I have worked with are the 'Graphics Artist/Content types', which means they treat their Flash hacks as a means of getting their PhotoShop stuff on the Web. And WOW, we can make it animated too. So in order for Flash to evolve into a usuable plattform for real web applications and sites it needs limits on the 'flashy' stuff. Flashy and cool is not useful. Not a flash user, >Patrik, the lastest version of flash includes standard >widgets, so that people won't create their own. So does Windows ;-) http://support.nvc.net/faq.php?article=33 Still people seem to invent their own widgets. Flash not only allows, but encourages missuse of cool home brewed widgets. Its not the presence of standard widgets, but the ability to use non-standard ones that is the problem. As long as there are non-standard ways of doing an UI someone will consider that cool and do so, which in turn renders Flash useless for every day Web Applications and sites that people must use. Users does not consider web sites cool, they see it as a necessary evil of getting their work done, and they couldnt care less about feeding some graphic-flash guys ego. Another 2 cents...
Mon 01 Jul | OzzieGT | Larry...I think our interpretations of what flash should be used for differ. Sure if you want a full fledged multimedia application, flash is bloated. However, there are plenty of other things that can be done with Flash which don't require a huge footprint. As far as 'tolerable' goes, why should we have to wait for 56k users to play catch-up? The standard for the size of the average download is increasing, and so people who are on slower internet connetions really just need to get used to the idea of some web pages taking 30 seconds to load instead of 5. I wonder what percentage of current web users are on dial-up nowadays anyway...
Mon 01 Jul | Sammy | People might find this link interesting: http://www.oreillynet.com/pub/a/javascript/2002/06/18/flashmx.html Macromedia is definitely attacking the applet space in an interesting way, with a little language that happens to be strong at graphics and the worse-is-better approach. In fact, Flash apps are probably more crossplatform than Java's since Flash fonts appear identically on different platforms. With Java, even if you use Swing layouts, OSX fonts can just be too big. Unclear whether Macromedia's doing financially ok. They've appeared on fuckedcompany a few times, but it seems to force them to start embracing opensource and blogging. I know people who write their own tools to automate movie generation (for branded bizapps), and no doubt they do something funky with actionscript too. Still, for the forseeable future you might want to think of Flash apps as enlightened dumb terminals. http://www.oreillynet.com/pub/a/javascript/2002/05/24/swf_not_flash.html
Mon 01 Jul | OzzieGT | Here are some flash development houses that make some excellent webpages with small footprints...check out their portfolios: http://www.cabedge.com http://www.juxtinteractive.com
Mon 01 Jul | Matthew Bloch | A cautionary tale : http://www.bbspot.com/News/2002/04/flash.html
Mon 01 Jul | Walter Rumsby | OzzieGT, you say 'why should we wait for 56k users to catch up'? Well, because it's a pretty well established fact that most people who connect from their home use 56k modems, sure broadband penetration is increasing and I believe it is even over 50% in South Korea, but unless you're designing only for the South Korean market it's kind of irresponsible and short-sighted to say that users should catch up if the context of your work is publicly available web sites intended to provide some service to the general public. Please, read some Zeldman.
Mon 01 Jul | vincent marquez | i'm kinda jumping into the conversation a little late, but with the current state of flash, is there a good way to produce dynamic content? I'm not talking about a simple paragraph that is displayed according to a state, but database interaction, dynamic generation of nav bars, etc. If so, can a server dynamicly 'write' flash? (instead of just using macromedia's database interface for flash). If you could script flash adn have it compiled or whatever on the fly, that would kick ass, but if not, i'm definatly sticking to javascript. (well, i'm having the front end guys stick to javascript, since i mostly do ss programming)
Mon 01 Jul | vanguard | Vincent, Sadly, I don't know if you can do real db interaction from flash. However, where I work I can't imagine a use for that. If people can connect from their web browsers to my databases then I'm not secure. Larry: 34.2% of users love flash 65.32% of users really love flash 24% of users only like flash If you question my numbers than you must lack flash programming experience. :-)
Tue 02 Jul | blech | >34.2% of users love flash >65.32% of users really love flash >24% of users only like flash are those the ofishel macromedia figgers?
Tue 02 Jul | Chris Altmann | Thought this might be of interest: A Flash front end to the J2EE Pet Store demo http://blueprints.macromedia.com/PetMarket/flashstore.html
Tue 02 Jul | Lachlan | Vincent, You can use Flash to import XML, which could be pulled from a db and assembled with server side scripting. PHP can handle SWFs on the server-side: http://www.php.net/manual/en/ref.swf.php Flash uses the same language basis (ECMA-262) as JavaScript, so most things you can do with JS you can do with Flash, and some you can do with Flash that you can't with JS. A lot of Flash sites have bad usability, but with MX it's a lot easier to make good ones (including integration with back button, standard elements such as scrollbars...). That said, I don't think there's any particularly great Flash examples out there right now, but there's nothing to hold Flash back. Not that I personally use Flash, because I don't like the thought of even 5% not being able to see stuff, but Flash is heading in a good direction.
Tue 02 Jul | mark | You guys are killin me. I just skimmed down the thread, so let me try to clear up some questions. Flash can dynamically pull in any kind of text or images from any datasource through ASP or Java APIs. It can also natively import XML without using any third party software. The newest release, Flash Mx, has two completely different development environments, one for designers, and the other for actionscript developers. Now, on the topic of usability and how much Flash currently sucks as a user interface, I'll point you to two seperate sites. The first is Jakob Nielsen's, where you'll find an article from October 2000 entitled 'Flash: 99% Bad'. http://www.useit.com/alertbox/20001029.html For anyone who might be unfamiliar with Nielsen, if you work on designing ANYTHING for the web, bookmark his site. The second is on CNet (News.com), and I'll let you figure it all out from here. http://news.com.com/2100-1040-930301.html My only point is this- Don't judge Flash by what it's already done, judge it by what it's capable of doing.
Tue 02 Jul | sleepily anonymous | > If so, can a server dynamicly 'write' flash? Vincent, I did precisely that. Maybe there are opensource tools that do this now, I don't know. The project I completed was to write a library that abstracted away the Flash file format's primitives, so the user could concentrate on drawing a GUI's geometry. The primitives are things like strokes, fills, lines, curves, text. The user of my library used it in a serverside script, so an xml file would request things like (for example) a textfield with white background and bevelled border, with some buttons on a frame underneath, and the resulting binary would be sent to the user. I didn't work on the Actionscript level, but it's derived from ECMAscript, like Javascript.
Tue 02 Jul | Richard | Patrik: '...I think the major flaw with Flash, is that it promotes the creation of 'home brew' navigation and menus on web sites and web applications. I for one think of Flash as a 'creative-guys-do-artsy-things-on-the-web' kindof tool. ...' Jacob Nielsen goes into a lot of detail on this at http://www.useit.com . I believe he has started on some initiative with Macromedia developers to try and sort out the pain-in-the-ass mess that Flash UIs turn into. UI Consistency is much more important that UI creativity. Patrik again: ' ... Usability is the big problem of web sites. I think the solution to this is to do away with the web-browser, as we know it. ... ' ROFL, had me going there. There is nothing inherently unusable about a web browser. There are a lot of things that are very unusable about menus - they don't scale well wrt lots of choices, you need a very effective pointing device, you can't see what the main choices are without interacting with it. 'Most web surfers go out of their way to avoid sites with PDF, and FLASH. Why you ask?' I try and kill flash a lot. I pump a lot of sites into my restricted sites list, generally to kill off spyware and ads. With the growing amount of flash ads, flash gets throttled for those sites. I like flash games, some flash content and humour, but to suggest FLASH as a platform based on X% penetration is a bit misleading. HTML has 100% browser penetration, is based on open standards and is cheap to produce with massive amounts of how-to literature and tools available. The use of FLASH as a browser platform for interactivity is to suggest it as an alternative to HTML. The usability issues about flash-in-browser are still not solved. Standard set of widgets is really standard set of FLASH widgets for new FLASH content only. These things are not native controls don't behave the same and don't take up the browser pane properly. The Java crowd hit all of these problems before. They don't go away with an alternative set of 'internally standard' widgets. Usability is more than just consistency. The web isn't a desktop OS stop trying to make it so. PS I worked for a company who used out-of-browser and standalone flash applications to make high-presentation UIs for the consumer space (essentially credit card software that was skinned like a credit card, essentially using a direct metaphor). That was pretty cool, but that UI would never really scale in complexity.
Tue 02 Jul | Richard | '... Jess N, >How do people make standard interfaces if they can't >experiment with a raw system? >Things need to evolve. Agreed. Things need to evolve. ...' But that evolution is dictated more by the OS & application vendors with big research budgets and mass consumer penetration. Effectively only Microsoft, Apple, possibly Netscape too, maybe the KDE/Gnome crew. Sometimes an interesting UI pattern might get noticed by one of the big groups and some form of it incorporated into their products; effectively moving the evolution of UI. there are not many really useful widget types being created nowadays. Don't expect the artistic types to evolve the UI - generally, even in standard application design those people are quite dangerous to usability (and developer sanity). Effective UI is not about making UIs pretty. As for flash as a platform with its standard widgets, the browser penetration aspect is a bit of a misnomer: How about FLASH as a platform for 95% of browsers, LESS { those who use screen res <1024 x 768, non Latin-1, non-US english, non-standard pointers, ....... }
Tue 02 Jul | Richard | OzzieGT: '... As far as 'tolerable' goes, why should we have to wait for 56k users to play catch-up? The standard for the size of the average download is increasing, and so people who are on slower internet connetions really just need to get used to the idea of some web pages taking 30 seconds to load instead of 5. I wonder what percentage of current web users are on dial-up nowadays anyway... ...' Probably because they represent teouhe vast majority of internet users. Consumer broadband is stagnating, if not imploding, and corporatations are going to great lengths to control employee internet use. All of these 56k users are your target market. Whatever you deploy has to be suitable for them too. I can tolerate large d/ls for certain things only, like file content, service packs/updates, game patches and software that I am intending to use. I am not willing to wait while redundant content loads. If i am going to a site, it is typically so that I can read something there, possibly download something. But to D/L I typically have to read too. Waiting for someones flash content to load, redirects to respond, popups, popunders, poparseways just pisses me off. This is costing me time and reducing the quality of my experience. These longer page loads offer nothing to the viewer.
Tue 02 Jul | Sammy | Does anyone remember search engines? They were the worst blight on the internet. They were Portals, with a tiny text box to do the search. Then came Google. I like inefficiency. I like everyone misusing a tool. That means differentiation when I don't. Still, there are dark clouds with Macromedia. Why does Microsoft not consider them a threat? Even the name references Microsoft. Because Macromedia agrees to limit the power of their plugin? Or because they've signed up to do integration with .Net, potentially aiding MS' server push?
Tue 02 Jul | pb | In general, flash should be avoided in practically all situations because of its well-documented deficiencies. However, it can be a useful tool such as when used like this: http://reservations.broadmoor.com/
Tue 02 Jul | Sammy | Duh,. Of course it's clear why MSFT won't kill Macromedia. Just think of Joel's last article. Big companies release complements for free. Small ones release opensource to not appear as threats to their large partners. Microsoft could kill them if they wanted, which is why they don't.
Tue 02 Jul | Joe AA. | I'm not a flash user either. Haven't given it much thought. My daughter is the one that browses all the 'way cool' websites. But I did try the PetMarket link some posts above. Gave the appearance of slowing my cable modem down to a dialup. That didn't impress me, nor did anything on the site - why wouldn't someone just use plain HTML for something like that? Got me. Flash must have it's followers... and rumor has it that visual basic does also. Just another thing I'll never understand.
Tue 02 Jul | Not a flash user | Queen: Yes, you're very clever. I know the Flash API, so I have the knowledge. You, however, are contributing nothing but bullshit to this conversation. Shame, that, because you may actually know something, but don't seem to know how to express it in polite company. Patrik: Yes, you're very clever - windows DOES have a standard set of widgets. However, Flash runs on many platforms, not just Windows. Perhaps that's why they are creating their own. In any case, few seem to have anything better to do than troll this conversation, speaking with their emotions and not their minds, so I won't bother anymore.
Navajo isn't a written language | Mon 01 Jul | A.
Thats why you cant find anyone to translate it (or do you want it as downloadable MP3s)?
Mon 01 Jul | Joel Spolsky | My father ran the Navajo Reading Study at the University of New Mexico for 5 years. So you've picked the wrong person to try to tell that Navajo isn't a written language! Here's a font: http://www.navajocentral.org/navajofont.html
Mon 01 Jul | Peter WA Wood | From the description of the 'Navajo' font extension, it would seem that the written Navajo is a transliteration rather than directly written in the native langauge. So perhaps you are both right ?
Tue 02 Jul | Matthew Lock | Any language can become a written language by just using some kind of alphabet to write the sounds down in. The International Phonetic Alphabet has symbols for any sound a human mouth can make, so it would be quite easy to write Navajo down if you wanted to.
Start a company | Sun 30 Jun | Warren B.
Hello, Joel say that you need to read Growing a Business by Paul Hawken if you start a company. I like it but do you have an another suggestion. Regards Warren
Mon 01 Jul | Frederik Slijkerman | Try not to invest too much in the beginning. Do it one step at a time.
Mon 01 Jul | Prakash S | write a business plan, that will really open your eyes.
Mon 01 Jul | Jan Derk | Rules for Revolutionaries by Guy Kawasaki. http://www.amazon.com/exec/obidos/ASIN/088730995X/qid=1025515886/sr=1-1/ref=sr_1_1/002-3700043-9984855 The writer worked at Apple in it's glory days. It's a very interesting read, especially if you want to create new products in the computer/software industry. There's loads of good stuff in it, but nothing shocking either. But then again that's probably not a surprise for everyone who doesn't believe in silver bullets. Guy's motto: Create like a God Command like a king Work like a slave Gee, if that's all I have to do...
Tue 02 Jul | MadMan | I'm not sure what type of company you're planning to start, but if you're thinking of gettting into the consulting business, I can think of no better book than 'Rain Making: The Professional's Guide to Attracting New Clients' by Ford Harding. I found the guide to marketing yourself outstanding. Harding tells you how to get publicity by writing articles, getting quoted in the media, and many other tips. It also has lessons on how to close sales. It's a fine addition to my bookshelf. Amazon link: http://tinyurl.com/jdw
What's the big deal? | Wed 26 Jun | OzzieGT
At most of the job websites I visit, it seems that everyone seeks advice on how to be a manager. What gives? I dont see the reason for it...why do so many people technical background want to move away from that into management? Is this something that changes as you get older? Im only 23, and I am about go get a MS in HCI, but after working for a year and a half, I really dont have any long term desire to be a manager...am I missing the big picture? Are there no decent upper-level jobs that are technical?
Mon 01 Jul | those who know me have no need of my name | what's your plans, Katie?
Mon 01 Jul | Walter Rumsby | A standing ovation for Ms Lucas please for telling it like it is.
Tue 02 Jul | those who know me have no need of my name | I wish Katie had her own blog.
Joel is wrong about performance appraisals | Sun 23 Jun | Ralph
So says this dude: http://wmf.editthispage.com/discuss/msgReader$3514?mode=day -- QUOTE -- BTW, Joels paper is mostly wrong regarding the review process at Microsoft. He first confuses incentive/motivation, quoting Herzberg, and then fails to mention that Kaplans, The Balanced Scorecard is another HBR classic. While Herzbergs article talks about motivating people, it does *not* talk about evaluating people. Joels admonition to always give everyone a glowing review is stupid... -- END QUOTE --
Tue 02 Jul | A. | . . . and that is the key. A good company has one form of punishment: firing. There is really nothing else you can do to discipline an underperforming employee. A chat, 'If you don't get better, you're gone.' And then the ax. We're adults, after all.
New Virtual Machine Anyone (Pt2) ? | Fri 21 Jun | James Ladd
Before this post falls off the page and out of your minds, please check the original post (further down the page). Id be interested in hearing from anyone. Regs,
Tue 02 Jul | James Ladd | What do you people think about calling the VM.... Navajo ? Regs,
Tue 02 Jul | Joe AA. | No... a more technical sounding name. Try 'H1B'.
Getting Things Done When You're Only a Grunt | Tue 25 Dec | Joel Spolsky
Do you have any ideas for getting things done when youre not in charge? How do you bring an organization that scores 1 or 2 on the Joel Test up to 11 or 12?
Tue 02 Jul | Mitchell Silverman | One suggestion to add to the headphones... a walkman or some other portable player. When I'm in the zone and need to refill the mug or hit the john I'll leave the phones on. My little way of saying I'm thinking really hard right now - don't bother me.
Barbarians at the gate | Mon 01 Jul | Just me (Sir to you)
Yawn wrote: ..I often wonder where these people come from...it happens on mailing lists as well...an apparently normal mailing list starts a slightly controversial topic and suddenly all the deranged maniacs come out of the woodwork and begin a debate on which of them is less intelligent... I agree. I have found that it seems almost impossible to discuss broad IT subjects on the Net in any reasonable manner. Inevitably a discussion will touch on an issue involving anything remotely related to Microsoft and from then on it seems to attract an audience of bashers and zealots that take over the list-board-community. I have no idea how to stop it. The only places where I have seen it delayed are highly specialized subject areas, run on a short leash by strong autorative figures.
Mon 01 Jul | Nat Ersoz | No, no, no. What we need is another H1B visa thread. Stop with the MSFT baiting already. Its stealing bandwidth from Amerikan jobs, err... from ranting about Amerikan jobs. Well, its doing something dammit, stoppit.
Mon 01 Jul | Johnny Simmson | If we were certified, it would take care of the MSFT problem AND the H1B problem. It would virtually assure that we all got offices too.
Mon 01 Jul | Johnny Simmson | Oh yeah, education too.
Mon 01 Jul | Johnny Simmson | under God, of course.
Mon 01 Jul | erstwhile poster | Well, the people here are better at finding solutions to problems than debating what a problem is. If people wanted to ask, 'What makes a good programmer's guild,' or 'How would people decrease reliance on proprietary software,' the response would be 1000X more interesting. Well, 1000X a negative number is really bad, but you know what I mean.
Mon 01 Jul | Johnny Simmson | erstwhile poster, I disagree that the people here are better at finding solutions. The majority of them are dweebs. Of course, I am in the minority. (see how this works?) :)
Mon 01 Jul | Larry From Queens | So why don't you punks go debate about working sets or something? While you're at it, pagefault and forget to impliment your SEH. Enjoy! ;-)
Microsoft Palladium | Wed 26 Jun | Ged Byrne
http://www.msnbc.com/news/770511.asp?0bl=-0 Microsoft have revealed their plans for the next generaton trustworthy PC. Amoung other thing, it can only run certified binaries. The idea of certification has been discussed a fair bit lately, and it looks like Microsoft are going for it. So, is this a new era of reliable computing, or has Microsoft gone bonkers? Theres an interesting discussion of its affect on GPL here: http://www.theregister.co.uk/content/4/25891.html
Mon 01 Jul | Peter Ibbotson | Actually I think the bigger problem here is sorting out how to upgrade from a broken 'palladium' computer to the working new one you've just bought. Right now you can restore a backup and away you go, I just don't quite see how they work their way around this (Without revealing some of the keys involved somewhere, which leaves a potential hole). Backup is a critical issue for business use, and god only knows what organisations like the EU will think.
Technical Writing | Mon 24 Jun | Technical Writer wannabe
I am a software engineer that would like to improve my technical writing ability. English is not my first language Is there any resources or links to websites that might help me improve my writing.
Mon 01 Jul | A. | The dude should have stuck to German. http://www.icsharpcode.net/TechNotes/TechnicalWriting20020325.pdf
What about advanced degrees for ba's | Tue 23 Apr | Daniel Shchyokin
With all the talk of education lately something else has occured to me: What do people here suggest a BA (in history) do to further their education? Is an MBA worth it? is it possible to get an MSCS after a BA... is anyone else in this position?
Mon 01 Jul | Brett A. Summerer, MCSD, OCP, CLP, CNA, CCNA, MSEE, BSEE, BSCS | I have a BSEE and a BSCS. I continued on directly from school to get a MSEE/CS. After 1.5 years of work I'm attending a top 10 MBA school part time (University of Michigan). Here's the real deal: A MS in tech get's you $10,000 on top of normal salary and a chance for promotion down the road. A MBA doubles your salary and gives you a Director or better job 1 week after graduating. A MS sticks you in the programmer's seat forever. A MBA give you the key to executive washroom. A MS traps you in the 50 hour+ work week. A MBA makes you work two 100 hour weeks per year, and 30 hour weeks in between. Promotions happen to techie programmers (like myself), not just english/accounting/etc... majors who work in IT. The sad truth, whether you believe it or not, is that the VAST MAJORITY of techies REALLY have no idea about how a buisness runs. Believe me, I've worked WITH plenty. They work FOR me now. The biggest reality that programmers have to grasp to move up is: Business grunts want the quickest possible solution, no matter the quality. Tech grunts want the best possible solution no matter the time it takes. Neither one of those guys ever gets promoted.