last updated:06 Aug 2003 14:49 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 06 Apr 2003) | View Other Weeks
best programmers in the world | Sun 06 Apr | Dennis Atkins
In a recent international programming competition, the Eastern European countries kicked everyones butts. Cal Tech came in 13th after the Univ. of Buenos Ares. http://www.nytimes.com/2003/04/03/technology/circuits/03code.html?pagewanted=1 Say what you want about how this is not a real competition, or doent reflect the real world, but I think the ability to code quickly with no errors correlates to general competance and ability.
Sun 06 Apr | tommyhl | So does my ability to drink lots of beer and smoke no fags[0] yet still point out politely that the link in your post requires regisration count for nowt? [0] 2 standard earth weeks and counting
Sun 06 Apr | tommyhl | That should be 'registRation'.
Sun 06 Apr | tommyhl | I wish JoS allowed one remotely not only to remove one's posts but also to create a hole in the floor into which one might sink. (approx 30mins and much reconsideration after posting the posts above)
Sun 06 Apr | Mike Gamerland | 'I think the ability to code quickly with no errors correlates to general competence and ability' It is possible it correlates to general competence but it says nothing of ability. If your intent is to be the proverbial 'coding monkey' then these competitions have value in identifying candidates. However, coding monkeys are the lowest on the totem pole of life in the development community. If you are looking for skills that add value, and hence increase income, they are beyond the skills tested here. Assuming you can code, the short, and certainly not conclusive list would be: - Self starter, who can work unsupervised and takes initiative when work is scarce. - Able to identify, describe, and document user requirements. - Able to identify, describe, and document architectural requirements. - Able to identify, describe, and document project management requirements. - Able to identify and understand efficiencies in both code and process that will improve the end user experience. - Understands their role in a successful development project is more than coding. I am not attempting to diminish the skills of the people involved. However, it is more than the ability to code that makes a successful developer. So much so that companies are hiring psychology and sociology majors and sending the to coding training. The better one then team these us with developers to cross pollinate best practices.
Sun 06 Apr | Nat Ersoz | From the description of the event it sounded like a very serious competition, both from a coding problem and from an algorithmic challenge. Additionally, I wouldn't diminish any of the teams' participants in terms of 'group dynamics', 'self starting' or the ability to abstract real-world concepts into design and implementation. You don't make it that far by being a slacker. Just for sake of Satanic Advocate: I'd float the notion that anyone who would insinuate that the participants even had a whiff of code monkey stench about them has been hiding behind GUI widgets and 'business rules' far too long. If ever there was a summary of how the profession of Computer Engineer or Scientist has been degraded into 'IT profeessional', the above post by Gamerland summarizes it. Now, there is not only the sheer lack of talent posing for competence, but the inability to distinguish the difference. Go Eastern Block, go. Kick Ass.
Download.com and the others like it. | Sun 06 Apr | Boris Yankov
I have been thinking about is it good to put my app on www.Download.com and the others sites offering the same services. I noticed that people are giving rankings very randomly. I checked if Joel has put CityDesk there and I found only the 1.0 version. Reading the comments I found they range from a very ignorant or angry to almost reverant ones. But that was not the strange. I found that the overall rating sometimes was very different than what you may expect to see. Lets take for example Microsoft Windows Installer. You may suspect that it is a very neutral thing: it is free; you need it; and it works. But not according to the ratings :) I found that the 9x/ME version was rated 77% and the 2k/NT version had 46%. Pretty strange for a software that is virtually the same. Looking through the opinions I found TOO many negative reviewes. I suppose often people tend to exaggerate their problems saying something like constantly hanging and never make it work. I am afraid that putting my software there I may get many negative reviewes that are either by ignorant users or by the concurrency. What do you think about this? ------------------------ Boris Yankov http://www.virtuza.com Go on, prove me wrong, destroy the fabric of the universe, see if I care.
Sun 06 Apr | Philo | It's the usenet effect - when you search for a product on usenet you will see overwhelmingly negative reviews, because people almost never just show up to a forum and post 'this product is great and I love it' (and often if they do they get accused of spamming) That said, I almost never use download.com anymore, esp for programming tools. I look for recommendations on forums and I google. Philo
Sun 06 Apr | herodin | On Download.com you get one-day-fly types or fly-by types of people, interested to post (tag) their enoying paint-brush like texts. Download.com is for me a resource for software, i tried to repley with descency but others ruin the effort. For a really good review you should build your own, managed by good friends and PR'ed on a very novell way. Starting at local areas, and increasing the radius of attention.
FogBUGZ' Google PageRank | Sun 06 Apr | Shlomi Fish
I accidently surfed into the Googles directory Bug Tracking section: http://directory.google.com/Top/Computers/Software/Configuration_Management/Bug_ Tracking/ to discover that FogBUGZ has the highest PageRank order. I remember that a short time back, it was listed at the end with absolutely zero PageRank. I think the reason is that Joel added a notice to the Joel on Software site pages, that reads: <<< My company, Fog Creek Software, has just released FogBUGZ 3.0, the latest version of our innovative system for managing the software development process. Check it out now! >>> And since many of the pages have a high PageRank, it eventually, made FogBUGZ very high too. Its also one of the first hits now in a search for bug tracker. You could say it is a direct (albeit perfectly honest and perhaps innocent) Google poisoning. Theres an ongoing discussion of it (which I started) in the Hackers-IL mailing list, where Googleology is a commonly discussed topic: http://groups.yahoo.com/group/hackers-il/message/3288 This may be a topic for Google Watch...
Sun 06 Apr | Shlomi Fish | Hmm... notice that the link to the Google directory category has been cut due to its excessive length. You have been warned.
Sun 06 Apr | Brad (dotnetguy.techieswithcats.com) | I don't think it's fair to call it 'poisoning'. Joel was just advertising a relatively major upgrade to his software on his web site. So Google likes him, and gives his links weight. There's no way he can avoid that. *shrug* Blogs broke Google's relationship system. It'll take some time before they fix it.
Sun 06 Apr | Shlomi Fish | I called it 'poisoning' because it is a deliberate act that modifies everything. I did not meant it was (necessarily) bad or anything. It's like 'memory poisoning' or 'mail poisoning' or other types of poisonings. If you'll go up the thread, you'll see we discussed Advogato (http://www.advogato.org/) as a Google Bomb. In any case, you can say that this is a Google bug (or at least misbehaviour), because regardless of the importance of the 'Joel on Software' site, FogBUGZ is not the most prominent bug tracker out there. (no offence, Joel!)
If you were not a developer | Fri 04 Apr | Dan
What would you have done, if you were not a developer or in tech business?
Fri 04 Apr |           | restaurant biz
Fri 04 Apr | Bill Carlson | restaurant critic
Fri 04 Apr | | eating
Fri 04 Apr | peace | Islamic scholar
Fri 04 Apr | Ron Porter | Building wooden boats. Campground and park reviewer.
Fri 04 Apr | Lou | Architect... which helps explain why I'm fascinated by Joel's parallelogram offices.
Fri 04 Apr | Bored Bystander | Commentator on a 'McLaughlin' style round table debate program.
Fri 04 Apr | Tim Sullivan | Movie director.
Fri 04 Apr | commanderSpock | Mechanical Engineer
Fri 04 Apr | Soccer player | Hmmm... :-)
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | How about 'what are you going to do after software development thoroughly burns you out'? I haven't decided yet, but I better pick soon. ;)
Fri 04 Apr | Ben Combee | Video editor or filmmaker
Fri 04 Apr | dmooney | Astronomer
Fri 04 Apr | Kyralessa | Church history scholar.
Fri 04 Apr | mark | prophet
Fri 04 Apr | B# | debutante evil genius valet parking attendant Elbonian Ambassador linguist (cunning) origami instuctor primary care taker envelope sales recombinant acronym evangelist
Fri 04 Apr | B# | Run a hockey school
Sat 05 Apr | anonymous | I would be a cricketer
Sat 05 Apr | Daniel Shchyokin | Insurance Agent
Sat 05 Apr | B# | Daniel What you said! LOL
Sat 05 Apr | smkr4 | Economist
Sat 05 Apr | Prakash S | Millionaire Rock Star...:-)
Sat 05 Apr | Derek Woolverton | I'd want another field where I could be creative, but still constructive. (Video Editor is too artsy for me, besides before computers it was barbaric.) I actually posed this question to others back in college, but with the additional constraint of being 100 years back. In that case, I came up with metal working: crafting machines, tools, armor and the like. Actually, a good friend of mine (a programmer at Xerox), spent his free time linking 1cm rings together to form chain mail. He had coffee cans of links everywhere: in every room in his apartment, his garage, his car, his girlfriend's apartment, his parents house, ...
Sat 05 Apr | T. Norman | White collar: Engineer, accountant, or actuary. Blue collar: Construction (did a little bit of it between semesters in college) or fireman. Many blue collar jobs actually pay more than white collar and have better job security.
Sat 05 Apr | John C | Professional footballer (soccer player to any Americans).
Sat 05 Apr | T. Norman | I see some people saying fantasy-type things like millionaire rockstar and professional soccer player ... come on, if you actually could have done those things you wouldn't have become a developer! What would you and could you actually have done, if programming was not available as a paid occupation?
Sat 05 Apr | na | cognitive scientist || gardener
Sat 05 Apr | Simon Lucy | Me. Oh I am.
Sat 05 Apr | The Real PC | The other things I like are hard to make money at (art, music, writing, thinking). After getting a Ph.D. in linguistics I considered being a college professor -- after 4 years of graduate school you need one or more years of low-paying post-doc, then 5 years of low-paying junior faculty, resulting in possible tenure (50% chance). Also, I saw a lot of political correctness and deception going on, which I hate. You can be creative with research, but the total amount of time spent feeling creative and absorbed in your work is probably more for developers than for professors. Also, to be a teacher you really should love being around teenagers all the time, which I don't. And furthermore -- higher education has become a giant rip-off, and I would not like to be part of that.
Sat 05 Apr | Matt H. | Law Finance (Investments) Writing (Well, I'd try ...) Entrepreneur/Consulting Principal (One-person-shop) Maybe a histroy professor. :-) regards,
Sat 05 Apr | B# | I would like to publicly appologize to Daniel for my comments. I did not mean to disparage him in any way. Sorry!
Sat 05 Apr | Billy Basic | Designed air defence radar for the Baghdade civil defense committee.
Sat 05 Apr | fool for python | Jazz pianist. Architect.
Sat 05 Apr | rexguo | concert pianist
Sat 05 Apr | murph | Another kind of engineer...
Sat 05 Apr | Mike | I'd be Fred Garvin, male prostitute
Sat 05 Apr | Cletus | Engineer (Mechanical or Electrical)
Sat 05 Apr | Li-fan Chen | Bill Gates
Sat 05 Apr | Andrewm | nanotech researcher
Sat 05 Apr | cooldev | Indie rock star - 5 guys band - I wrote all the songs, play the lead guitar, become sort of informal 'music director' to the band, and keep quiet, let the vocalist who is more extrovert than me become the focus of media attention. For a rock star I will be a good family-man, with a beautiful and educated wife, and lead a quite ascetic and religious life.
Sat 05 Apr | ubaid | writer
Sat 05 Apr | Lauren B. | Classical clarinetist.
Sun 06 Apr | Shlomi Fish | I would probably be a Mathematician or some kind of writer. I am studying to become an Electrical Engineer, but Elec. Engineers usually do some kind of programming as well. I also considered being a Bible researcher when I was in high school. Naturally, however, there's much more need for programmers than for Bible researchers. My friend once gave me a career apptitude test, and at its end my friend told me I was not suitable for being a Mathematician or a Programmer, and that Bible Research would be the best job for me. Then I started programming for a living, and was actually quite good at it. I also enjoy programming very much. Math is fun, but I don't like the fact, that you are often stuck in a deep though mode, where you have no idea how to advance further. And then after a long time, I come with a nice elegant way, and I'm amazed by its cleverness. In programming, you usually know what to do in the first place, and don't need to rely on too much inspiration. In the worst case scenario, you can do a little research and discover if someone found an efficient algorithm or if the problem is NP-complete or whatever. Knuth claimed that 'Programming was the hardest thing I've ever done'. If you ask me, math is much harder.
Sun 06 Apr | Ros | civil engineer. But my life would be worse.
Sun 06 Apr | John Rosenberg | ruler of the world
Sun 06 Apr | Barry Sperling | I already WAS a teacher for 31 years! I retired to try programming and I like it a lot. If I had to move on, I would like to be a meteorologist, but I'm too old, so it's in the category where others put 'rock star'. Programming IS my 'next' job.
Sun 06 Apr | Nat Ersoz | Ski patrol. Bicycle tour guide. It could happen.
The "Take What They Give You" Attitude | Fri 04 Apr | Herbert Sitz
When programming I continually come up against situations where the programming tools Im using, the interpeter/compiler, components, or add-ons, dont work quite the way I want them to. My first inclination is usually to bully on through and try to make them do what what I want the way I want it. But this is an inclination I almost always try to fight off. This is because over time Ive developed what I call the take what they give you attitude toward programming tools. The clearest example where I did try to bully on through -- before I developed the take what they give you attitude --happened to me way back in the late 80s when I was basically a power user writing my first database app using Paradox for DOS. Paradox for DOS was a bit ahead of its time and was one of the first desktop databases that worked with sets of records and displayed them in a grid. The main user interface of my application was centered around a pair of grids, and I wanted for the current record in each grid to be highlighted by a solid bar that went across all the fields, instead of just by a simple blinking cursor in the active field. Well, I made it work the way I wanted, but that decision came back to haunt me. First, I had to manage a lot of things in code to make sure a selection bar would always show across the active record. Second, and more importantly, the prestidigitation that I did in the code to make the select bar appear involved (as I recall now) changing states of the grid from browse to edit, or something like that. This created the need to continually do checks in code for what the status of the grid was whenever the user tried to do an operation, or returned from doing an operation somewhere else. And it ended up creating lots of bugs. I can still remember late night calls and not wanting to answer the telephone, when late-night users discovered yet another problem, which nine times out of ten I could track down to the code I had added to implement the solid select bar. And all those problems were created by me in a silly attempt to make an unnecessary modification to the grids default user interface. The damn thing would have worked fine if I hadnt insisted on having the select bar just as I wanted it. Instead, I created many hours of extra work and headaches for myself by trying to fit a square peg in a round hole and make things work exactly as I wanted. (I realize many decisions like this are forced on programmers by clients or management; in this case I was the only idiot to blame.) Did having the select bar result in a better user interface than if there had just been a blinking cursor in a single field of the active record? Yes, theres no doubt about that. But was that select bar worth all the extra work and extra headaches it caused? Definitely not. That Paradox for DOS scenario pops into my head whenever I run across similar situations where a tool provides something that works fine out of the box, but not quite the way I want it. Of course you always have to weigh the benefits from doing something exactly the way you want against the doing it the way that the tool offers it to you easily. And you have to have some idea of what doing it the way you want is going to cost in terms of extra time, complexity, etc. Given the difficulty of knowing beforehand exactly what problems I might run into, Ive taken to erring on the side of caution and I usually try to accept what the tool gives me and go from there. This is the take what they give you attitude. I know that in many cases my program would in fact work a little better or provide a little better user interface if I didnt accept what my tools offer readily. But I believe that accepting what your tools give you and not trying to make them work exactly like you want can result in (1) huge savings in development time, and (2) reduced complexity of underlying code, fewer bugs, and easier maintenance. I think these advantages of accepting what your tools readily give you usually justify forgoing the benefit of having the program work exactly as envisioned. I realize that for this to work youve got to have the right set of tools. That is, youve got to have a set of tools that by default let you program pretty close to exactly the way you want. But I really think that fighting off the urge to make things work exactly the way you want is usually beneficial to the success of a project. It reminds me of the old phrase, Better is the enemy of good. Im curious to hear if other people have similar stories, examples where trying to force tools to do work in a certain way -- instead of taking what the tools readily provided -- caused extra development time and maintenance headaches all out of proportion to the minor gains from making the program work exactly as desired. Or whether people think my problems with making things work exactly the way I want may stem from the fact that Im not good enough at programming. ;) Ill readily admit that Im not the worlds greatest programmer, but I really do think that theres a lot to be gained from adopting the attitude Ive described, even for good programmers.
Fri 04 Apr | Bored Bystander | Herbert: Yeah. No arguments with anything you state. However, there is the scenario of the client or end user who ABSOLUTELY insists upon a feature that just isn't available with the default behavior of the mandated or selected tool, and they won't listen to any argument that indicates that it's a poor use of effort. It sounded like your DOS Paradox selection bar debacle was self imposed. We've all done that to ourselves. Recognition of that makes you a better professional. I've gotten fairly good at avoiding that kind of stupidity myself, but what can you do when it's mandated that you *will* provide that which is not provided out of the box? And the non programmer manager will say 'you whiner, that's what we are paying you to do, not use things as they are, but create new things.' And won't accept any opinion that indicates that their stupid feature addition is bloat or non-core to the effort. To sum up - it happens, and I think you have the perfect attitude, but in the business world, it's hard to do anything useful with that attitude when your end users or clients are undisciplined about requesting nonsensical features with very high cost:payback ratios.
Sat 05 Apr | ayup | Totally agree with you. Ive had very similar experiences with Filemaker...this is an x-plat dbms designed primarily for the end user. This means is that it works very well as a RAD type system, so long as you dont fight its pre-designed gui too much. which of course I do, a lot, because the pre-designed gui has a few annoying limitations. Im slowly learning though that the best route where its possible is to accept the limitations and work within its rules...cleaner 'code' all around.
Sat 05 Apr | Simon Lucy | Not putting up with what they give you is one of the spurs to innovation. Sometimes that innovation can take too much in the doing or the maintenance of it. But without innovation where's the fun?
Sat 05 Apr | Brad (dotnetguy.techieswithcats.com) | 'The reasonable man adapts himself to the world. The unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.' - George Bernard Shaw That said, I think there's a difference between attempting to make progress, and unnecessarily beating yourself up just to be different. ;)
Sat 05 Apr | Angus Glashier | I find the best strategy is to present a choice. 'Sure, we could have this fancy feature, but that would require effort that might better be spent on implementing some other, more important feature. Why don't we get it up and running quickly by writing the simple version first? We can always add the cool features later if we really want them.' I actually realised this while trying to write fiction. I'd write a paragraph, re-read it, cringe and erase it. Never get anywhere doing things that way. Then I realised that I can always fix it in the next draft. Write the story first, then polish the prose.
Sun 06 Apr | Thomas Eyde | In 1998 I think it was, I worked on a project which failed considerly. The client paid an awful lot of money for something they couldn't install. The client wanted a web app doing the impossible. They wanted a rich, highly interactive gui. Their target was customers on different platforms, so they had a legitime reason to say no to a Windows desktop app. It was ASP 1.0, ADO 1.0, IE has just arrived in sp3, err, version 3, and Microsoft introduced the ActiveX Layout Control which did some CSS-ish positioning. The final gui looked nice, it actually worked, but needed all data locally to be responsive. Which meant huge scripting files and an unbelievable download time. But the product didn't work in the client's environment, and the technical choices made for making the gui locked us to the Microsoft platform (ActiveX), anyway. We pushed the technologi towards something it couldn't handle. Instead, we should really have given them an Internet connected desktop app...
Sun 06 Apr | Shlomi Fish | Joel has an anecdote about it in one of the 'UI Design for Programmers' chapters. He said something about a company that tried to create a login dialog in Windows that will also behave similar to the UNIX login dialogs, where you have to press enter twice. That caused them to implement a complex logic, and made the code very bad. Since I have to login to both NT and UNIX workstations at school, I noticed that, and I sometimes press enter on the NT. Still, I guess it's not critical that the dialog behaves in a UNIXish way, as long as the username is kept after you press enter. It's been a long time since I seriously did a UI design of some sort. In any case, I can testify that when working on an open-source C project, I implemented many classes from scratch, because I was not happy with the ANSI C facilities, or to make my project independant of external libraries. The code does not cause me a lot of bugs, but it is nonetheless something I wrote. I remember implementing a lot of internal logic in Perl that I later found out to be present in the core distribution or in an existing CPAN module. But, then again, the code was relatively short and simple and did its job, so I was able to maintain it. I once implemented a basic SMTP stack in Perl, because wsendmail (a simple command line mail sender for Windows) and other methods I tried did not work. It then turned out to be a bug in the Apache 2 for Win32 Alpha I was using, but I still kept it as it is afterwards, even after I was given an account on IIS where things worked perfectly either way. Perl is nice that you can re-invent an existing wheel in it, without getting burned down or floded with bugs. It is very nice in this regard.
Salary history | Fri 04 Apr | Kyralessa
With the interesting discussion of employment agreements, heres another new-job-related topic: Salary history. The ad says they require it, or they tell you in person that they do. Do you: (a) Tell it all; (b) Make up numbers; (c) Flat out refuse; (d) Stall; (e) Other...?
Fri 04 Apr | Sergent Sausage | I generally refuse. It's none of their business and gives them an extra 'barganing chip' in the negotiation game. If they insist, I demand to see the same from them: Their tax records that indicate their profitability for the last few years. It's only reasonable. If they want my financial information they can have it, but only if they cough up theirs in return. Quid Pro Quo. If they refuse, I simply walk. I use the same tactic if they want anything similar: Background check (I demand same from interviewer(s), as well as management all the way up the chain of command), If they want a credit report, I ask same -- Credit report for the business, If they want *anything* at all, it's both a fair and a reasonable request that they supply the same. If they're unwilling to supply same, and don't back down on their request for information from me I'll walk. Technically speaking though, this hasn't been an issue for me for the last 5 years as I've been independent for that period -- but that's the way I used to handle it. Of course times have changed in the last several years and this all depends on how badly you want/need the job.
Fri 04 Apr |           | MYOB.
Fri 04 Apr | programmer | Some of you may remember -- there was a long discussion of this question some time ago. I guess it is gone from the archives. People in the discussion got somewhat testy. A person who reads this group -- I think his name is Eric Sink -- passionately argued that salary history is necessary in order to come to a 'win-win' arrangement. He runs his own company, and IIRC, he said if you didn't disclose salary information, you wouldn't be considered for a job -- or at least you'd be 'low-balled.' Other people argued that disclosing your salary history was just a way for the company to find out how badly they can cheat you out of your market value. I came down on the latter side.
Fri 04 Apr | Mark Hoffman | Well, I suppose flat out refusing is an option but in today's job market that might not be the most reasonable approach. I really don't see the big fuss. After speaking with a company and learning more about them and the job, I can quickly get an idea of what my salary requirement is going to be. If it is substantially more than what I'm currently earning then I'll demonstrate why this job should pay more. Good negotiation skills are going to be much more useful than just saying 'No! You can't have that info!'
Fri 04 Apr |           | Don't mean to keep pimpin' the headhunter, but since he does have the best answers... http://www.asktheheadhunter.com/faqsalary1.htm 'Employers have no business asking for your salary history. It's confidential. It has nothing to do with hiring you. Imagine what they'd say if you asked to see the history of salaries they've paid for this job over the past ten years. Or, if you were to ask the manager what his current salary is. Sorry, Mr. Manager, but what's good for the goose is good for the gander. The excuse employers make is that your past salary helps them determine your experience level, it pegs your value, and it helps them establish a new salary for you. Hogwash. By that logic, they don't need to interview you. All they need is your salary history and you're off to the races. By using the figures other employers have used, they'll know what their job is worth and what you are worth. And they'll win the lottery, too.'
Fri 04 Apr | 3 | It clearly is none of their business. They should be making you an offer based on your capabilities and the market rate for that expertise, which they will be well aware of. There is only one reason for them wanting your salary history, and that is to see whether they have an opportunity to pay you less than they would otherwise. They will certainly not pay more than they need to. The best way to handle it is to deflect the question by asking another. If they return to it and insist, they you have a conflict situation anyway, and should explain it's private information, which it is. The tactic of requesting salary history is particularly prevalent with recruiters. This is because their business is based on minimising the pay to you. On the subject of the market being bad, they're not going to consider you unless they have a strong interest in you anyway, so don't be concerned about offending them by refusing to divulge private information.
Fri 04 Apr |   | I say market rate. What you made last year or 3 years prior is irrelevant.
Fri 04 Apr | S. Gwizdak | Lie, and inflate the numbers to what you want them to pay you.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | 'You can have my salary history when you give me the salaries of all the people in the same job title, including history comparable to what I'd give (10 years)'. Fair's fair, right? It's not like you're going to take the job if you feel like you're getting screwed.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | Oh, and I would definitely NOT lie. It's better to withhold the information than to lie.
Fri 04 Apr | Kyralessa | The danger in lying is that they'll ask you to prove it. For instance, my dad, a manager, asks for salary history when he interviews. Assuming they tell, he then asks for a pay stub as evidence. So in some cases lying can be worse than simply refusing or deflecting the request. His argument is that if someone has a much higher salary history, he's probably not going to be interested in the position at hand, and if his history is much lower, they're probably not interested in him. My reply is that if people know the range, or are asked for 'salary expected,' these judgments can be made without the invasion of privacy that a salary history entails. I was torn over these for a long time (I even called the Department of Labor to ask if requiring a salary history is legal), but I finally concluded that there's really only one reason a company would request a salary history...and why would I want to work for a company like that?
Fri 04 Apr | Bored Bystander | http://208.155.195.240/~trforum is a technical recruiter discussion BBS site and is a GREAT place to lurk to find out how HR people and recruiters think. And I've met a few online, too. Frankly, you guys are p*ssing in the wind if you think that you can withhold salary information and simply rationalize it (however correctly) when you apply for a job. You just won't be considered at all. Yes, it's none of their G*dd*** business. No, it's not fair, yes, it's an invasion of privacy. And they simply don't care, and they don't have to care. Here's the deal. HR people want to see your previous salary so that they can develop a rationale for paying you $X for a job or for even considering you for the job. It's just that simple. Literally - their thinking is that if you earn $60K/yr you are perhaps a candidate for a $75K job but not a +$90K job. (in fact, I recently saw a web ad from a local recruiter whom I think is lying pond scum, that states exactly that kind of thing in print.) And In case anyone wants to rail about borkers and headhunter scum (which they are), be aware that this thinking also comes straight out of the HR departments of most companies. They call it something like 'internal equity'. It basically means that you're *always* evaluated by the calibre and pay level of job you hold now. Qualifications and seniority and ability? Denoted by current and past pay level, primarily. Unfair, short sighted? Yes. What to do about it? Well, start by telling every single programmer and IT person to not play ball. Maybe we can get a national movement going. Yeah, right. And some heads down nebbish - one of our peers - that burnt through his savings will be right there in front of you, scrambling to apply for these jobs like a third world kid begging for tourist's coins.
Sat 05 Apr | Dennis Atkins | Bored, I think that chat room represents reality as much as slash dot represents current engineering practice. I've never disclosed salary history and it has never prevented me from getting a job. Those bbs cats are just blowing smoke out of their navels.
Sat 05 Apr | Bored Bystander | What about the proverbial stacks of resumes that companies have to wade through whenever they advertise a job? I'm going by empirical evidence.... the recruiter posting(s)... the positions taken by a recruiter I know that belongs to a mailing list that I run... a few other people with HR background that have stayed around for some time on some BBSs I've frequented who seem to have a long term career interest in HR practices. I'm also allowing that HR culture isn't the law of the land at many smaller and some technology based companies. I'm not saying that it will be mandatory at all companies - just that most companies that use HR people to screen candidates and many recruiters doing perm placements will demand the salary history and they will slam the gate shut if you don't provide it. 'Policy' is just that.
Sat 05 Apr | Simon Lucy | Salary history is used as a lever in gettng the lowest amount for a particular job. If that information is required as a key to being interviewed then it indicates a considerable amount as to the kind of organisation it is. If you don't care about giving that information then you won't care about the kinds of organisations that work out remuneration that way. You won't notice because those same organisations will also have a clause in their contract that discussing salaries is forbidden (some I've seen its been a sackable offence). Unless that kind of organisation pays the market rate at the time, gives reasonable increments for cost of living, experience and so on there will be an undercurrent of dissatisfaction. It might not matter because there are other upsides to working there. Recruiters, employers never ask irrelevant questions from their point of view, from the applicant's they might be entirely irrelevant and sometimes tell you that its not the place for you.
Sat 05 Apr | Vincent Marquez | Ok, both Bored and Dennis bring up some really good points. Does anyone think there is a downside to playing it safe, and just telling them that you were paid at the last company the ammount your hoping you'll get this time? I mean, we all want more money, but if we're *hoping* our next job hope will net us 70k a year, is it really that horrible if we missed out on possibly getting 75k?.
Sat 05 Apr | Bored Bystander | Don't get me wrong, I'm in favor of getting as much as possible, and I think that someone basing your worth to them based upon your current salary is complete, total bullsh*t. IE - what if you are currently underemployed? Nope, the HR types with their 'everyone needs to be a shrink wrapped commodity' thinking want your 'number.' It's the same demeaning logic that makes these wastes of flesh raid other companies for talent rather than consider someone on the bench. HOWEVER - this is all MARKET DRIVEN. Most responses on this topic don't seem to include what the *company's* goals may be in this. Companies want to pay what is necessary to hire talent and they do not want to feel that they overpay *anyone*. THAT is what the emphasis on current and past pay rate comes from. What is deemed 'necessary' to acquire an 'asset' is some small premium over your current pay rate, because it works for most people. For every person protesting 'I deserve 20% more than my current pay rate' there are 10 (nominal to exceptional) people lined up salivating at the chance to get billable again at almost any price... Having ranted - no, I don't see any downside whatsoever to giving your salary. First principles - you may need to give it in order to be considered at all. For another thing, companies will often request a credit history and they can glean your approximate income anyway. For yet another thing, HR types often know the market better than we do and they may have other ways to infer a range for your past salary - such as past experience hiring people away from the same company. Another unconstructive rant & aside: I hate and despise HR people - their professional role, I mean. Anyone who performs real work should, too. A leprous pox on these pompous, haughty resource wasting creeps. More than H1B, more than outsourcing, the attitude that everyone must be evaluated against bullet lists of criteria like you're grading fruit separates more worthwhile people from tasks needing done than any political trend possibly could...
Sat 05 Apr | Brad (dotnetguy.techieswithcats.com) | A credit history? No company has EVER asked for that, and no company will EVER get one.
Sat 05 Apr | Bored Bystander | I've heard reliable 'rumors' that credit checks are sometimes now asked from job applicants. It's definitely a new HR trend. Personally - I would draw the line at that. Salary history - I'd give grudgingly. Authorization to check my credit? Well, I was going to use an impolite acronym... but 'no way'.
Sat 05 Apr | Chris Tavares | Credit checks are required to get jobs that require a security clearance. And you also have to pee in a cup.
Sat 05 Apr | Punter | Hmmm... lets see, for my current job I had: salary history background check (in.c any criminal record) credit check proof of eduction & grades drug test and about 12 interviews.
Sat 05 Apr | Dennis Atkins | Man this just gets crazier. What country and industry are you guys working in that requests a credit history? I mean whdat the hell? Maybe they want a semen sample too? Surely you guys are saying no to the credit checks?? If not, I wonder if there is anything you wouldn't do??? Surely this has to stop somewhere. Could you name names of companies doing this? I've got a cousin that works for a magazine and this might be a story she'd like to pursue.
Sat 05 Apr | Punter | Well, I work on Wall street for one of those 'premier' investment banks.
Sat 05 Apr | Dennis Atkins | OK, actually I can see that for a bank... they would want to look real carefully at any programmer wth a lot of gambling debts or such. I have heard that bank tellers get a pretty thorough checkout since they handle money. And I suppose with a government security clearence, they have to look that stuff up anyway since likewise someone with gambling debts and/or outstanding loans from the mafia might be suceptible to being bribed or such to get secrets. Anyone running into credit checks for making shrink wrap software or ordinary business apps or stuff like that where there would not seem to be any apparent reason?
Sat 05 Apr | 3 | Vincent, yes, there's a downside to giving them an inflated figure instead of the real one. They sometimes check and, if it's wrong, they will then label you a liar. So, you suffer twice because of deceitful behaviour by them. It's worth remembering this is a two way street though. They wouldn't be seeing you if they didn't have some interest. People should not be afraid to stand up for themselves.
Sun 06 Apr | Derek Woolverton | I simply use HR to fight HR. I tell prospective employers that my last employment agreement forbid me from revealing any salary information. While I would love to help them out, I am unfortunately bound by contract not to do so. With more and more HR department banning the discussion of salaries, this is becoming more and more believable.
Sun 06 Apr | Thomas Eyde | The taxes in Norway are public domain. Several online newspapers give you the opportunity to search for individuals. There are no details, though, so it's the total earnings revealed. The last year is not there, of course, as the data isn't collected yet.
Sun 06 Apr | Phibian | 'They sometimes check and, if it's wrong, they will then label you a liar. So, you suffer twice because of deceitful behaviour by them.' Erm - it could just be me, but blaming the 'suffering' on deceitfulness by 'them' doesn't seem quite right. I'd label you a liar too if you provided false information and passed it off as the real McCoy. So if you did in fact lie about your salary history and get caught out, you would 'suffer' because of your *own* deceitful behaviour. Furthermore - to be completely nitpicky - asking for salary history is not deceitful. One can consider it invasive, abuse of power, sleazy etc etc. But unless the ad says something like 'we promise not to ask for your salary history', they are not being deceitful when they do. I guess if they asked for your salary history during an interview and weren't actually hiring, or were planning to use that info to sell on the salary history black market or something it could be deceitful... Anyway.
Sun 06 Apr | Myron Semack | My company insists on giving a salary history. When we make a job offer, we offer the slary you're currently making (maybe a tiny bit more). Of course, we also adjust for cost of living. Our philosophy: We're not look for people who are jumping from company to company seeking more money. People come to work for us because they want to. After 6 months, we review you and adjust your salary based on your performance. So, if you were underpaid at your old job, you have to put up with it for a little bit longer. Of course, if you were overpaid at your previous job, be prepared for a pay cut. If you don't give it to us, you're not worth our time. There's too many other applicants out there to put up with it. Plus, if we had to pry it out of you, it means you're going into the job with some reluctance, which raises questions about your quality as an employee.
Sun 06 Apr |           | Be careful about overstating your salary. I was passed up once for a job because I was considered too expensive. Even though I would have been willing to take a pay cut. Myron, I think you're probably just trolling, but I'll bite... That's a pretty stupid policy. Basing salary on what the person was making before has absolutely no bearing on what the job is worth to the company. Do you understand? Just because some bloke was making 100K at their last job doesn't mean that you should pay him 100K! Do I need to break it down further for you? Let's say at his previous job he was making 120K as the db admin, sysadmin, and main architect. Now lets say that you only need him as a db programmer. Your company is very stupid if you pay him 120K and the going rate for db programmers is only 50K. Likewise, maybe that very same person was only making 20K working at a startup. If his going market rate is 100K-120K, then you're going to miss out on him! Easy enough to grasp, no? And the 6 month re-negotiation is a fraud. Smart negotiators know that if they took the job, in 6 months time their bargaining position will be severly weakened. Of course you know this, and that's why you put in 'be prepared for a pay cut'.
Sun 06 Apr | Brad (dotnetguy.techieswithcats.com) | Everybody has a level of shit they're willing to put up with. Myron gets people, because there are people willing to put with his level of shit just to get out of a job. Rule #1 when deciding to take a job: will you be happy with the exact pay and work you'll be doing at the start? Always consider the 6-month pay re-eval and the 'you'll work on cooler stuff later' with a huge grain of salt. We offer people what we feel they're worth, not what other people thought they were worth. We're not going to try and dick them out of money. A change of $5k/year in salary is far less expensive than training a new person every year because you can't retain them because of stupid hiring politics.
Sun 06 Apr | 3 | Phibian, the deceitfulness is the asking for salary history without honestly explaining their reason for wanting it. Companies tell lies all the time, in their marketing, in their dealings with state regulators, law firms, and job candidates.
Sun 06 Apr | Dennis Atkins | 'Be prepared for a pay cut'?? If you paid them markets rates that wouldn't be necessary. And if you can't determine their market rate based on your own research into the state of your market and their talents I wonder if the persons doing the interviewing are incompetant? In any case, this hardly sounds like a desirable place to work. What are the reasons why someone would want to take a pay cut and put up with your poisonous attitude to come work at such a firm? Free crack on Wednesdays? (A word to the wise, lay off it a bit...)
Forum Software Beta 3 | Fri 04 Apr | Dave B.
For those interested: I have upload Beta Version 3 of the forum software. This version supports email via CDO. Although it does not as of yet have a search feature, I think the forum is coming along nicely. - http://dbehnke.users5.50megs.com -
Sat 05 Apr | pb | Can you provide a glimpse of it?
Sun 06 Apr | Thomas Eyde | Yes, that would be nice.
Sun 06 Apr | Dave B. | If by 'glimpse' you mean 'screenshots' then the answer is: I don't have a website (with screenshots) setup as of yet but am working on one. On the other hand, If by 'glimpse' you mean - ( summary of features, why did I write it?, what does it do? etc etc ), then the answer is that I am also working on a FAQ. At the moment, the only way to see what it looks like is to download and run it. It is a free download and fairly easy to setup.
Sun 06 Apr | Thomas Eyde | I was thinking more of an online version we could actually use, so we don't have to install it for our selves. Yes, I am lazy.
New SQL Upgrade? | Fri 04 Apr | just wondering
anyone know when the next version of SQL is going to be released by MSFT? for some reason, my bosses are under the impression from their distributor that there is a new version of SQL coming out in a few months... im under the impression that the latest is SQL 2000 SP3... anyone what the story is?
Fri 04 Apr | just wondering | ok... so i got a little more info on my question. i think what happened is that the distributor told my boss that since MSFT Advanced Server 2003 is comign out soon, that SQL Server 2003 will be released soon as well. anyone know anything about this? we have to renew our licenses... is there any reason we should buy a package that would include the upgrade for SQL 2003? or are we better off jsut sticking to 2000 for the time being and wait until we have to renew our licenses next year?
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | Nope, not in the next few months; if I had to guess, I would say the end of the year is probably closer to realistic. What makes me think this is that the SQL Server beta is going to be one of the prominently featured topics at the next PDC.
Fri 04 Apr | Mike | I was at a large DB seminar put on by MS and Unisys. The Microsoft people told us: There is a 64 bit version of SQL Server 2000 coming out in May, it is going to coincide with the rollout of Windows 2003 Server. That may be what your boss is wetting his pants over.
Fri 04 Apr | Nick | The next version of SQL Server, aka Yukon, is expected out next year. The beta may be available this summer.
Fri 04 Apr | just wondering | well, in the event that they release 64-bit SQL Server, why would i be interested in upgrading right away? furthermore, woulnd't i have to upgrade to Advanced Server 2003 if i want to utilize the new 64-bit version? Would i also need to upgrade the server machines? i'm getting the impression that no one here is in a hurry to upgrade... what's the timetable that most other poeple are considering for upgrading to 2003 and/or SQL Server 64-bit?
Fri 04 Apr | Mike | The 64 bit version is for companies with large databases that are running out of scalability. 32 bit SQLServer with AWE and /3GB switches only goes so far. Plus the olap tools are currently limited to 3 gigs of ram as well. Particularily bad because your olap datasets are usually your biggies. 64 bit allows addressing much more ram without using an AWE or /3GB kludge. If your company needed 64 bit SQL Server you would know it and know it coming out already. Personally I am glad they will have the 64 bit version of Windows and SQL Server, but they are 5 years behind the Unix folks and DB vendors here. I am glad our shop doesn't need this scalability yet. At the seminar I was at the Microsoft person said MUCH of SP3 for SQL Server was undocumented fixes that make SQL Server more scalable when using more than 8 processors. Unisys makes some very nice servers with up to 32 procs. SQL Server wasn't scaling beyond 8 as well as it should have and MS addressed that.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | I'm in quite a hurry to upgrade to W2K3. The IIS upgrades, especially as they relate to ASP.NET, are reason enough. The security upgrades are icing on the cake. We don't run any 64-bit machines. Yukon will feature prominent support for .NET. Almost everybody seems to agree that, at a minimum, you'll be able to write stored procs using .NET languages (so, objects with methods, pre-compiled, instead of interpreted SQL). I expect that there will be native support for stashing objects into tables and actually issuing calls against them. If they were smart, they would at least offer some sort of support for OODB. Wish I was on the beta so I'd know for sure what was coming. :) Guess I'll have to wait until the PDC...
Fri 04 Apr | dmooney | http://msdn.microsoft.com/vstudio/productinfo/roadmap.asp Looks like there is going to be a Visual Studio update in conjunction w/ Yukon's release. To me this would indicate 2004 since VS 2003 is just getting released.
Sun 06 Apr | Nicholas Franks | Well, If your running a SQL Server right now and if its not powerfull enough, i dont think the 64 bit is going to save the day. For Database Power ORACLE is the way to go. In Software buying/upgrading, you must be smart in the decision you are making. Do YOU REALLY need to upgrade ? If YOU DONT upgrade, are you going to lose enough money to pay back the upgrades within 1 year ? The beauty of the 1 year pay back, its alot easier to budget within the same year and like that its alot more appeling to the person approving the $$$ for the upgrades.
Dealing with obstinate nerds | Fri 04 Apr | Used to deliver pizza
How do folks deal with these types? Im talking about developers who are smart, but are inflexible. They dont follow the de-facto shop standards in existing code; their code works and is efficient but they do things like modularize and abstract to an absurd degree, and use arcane constructs when a slightly longer but vastly more understandable (and thus maintainable) approach would work. They reject suggestions that would require them to re-work their code. For example if something comes back from a usability test that indicates users are having a problem with an aspect of their UI implementation, they are just stupid users. They are difficult to talk to and have the personality of a microprocessor. Hope this gives an idea of the type of person I am talking about. In our case we are an academic institution and dont always have a lot of choice on who is assigned to projects, and its hard to get rid of people.
Fri 04 Apr |       | You use the same techniques that have been successfully used on nerds for ages: Beat the crap out of 'em.
Fri 04 Apr | Steve Barbour | Well, if you can't fire them, then make sure their phone number and email address are featured prominantly in the program. Let the users take care of them for you.
Fri 04 Apr | Philo | Fire them anyway. Actually, the formal termination process isn't supposed to be a termination process - it's a counseling process meant to try NOT to fire people. You counsel them. Start with 'if you have problems with the standards, perhaps you can discuss what your issues are. But if we decide not to change, I expect you to work within the established guidelines.' If the nerd doesn't deal with that well, then a manager explains to him/her, in a formal setting, why their attitude is a problem. The manager gives them guidance and suggestions towards resolving the issue. If, two months later, they show no signs of change, you have another little sit-down. You explain again that they are not the department chairman and they are expected to follow standards and react favorably to feedback. Make it constructive. If it were me I probably couldn't resist the urge to suggest they can't be that smart if they can't work within published guidelines... [grin] But ultimately, if you've tried to work with the person and they simply refuse to work with the team, you get rid of them. Philo
Fri 04 Apr | Ed | Let them go work for an employer who appreciates their ability to create working code efficiently. this will enable you to take over their project, mess up their working code, and blame it on then while talking about how superior you are.
Fri 04 Apr | z | You might try to at least write down some coding standards. It is a bit unreasonable to expect anyone to follow 'defacto standards'. When can they be sure they are doing it right? You seem to have an idea in your head of what the standards are and you expect these developers to be able to figure out what's in your head.
Fri 04 Apr | Matt H. | Ed's onto something. It sounds like this isn't really about what the developers are doing - to some degree or another, it's about ego. As for the 'stupid users' comment - if you are the boss, make a decision, and inform them of your decision to change screen X to do Y. Then if they don't do it, you're dealing with insubordination, which is a different problem, altogether. If not, lobby the decision-maker. Likewise, if you're not in charge, a lot of this stuff is personal opinion. You might need to take a careful look at, relatively, how well off you are. The code works. It's created quickly. If you are a decision-maker, well, then, make it clear how you want things done, and talk to your boss about ways to influence people. If you're in some-sorta-wierd project-manager-with-borrowed-reports-and-you-don't-write-the-annual-review situtation, you need to call the real boss and involve them. Final thought: Take another step back to make sure it's not just that these guys are 'different.' When ego's are invovled, it's easy to confuse 'different' and 'wrong.' Different is not the same style or attitude as you. Wrong is insubordination, the peddling of 'solutions' that don't work, or incompetance. If you have an objective way to measure it, taking months to develop a solution that more than 50% of your people could bang out in a couplea weeks is problably also 'wrong.' just my $0.02 ...
Fri 04 Apr | trollbooth | The days of the nerd BOFH using his IObfuscate interface are over. No one wants to see clever obfuscated code, they want to see code that is easy to understand and maintain. Human costs outweigh the cost of machines. Adding one's clever hack to get the nth degree of efficiency is usually not worth the human costs of maintainability. Software is dynamic and requires constant tweaking until you reach a state of acceptable quality. Until that state is reached you are not finished. Software development requires teamwork and the ability to absorb contructive criticism. Let them know they need to focus on the user and not their nerd ego trip. If that fails then beat their ass into submission with a few good back handed - baby powder laced - pimp smacks and tell them to get over themselves.
Fri 04 Apr | Eric Debois | Certain people can only code well if they can do it in their own way. As a teacher I see these types quite often as there are usually 3 or 4 in every batch of 40 that I come across. They dont respond well to teaching in the regular sense but once you hammer the basics of something into them, they can take it and experiment with it with much better results than the avarage student. The reason you might have trouble making your coders follow rules may actually be insecurity. They learned what know by finding out for themselvs and doing things their own way. They have never been forced to performe on someone elses terms so they dont really know if they even can.
Fri 04 Apr | Nick | If de facto standards aren't followed, they're not really de facto are they? As a previous poster said, the standards should be written down. The tough part will be to get everyone's buy-in (or agree-ence, as Fred Durst would say) on the standards. You'll need to look to the management for that - whatever that may be in an academic setting.
Fri 04 Apr | Bored Bystander | Issues like this are almost always an ego issue - but there are other considerations too. But first, do these people generally get the job done, well (by the standards of the user's experience) and on time? Yeah, a lot of programmers have the personalities of reptiles. It goes with the territory. A people person would not last 3 hours in a coding job. If you want the job done, you *have* to hire people whose personalities suck. I get tired of programmers being bashed because we're not Dale Carnegie acolytes. Secondly - let me turn your contention around. I am in a region where the average IT worker is kind of an undereducated dolt who doesn't grasp abstractions, and the local managements don't much respect competency and they certainly don't respect brains. I've been in the position of being accused of writing code in EXACTLY the 'overly complex' way that you describe, except that given the deliverable I was assigned it *appeared* to be the only way to do things. And curiously, everyone within 10 miles treated the task I was asked to do like a tar baby and as career punishment. It was like - I was being criticized and critiqued for being 'too ivory tower' by people who had no clue how to go about doing the same thing. I've had stupid wankers criticize my code who thought *subroutines* were excessive, for God's sake!! So, I'd need to know more about your background and your organization's standards in order to take a side in this. I generally don't respect back seat drivers since I've been trashed a lot with the same kind of so called intentions. That leads into a third point. What may seem like 'excessive' use of abstraction may be rather an appropriate way to gain generality in the finished code so that the wheel doesn't have to be reinvented later for similar applications. Someone with lesser experience may not see the opportunities to make the code more general and will rip their hair out at the 'obfuscation'. In general - I sympathize but, not being there, I don't know if this is a real problem, or a mismatch of styles.
Fri 04 Apr | Philo | Bored - If you feel all coders must be antisocial, where do your software architects come from? I'm not saying coders *can't* be antisocial, but a good software architect *must* understand both sides of the keyboard to develop a successful product. Philo
Fri 04 Apr | Bored Bystander | Philo, I'm guessing that software architects happen to be programmers who learned to develop their socialibility over time, and therefore wanted to combine their technical skills with more interpersonal interaction.
Fri 04 Apr | Devil's Advocate | Bored - As opposed to genial people who developed their programming skills over time? As was covered in another thread, learning one thing neither destroys the skills one already has nor leaves one incapable of learning more.
Fri 04 Apr | Philo | Incidentally, this would explain some of the crap software products - most people view 'software architect' as a natural progression in seniority without realizing there are additional skills required beyond simply being a good coder... Philo
Fri 04 Apr | Reginald Braithwaite-Lee | This sounds frustrating. I've had to deal with it for almost twenty years, so I feel the pain... From the point about not controlling who's on the team, I can say that if you don't hire and fire, you have limited accountability for their actions. Do your best, but realize that you need to invest only as much effort as is reasonable for someone with limited authority. http://www.braithwaite-lee.com/opinions/managing-software-development.html Also, code that meets objective acceptance tests, including performance, ought to be acceptable. I'm no fan of excessive abstraction: I believe in writing what's needed and no more. But Coding Standards are supposed to enable and support the basic activity of developing code that works. If their code works, perhaps you shouldn't worry about a maintenance problem that may never arise. This is the joy and the pain of managing by results: you have to let go of telling people how to do things and instead focus on what they accomplish. The good news is that when you let go of telling them how to write code, you have more time and attention available to discuss what needs to be done, such as the usability fixes you've identified. Good luck, and please post a follow up letting us know what does and doesn't work in your situation.
Fri 04 Apr | Bill Carlson | I think the frustration has to do with developers residing in one of two camps: Camp one: Those who go home at night and think 'how could I have done that in less code' 'what would be a simpler approach' 'will it be obvious what I'm doing in there' 'what's the easiest way to satisfy the user and satisfy marketing?' 'how can I make the product something I would want to use?' Camp two: Those who go home at night and think 'wouldn't it be cool if we could use the XYZ API?' 'maybe I should write an optimized hash table to sort those 8 entries' '4th normal form requires us to add 19 new tables to our database' 'every operation should be wrapped with three deep of accessor classes, you know, in case we radically change the system' 'man it's getting late and I want to watch my taped video of TechTV highlights, but I really need to go download some more Anime' The single most frustrating thing in my job is dealing with that one person in camp two that can't look at a simple problem and see it for what it is. EVERY conversation is 'how can we complicate this?'. PLEASE, if anyone has suggestions on how to deal with this person, POST NOW. I feel my project is being drained by having to endlessly fight the simple vs. obfuscated debate.
Fri 04 Apr | Vincent Marquez | Bill, I know what you mean, but I've also had trouble dealing with people who have the mindset of 'they haven't requested that feature NOW, why should we plan ahead at ALL?'. The fact is, requirements change, and while over designing something is bad, you shouldn't 'just' build exactly what the current requirements dictate leaving *no* room for scale.
Fri 04 Apr | Devil's Advocate | Bill - Have you tried saying, 'We can refactor that later as necessary'?
Fri 04 Apr | Bill Carlson | I've tried to explain refactoring to my colleague. What I can't seem to communicate is relative cost/benefit. Personally, I view code as a liability. Solving a given problem with less (or no!) code is always a win. This isn't univerally shared. Some of it comes from perfectionist tendencies inherant with some developers. Yes, a stored procedure is almost always faster than an ad-hoc query. But is it worth it to bind the parameters, change the DB script, etc., for a query that takes 5ms and is called once a day? Camp one says no. Camp two says yes, because 'it's better, isn't it?'. The analogy I use is home construction. People would be horrified if they knew the shoddy techniques used to build a typical house. If you're morbidly curious, measure the supposed 'right angles' with a T-Square. Sure, you could build a house with perfect 90 degree angles. It would cost a ton more to build and you wouldn't be able to charge a dime more. Vincent's point is well taken. There's a fine balance between 'hardwire it to the extreme' and 'in the name of expandability, lets complicate and generalize it to the point that only one person can ever understand it.' Much of 'enterprise development' is repetitive and boring. The engineer that gets his stuff done by 11am and surfs the net the rest of the day contributes and is worth more than someone who works until 8pm writing lots of code to do the same thing. Love the solution; don't love the code. Any more thoughts?
Fri 04 Apr | Bored Bystander | Bill Carlson - your camp 1 and camp 2 descriptions *perfectly* match what I've seen in this industry. Another hated generalization follows from this: most programmers tend to be excessive and most lack the common sense to modify their approach given compelling evidence to do so. In my work I've tried to tread the middle ground btwn the 'hardwired to one set of data' camp and the 'let's write a 100K LOC api to read and write text files' types, and it's rarely appreciated as such. I get drooling incomprehension from the types that are probably snowed by the object model in Visual Basic, and I'm obliterated and slandered by the self-aggrandizing pseudo academician types who look down their noses at 'mundane' problem solving. In my experience, one almost might as well puff their code up with a bunch of unnecessary crap because it will look more impressive to the geek chain of command... if you get down to business you'll be scrutinized as to why you're not overworked like everyone else. Cynical - who, me. The 'obstinate nerd' title of this thread set me off because it came off like the standard value judgement of someone without much skin in the game. Maybe that's wrong of me to assume that, and the lack of the ability of his co-workers to deal with end users points to some arrogance there. At any rate, I think this thread has been a great exploration of 'NURD' psychology. I hope the O.P. gets something out of it to deal with this 'problem'.
Fri 04 Apr | Must be a manager | I think this is a management failure rather than a failure of the developer. If his interfaces are poor --- and I stress the IF --- then change the architecture so the developer's work is accessed through an interface put together by someone else. However I have a feeling you are not really describing the problem. If the developer is paying attention to code interfaces and architecture, I suspect he's probably quite good and the problem you describe is something else.
Fri 04 Apr | Bill Carlson | Bored Bystander, thanks for agreeing with me and for providing sympathy. I'm in a lead position and have some ability to direct other developers and set coding standards. I'm a pretty 'loose' manager. Our developers are mostly middle age and can be trusted to get it right. All but one person in our department is basically 'lazy'. And I mean 'lazy' in only the most positive light. We accomplish a great deal, mostly agree on stuff and waste little time or energy. We are a stable group and have only moderate need for structured process. I expend quite a lot of effort butting horns with one person, though. Anything the group comes up with, he has a new, better, more 'advanced' way of doing. His attitude is good; he's a self-improver. I don't want to stomp on his ideas, but anything that triples the lines-of-code without improving the user-experience is usually a bad idea. He's 3 years out of school and is somewhat of a 'purist'. I don't have the direct authority to give him 'the lecture'. Maybe I can communicate this to my boss. However, my boss is decidedly non-technical (though she does a good job) and has trouble seeing this persons suggestions to improve reliability and performance for what they are - a big mess with microscopic gains. He's willing to work long hours to achieve his goals. What's a nice way to tell one's non-technical boss that a coworkers hard, dilligent work is really counterproductive to the success of the project? I haven't figured this one out without appearing jealous or lazy.
Sat 05 Apr | Dennis Atkins | This all seems a bunch of speculation to me since not enough information is presented to allow anyone to give relevant advise. Pizzaguy, #1 what is your position and experience and what is the position and experience of the employee in question. And what is your relationship to him. #2 please show an example of the overly-factored code in question that you find to be unacceptable quality. #3 what exactly did the employee say word by word when he displayed this arrogant insubordination to you. Without more information, this discussion is like the job interviewee who was asked how to approach creating a payroll system and he starts talking about languages and packages and libraries without first asking whether the payroll system will be for a pizza shop with six employees, for the US Navy with x hundred thousands of employees, or for an international conglomerate with employees recieving salary in multiple currencies and deductions made under scores of tax jurisdictions.
Sat 05 Apr | Alyosha` | People who work together exert a normalizing force on each other. Get people working together whenever possible. Combine indivdual-sized tasks together and assign teams of two to four people to solve each larger problem. If your developer does things differently than everyone else, don't panic yet. Different doesn't always mean wrong. Manage by results. If they're not getting their stuff done because they're the overarchitecting type, move their deadlines up so they don't have time to be too-clever-by-half. If they're the sort that rewrite standard library functions, it's because of inexperience. Invite them to more code reviews so they can learn from other people's code. If they're the kind that write sloppy, buggy code, pull them from developing new code and put them on bug-fixing and user-support detail. If they tend to go into hiding for weeks in their offices, require weekly status reports from them. Demand visible progress. If you absolutely must give them 'the Lecture', remember three things. First, don't get angry and don't criticise them in front of other people; programmer egos are fragile. Second, don't waste time assigning blame or arguing past history. Third, be specific on how you expect their behaviour to change. If they continue to produce unacceptable work despite your best efforts to help, do what it takes to get them out of your group.
Sat 05 Apr | Must be a manager | Bill, my advice in that situation would be to just go with the flow. If he's getting the work at great cost to him, but that's what he wants to do, let him be and turn your attention to other stuff. I think the only reasonable way to let your manager know the guy's approaches are resource-intensive is to be relatively cool about it.
Sat 05 Apr | | Too much fuzz about nothing. I've been on the nerd-side and the manager-side, and usually these kind of problems are political. Do their code works? If the answer is yes, I can't find any reason to have a problem with it. If not only works, but works well, great. There is a good advice: treat nerd-types as spoiled childs. Bribe them: create a task schedule with specifically one hour daily to 'fix stuff'. What needs to be fixed is up to them. You said they are good developers; let them loose. Use emotional traps on them, nerds are known for not know when they are being manipulated. (Any grammatical/spelling error it's not mine.)
Sat 05 Apr | Punter | Heh, this could so easily have been posted the other way around: My 'peers' don't understand the value of modularisation and abstraction. They have poor coding standards and refuse to change them. My code is efficient and bug-free and yet I have complaints because my 'peers' are stuck in their obsolete habits. What do I do? It's a political problem, what do you do when a developer doesn't fit into your group culture? You don't enjoy it, and I bet he doesn't either. If it's a real pain, I'm sure he'll move on soon enough....
Sun 06 Apr | Tj | Bill, if you're working on enterprise apps, it's probably not the best fit for your guy. Young people are often better on research projects. I just researched about Crays today, and noticed Cray liked designing with young people because they had less preconceptions and didn't know what was impossible. Whereas you're more optimized. To the original poster, writing good code is no sin, but refusing to change their UIs because users are stupid is. You should ask them to explain why their UIs are so badly designed that they can't rework them to suit the users. Though of course you'll need good arguments why your approach is correct; these programmers may be right.
Sun 06 Apr | TK | The trouble with-know-it-alls is that sometimes, they really do know it all. At my former 'really big company' we could often find niche's for folks like this. Let Reagan be Reagan.
Server Naming Schemes? | Fri 04 Apr | Philo
A light topic for Friday... Regarding theme server naming schemes (not stuff like DEVWEB01), what themes have you used or seen? My servers are Rachel, Monica, Phoebe, and Ursula; my ISP has saltmine, ironmine, goldmine, and claymore (among others) Also, any good stories about unfavorable names coming to light when a server went public? IIRC there were quite a few of these in the internet explosion of the mid-90s (for example, Texas Womens University had a server named Venus) Philo
Fri 04 Apr | John Topley | What's wrong with Venus?! The servers where I work have really boring descriptive names.
Fri 04 Apr | runtime | I remember someone figured out how to lookup the names of Hotmail's servers. Hotmail had many silly server names, but the stand-out favorite was 'rotatetheshieldharmonics.hotmail.com'. :-) And I've heard there is an error message on SourceForge or GeoCrawler that reveals a device name that was probably not meant to be public: 'Unable to read configuration file /bigassraid/htdig//conf/12584.conf'
Fri 04 Apr | richard | Pretty much the golden rule is that the name should not describe the machine or it s purpose or otherwise describe its location. After that, whatever floats your boat (WFW00342 doesn't). In our test lab we got a couple of machines called: Dipsy, TinkyWinky, Laa Laa & Po. Somebody likes tellytubbies. Dipsy is my build machine. A few others are named after football teams & towns. some mythological deities too, but saturn & zeus imply somebody got their pantheons crossed. Theres a Tom, Dick & Harry, and goofy sticks out like a sore thumb.
Fri 04 Apr | Steve Barbour | We use cartoon characters. The more obscure the better, no anime names allowed though.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | At home, I use character names from a favorite author. Roark and Galt are my laptop and desktop, although I do admit to boringly naming our router 'router'. :) At my work, boring names. WS_FOOBAR, SV_WEB1, etc. :-p At my wife's work, the server names for their team are Star Trek characters. Troi, Neelix, etc.
Fri 04 Apr | Chris Winters | Using geography is always fun: rivers, mountains, world capitals, cities with great breweries. And unless you're Google you're pretty much guaranteed not to run out of available names.
Fri 04 Apr | Steven C. | One of my work computers is named 'kuhli' (named after, I presume, the Kuhli Loach, a.k.a Acanthophtalmus kuhli kuhli, a tropical fish).
Fri 04 Apr | flamebait sr. | An ISP called one.net had a machine named five.four.three.two.one.net. I once heard the suggestion to name machines after famous monopolists. billgates, naturally, was on the list. Movie characters and Arthurian legend is always a good thing.
Fri 04 Apr | Rob Walker | I worked somewhere that used classical composers. Bach was OK, Tchaikovsky (yes I used Google to spell that correctly) and a bunch of others caused more than a bit of frustration.
Fri 04 Apr | Chris Tavares | We used sound effects: bang, crash, biff, poof, bampf, etc. Basically, anything that would have shown up in a balloon in the old batman show. Drove our sysadmin guy nuts; he could never remember which computer was which.
Fri 04 Apr | Justin | One place I worked we set up using beer names - Carlsberg, StellaArtois etc. The single, despised iMac for compatibility testing was called BacardiBreezer or something. Another place, senior management decided to start using planet names for the servers, then extended this scheme to clients (Er how many planets are there, exactly?). We ended up using fictitious planet names like Arrakis and Golgafrincham (Hitch Hiker's).
Fri 04 Apr | GersonK | Back when I was working an atmospheric physics lab doing research into ice cores - particualry their dust content and how it got from the atmosphere into the ice, our first two machines were named 'ice' and 'air'. Unable to come up with a legitimate research reason to name out next two servers earth and fire, we ended up going with 'dust' and 'lava' (we'd started looking at volcanic ash contnet in the ice).
Fri 04 Apr | BoredAtWork | At my office we use Simpson's charaters. Our most unruly server was aptly named 'Bart' and the most expensive server was name 'Burns'. It was like the servers took on a life of their own.
Fri 04 Apr | Benji Smith | We've got a bunch of muppet-name servers (piggy, animal, fozzy, etc.) and a bunch of simpson-name servers (homer, lisa, maggie, otto, etc.). And then, of course, we've got some random names thrown in here and there (matrix is the only one I can remember at the moment).
Fri 04 Apr | apw | our servers get thier names from the elements that make up the Periodic Table or Elements
Fri 04 Apr | na | once one of our client had a 2 machine cluster named Tom and Jerry
Fri 04 Apr | Ros | Currently Asterix characters, in Spanish version namely Asterix, Obelix, Asuranceturix, Panoramix, Ideafix and Edadepiedrix. Formerly I've had Koji, Sayaka, Mazinger, Kabuto and so on. And have been in a place with a firewall called vito in the inside and corleone in the DMZ People around computers are insane. Me too
Fri 04 Apr | anon | Brad, who is Galt? At home, I use character names from a favorite author. Roark and Galt are my laptop and desktop, although I do admit to boringly naming our router 'router'. :) At my work, boring names. WS_FOOBAR, SV_WEB1, etc. :-p At my wife's work, the server names for their team are Star Trek characters. Troi, Neelix, etc. Brad (dotnetguy.techieswithcats.com)
Fri 04 Apr | Prakash S | Paul, Ringo, John & George...
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | anon is witty, although it's not clear if (s)he was intentionally so. :) 'Who is Galt?' indeed. :) Forgot to mention that the first place I worked, the original PC naming policy was sexual fetishes (sometimes twisted a bit to be more appropriate). Personal machines had names like leatherandlace, handcuffs, etc. Some of the servers had interestingly twisted names like 'vaxeline' for our Vax. :)
Fri 04 Apr | Eric Debois | Interesting how these names can stick.. A few years ago I named a server Socrates when it was taken into use. I visited the place where its at the other week. Now, it has been renamed and reformatted a number of times, but the staffers still refer to the box as Socrates.
Fri 04 Apr | Patrik | My college had one lab with machines named after single malt scotch whiskey, lagavulin, tallisker and so forth. I see one drawback with this; It is a bitch spelling laphroaig correctly :-) The lab next door had names of pain killers.
Fri 04 Apr | Bill Tomlinson | At a space related company we used star names (but there were spelling problems, e.g. betleg... bettelj... ...). At another company they used trees. At another place we had four computers that we were setting up for a client and we named them after the A-Team. Which brings up one issue, always make sure that there are lots and lots of potential names in the theme you choose. At least a hundred of the top of your head. Few things suck as much as bringing the eighth computer into the office when you've been naming computers after the seven dwarfs.
Fri 04 Apr | Jason | I personally use baby animal names: gosling, tadpole, etc. Work is a mish-mash of actors, bands, etc.
Fri 04 Apr | Vincent Marquez | I always liked naming pairs of servers WinterMute and Neuromancer. :-)
Fri 04 Apr |   | >> (not stuff like DEVWEB01) I worked at a place with webdev1 as a name. dev.name.com was production and pr1.name.com was development. Another place had Sid and Nancy as names
Fri 04 Apr | Wayne Earl | At work, we name them after planets. There is nothing more satisfying then the following: 'Where can I find that file?' 'Look on Uranus' :)
Fri 04 Apr | Brent P. Newhall | At our last company, we used the names of trees, which seemed to nicely balance the need for interesting names, the odds that anyone would understand the origin of the naming scheme, and the desire for professionality. So, you had computers named Maple, Cherry, Oak, etc. One fantasy afficionado named his Yggdrasil, which I thought impressively inventive.
Fri 04 Apr | Ben Combee | My first job after school had machines named after islands, so there was 'kauai', 'maui', 'greenland', 'iceland', etc. My favorite was the machine called 'noman', because as we all know, 'noman' is an island.
Fri 04 Apr | Martha | We have FS1 and FS2. Kind of typical of this company. :/ I like that islands/noman thing.
Fri 04 Apr | GersonK | Wayne - of course the planet scheme also gives you the opportunity to say 'I searched everywhere on earth, and still couldn't find the file.'
Fri 04 Apr | Eclectic Echidna | Server name should be short, easy to spell, easy to visualize. Body parts, 10 names, 30 letters... arm ear eye gum hip jaw leg lip rib toe -- ee
Fri 04 Apr | RocketJeff | My home network is the 'Dilbert' network. Currently there are the following: dogbert - old box that's gathering dust most of the time ratbert - my notebook wally - the machine I set up to do work at home alice - the 'family' computer the kid's games are on My former employer had a *tom* of different networks - one for each dev group, test system and production group. I can recall the following network names (with a couple of examples): Trees (oak, elm) Sounds (bang, thud) Weather (cold, sleet) 'D' (David, Dorsai) Star Trek (warf, troi) Movies Flowers Booze (vodka, gin) Mountains (everest) Aircraft Carriers (nimitz, hornet) There were *many* more - a coworker tried making a complete list but he was always finding a new network every so often...
Fri 04 Apr | David Jones | I use contract bridge terms on my home network. Each machine has a bridge-related name that also describes the machine in some way. The dual P100 that runs email and web is 'double'. The firewall is 'pass'. The Windows box is 'notrump'. (NT? :-) The high-performance FreeBSD compile machine is 'slam'.
Fri 04 Apr | dmooney | My machines are named after Ren & Stimpy characters: ren, stimpy, mrhorse & sven. Other machines at work are named after golf terms since we make http://StarCaddy so we have Putter, Rough, Dogleg, Bunker, etc. Those are mostly servers. Workstations used to be named after their users but I found that to be terribly boring so I started to get a little sillier. My company's name is LinksPoint so Lucas Hjelle's machine is called hjellepoint (rhymes w/ jellypoint). Others are vaporlink and hotstuff.
Fri 04 Apr | dmooney | That's.. uhh.. http://starcaddy.com.. duh
Sat 05 Apr | Alyosha` | I believe I am the only one who names his machines after infamous 20th century tyrants: mao, polpot, stalin, saddam, castro, hitler, pinochet ...
Sat 05 Apr | na | dementia, schizophrenia, bipolar, etc.
Sat 05 Apr | Simon Lucy | I have a blind spot about naming inanimate objects with anything like a name. So, I tend to describe either their function of location or some discoverable feature when I use them in conversation. So I tend not to use cute names, on closed networks with single or few servers, the workstations will probably get letters and numbers and the servers something like 'accounts' or 'engineering' or something. And my own network is just OB followed by what ever number in letters comes next. I name cats, people and software creatively though (of course software is animate).
Sat 05 Apr | tapiwa | This place names work stations after users... servers have numbers. My own machines... ex-girlfriends, and when I run out of those, its the beautiful women I know personally :)
Sat 05 Apr | Simon Lucy | So your girlfriends were non-beautiful people that you knew impersonally? Perhaps that's why they're 'ex' :-)
Sat 05 Apr | Dave | Way too 'geekish,' I know, but we name our servers after people integral in the history of computing: Pascal Byron Turing Ada Babbage etc...
Sat 05 Apr | Andrewm | At a Nortel lab where I used to work, all the groups called their machines according to a theme - cars, superheroes, cities, whatever. You could tell what group used what machines by what theme they belonged to. At a certain point, somebody in the IT department decided that all these whimsical names were just not befitting a serious, professional lab (or something). So they came around and renamed all the computers to things like p920t56 - in essence, something as arbitrary and hard to remember as the IP address that the names were meant to help us with!
Sat 05 Apr | Yablan | Heh, fun topic this one. At my previous job, all the servers had names from James Bond movies, which I found quite cool. We had: Goldeneye Moneypenny Goldfinger etc.
Sat 05 Apr | Nick Brosnahan | Dartmouth named their mail servers after the reindeer. Rudolph Dasher Dancer Prancer Vixen Comet Cupid Donner Blitzen
Sat 05 Apr | Philo | Would the tenth mail server have been named 'Venison'? Philo
Sun 06 Apr | Joe Markham | We have machines named after 'stuff' from the 'Wizard of Oz' stories. ruby ozma toto wizard wicked etc...
Sun 06 Apr | ko | my isp uses animal names like fox, dingo, wombat etc.
A little discussion on pricing ... | Thu 03 Apr | Mitch & Murray (from downtown)
Over on the Borland news server there is a pretty interesting discussion going on regarding the merits of two different enhancements for the Borland Delphi IDE. Product A makes the IDE do everything except stand on its head. All kinds of useful goodies and dodads. Price - $400, no trial version available. In some cases this means the add-on costs more than the entire development tool. Product B does most of what product A does, or at least seems to. Product B has just been released, and it is not much of a stretch to imagine that the vendor of product B wanted to knockoff/clone Product A. His price - $50. Pricing a software product is always tricky. Would the vendor of Product A sell 8x more copies if he dropped his price to $50? Would the vendor of Product B still have a viable product if he charged $400 instead of 50? What are your thoughts?
Thu 03 Apr | Ron Porter | My first thought is that for a lot of people, $50 is a close first approximation to free. All it needs is a couple of decent reviews, especially if it compares favourably with the more expensive product, and it should do quite well. If it turns out to be someone 'losing a little on each one, but making it up in volume', then there might be problems down the road, but in the absence of a trial version of the more expensive product, I'd probably take a chance. An example from my own experience is the difference between something like the Rational line of object modelers and Enterprise Architect (http://www.sparxsystems.com.au/). EA was hardly free (couple of hundred dollars), but Rational stuff is expensive enough that there's no point me even evaluating it. On a related note, I seldom even consider a product that doesn't offer 3 things on their website: free evaluation version, clearly stated pricing, and public knowledge base or support forum.
Fri 04 Apr | Philippe Back | Have a look in there for some insight: http://www.softwaremarketsolution.com/ http://www.aegis-resources.com/ This was recommended by Joel and I bought their book and marketing templates. Well, what an eye opener...
Fri 04 Apr | l.o.g. | > clearly stated pricing For me this is my biggest pet hate. As soon as I see the line 'please contact our sales representatives for pricing details' I close the browser, no matter what the product is. What are they afraid of? I don't walk into a shop and expect to see signs saying contact the shop staff for full pricing details. If they can't evaluate and state what the value of their product is, what else does that imply...
Fri 04 Apr | Walter Rumsby | Or when I see 'skip intro' or links opening new windows...
Fri 04 Apr | Tj | Would you like to share the google groups link? It sounds like more information would be useful, otherwise we're talking x's and y's. I'm sure people with more experience than I can chime in, but it seems nuts for A to kill its price to match B. That's throwing away its reputation. The reason people say 'contact sales for price' is because they're not selling to normal engineers. Those guys find out it's $400, it's all over, because they imagine themselves shelling out the cash. Instead, they'd rather talk to a money guy, who can buy a site license and justify the cost as a tiny fraction of each person's expense. If this IDE is all-singing, maybe they offer support and lose money by supporting individuals, so they want to discourage small purchases. If that is the case, the $50 guys are not overlapping with A as much as one might expect. Of course, it would be nice to know exactly what products we're talking about.
Fri 04 Apr | Richard Rodger | Sounds like a job for the Black-Scholes option pricing equation... http://www.mindfulsoftware.com/Options.pdf .
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | The major reason why sites don't tell you what the product costs is: they don't have one set price. This generally means that buying the product is a large investment not only in the software itself, but in services for customization and deployment. So listing a price is impossible until they know what you want. Sites like that are selling to enterprises. Move along and find a small- or mid-market product (you'll recognize them, because they give prices on the site!).
Fri 04 Apr | Philo | Ron - agreed 100% on the 'things you should have on the web page'. I was going to post yesterday that I won't pay for a product I can't evaluate. How do you like EA? Is it worth the $$$? Philo
Fri 04 Apr | Mitch & Murray (from downtown) | Here is Product 'A': http://www.eagle-software.com/coderush.htm and here is Product 'B': http://www.delphi-expert.com/products/castalia/ Anyone here shell out the full $400+ for CodeRush?
Fri 04 Apr | Bored Bystander | M&M/'guys with the leads': I'm glad you posted these links because you got my curiosity aroused. I use, and I adore, Delphi as a development environment. And I just don't see what compelling value that either of these addons bring to the Delphi IDE. For some reason, I don't sit in front of Delphi pining that it lacks some feature that really belongs in a text editor. And Coderush for $400?! Gimme a break. Yes, the lack of an evaluation version is a deal killer. It looks like an interesting addon but not $400 worth of interesting. Or, I could see a REALLY whiz bang add on environment for $400 but it should integrate with the world, not just one declining 4GL that nobody wants to use anymore... I use Multi-Edit (street price ~$90) with built in Delphi IDE integration. It has excellent file differencing which is the only 'important' feature lacking in the Delphi IDE. And ME has a built in macro language plus the internal guts to hook into anyone's IDE, given the ingenuity to program it. The form designer features of these two products you cite are interesting but are not compelling at the price. Some of the form designer features of Code Rush such as hiding of non visual components could probably be done as individual small add ons for far less. M&M, were you considering buying Code Rush or was this post more of a request to observe an ongoing train wreck? I just don't 'get' the value of this product. Just curious.
Fri 04 Apr | Mitch & Murray (from downtown) | I'm pretty much with you on this - we are a Delphi shop here when it comes to application development, and I just couldn't see the $400 CodeRush deal. I mean, what the hell are these guys thinking? On the other hand, maybe they get enough bites to make this worthwhile. It is an interesting pricing strategy, and I was curious what the rest of the JOS crowd thought about this whole thing, hence my post.
Fri 04 Apr | Tim Sullivan | I bought Product A for Delphi 3, and every version since. While Product B offers some of the flashier things, it doesn't even come close to the offerings of Product A. Also, Product A comes in two flavours (both offering TONS more than Product B), one priced at $249 and one at $420. The less expensive has most of the features of the Pro version. However, the declaration view alone is worth the difference in price.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | An interesting thing to note here. It's very likely that 'Product A' didn't put out a trial version, precisely because they were so expensive. Most people wouldn't bother to attempt to hack away the trial version code to unlock the magic features of a $50 product, but they might for a $500 product.
Fri 04 Apr | Ron Porter | Philo- comments on EA: I bought it and still haven't decided whether I actually like it :) I've been trying to get a handle on UML for what seems like forever and now that I've actually found something seemingly useful for a reasonable price, I'm more convinced than ever that I'll never grok UML. I guess EA is fine--it's my head that doesn't work! I think that the EA team does everything right: frequent builds with close attention paid to user requests, bug reports, and long-term planning; excellent public forum supporting a strong user community and closely monitored by the developers, etc. If you think you need a modeller, but don't have lots of cash, then it's tough to imagine a better way to go.
Sat 05 Apr | Tj | Hmm, there's a link to order Coderush under the feature matrix. Pro is $420, standard is $250. https://secure.nameservers.com/eagle-software.com/NewOrderTo7.htm
Sat 05 Apr | Tj | Nevermind, I thought people were claiming it didn't have prices listed.
Sun 06 Apr | DD | As one who knows the developer of product B, and has watched its evolution since inception, I'd like to add a couple of things to this discussion: 1) Product B was not designed to be a knockoff of product A. In fact, Jacob (the developer) didn't even know of product A's existance when he started product B. All of the features of product B were concieved and developed independantly, as far as I know. 2) Product A does a hell of a lot more than product B. The statement that 'product B does most of what product A does' is grossly wrong. Product B is designed for a different purpose. They have different target markets, and in my opinion, aren't really competitors. Its a shame that they probably can't be used together, though Jacob says that no one has tried yet. At least no one has told him. DD
What the #$*()& is Word Doing? | Wed 02 Apr | Dave
This may seem a little off-topic, but since Im writing software requirements, I thought Id toss this question out. Im pulling my hair out right now because MS Word XP keeps automatically creating new styles, even though I have the option to create new styles automatically turned OFF. It seems that every day I work on my document, and copies of existing styles with the text char appended to the end magically appear in my styles list. This is really screwing me up, and I cant find ANY reference to this problem on the net. Does anyone else out there know anything about this problem or can someone point me to some further information about this? I have about 700 pages of requirements right now and Im going NUTS trying to keep the styles in check.
Wed 02 Apr | Ged Byrne | Dave, I hear your pain. It's bulleted lists that give me a headache. Thank goodnes of OO.org.
Wed 02 Apr | Duncan Smart | Couple of places to check: * Tools > Options > Edit > Keep track of formatting * Tools AutoCorrect > AutoFormat as you Type > Define styles based on your formatting * Tools AutoCorrect > AutoFormat > various.
Wed 02 Apr | Kyralessa | Have you considered switching to WordPerfect? Yes, I know your company, like every company in the universe, is standardized on Word, but tell them it's an essential tool to do your job properly, and get it put in the budget...
Wed 02 Apr | Leonardo Herrera | I second the suggestion of using Open Office. It's clean, and good enough to writing docs (and it can create .doc files)
Wed 02 Apr | Dave | Duncan: Thanks for the feedback. Have already tried all of that (only the 1st 4 options are checked on the AutoFormat as you Type tab.) THIS is why I'm so frustrated! It appears that Word is thinking I have all of these options turned on, because that's exactly what it's doing--creating new styles based on my formatting! Frustrating...
Wed 02 Apr | Prakash S | Turn them on, then turn them off, ...see if that works....
Thu 03 Apr | Phil | Maybe use Docbook and generate RTF files so that users are happy with them
Thu 03 Apr | | Close all the Office windows. Open them all again. If it doesn't work, jump out of one of them. (This action can be dangerous. Do not perform without the use of a safetx net. May contain nuts, particularly if you do it.)
Fri 04 Apr | Martha | Apparently the '[Style name] Char' styles are created when you apply a style to *part* of a paragraph. If you have text in the paragraph selected, but the paragraph mark isn't selected, then applying a style will create one of these frankenstein styles. Or something like that. Don't ask me what possible utility this behavior could have.
Fri 04 Apr | Martha | Another suggestion for taming Word's bad mindreading attempts: make sure none of your styles are ever set to Automatically Update. Particularly bad culprits in this respect are Normal style and the various list bullets.
Sat 05 Apr | Dave | Thanks for the feedback, Martha. That's really helpful. I've combed through most of the 'base' styles and none seem to have the 'Automatically Update' box checked. I really hate it when software tries to 'do something for you.' This is especially frustrating when the software doesn't stop 'doing something for you' when you tell it, 'Hey, cut it out!'
Sun 06 Apr | Nat Ersoz | This is like therapy... I'm glad I'm not the only one...
Do you own a website? | Wed 26 Mar | rexguo
How many of you here has a personal website (hopefully related to your trade too)? Lets put up a list and see the diversity of readers here.
Sat 05 Apr | Kyle Cordes | http://kylecordes.com A smattering of information for developers using Java, Delphi, and more. In particular the 'BDE Alternatives Guide'. I'm working on a broader range of content, and a snappier name.
Sun 06 Apr | mark | http://www.photo-mark.com It just occured to me to read the one line of directions about incluing links. Doh!
How often should one commit code? | Fri 04 Apr | Steven C.
This topic was spawned (at David Clayworths suggestion) off of the CVS rant down the page a bit. So: how often should one commit code? Personally, I try and do the following: * commit after every seperately understandable chunk is completed and works. (for instance, if Im adding 15 buttons to the toolbar, Ill make a commit for each button -- or each button group if theyre grouped by functionality). * At the least, one should aim to commit once a day (if the chunk youre on isnt done, make it compile and not affect other code until youre done with it and commit what you have so far). I dont think that there is a maximum though -- as long as the code you commit compiles and works correctly, you should be able (even encouraged!) to commit code in as small chunks as you can. Opinions?
Fri 04 Apr | Mike Gamerland | Your description is geared more toward 'released based' software. In a support type envrionment, I believe commits should be kept to a minimum, OR a distinct branch needs to be created to allow for 'emergency production fixes' that would need to go in. In your example if you added buttons 1-5 then a fix needed to go out, those would have to be resolved. (remove them? Send them out? etc.)
Fri 04 Apr | Benji Smith | I'm a big fan of tiny incremental check-ins. Nothing is worse than having to look through a diff with a thousand lines of code, with a hundred tiny changes, trying to figure out why you're having merge conflicts. Generally, when I'm checking something in, I don't want to have to look through more than 25-50 changes to make sure that the versions merged correctly. One of my most frequest tasks is editing large (5,000 to 10,000 lines) XML files to set up our software configuration. And, at the same time as I'm editing this enormous file, one or two other people on my team might also be working with the same file. (But we all, for the most part, work on specific portions of the file). I have come to deeply distrust CVS merges. In my experience, CVS works great with files that are based on lines-of-code. But working with XML in CVS is a nightmare, since the merging algorithm doesn't understand the data structure. If anyone on our team waits longer than a day or two before checking in their changes, all hell breaks loose, and I have to spend half a day sorting through catastrophic merge conflicts.
Fri 04 Apr | Steven C. | Good point Mike -- in fact, we've been wrestling with this general issue over the last year or so at my company. I'm not convinced that it means one shouldn't commit often, though -- I think it means that you need to make sure your development branch is always 'pretty stable' (by having a frequent automated testing suite), and that your releases are made off a more stable branch. Or something -- thoughts? I mean, to be honest, I'm not sure how shipping something with my 5 out of 15 new buttons is any worse than shipping it with all 15 new buttons, which QA may or may not have signed off on. In either case, the developer is working on something which could ship at any moment -- which is maybe not the best idea?
Fri 04 Apr | Danil | A task climbing my list is to modify my UnitTest to commit my changes if the unit test passes. The interval between tests is on the order of minutes.
Fri 04 Apr | Mike | Whenever it goes insane, it should be committed
Fri 04 Apr | Martha | Dammit, Mike, that's what I was gonna say. :)
Fri 04 Apr | Ben Combee | If the app doesn't quit, you must commit. Seriously, while I prefer frequent commits, the tools around CVS don't support that model well. WinCVS, the most popular front-end, has a bad GUI bug that makes its tree display hard to use when there is a lot of vertical space in the tree window -- basic scroll bar issues. This actually is more of a problem with frequent tagging than committing, but it does make my life more difficult. I think it would also be nice if you could easily take a series of commits and 'combine' them into a single change. That would allow small incremental commits in what you're actively developing, but let you have more structured change control for your history.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | TortoiseCVS is so much better than WinCVS. Get the new religion. Shell extensions are your friend. :) As for the 'fixing production code' issue, that's a non-starter. Are people really releasing code without labeling the tree, so that they can go back and branch from the release point? I'm not sure whether Mike is thinking that you shouldn't commit until you're ready to release again, or that you should roll new features into your emergency bug fixes. Either way, I couldn't possibly disagree more.
Fri 04 Apr | Vincent Marquez | As long as it doesn't break the build, I say commit as often as possible. Also, control-s is my friend. I just think its better to be safe then sorry.
Sat 05 Apr | T. Norman | 'One of my most frequest tasks is editing large (5,000 to 10,000 lines) XML files to set up our software configuration. ' Manually editing 10K lines of XML? If that is one of your most frequent tasks, you could do yourself a big favor by writing a GUI utility to parse and write the XML so you don't have to manually edit tags, and/or storing the config data in a set of database tables from which the XML is then built. The database tables can even store the version numbers so an SQL query can report the differences. My situation is similar, in which I have to maintain over 100 small XML files. It was a huge pain until until I wrote a front-end to remove 90% of the need to manually edit the XML.
English clarification request | Thu 03 Apr | Not my real name
Reading through Netcrafts archives, I came across this vaguely-relevant-to-me-because-Im-writing-a-white-paper tidbit: Mandrake falls into Administration This week Mandrake became the first major Linux distribution to fall into administration. The survey finds around 88,000 sites running Mandrake, and the distribution also enjoys a reasonable following on the desktop. http://news.netcraft.com/archives/2003/01/22/mandrake_falls_into_administration.html Question is: anyone know what they mean by falls into Administration? It occurred to me that if falling into administration means that the usage distribution is high, then I could draw one set of conclusions from the commentary re: making the distributions available prior to the boxed sets. If it means that the usage distribution is low, I could draw a completely different set of conclusions. Anyone care to comment?
Thu 03 Apr | Kyralessa | Based on the context of the entries I found by Googling, it appears to be another way of saying 'went bankrupt.'
Thu 03 Apr | Philip Dickerson | In this context, going into 'Administration' means going into 'receivership', or an 'Administrator' (in the financial sense of the word) has been appointed (typically by a court). In the US, it's called 'Chapter 11 re-organization'.
Thu 03 Apr | Mitch & Murray (from downtown) | 'Tits Up'
Thu 03 Apr | Brian | Is it a Britishism? I've never heard it before.
Fri 04 Apr | | 'Falls into' is a bit of an odd way of saying it, but the others are right - it has gone into receivership. That does not mean the end of the company necessarily, the receivers try to get the company back on the rails again by imposing strict budget controls, negotiating with creditors, etc.
Fri 04 Apr | Katie Lucas | It's not quite the same as chapter 11, because the creditors can still issue winding up orders against the company, but it's a decent sign to them that doing so isn't worth the effort. Companies do make it out of adminstration - often after a buy-out by either the management team or by a larger company that wants some of the assets. That's what's known as 'selling the company as a going concern', but frankly the more usual outcome is that the company pays off debts as best it can and vanishes. The point is that the administrators don't have a loyalty to the company - their obligation is (if I read this stuff correctly when I did) to the creditors to try and settle the debts in the best way possible, including keeping the company running if that's the best way to do it. The protection comes from the fact that having an administrator phone you up and tell you you can 20p in the pound on your debt now or wait a bit and they might be able to get you 50p tends to carry a bit more weight than the directors doing it. Receivership is a bit different in that at the time the company enters that, everyone's accepted it isn't going to make it, and the receivers are shutting the thing down with a view to paying debts if possible, with as gentle a bump for all concerned as possible. Administration is a more informal process than the legal process of issuing a winding-up order which is the sort of equivalent of US chapter 7 bankruptcy - you have to go to court and prove you can pay debts or the court appoints receivers to wind the company with no argument. And it's something the company volunteers for rather being told to do.
Fri 04 Apr | GP | Actually, because MandrakeSoft is France-based, the law is certainly slightly different. According to Yahoo News, their status is 'redressement judiciaire' until July.
Fri 04 Apr | Rik Garner | It's not typical British english. We would say 'go into administration'; maybe it's a translation from the French?
Sat 05 Apr | Simon Lucy | Enough of this British English, be it condemnéd as a calumny and falsehood. English is English. Others might have their peculiar varieties of usage and spelling.
Benefits of Timesheets | Wed 02 Apr | Joel Goodwin
I wonder what the JoS crowd think of timesheeting systems? I mean more than simply billable hours, but *where* the time went, *what* you did, applied to all employees. I worked under a timesheet system previously, and it was amazing the lengths people would go to put something into those slots. I have mixed feelings about them. A) They can give you an indication of how everyone is working and perhaps which areas are really dragging everything down. Possibly symptomatic of communication problems in your team. B) Heisenbergs Uncertainty Principle. By observing your employees in this way, you may end up changing their behaviour. For better or worse depends on the situation, but I am reminded about the dangers of performance metrics. C) Timesheets gloss over important things like interruptions. Its frightening to look at the COOLDEV entry for 4 hours and think that all you managed to achieve was a few extra lines in a minor subroutine. Your managers will think the same thing, but quite possibly disregard the urgent support calls, emails, etc. etc. that kept firing off in this time. Your interruptees, of course, said its only 5 minutes, so dont put it on your timesheet. What are your opinions on timesheet systems in an IT workplace?
Wed 02 Apr | Dennis Atkins | Do you mean hour-by-hour accountings? Or just an accounting of billable activities? If you have to account for every hour and what hour it is, that's dumb. But if you have to keep track of how many hours you worked or projects A B and C today, that's reasonable, especially if at least one of A B and C is being billed out at $225/hr to your employers clients -- they HAVE to have this because that is where everyone's salaries are coming from -- your billable hours. On the other hand if there is no client and you are just working on a single project then it should be something YOU and your project manager only know about and ONLY for the purpose of calibrating your performance metrics so that he/she can make more informed estimates as to resources needed and estimated completion dates for projects. In any case, under no circumstances should these numbers be even be available for performance review, else the numbers will all become fictional rapidly.
Wed 02 Apr | Dennis Atkins | Oh and Joel, regarding the five minute interruptions - put down each individual one in the minimum accontable time period, which should probably be 15 minutes or so. Thus, if Bob asks you a question that takes 10 seconds, record 15 minutes to 'tutoring bob'. If anyone complains, tell them the minimum accountable time is 15 minutes and just repeat that over and over if they try to say don't put it down.
Wed 02 Apr | Dennis Atkins | I assumed it was obvious, but the justification for 15 minutes is that peopleware and others claim that it takes 15 minutes to get back into the flow after ANY interuption, so you can even claim scientific legitimacy for this practice.
Wed 02 Apr | Philo | I was severely anti-timesheet until recently. When doing estimates on a large project one of our team members trotted out historical data to figure what percentage of the time went to QA, what percentage went to documentation, etc. The numbers may still be guesswork, of course... Philo
Thu 03 Apr | Phibian | 'On the other hand if there is no client and you are just working on a single project then ...' etc Unless you are based in Canada and can possibly claim those hours under the SR&ED tax credit program. In which case you would feel dumb if you didn't track the hours, and then half-way through the year decided the project really was R&D... I guess the point is that even if your job does not include any billable hours, you never know when it might be useful to have data on that point. Ultimately, recording what you did all day is just good practice. It doesn't have to be via a special timesheet program either - ideally you should be able to gather information with a minimum of context switching so that you aren't spending half of your time recording what you are doing. Via CVS when you do a commit, for instance...
Thu 03 Apr | Foo | And of course everyone in this forum thinks that they're good developers ...
Thu 03 Apr | Simon Lucy | Timesheets are pointless, they presume to provide data that doesn't exist. What matters is progress, obstacles and morale. If its for contracting then all it does is tell you how much to pay them, if you didn't provide them with the work or materials, you still have to pay them, if you don't supervise them or monitor them then you still have to pay them. For staff, it has even less point since for the most part you still have to pay them even if they didn't turn up (sick), spent an hour in a useless company meeting and so on. If you get progress for less elapsed time than you estimated or planned for, that's a win, if you have an obstacle that impedes progress and saps morale then knowing how long it held you up isn't going to help solve the problem or improve morale.
Thu 03 Apr | Katie Lucas | I'll just add an extract of a rant I'm sending to management about our timesheeting... 'When I mentioned that I needed some extra lines on the timesheet to record things like 'trying to get UNIX support to pay me some damn attention and fix the NFS exports' so their cost in wasted time actually shows up I get told I can't do that. Monitoring the hours of time spent on things when the company happily burns whole days of time being inept just seems bonkers. I've asked - and I'm not allowed to book the costs properly to other teams when they won't do their jobs.' And that's why timesheets are a waste of time. They always end up a work of fiction.
Thu 03 Apr | Anonymous Coward | Time sheets are useful on a number of levels. CYA: when somebody wants to know what you've been doing show them in excruciating detail. Time management: most people wonder where all there time went, track it and find out. One must track it before one can control it. Don't complain that it is too much work. Lawyers track their time in six minute increments. It quickly becomes second nature. Buy the appropriate software, if you need it. Everything is 'billable' to something, even if no money ever changes hands somebody is still accountable.
Thu 03 Apr | Joel Goodwin | The timesheet system I used to live under was actually used for billing clients and clients were always unhappy to see 'PROJECT DEVELOPMENT' and wanted to see a better breakdown. However, this system was also applied to internal projects and it's application clearly went beyond client billing but into performance monitoring. (Incidentally, only 6 entries were allowed each day which led to a whole truckload of problems, and our timesheets were edited before reaching client eyes) If timesheets are suspected to go beyond billing, I think reaction to them is generally negative which can introduce more problems than they fix. Especially if you can't write what you want to sometimes, as noted by Katie above. It seems more likely they are a rosy approximation of reality at best - what percentage of timesheets actually mean something?
Thu 03 Apr | Albert D. Kallal | The problem here is often developers don’t realize that someone has to pay the bills. If your firm is involved in consulting and billing clients, then there is simply no excuse, or even a reason to avoid time sheets. It would be the height of dishonesty to simply pull numbers out of a hat for billing purposes. That information is absolute required. If you have a project manager, and he is smart, then all the billing crap should be managed for the developers. (ie: you assign tasks and stuff to the developers). The project manager will know when that stuff is done. Developers should NOT have to deal with that stuff. I remember working in the instructional systems department at university. We had to turn in time sheets. We hated that, so one of the developers actually sat down and write a nice little billing tracker program. All of the developers started using that program instantly. Thus, if a timesheet can be advised, then it should be, since developers as a matter of course hate that kind stuff anyway. If the developers do need to make timesheets, then give them some tools to do this. Some building contractors I know simply are good at estimation the cost of a project. In these cases, you are talking about a fixed cost that is being given (bid) to the client. In that case, then you don’ need timesheets. The cost will be what they be, and the client will get a bill. However, you can bet that the construction workers punch in a clock, and punch out a clock. Hence, while the building contractor may be working on a fixed bid, your hours and wages are NOT fixed. Most contractors have a very good estimate at the start, and some just pad in a real LARGE amount so they make tons of money. (I know some that don’t even use a computer for $500,000+ jobs). So what if the job runs a few extra days, it just don’t matter. However, in software, we are not near as good at estimating the cost of a project. Since this is the case, then we often ONLY take projects where a estimate is given, but only sign on for billable hours. (in other words, much if not all of the software consulting business does NOT work on a fixed price). However, lets assume for the sake of discussion, that we were like the contracting/building industry. Lets assume that we always DID bid on a FIXED PRICE. The companies that I have written job costing for were those companies producing products, and in fact were profitable. However, the question was what is the cost of producing a product? How much does it cost to making something? Often, a company does not know. Further, as a business matures, and more competition arises, then the need to know what things cost becomes very important. For example, lets assume we are making dog houses. However, we have a 3 foot dog house, a 6 foot house, and a 10 foot dog house. The problem here is which kind of dog houses make us more money? If I don’t know which dog house makes me money, then I can’t rally direct my company. Maybe those small dog houses have the same labor as a large dog house, but I can only charge a much less price. However, those small dog houses also use MUCH less material to build. Without knowing which dog house makes me money, I can’t even tell the sales force what kind of dog house to try and sell! I don’t even know where to spend my advertising budget. I could tell the sales force to spend all your time selling the real big dog houses. However, those big ones might be money losers, since they use SO MUCH material (I can build 3 little dog horses for the amount of material as the big one). So, really the concept we are talking bout here is a rudder to steer the ship. With no clue to what cost what, you are shooting in the dark. This is exactly why timesheets, and some form of software Metrecs in a software company is needed. A company resources are limited. Therefore, should you expand the support department that brings in revenue, or how about expanding the development department? Further, with software metric, you can find out what developers are writing bug free code, and which developers are not! Again, with no numbers, you have no clue as to which developer is good, or which developer is a dog. Information on costs is what allows a manager to focus the direction of a company. Why do you think baseball statistics are so important? All these stupid baseball statistics! I always hated them. I just want to go out an swing the bat, and play baseball (or maybe just have fun writing some software code). However, lets say that the bases are loaded. You also have statistics on the pitcher. Those statistics state that when the bases are loaded, that 99% of the time, the pitcher will throw a fast ball, and it is going to be a right over the plate (a strike on the FIRST pitch, when all bases are loaded). It is possible that the pitcher does not even know that he does this. However, if we do, then we have a huge advantage here. If you know above stats, then you are now up to bat, then are going slug the absolute daylights out of that poor base ball. You will probably rip the skin right off the ball like Robert Redford in the move “the natural”. Armed with those baseball statistics, you can improve, and be come a much better baseball player. The same goes for software metrics. If you find out that 99% of your bugs are in occurring in your Winsock code, then you now certainly know where to work on improving your code (next time, your Winsock code will be written MUCH MORE carefully). All of the above also applies to timesheets. They really are a form of job costing and proving the company with a rudder as to how to steer things. If you only have 20 developers at your disposal, and out of those 20, 10 can write graphics code at double the rate of others, and the other 10 can write database code at the double the rate of other, then you can use this information to build super team. Programmers are FAR MORE happy when they write code and do things at which they are good at. Those developers may not realize that they are good at GUI code, but terrible, or not very productive at database code. A good manager will use this information to make everyone happy. So, we really are talking about job costing here. I have had to write some job costing systems, and the lessons I have learned had little to do with writing software. Yes…you do need timesheets…. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Thu 03 Apr | Astarte | I am a project manager and timesheets are indispensible to me, not as a monitoring tool of other employees, but to monitor my own work. Let me explain: At the beginning of a project, I work with dev leads to plan project time. We decide that feature x requires 3 days of dev time by Alice. Three weeks later Alice has finished feature x. I need to know that the dev lead and I were underestimating Alice's time by 80%, so I can get better at estimating how long it takes to do a feature with the complexity of x. Timesheets help me get better at my job. The key thing is to use them only for that purpose and not as a way of hitting Alice over the head because she doen't work fast enough. Alice should feel comfortable enough to log in her timesheets that she spent only 20 minutes per day, for three week, implementing that feature. The rest of her time was spent on the phone to Bob in Kuala Lumpur explaining the finer points of using Windows XP. As project manager, I have to avoid the temptation to think that 'next time we won't be on the phone to Bob for 3 weeks'. Because next time it will be Sue in New York. Unless I work with the dev lead to find another body to sit by the phone and answer XP calls.
Thu 03 Apr | Astarte | Oh, and even when (if?) I find that body, Alice will probably still have to train him / her. And then help him / her out when Bob phones and askes about feature x from the last release. But hey, I'll have both of their timesheets to help me figure it out :)
Thu 03 Apr | Dino | 'No breakthrough without breakdown' - this is one thing I learned from one of my previous managers. Before you can manage you must be informed where are your costs and revenues or you would be second guessing. From this perspective, time tracking gives us information on where project resources get consumed. A competent manager would correlate consumed time with project schedules and find the low productivity and problematic areas. Then it is possible to evaluate risks and priorities and make the right decisions before (not after) the critical path gets lengthened. Although time tracking may look to some as a Big Brother’s eye, a competent manager will never use it as such. In fact there are many other earlier symptoms that point out an employee is unhappy and just about to have a breakdown. Secondary, time tracking may be used for cost allocation and billing. But that's just project admin. Cheers Dino
Thu 03 Apr | Thomas Eyde | Last time I used a time sheet application, it was a crappy one: I couldn't add my own projects, I couldn't add tasks and I couldn't plan my hours. The user interface was so painful to use, so most of my colleagues and myself postponed the time entry as long as we could. Then of course, we had to guess where the time went... No, give me a tool I can use to plan my days. When the day is over, let me adjust my hours and confirm that day. Then all data necessary should already exist in the system so no one has to bother me again with the time entry.
Thu 03 Apr | Simon Lucy | I've designed job costing systems as well, one of them is still being sold. Bugger all to do with software development, though. I've yet to see a timesheeting system for anything which wasn't a fiction. You might use that fiction to show costs, but you're only fooling yourself. Yes lawyers bill in 6 minute increments, they also bill the same time twice to different client, the same clients or any permutation of the same. Timesheets can be hidden behind, look I did research for 65 minutes...or you took a break had a conversation with someone in another department/company/universe in the course of the conversation about last night's game (which was brilliant btw), somewhere within the conversation was a sentence which related to the project and might just count as research. Timesheets on their own count nothing except time, in order to apply any possible costing to it you have to code them to activity and code some notional cost rate to that code. For anything except very well defined operations (and very well assessed operations), for people that work at a fixed job performing only known operations these costing systems are less than useless. Unless a timesheet is filled in contemporaneously with the event, or the event is captured automatically the timesheet is going to be an actual fiction. Its Monday, timesheets for last week have to be in for last week and coded. Hmmm what did I do last week... Ok, you can say its Time Management (big doomy voice), and everyone should be able to manage time. This is no doubt true for those with regular colons and regular work schedules. But anyone that thinks this is a Good Idea should also consider, which is more important, to do what I do, or remember what I did when I did it, how long I did it for and spend that time instead of doing it. Ok, there is the point that if you're later going to capitalise the r&d costs that you have to account for them. But that doesn't necessarily mean timesheets.
Thu 03 Apr | RB | We have timesheets at my work that track our time constantly. Basically we have an always running intranet application and it's (usually) only 1-3 mouse clicks to record new activities (email, discussion with co-worker, phone, current project, etc). After you get used to it, it becomes second nature to record what you're about to do with a few mouse clicks before switching to that task. The main reason for it's development was to provide a detailed bill for hourly rate jobs. However it also provides good feedback for time estimates so that we can revise time estimates regularly and continuously get more accurate with the estimate. I can understand that some people would consider this a bit intrusive, but our management have said that they fully expect that there will be 20% of a persons work time spent on 'breaks' - which counts for things like helping co-workers, simple support jobs, making coffee, day-dreaming, etc.
Thu 03 Apr | Philo | Joel, don't timesheets go hand-in-hand with your painless estimating system? You've already got the timesheet - your estimating sheet. Then, when the project is done, you can see how your estimates worked out. You can also look at the 'penciled in' entries and note the things you didn't think about. Looks like a feedback loop waiting to happen? Philo
Thu 03 Apr | | Philo... err... I think you mean a different Joel Confusing, isn't it? Maybe one oof them should change his name.
Thu 03 Apr | Samuel D. Jack | While we're on this topic: Any suggestions of good timesheet management software? Is there any that can automatically track the applications being used on a desktop?
Thu 03 Apr | Hardware Guy | If you're a consultant looking for a tool that'll generates timesheets for clients, Timeless Time and Expense is pretty good. It costs $42.99, and can be found at http://www.magsoftwrx.com/ I'm just a satisfied customer; I have no interest in the company other than that I'd like it to stay around.
Thu 03 Apr | Gavin | I think timesheets can have the benefits that people here are claiming for them if they're done in a reasonably smart way. For example, I used to work at a company which originally had a nice simple system--at the end of the week you filled in a form where you said how many hours you spent on each of the projects you were working on. I'd guess that people mostly filled those in reasonably accurately, and so the company could probably get a good idea of how much work a given project took. Then they switched to a web-based timesheet system, which I guess allowed some bean-counter to realize his fondest dream of getting lots of data, so we had to categorize our work into one of > 100 categories--how much time spent on design, writing unit tests, implementing unit tests, running unit tests, writing new code, fixing old code, bug fixing, integration, integration tests, and so on. I have a tough time believeing (from talking to various folks there, not just my own experience) that they got anything but fiction from this system. It could take an hour to fill in the damn timehseet alone. (There were five different categories for vacations!)
Thu 03 Apr | Thomas | 'At the beginning of a project, I work with dev leads to plan project time. We decide that feature x requires 3 days of dev time by Alice. Three weeks later Alice has finished feature x. I need to know that the dev lead and I were underestimating Alice's time by 80%, so I can get better at estimating how long it takes to do a feature with the complexity of x.' I don't want anyone else guessing how long it's going to take me to complete feature x. Let me make the estimate, and accept the consequences if it's wrong. I'll either make a better estimate next time, or, after a few horrible estimates, you'll learn to multiply my estimates by 70%, 120%, whatever. Also, when I give an estimate, it's in ideal time. Eight hours per day, five days per week. If you want a schedule, tell me how many hours per day (or week) I am allocated to work on feature x. Then I will give you a calendar schedule that tells you when I expect to be finished. (Hopefully you will make the schedule yourself though. I hate scheduling.) I will also tell you how accurate my estimate is. If you give me a day to estimate feature x, my estimate will be less accurate than if you give me three days. Your choice. When I begin work, I will use a timesheet to track my time. This will tell you whether I'm spending the time allocated on feature x, or on helping Bob debug feature t. If I decided to help Bob, I take the hit, and try to make up the time. If you told me to help Bob, you take the hit, because you decided to reallocate my time. (Which may be perfectly legitimate, for example if Bob and told you we can fix feature t in a day if I help, but if he has to do it himself it will probably take five days.) If I lose a day because someone hosed the CVS repository and it had to be restored from backup, I will report that. Not to blame the poor guy who goofed up, but to show the impact on the schedule. And that's how I like to do things. :) -Thomas
Thu 03 Apr | the artist formerly known as prince | One system I thought would always be useful is if the manager filled out people's timesheets, and the had the people sign them. That way 1. The task is shifted to the person who is supposed to handle these things 2. The manager is forced to think about how he is spending his resources 3. For a time sheet to get signed at least two people and possibly the two most important people to the process would have to agree on how time is spent, i.e devloper > what do you mean it took 30 minutes to install oracle
Thu 03 Apr | Thomas Eyde | Among the timesheet management software out there, there's one called Timesheet. I do *not* recommend it. I repeat: *not* (as in the report tool which name should not be spoken) My former employer installed it and even managed to upgrade it, in spite of all protests. We nicknamed it 'Timesh*t'. Says it all.
Thu 03 Apr | tim | I don't really like timesheets that much as my office manager and others use them as an excuse to tell me off all the time. The best name I have heard suggested for a timesheet system was System Hours Insertion Tool (thought up by one of the programmers.) Thanks.
Fri 04 Apr | Albert D. Kallal | The book pepoleware has a chapter named: PRODUCTIVITY MEASUREMENTS AND UNIDENTIFIED FLYING OBJECTS. In other words, many managers view timesheets and software metrics like UFOs. It can’t be measured, so why bother? Of course, many baseball mangers used to think that way also! Those baseball teams that adopted stats stared to beat the brains out of the teams that did not. The same is happening in those software firms that use metrics. They run circles around ones that don’t. The chapter in peopleware of course quotes what is called Glib’s law: Anything you need to quantify can be measured in some way that is superior to not measuring it a all” In other words, some kinds of measurement is superior to none. The other thing of course without some types of measurement, one cannot improve. I gave the example of baseball, but the same really applies to software. How can any team of developers even KNOW they are improving without some type of measurement? How can a team of developers even know that they are good? It is like those teachers in school that propose to remove exams and all testing! When you start to put this whole thing into perspective, it almost becomes humorous. No one in their right minds would purpose that we remove exams and testing of students. Yet, many educators actually do, and have proposed this very concept. Not measuring in business world is just as bad, or even worse then those messed up educators. Yet, many propose to do exact same thing the business world. Having no feedback or numbers means that everyone is taking a guess as to where they stand. The excellent example to quote for the book peopleware is: “Suppose the measuring came in to tell you that your productivity was in the top five percent of organizations doing your kind of work. You’d be pleased. You’d would wonder around the halls with a secret smile , thinking warm thoughts about your people: “I suspected they were pretty good, but this is terrific news” Ooops. The measurers have just come back to tell you that they must have been holding the graph upside down when they gave you the first report”. You're actually at the bottom 5 percent” Now your day is ruined. You find yourself thinking, “I might have known it all along. Who could expect to get any work done with turkeys like these on the staff? ” In one case you are ecstatic, in the other you are despondent. BUT IN NEITHER CASE ARE YOU PARTICULARLY SURPRISED! The above sums this up. You don’t have clue, and if you don’t have a clue you are running blind. The fact that you can be surprised EITHER WAY is the whole point here! In school we use tests and marks. In the software industry, we use software metrics, and that means some form of time keeping. Should a company keep track of the number of bugs? Heck, how long did it take us to learn to track defects in manufacturing? Managers scoffed at use of statistics and quality control tracking. Today, you would be laughed at for ignoring good information. Of couse, people ware also warns that how the tracking information will make, or break the success. If that info is used by managers to put down developers, the whole thing will be a disastor. Many software firms can output 10 times what other software firms can do. And further, they have the numbers to back this fact up. Does your software team have those numbers? How many blind computer mice do you have on your team? Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Fri 04 Apr | Simon Lucy | Metrics are good, the right metrics. If you measure progress, obstacles and morale then, if you know the team and the team is experienced then you know whether its doing less well or not. If you use timesheets as the criteria for billing then your clients are paying for your errors, mistakes, confusions and accidents, as well as whatever real work takes place. Unless you code it so precisely that these elements are excluded, but then are they? How tempting is it to put down a broken CVS (which the client isn't going to understand) as development? If people are finding it difficult to estimate how long something will take and therefore express work in hours and bill in hours then why should they be any better at categorising what they actually did? It doesn't take that long to get a feel for how long something should take, if there are unknowns then you cost them as unknowns, that is you define what you will do and you bill for that. In the twelve or so years I've run my own ship I can count on one hand the number of hourly billed pieces of work that were about deliverables, Consultancy time yes, my actual time spent on their actual work. But if I'm delivering a definable 'thing' then I give them a price and we agree what that price relates to. Not using timesheets doesn't mean you don't measure, you just use measurements that make sense of the process and the costs.
Sat 05 Apr | Joel Goodwin | I have seen useful applications of timesheets as well as bad applications of timesheets. Reading this whole thread, I feel that they aren't 100% bad nor 100% good - it comes down to how they're applied and how easy they are to maintain.
Sex | Tue 01 Apr | The Real PC
I knew that subject would get you interested! Why do you think more programmers are male? Every book on programming or computers I have ever read was written by men, and most female programmers I have known are from non-Western countries. The difference may be even greater in my field (web programming). Ive heard speculations on the reasons, but no really good explanations. It cant just be because women dont like math, since I think Ive heard there are as many female as male mathematicians. Maybe its just a tradition, without any basis in reason. I mean, you can see why more women are nurses or kindergarten teachers, or psychotherapists, and why more men are police or firemen or construction workers. But I cant see the reason for the low rate of women in programming, and the almost complete lack at the expert level (those who write books) in web programming. Im not saying theres anything wrong with this or that it matters; just wondering.
Tue 01 Apr | Matthew Lock | My Mum was a computer programmer! How's that for a role model.
Tue 01 Apr | flame away! | I think it's because most women are nurturers by nature and programming doesn't appeal to that personality type.
Tue 01 Apr | J. D. Trollinger | 'there are as many female as male mathematicians' This can't possible be right. I just checked the websites of a few Ivy-league universities. Their mathematics departments consist largely of male professors, with just a few females.
Tue 01 Apr | Patrik | I think that it is as simple as peer preassure in high school. The then-boys didnt get the chicks, because it was considered uncool by female peers to hang out with programmer type people. So everybody hung out with the cool people instead. If assembly programming the Z80 or 6502 would have been considered cool we would have alot of -70's chicks as colleauges ;-)
Tue 01 Apr | KenB | I hate math - always have always will! But I love programming - go figure..... Let me clarify: I think it has to do with how Mathematics is taught in school. The teachers make it so boring that all you keep thinking is 'When will I ever use this in real life?' Or you memorize stuff for the test then forget it. But when I took CS electives in high school I thrived!!!! I Was hooked from then on. Conclusion: I'm not sure that Math has anything to do with it women not being in the industry. Is it nature or nuture? Maybe a little of both?
Tue 01 Apr | don't get me started | I'm a female programmer. I think the reasons that not a lot of women go into programmer/engineering are: - they don't know what it is. When I was an Engineering student in the late 70's, all the other women in Engineering had one thing in common: their father or their brothers were Engineers. I think that's the only way they knew what was involved. Thankfully, the Society of Women Engineers has done a lot to try to educate high school girls about their career choices. - It's a tough work environment for someone who is hoping to have a family. My first job demanded that everyone worked nights and every weekend in the summer, in order to get products done (or at least demonstrable) in time for Comdex. A schedule like that is hard to explain to a toddler - 'Mommy loves you; she just won't see you for the next 6 months.' -This may be politically incorrect to admit, but having babies does put a bit of a jolt in the career path. Every time I had a baby, I'd quit my current job to do part-time contract programming for a while. I just couldn't see staying home for 6 weeks and then going back to work full-time if there was any possibility of something more flexible. (I totally understand that many women don't feel they have that choice.) [And as an aside, contracting turned out to be a much better career choice. I got more experience, much more pay and flexibility.] And hey, in response to the crack about women being nuturers: Programming is done in teams. I'd think you'd want a couple of nurturers around to handle all the egos. Nurturers bring chocolate chip cookies to work.
Tue 01 Apr | The Real PC | All the women I know have traditionally female careers, except for two non-Westerners. Maybe this is just because I don't know all that many people, and it's just a coincidence (not a large enough sample). But I am continually surprised at how everyone fits right into a stereotype. I think it's mostly because of tradition. A lot of women are getting law or medical degrees now, and those fields used to be all male, even though there's nothing about law or medicine that would appeal more to men than women. Both involve helping people and neither is math-intensive. One possible reason for the discrepency in programming is that men think more about supporting a family and women try to find a husband with a good income, to support them while their children are young. Programming is hard to learn so people who don't need a good income don't want to make the effort. There seem to be a lot of women in computer support jobs and web page design -- these jobs don't require a lot of studying. On the other hand, law and medicine require a lot of studying and result in a good income. Why are there a lot of women in these fields? I think it's mostly an 'upper class' type of women who becomes an MD or lawyer. In the upper classes, more is expected of women than in the middle classes. But even so, they stay away from hard sciences like physics, and from computer science. Computer programming isn't a high status profession, usually, so the upper class females aren't attracted to it. And, as I said, the middle class females aren't motivated to study that hard. (All these are generalities and speculations based on my observations).
Tue 01 Apr | The Real PC | Yeah, I think I figured it out. Programming is not high status enough for upper class women. They might become computer scientists but they have a choice so they take law or medicine which is more social. Programming is relatively non-social and not high status, and requires dedication and studying. The most likely person to choose it is a middle class male who expects to support a family. It requires 4 years of school, usually, rather than 8, so you can start earning money sooner and get married sooner. I also agree with 'Don't get me started' -- most women have no idea that programming can be fun unless they had a father or brother who got them interested.
Tue 01 Apr | Steve Barbour | 4 years? I can't believe I wasted all that time with high school and college!
Tue 01 Apr | The Real PC | 4 years of college, instead of 8 for law or medicine, or Ph.D. And some programmers don't even have a 4 year degree. You can get a certificate or teach yourself. It attracts a person who is motivated to work hard and wants a middle class income, but can't afford to spend a lot of time in school and isn't motivated primarily by status.
Tue 01 Apr | Li-fan Chen | The life style a programmer leads is just not very glamorous. The only time you travel is to tweak a configuration or install a site. And you are shuttled back on the cheapest flight as soon as possible. No fancy lunches or customers trying to woo your attention the way a marketing type might get to enjoy occationally on a good day. The closest to serious social interaction is if you document something really stupid (how to pass around instant messages comes to mind) using an equally stupid platform by writing a WROX book and getting on the cover. And getting on the cover of WROX definitely won't get you a great night out at the clubs. The pay is shit at the beginning when you are just a code monkey and infinitely replacible. No attempt at free over-time will do anything for you anyway. Becoming intermediate or advances brings you more responsibilities and rarely the appropriate raises at most average companies. Why would anyone want to be a programmer? Except maybe Diablo playing nerds.
Tue 01 Apr | The Real PC | So the answer is women have more sense than we have.
Tue 01 Apr | Li-fan Chen | Something like that.. although in foreign countries women seem to dig this line of work. Must be the water.
Tue 01 Apr | Li-fan Chen | In foreign countries the software industry is fundamentally different. 90% of countries have to naturalize SIEBEL and SAP while Germany and the States get to write the big blocks. The nature of the work is less slightly intensive. You don't catch people hiding in dungeons working out the next Apache or medical imaging library. You'll catch Microsofties and Webbies running around making what they can off of consultation. Always a more value added scenario than trying to code all day and all night. When you work for Microsoft Taiwan for example, you'll rarely be expect to write Microsoft Word. But may have a select few lucky(?) people figuring out the next big internationalization architecture. Otherwise you just push the naturalized software. There are so many software ready and prewritten that they just need to be customized. Got a problem or feature to add, just call Austin or Boston. So in a way that could be an indicator of why women enjoy computer related work in foreign countries. Because 70% of it is consultation and selling. Lots of parties and outings.. and very very little coding (I am not saying the coding quality is bad.. in fact--you'll be amazed at the creativity and quality of work done considering how hard it is to do systems programming or anything heavy in a foreign country without the right peers)
Tue 01 Apr | Li-fan Chen | And although so many industries are established in Asia. Where large in-house firms will be found in old cities like Tokyo or Singapore and will employ programmers capable of system programming and major customizations, there are plenty of new territories to be found. There's always new factories and companies being founded in India, Indonesia and China.. and all that fresh opportunity to install new systems promotes a sales industry, where custom programming is just a check box on the features list. And for the most part major western software companies have taken notice and encourage the sending of qualified software engineers to fly in and do some serious initial and subsequent customization. But often time there's no reason why these technicians can't just SSH into the remote system while rotting away in some humid damp dark dungeon.
Tue 01 Apr | Lauren B. | Well. It's good to have a male person bring up the topic for a change. I have observed that the people who really think and talk about women in technology tend to be women in technology. This topic is important to me as one of those women in technology. And I've been so interested in gender equality over the years...can't resist to reply. I think the reasons that women are not in programming are as varied as the people themselves. Why do people choose one career over another, really? Itseems to be family traditions (Dad was a lawyer, his dad was a lawyer, therefore...), natural talent and abilities, an influential teacher, or some other role model. Well, if you don't know any women technologists, then who can be your role model? My intuition is that the lack of women in technology is the reason there are fewer women in technology. Not just for the direct mentoring argument above, but also because the culture of the field has naturally grown to be more male. Face it, men and women are different and they natually choose different self expression, reward systems, etc. Ask any mother of a son and a daughter, they'll tell you that they observe different behaviors in their children before there are years of cultural influence. My point is that the culture of the IT field has reflected the majority and people who are not in that majority sometimes feel unwelcome or uncomfortable in the majority culture. It takes a lot of energy to constantly have to alter your natural behaviors from your culture to fit into another one, every day. Slowly, we are changing that as each generation gets better at living in a diverse world. To respond to The Real PC's comment about women tend to be in support roles or web page design. No, I don't think it has very much to do with the so-called 'simplicity' of the job, or that it requires less studying to learn it. I can see how it may appear this way. To me, the reason is more likely to be that support jobs actually *help people* and have *people interaction* - something that women tend to get more personal satisfaction from. Generalization, yes. This is a variation of the 'nurturer' observation. My thought on the reason web design jobs are likely to be more populated by women is that it is because the job is creative. I think, in general, more women are motivated and get satisfaction from creative (artsy, perhaps) endeavors than men tend to be. Generalizations again, and there are always exceptions, of course. Another point I would like to make is that sometime women (and probably men) knowingly choose jobs that are below their abilities. The reasons for doing this probably have little to do with career goals - not everyone cares to strive for a stellar career full of interesting work and challenges every day and potential for unlimited income. Some people's priorities are elsewhere (family, the band they sing in on the side, missionary work, whatever). What's wrong with men and women being different? It will be a true advance in society when we can get past this gender issue thing, in terms of job skills. That is, when there is a woman working on embedded systems, it's not even worth mentioning as unusual. The skill and ability to do the job is all that matters, in this realm And when a woman chooses to be a nurse, that's not thought of as any 'higher' or 'lower' than a man choosing to be an aerospace engineer. It's what they want to do, and that's that. Unfortunately, we (in the US) still tend to value men's jobs more than women's, although this makes no sense whatsoever.
Tue 01 Apr | Ian Stallings | Our image has been driven by the press who think we all forget to shower, sleep under our desks for 2 hours every night, and wear pony tails. Not exactly the glamourous life most women in the west have been brought up to admire. Here's a good example - I go to get my hair cut and the lady starts talking to me about life. She asks me what I do and I tell her that I am a programmer. She replies 'But your not boring right? Most computer people are boring'. So I replied 'And the life of a hair 'stylist' is exciting?'. Even the barber is taking pot shots at me. I think most people think of life behind a desk as boring and I'm sure it would be if I was data entry goon of the year but programming is fun to me and I enjoy it. If I want excitment I'll jump out of an airplane.
Tue 01 Apr | choppy | My old boss took a look at this question about 8 years ago, and has some interesting comments. http://philip.greenspun.com/careers/acm-women-in-computing.html
Tue 01 Apr | Will | Just came across the interesting link on the Linux How-To site. Thought it made some good points, especially about the nature of the technical community. HOWTO Encourage Women in Linux http://www.tldp.org/HOWTO/Encourage-Women-Linux-HOWTO/index.html An excerpt from the table of contents... 2. Why are there so few women in Linux? 2.1. Women are less confident 2.2. Women have fewer opportunities for friendship or mentoring 2.3. Women are discouraged from an early age 2.4. Computing perceived as non-social 2.5. Lack of female role models 2.6. Games, classes aimed towards men 2.7. Advertising, media say computers are for men 2.8. Life-work balance more important to women 2.9. Reasons women avoid Linux specifically
Tue 01 Apr | Mikayla | Re: Strangers saying 'isn't that boring?' Generally their eyes just glaze over right after 'software' comes out of my mouth, and they rarely respond in any way, except for the older ones who are surprised and don't want to admit it. At least, I get that a lot. This is generally from females (my hairdresser, at least a half-dozen nurses). Then again, I can't think the last time a man while doing his job asked me what I do for a living. My doctor and my optometrist (both female) never had the 'how odd' or 'how boring' response, if that supports the high-status theory. As to why more women aren't involved - seeing as it's hard to increase role models / mentors / parents' job distributions directly - I always thought the biggest factor that could actually be changed was the antisocial image and the intimidation/competitiveness. (More stereotypical generalizations...) Guys are drawn to college CS programs by the rigorous provability / measurability of math, but with massive earning potential. They get to work alone and hide from people. When forced to deal with people they can bluster and bluff and intimidate them. And then by their junior or senior year, they find out programmers have to work together and communicate. Damn! SuX0rs. But soon enough they graduate and if lucky will be able to forget that part. The women in my program freshman year ended up either honors graduates, or quitting before they found out the guys were full of BS. As a woman I still to this day can't understand how my male CS student friends can reconcile 'I am the greatest programmer ever, I am always right, you are always wrong,' with 'I failed all my classes last semester.'
Tue 01 Apr | choppy | I think you guys are way off the mark when you say males get interested in programming because of the 'rigorous provability of math' or whatever. Most programmers I have met are shamefully terrible at mathematics. When I was an undergrad, about 2% of the people majoring in CS were guys who were into math. The other 98% of the people were guys who were really into playing video games, surfing for porno on the internet, buying random gadgets, bragging about who had the best video card, and modifying their honda civics with pagoda spoilers, shuriken rims, etc. They were also people who were thinking 'whoa...$40K a year? I'll be fucking rich!!' My theory as to why they were in CS is because they already sat in front of a computer 90% of their life anyway, so why not make that into a career? Sadly, you can get a CS degree without much work at most colleges and universities, so guys like this can maintain a C average and eventually get hired somewhere upon graduation. I actually couldn't stand the people (students and TAs) involved with CS at my school, so I got a double major in math and philosophy instead...
Tue 01 Apr | Li-fan Chen | LMAO choppy.. how true. :)
Tue 01 Apr | Tony Chang | In the US, programming is viewed as undesireable menial labor that is overpaid for. In india, the middle east and china, programming is viewed as engineering. Thus, in the US we see foreign women working as programmers but not american women. Other Us careers with the same dynamics: - plumber - garbage collector - bricklayer Women are underrepresented in all these careers, all of which pay similarly to programming jobs. (40-70k)
Tue 01 Apr | KenB | Hey Choppy, I guess I fit into that category of programmers who you hate. Math sux!!!!! Video games & gadgets are cool! Sorry to let you down :-( But I also can't stand typical arrogant Academia nuts who only care about theory & what school you went to!!!!!!!
Tue 01 Apr | choppy | KenB: yeah, you've summed up the attitude pretty well.
Tue 01 Apr | Prakash S | 'Even the barber is taking pot shots at me.' Perils of the trade, Ian...perils of the trade.... OTOH: In India, I am sure my barber would hold me in high esteem if I told him that I was a software engineer...
Tue 01 Apr | Sandy McDonnell | First I have to admit that I am not a programmer (but am a woman). I have worked in a variety of roles in commercial software development for over 10 years. Honestly, a lot of it is the American software development culture. The male dominant culture of software development doesn't traditionally embrace collaboration or teamwork. It doesn't allow people to be wrong -- ever. It is often dominated with huge male egos that won't tolerate women as equals. That said, I love software development. I kept a developer from one job and still go home to him every night. Not all men in software are impossible, but often the cultures they create do alienate women to a degree that women cannot excel in the field without a tremendous amount of perserverance
Tue 01 Apr | Philo | Sandy, don't take this the wrong way, but IMHO that's pure sexism talking. I've worked on plenty of teams where there's teamwork, mutual support, negotiation, and even admission of fault. I think software development is like any other human endeavour in that respect - it's about the people. You can have a room full of Type A Egos, or maybe a bunch of zealots, or perhaps a group of people that are open-minded professionals that are willing to learn. It all depends. Philo
Tue 01 Apr | KenB | Scott Adams knows what I was referring to: http://kaedrin.com/fun/images/stupidity.jpg
Tue 01 Apr | Lydia | I belong to a group of tech-oriented women, so I can offer some feedback based not on personal experience, but from discussions I've had. Most of the women I have talked to who wouldn't consider a software development career feel that way because they see it as a 'boy's club' that they can't be a part of. (Philo, this may seem sexist, but the question was why do there seem to be fewer women in software development, and this is one answer I have heard from several different women.) Asthetics may be part of it. I'm sure this will enrage some people, especially if you are used to more modern environments, but I know one person (admittedly, this was in the gaming industry in a small shop) who was horrified by the unkempt desks, unkempt developers, and unfriendly surroundings. Clothes (sometimes old clothes) strewn everywhere, papers in a disarray, old dishes and beverage bottles piled everywhere, and so on. The cloying smell of old soda cans drove her so crazy she would by physically ill by the end of the day. The choice is: nag and stand out, or take it and 'be one of the boys' - where is her individual identity? For some, it's the sacrifice of time that seems to be required. The traditional/romantic idea of the stoic software developer working well into the night and giving up his weekends just doesn't appeal to women as much. They have social connections, family, partners, and they cannot disappoint them. More recently, I've noticed an interesting turn-off: the dot-com image of trendy, twenty-something fashionplates living on caffeine and coding away (with style!) is just as repugnant an idea. It's all about the environment. Women are more into the idea when they are in gender-neutral environments (it doesn't matter if they are male or female, just as long as they can work with their team and get the job done) that encourage team-building and emphasise people over code. There has been a lot of time for sterotypes to become well-entrenched (in Western society, at least) and as long as they persist, they will probably scare off a certain number of the female population.
Tue 01 Apr | | Ever heard of Grace Hopper, one of the great pioneers in computer science? http://www.sdsc.edu/ScienceWomen/hopper.html Grace Hopper is the person you can thank for the use of the word 'bug' in computer programming.
Tue 01 Apr | One-Armed Bandit | I always thought it was because so many more male geeks than female geeks. Plus, most of the female geeks I knew were literature geeks (with an occasional chemistry geek thrown in for good measure) rather than tech geeks.
Tue 01 Apr | Martha | These kinds of discussions always make me feel even more like an alien. I mean, what are the stereotypical traits of the male software type? *Glasses - check. *Overweight - check. *Introverted - check. *Messy desk/office - check. *Can live on pizza - check. And so on. The only thing I'm missing is a beard. All the things women are supposed to care about leave me puzzled and feeling left out. That LinuxChix How-to was especially bad. Intuition? Moi? I don't think so.
Tue 01 Apr | The Real PC | [Ever heard of Grace Hopper, one of the great pioneers in computer science?] Yes we've heard of Grace Hopper who invented the compiler, and of Ada Lovelace who invented loops. The question was why the vast majority of software developers (in the US at least) are male. Look at the authors' names in the computer section of the bookstore. And read the acknowledgements sections of the books -- thanks to Joe, Bill, Jeff, Mike .... 20 more men's names ... oh and thanks to Betsy for helping with the proofreading. Software is such an important part of our civilization now. If I didn't understand anything about software it would bother me -- that's the real reason I started to learn programming. The lack of curiosity about computers among women is kind of striking.
Tue 01 Apr | T. Norman | I think the aversion to technology starts as early as high school, and is not based on their perceptions of the professional environment of software development. Look at the male/female ratio of just about any 'Institute of Technology' school (Georgia Tech, MIT, etc.), and they are overwhelmingly male, even though women now make up over 50% of the university population nationwide. Less than 1/3 of Computer Science graduates each year are women, even though women form over 55% of college graduates. At my college women made up less than 20% of the CS graduates, and every single CS course, even the first year Intro to Pascal had a small percentage of women. So there is something from an early stage that is steering them away from choosing computers or engineering. Could be that high school cliquism and geekism -- the computer wizzes get labeled as nerds, girls don't want to date nerds, and since they wouldn't date one, they don't want to be one.
Wed 02 Apr | | [software in 'foreign' countries] '70% of it is consultation and selling. Lots of parties and outings.. and very very little coding' BS. There is plenty of non packaged software being developed and maintained. I would _guess_ that more software developers do that than make the next version of Word or whatever it is. Even the idea of the US as the only place that people write commodity software is quite blatantly nonsense - think about where the software for the 150 mobile phones in Europe was developed (likely in Scandinavia, almost certainly not the USA), for example.
Wed 02 Apr | Emmanuel Goldstein | No. The dearth of female coders is largely due to the differences between the brains of men and the brains of women. Far from being a result of 'media stereotypes' or girls being discouraged from programming, the nerd gender gap is a result of the very different design priorities that went into the brains of the two sexes. Our species happens to have highly bifurcated sexes with different inherent mental strengths. Women have much better situational awareness, and are far better at multitasking than men. Men, in turn, tend to be better at obsessive singletasking. Both of these traits are the result of eons of prehistorical evolution with men specializing in hunting, with women specializing in child rearing. Both tasks were difficult and utterly crucial, but required different mental talents. Those male-female units that divided these tasks most efficiently achieved reproductive success best. Here is a fascinating essay on the subject of nerds which touches on sex differences in nerdishness: http://www.isteve.com/nerds.htm Keep in mind that, once again due to neurological differences, women are much less likely than men to *want* to be computer programmers. In this debate there often seems to be the laughable assumption that many women are being excluded from an opportunity to slave away in the most solitary and abstract career around. One imagines the technology-deprived sisterhood marching in the streets: 'What do we want?' 'ROOT!' 'When do we want it?' 'NOW!'
Wed 02 Apr | Astarte | I am a programmer, I am female, I consider myself hard-core and I love my job. I work mostly with male developers; we have 6 female developers in an office of around 60. The guys I work with are not slobs or sloppy (their worst messiness is piles of code printouts lying around) and our offices are bright and clean. Like any technical job, ours is filled with jargon and in-jokes. Both at university and at work, there is a lot of posturing ('My code kicks ass!', 'I am the greatest programmer who ever lived'). Aside from myself, I have never heard a woman make such utterances. It's a culture you acquire. I think it puts a lot of women off, since in many cultures girls are brought up to be modest. There is a lot of mythology around computers, including the old stereotypes about nerds, geeks and horrible working environments. These myths are ingrained at university and I think they put women off. I think the biggest problem is perceived risk of failure. Men are encouraged in many cultures to be risk takers, while women are encouraged to be risk-averse. A good programmer, IMHO, has a 'try it and see what happens' attitude that I think is missing in many women. I think the women who do make it in this field are to be congratulated :) But I must admit that the work environment is what keeps me in my job. The thrill, the challenge, the massive ego's, are all part of what makes it great.
Wed 02 Apr | | 'I am female, I consider myself hard-core' Heh! Heh!
Wed 02 Apr | John Topley | I've just realised that there are five women and three men (including myself) in my little corner of the work world.
Wed 02 Apr | The Real PC | [Women have much better situational awareness, and are far better at multitasking than men. Men, in turn, tend to be better at obsessive singletasking.] So the managers should all be women. And all the political leaders as well.
Wed 02 Apr | Stephen Jones | Can we please get rid of this idea that woman and men's brains are wired differently. In a significant population sample of men you will find a greater number of men who have the personality/intelligence type associated with mathematical and scientific activities than you will women, but the difference between the two groups is less than the difference between any two individuals in either group. And even if it were you would still have no basis to make a judgement regarding any particular individual. Also can we please have no more of the 'too young for culture to be the cause' answers. Gender discrimination in the way adults treat children of different sexes has been observed with children as young as one year. And how many boys got Barbie dolls for their birthday, and how many girls got Mecano sets?
Wed 02 Apr | KenB | Sorry but I don't believe in that theory evolution.
Wed 02 Apr | Erin | I don't know about why there aren't as many girls studying computers, but the answer to why there aren't as many female book writers should be obvious. I'm a female senior in Computer Engineering, and most females (myself included) have some sort of life-plan that goes something like this: 1. Get kick-ass job 2. Marry great guy 3. Eventually procreate The procreation generally has to be done before age 35. That means that MOST females are planning to work part-time if possible starting around then. Now doctors or lawyers wouldn't have so much of a problem with this as their services are obviously needed by society. But computer engineers? EVERYBODY knows that these people work nights and weekends, for little additional benefit, and that you can arrange to get paid part-time but you'll still be expected to work full-time. The only alternative is to do something like consulting, but that seems very risky with kids to support. Really advanced knowledge requires years to obtain. The reason that most women don't get there isn't because their brains are wired differently but because most of them get set back when they have kids. That's the truth behind all those studies that are supposed to show that women earn less on the dollar compared to men.
Wed 02 Apr | | Another way of talking about multitasking is to say, if we're going to make generalisations, that men are better able to concentrate on tasks and complete difficult tasks. Multitasking is the secretary who can answer the phone and read a magazine at the same time. Anyone can multitask if they don't have a high processing load. Situational awareness, also, is being misrepresented. Soldiers and pilots - generally men - exhibit superb situational awareness. Trained women too, but the generalisation that women are better is silly. My explanation for the predominance of men in programming jobs is simply that it requires long sustained work. More men than women have the opportunity and orientation for this. All kudos to the women that do it.
Wed 02 Apr | Emmanuel Goldstein | 'The Real PC' suggests - sarcastically - that if what I say about innate differences in brain wiring were true, all managers and politicians ought to be women. RealPC is on to something there. Programming would seem to be the ideal career for a working woman who wants kids (which Erin brings up), as it is more amenable to telecommuting than any other. Also, unlike management, a programming career doesn't depend on 'momentum' i.e. you can take years out of the middle of your programming career and then jump back in (with a skill refresher) and no one looks askance at your chronological resume with a big hole in the middle. Try that in a climb to the executive leadership of a big company. And even so, there are far more women in management than in programming. Management simply requires a brain with a more feminine design. Fascinatingly, increased testosterone levels cause the opposite of what you might expect. High T levels makes for more 'feminine' style thinking in men - multitasking and situational awareness - at the expense of concentration. So the most 'manly' men invariably eschew abstract, obsessive concentration jobs for those that require quick thinking and situational awareness. If the job also rewards a dominating personality, it's bound to be packed with high testosterone men, e.g. sales, trial lawyer. And, of course, who else is succeeding in those jobs? Women. Note that there are some career paths for lawyers that don't need quick thinking but instead obsessive singletasking. In a back room of every big law firm invariably there is ‘law wizard’ nerd lawyer who has an awe-inspiring obsessive knowledge of the details of law and precedent. This wizard is invariably male, and BTW invariably doesn’t make nearly as much money as the glib, quick thinking, female and high testosterone male partners. I speak here of averages. We all know a few (all too few, sigh) female engineers. Please read the essay I linked to previously – it is highly illuminating, and sort of a nerd-pride manifesto.
Wed 02 Apr | Anonymous Aetheist | KenB - Evolution may technically be a theory but it's one that has been subjected to, and survived, a great deal of scientific scrutiny which is not true of creationism.
Wed 02 Apr | choppy | Jesus, Darwin, and Hitler were all Nerds. And Males. And none of them were computer programmers. Think about that. Is the thread over now?
Wed 02 Apr | KenB | I guess we agree to disagree. One scientific statistic to show that life by chance without a Creator is impossible: The proteins needed for life have very complex molecules. What is the chance of even a simple protein molecule forming at random in an organic soup? Evolutionists acknowledge it to be only one in 10^113 (1 followed by 113 zeros). But any event that has one chance in just 10^50 is dismissed by mathematicians as never happening. An idea of the odds, or probability, involved is seen in the fact that the number 10^113 is larger than the estimated total number of all the atoms in the universe!
Wed 02 Apr | Stephen Jones | Dear Ken B, The origin of life has long been expelled from the fields of scientific enquiry, on the grounds that it is basically speculation. If you do want to delve into the present state of the art you will find that the organic soup theory has lost favour, partly because of the statistics you quote, and the 'smart money' at the moment is on crystals in mud flats, whcih would get rid of the randomness for a start. Evolution is not affected by this anyway. First of all it doesn't purport to explain how organic life was first created, but what happened afterwards, and that it does admirably. Secondly the fact that something is a statistical exception is irrelevant if it happened anyway. The odds against dying from being struck by lightning are incredibly small but that is no consolation to the poor sod who gets fried. And of course, postulating a creator, is simply a form of cosmological buck-passing. Now, I am not saying that the article Emmanuel links to is correct. From his description of it I rather suspect it the kind of populist garbage that gives evolution a bad name. Anyway, I'll look at it now and post back if this comment is unjustified.
Wed 02 Apr | Li-fan Chen | KenB where can I find that scientific article?
Wed 02 Apr | The Real PC | Evolution results from a combination of chance, natural selection, and the natural tendency of open systems to increase in complexity. (We don't have to argue about the definition of complexity, because this has nothing to do with the original subject, sex differences, anyway.) Stephen, you will go to any lengths to convince yourself of the ridiculous idea that evolution results entirely from chance and selection.
Wed 02 Apr | The Real PC | And besides, just try defining 'chance.'
Wed 02 Apr | Emmanuel Goldstein | Choppy - Jesus, Darwin and Hitler were nerds? You go too far. Hitler, with his charasma, intense desire to lead, and strong soldiering skills was clearly *not* a nerd. Jesus, also with a call to leadership and tremendous apparent charisma and, well, messianiac character was also unnerdish. Darwin - maybe. I don't know enough about the man to say. BTW, don't take my description of Jesus as a 'Jewish' opinion, I am not Jewish, E.G. isn't my real name.
Wed 02 Apr | The Real PC | Jesus and Hitler were not nerds; both were charismatic. Darwin was a nerd. His ideas might never have caught on if he didn't have some non-nerd friends. Einstein was probably a nerd, but he didn't have to sell his ideas because they were proven by experiments. Freud was great at selling his ideas, most of which were idiotic. If you are a nerd and have a great idea, you need either charismatic friends, or scientific proof, or obvious practical usefulness of the idea. A charismatic person, I have noticed, can sell even the stupidest ideas. Especially if the ideas are simple and blame all the world's problems on something. They probably need at least one idea that makes sense, and the rest of the ideas get a free ride on the good idea. Sounding mysterious can also be helpful. But speaking with complete confidence is the real key.
Wed 02 Apr | Dennis Atkins | Wow! This thread just took quite a turn! Smooth move, choppy. you the man.
Wed 02 Apr | Dennis Atkins | Choppy my man, that was a move worthy of the glass bead game. Wow.
Wed 02 Apr | Dennis Atkins | 'organic soup theory has lost favour, partly because of the statistics you quote, and the 'smart money' at the moment is on crystals in mud flats, whcih would get rid of the randomness for a start.' Since it's, as you say, an established scientific fact, shouldn't there be a theory baked by evidence and repeatible experiments, and not just speculations that radically change every few years without ever touching the earth?
Thu 03 Apr | Anonymous Aetheist | KenB - Who created the Creator? If you can accept that the Creator just came into existence, then why can't you accept that the universe just came into existence, thus requiring no Creator? I recommend that you read some Richard Dawkins books.
Thu 03 Apr | rexguo | 'only try to know that there is no Creator...'
Thu 03 Apr | Anonymous Aetheist | What is that supposed to mean?!
Thu 03 Apr | KenB | The Origin of Life, by John D. Bernal, 1967, p. 144. Evolution From Space, by Fred Hoyle and Chandra Wickramasinghe, 1981, p. 8, p. 24. ---------------------------------------------------------------------- God doesn't have a beginning or an end - PS 90:2 Is this unreasonable to believe? No 1) Time. No one can point to a certain moment as the beginning of time. Even though our lives end, time does not. We do not reject the idea of time because there are aspects of it that we do not fully comprehend. 2) Space. Astronomers find no beginning or end to space. They do not reject what the evidence shows; many refer to space as being infinite. These same principle apply to the existence of God
Thu 03 Apr | rexguo | Anonymous Aetheist, Taken from The Matrix 'Only try to know that there is no spoon'. KenB, I am no astronomer or scientist of any sort but I do read scientific news. There seems substantial evidence and agreement that the Universe is ~15 billion years old. The first breakthru came from Hubble Space Telescope's 'Deep Field' image in 1996: http://www.stsci.edu/ftp/science/hdf/hdf.html http://hubblesite.org/newscenter/archive/1996/01/ To claim the measurability of '15 billion years' one must first agree time and space had a beginning, which leads us to the Big Bang theory: http://ssscott.tripod.com/BigBang.html Now that 'theory' has supporting evidence known as the Cosmic Microwave Background: http://antwrp.gsfc.nasa.gov/apod/ap001029.html http://www.astro.ubc.ca/people/scott/cmb_intro.html http://www.astro.ubc.ca/people/scott/faq_basic.html I do not know enough to debate space and time with you, but just trying to show you what's been happening since 1981, which is the date of the article you quoted from. .rex
Thu 03 Apr | trollbooth | Even Emmanuel Goldstein isn't Emmanuel Goldstein, he's Eric Corley. 1984? I'm not all up on book learnin and such.
Thu 03 Apr | T. Norman | Hello? Anybody remember what this thread was supposed to be about?
Fri 04 Apr | Anonymous Aetheist | rexguo - I've not seen The Matrix. KenB - There is no evidence to support the existence of God. As you said, I think we'll have to agree to disagree.
Fri 04 Apr | The Real PC | Atheist, The things we perceive with our five senses are not all that exists. That is known for certain -- if you don't believe it just turn on the TV. Where do the sound and pictures come from? Wavelengths completely unknown to our senses. Therefore, you know for a fact that things exist which your senses have no awareness of. Beings that are not usually perceivable by our senses are nevertheless often seen and heard by human beings (angels, spirits, etc.). You can say these are hallucinations or imagination, but that's just an easy way of dismissing any possible evidence which conflicts with your pre-conceptions. Every civilization and culture ever studied by anthropologists has been aware of non-physical beings of some kind. So how is 'god' different from any other type of non-physical being? Before deciding if there is a god, we would have to define the word. By my definition, gods are non-physical beings like spirits, angels, demons, etc. They may exist on many levels (beyond our 3 spatial and 1 temporal dimension, of course) and there may be one that is above and includes all the rest. Of course as human beings none of us is in a position to know much about it. But there are windows into the super-levels, seen through often by people everywhere, in many ways. To dismiss all that and refuse to consider it is to be stubbornly ignorant. Physicists are pretty sure our level of existence is not all there is, and dimensions beyond our own are thought to exist. This has been known for people in all cultures and at all times. It must take great effort for atheists like you to deny the obvious truth that much more exists that what we percieve in our everyday life.
Fri 04 Apr | Anonymous Aetheist | 'It must take great effort for atheists like you to deny the obvious truth that much more exists that what we percieve in our everyday life.' When have a denied that?! I certainly don't deny that. Whole branches of science are based around not observing direct causes and effect. Atheists like me? You don't know me so don't you dare try to classify me. I just find it bizarre that otherwise (presumably) rational and logical people like programmers choose to hold irrational beliefs. My response was in answer to the post about evolution being a theory. As I said then, I suggest that people read Richard Dawkins because evolution provides sufficient answers to the questions of how life and the universe came about to preclude the necessity of believing in God. If you don't understand evolution then you don't know anything about who you are or where you came from.
Fri 04 Apr | | 'But there are windows into the super-levels' And its for exactly those type of security holes that Microsoft quite rightly gets caned.
Fri 04 Apr | KenB | 'I just find it bizarre that otherwise (presumably) rational and logical people like programmers choose to hold irrational beliefs.' Sir Fred Hoyle commented: 'Rather than accept the fantastically small probability of life having arisen through the blind forces of nature, it seemed better to suppose that the origin of life was a deliberate intellectual act.' British physicist Lord Kelvin, declared: 'I believe the more thoroughly science is studied the further does it take us from anything compared to atheism.' Nobel prize winner Arthur Holly Compton said: 'An orderly unfolding universe testifies to the truth of the most majestic statement ever uttered-'In the beginning God.'' Brain surgeon Robert White: 'I am left with no choice but to acknowledge the existence of a Superior Intellect, responsible for the design and development of the incredible brain-mind relationship-something far beyond man's capacity to understand.' (The Reader's Digest, September 1978, p. 99 Steven Weinberg, Nobel laureate for his work on fundamental forces. He added: 'It seems to me that if the word 'God' is to be of any use, it should be taken to mean an interested God, a creator and lawgiver who has established not only the laws of nature and the universe but also standards of good and evil, some personality that is concerned with our actions, something in short that is appropriate for us to worship. . . . This is the God that has mattered to men and women throughout history.'-Dreams of a Final Theory. Space scientist Dr. Wernher von Braun, in awe of the laws governing the universe, had this to say: 'Manned space flight . . . has opened for us thus far only a tiny door for viewing the awesome reaches of space. Our outlook through this peephole at the vast mysteries of the universe only confirms our belief in its creator.' Famous physicist P.A.M. Dirac, who was a professor of mathematics at the University of Cambridge, concurred: 'One could perhaps describe the situation by saying that God is a mathematician of a very high order, and He used very advanced mathematics in constructing the universe.'
Fri 04 Apr | Anonymous Aetheist | Let me re-phrase then: 'I just find it bizarre that otherwise (presumably) rational and logical people like programmers, mathematicians, physicists, Nobel prize winners, brain surgeons, Nobel laureates, authors and ex-Nazis choose to hold irrational beliefs.' I don't think this exchange is going anywhere so I think we should end it now.
Fri 04 Apr | Anonymous Aetheist | Sorry, by no means am I implying that ex-Nazis are logicial or rational and worthy of being grouped with the others. Werner von Braun did a lot of subsequent good work for the US space programme.
Fri 04 Apr | KenB | We agree to disagree. :-) No hard feelings. I respect you, I hope that you respect me - simply a difference in opinion. Nothing more.
Fri 04 Apr | Anonymous Aetheist | I do respect you, yes. Have a good weekend!
Fri 04 Apr | The Real PC | AA, you gave up because you have no evidence or logic to back up your claim. If you don't understand something you call it an irrational belief.
Fri 04 Apr | Anonymous Aetheist | Whatever.
Fri 04 Apr | Steven C. | Technically, Real PC, YOU are the one without evidence to back up your claim. Of course, if you HAVE phyiscal evidence for the existence of God, I am deeply interested in hearing it. I am reminded of the story of the Babel Fish from the Hitchhiker's Guide. :) P.S. Believing in God does not make you irrational, as faith is a supra-rational action
Fri 04 Apr | The Real PC | As a said before, you have to define 'god' before deciding if there is one, or some. There is plenty of evidence for 'supernatural' beings -- if what you mean by 'god' is some kind of supernatural being, then god(s) exist, probably. Unless the majority of human beings are hallucinating. and all the parapsychologists are liars or crazy or stupid.
Fri 04 Apr | Steven C. | I asked for evidence -- and eye witness testimony (in my book) doesn't cut it. Regardless, I happen to believe that most (if not all) parapsychologists are 'liars or stupid or crazy', so there you go! *grins*
Fri 04 Apr | The Real PC | If evidence from eye witnesses and from scientists doesn't count, then your mind is permanently made up.
Sat 05 Apr | Jacq | One of my friends gave me the link to this site. First Maths and CS is badly taught the world over (took it when I was younger and completely took the fun out of learning!), second as a female, I can safely say we prefer to have jobs that require more face-to-face interaction, finally you don't see many female programmers because only male programmers like to get into convoluted discussions like this that don't go anywhere!
BNF for Visual Basic 6 | Tue 18 Mar | Ged Byrne
Im trying to build a parser for VB6 source. Does anybody know where I might find some BNF (or similar) specifactions for VB6s syntax? Thanks.
Sat 05 Apr | Wayne | (I'm going to show my ignorance here but), What's a BNF?
vB usercontrols/ActiveX ocx's | Fri 04 Apr | Pete Robinson
In VB I can develop an ActiveX ocx and use that control in other projects. I can also use the usercontrol directly in another project just by adding it to the project (need to change the instancing etc..). What is the usercontrol in this situation? (its not an ActiveX control, is it simply some sort of composite of its constituent controls held together in a container?
Fri 04 Apr | DJ | A user control is an activex control made up of other controls. So you are right it is like a container or wrapper for other controls. When you place it in your project it behaves just like a single control.
Fri 04 Apr | Justin | Mastering Visual Basic 6 has a good section explaining this. Also recommended is the Dan Appleman book (I forget the title). There are also lots of VB resources online.
SCM, Teams & Third-Party Libraries | Fri 04 Apr | Alex
I am interested in how people manage third-party libraries in a SCM-based multi-developer environment. My solution for now is to specify into which directories third-party software (libs, dlls, header files) has to be installed relative to the source code tree. So, theres a \base\lib path where the libraries have to be placed and theres a \base\projects\prj_xy directory where the source code is checked out for project xy. \base\ may be different on every developer workstation but the relative path from proj_xy to library lib_z is always ..\..\lib\lib_z. BTW: We do not check in the libs, we only have to make sure they have been installed on the workstations to make the source code compile. Problems occur when third-party libs have their own setup program and install into ...\Program Files\... (aaargh). Your suggestions/solutions?
Fri 04 Apr | Gerard | Our solution is similar to yours - the only big difference is that we *do* use SCM on the third party libraries, treating these as a single project parallel to one under development. We use CVS - so the directory tree for all third party software is treated as an independent CVS module to which we apply vendor tags: this allows periodic updates to track new releases of the third party software. You can do much the same with Clearcase too, if you use baselines and config specs correctly ( and doubtless for whatever other SCM systems you are keen on ). Having both the codebase under development and the third party software under SCM, and having both held in the same directory tree makes it very easy to move from machine to machine - very handy for working on- and off-site. We don't do this for run-time libraries bundled with the compiler - after all, if you've got a compiler installed you'll probably have these installed too. As for libraries that require something other than copying to their final destination, you are going to have to write an installer for your final deliverable: so why not use a cut-down version to install these for internal development? HTH.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | +1 for checking in third party libraries. They have their own section of the tree for us, and we check in the binaries even when we have source (don't really want building them to be part of our 'clean build' cycle).
Fri 04 Apr | Thomas | To me, the intent of an SCM system is to help manage and control the build process. In general, this means I want to be able to go 'back in time' and recreate any previous build. That build must be exactly the same now as it was then. Pretty much everything that affects the build should be checked in as part of the repository. Source code, documentation, code generation tools.... The only exceptions are for things which change slowly or simply can't be checked in reasonably. Those programs and operating systems should be kept on CD or in some other stable format and documented as part of the release (e.g., if version 1.3 is built on Win2K SP2, that should be documented). I won't comment on backups other than to say whatever system you use is only as good as the backups you keep. -Thomas
Team Development with MS Visual Studio | Thu 03 Apr | Azazello
Those who are in the MS land, how do you do configuration management when working with Visual C++? For example, you have 100 developers working on 50 modules of the system. Each of them may have to tweak the .dsp file to add/remove files, alter settings, etc. How does it get managed in a source control environment? Coming from the UNIX land with make files, VS seems to be suited to a very small development team. I plead my ignorance and respectfully ask for help! :)
Thu 03 Apr | David | In my experience, if you have 50 modules, you'll probably have 50 .dsp files (or .vcproj in Studio.NET). That should pretty much eliminate most collisions. Even if not, the .dsp file is text so it's possible to allow multiple checkouts and do merges. The catch is that stuff like include paths and libraries are all one line, so merges don't work for that. Basically, it shouldn't be any tougher than Makefiles.
Fri 04 Apr | ODN | Based on the way you phrased your question, you've probably already seen this, but in case you haven't, check out this guide from Microsoft's Patterns & Practices site: Team Development with Visual Studio .NET and Visual SourceSafe http://msdn.microsoft.com/library/en-us/dnbda/html/tdlg_rm.asp
Fri 04 Apr |           | In my corner of MS Land we all keep pretty much the same environment. Same include dirs, same lib dirs, etc... So any .dsp will work on anyone's machine. As for modifying it, we treat it just like any other file - it gets added to source safe and you have to check it out. Not really any different than using a make file.
Fri 04 Apr | Matt Watson | In my team, it is a REQUIREMENT that your environment is the same as everyone elses. I don't care how many developers there are, when you check out of Source Safe it should compile with no changes to the DSP.
Fri 04 Apr | Matt H. | >For example, you have 100 >developers working on 50 modules of the system You can make separate .dsw's that only include the .dsp's that you actually need. It loads and compiles faster that way, and if another user changes a .dsp that I don't use, I don't have to care about it. (And if he checks in some code that doesn't compile, i'm not slowed down.) Use Visual Source Safe for integration. 100 coders? At that point, you probably want to start thinking about rational tools ... ugh. I'd avoid it if you could. regards,
Fri 04 Apr | George McBay | Add me to the list of people who suggest just checking the .dsp/.dsw into the source code control system of your choice (SourceSafe, CVS, Perforce, ClearCase, whatever). However I'd also say (and I realize I'm responding to a bit of a hypothetical situation, right?) 100 developers is too many to be on a team where each cares about the other's source code. Some clear distinctions should be made with regards to modules, and each team should have a binary deliverable (generally in the form of a DLL or static lib, for Windows development) for the other teams.
How come? | Thu 03 Apr | Alexandre B. Corrêa
I was wondering how Joel has so much time to do that quite *huge* articles... any ideas? Joel? :) See you all
Thu 03 Apr | Brad (dotnetguy.techieswithcats.com) | Some people can write a lot, quickly. Or some people just dedicate time to get it done, even if start to finish takes a lot of 'calendar days' because you're only committing a couple hours a week to writing. There are people who MUST WRITE. I think Joel's one of those people. He'll always write, even if people stop listening, because it's in his blood. :)
Thu 03 Apr | Joe Paradise | One could also look at his writing as a very shrewd marketing strategy. His articles (and this forum) attract lots of potential customers and create a relationship of trust and professionalism. I’d say a large majority of the people reading this forum can name his two products and what they do. I’m not at all implying duplicity in his efforts, just a duality in the result. Joel deserves a lot of credit for creating an inventive way to merge his personal writing skills with his business marketing needs.
Thu 03 Apr | Heston Holtmann | Because come!
Thu 03 Apr | aa | Joel's writing is a combination of what he's learned, his opinions and his experiences. The value in his writing is that: * He's smart. He sees patterns and truths. * He writes in plain and accessible language. * He avoids religious wars which alienate people. In this industry that's worth a lot, as evidenced by the community that's gathered here. Obviously we're not here to fawn over his writing, but almost all of us found the place through his writing in the first place. So how long do you figure one of his full-size articles takes? Of course it depends on how fast he writes, but I'd guess an article would take 5-10 hours to create including editing. As Brad said, if Joel writes because he LOVES to write, there really is no cost. While you're watching a movie or reading a book, he's writing. When you think about it, there are many hours in the day, and it's all about the choices you make. Perhaps writing is Joel's hobby. :)
Fri 04 Apr | Philippe Back | And he keeps writing over time. given that: there are: 365 days a year and this may be going for 5 years and taking 10 articles a year this leads to 50 articles (quite a bunch) each being written in 36.5 calendar days each (don't get me started with 366 days years ;-) ). I (try to) write some articles and training materials myself. What I can tell is that it's not easy to write but that every single article can be used as a reference and over time leads to more and more conceptual integration in my brain. I could say that it is like levels of mastery: 1) I don't know that I don't know (uncounscious incompetence) [ before the course ] 2) I know that I don't know (conscious incompetence) [during the course] 3) I have to think about what I know to apply it (consciuos competence) [applying the course data and building up skill] 4) I do it without thinking about it (inconscious competence) [after having done it for a while, explaining it to others] 5+) Inventing new stuff and relating to other fields, making links (towards mastery) [new things, educated guesses, breakthroughs in the field, full productivity, will to tell the word to others, able to run a biz centered on the subject matter and having people follow you as a natural leader] I guess that Joel is at 5+. This is maybe why the tone of the articles has changed some months ago, shifting from pure IT ground towards a more integrated view on strategy, office space etc.
Fri 04 Apr | trollbooth | And he really doesn't write that much. I figure he averages an article every week or two. So an hour a night and you have a good article. The marketing benefits of the articles speak for themself and input from readers help him tweak his ideas and implement them.
Fri 04 Apr | Philo | If a CEO has hired the right people and has the right processes in place, then his/her job becomes pretty much 50-75% sales - networking, looking for opportunities, guiding the company strategically, closing. joelonsoftware.com is a sales tool, so when he's writing he's doing his job. :-) Philo
Fri 04 Apr | trollbooth | I'm wondering if the likes being called a tool ;-)
Fri 04 Apr | T. Norman | You ain't seen nuthin' yet. Check out Tom Kyte's site at http://asktom.oracle.com He works for Oracle, writes books, and answers a dozen questions a day. And still finds time to see his kids.
Fri 04 Apr | Brent P. Newhall | It should take an hour a night for *two to three weeks* to write an article the size of Joel's? Any of the writers I know could write an article like Joel's -- assuming they had similar experience, of course -- in a couple of hours, including plenty of fact-checking and revisions.
Fri 04 Apr | choppy | I think trollbooth was just pointing out that joel's output isn't necessarily super-human. I've read a number of books about screenwriting, and good screenwriters write about 2-3 pages a day, given 4 hours of writing per day...which is equivalent to one screenplay every three months.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | As with development, the mechanics are the least difficult part. Having ideas that are worth of wide-spread discussion is much harder than writing a couple thousand words once you have the topic. :) And, also like development, the best part is removing all the unnecessary fluff. Anybody can go on and on about a topic, but it takes a special writer to be concise yet effective about it. And, for what it's worth, very few people in ANY medium write like Joel does. He has an excellent style.
VB6 ActiveX EXE Problem | Thu 03 Apr | commanderSpock
I have an automation server written in VB6 which works fine. But today I attempted to write some scripts using GetObject() to obtain a reference to an already active instance, but, I found out that GetObject() cant be used to obtain a reference to a class created with Visual Basic. Has anyone faced this? Any work-arounds?
Fri 04 Apr | Matthew | Commander, I would recommend checking out: http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l You might also want to consider using the Singleton pattern instead of GetObject - though it depends on your exact requirements. Thanks
Fri 04 Apr | Hector | You can use a Win32 API to put VB created classes into the Run Object Table (ROT). Here's the code that I've been using for that: Private Type GUIDs Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As Byte End Type 'Declares needed to register object in the ROT (Run Object Table) Private Const ACTIVEOBJECT_STRONG = 0 Private Const ACTIVEOBJECT_WEAK = 1 Private Declare Function CLSIDFromProgID Lib 'ole32.dll' (ByVal ProgID As Long, rclsid As GUIDs) As Long Private Declare Function CoDisconnectObject Lib 'ole32.dll' (ByVal pUnk As IUnknown, pvReserved As Long) As Long Private Declare Function RegisterActiveObject Lib 'oleaut32.dll' (ByVal pUnk As IUnknown, rclsid As GUIDs, ByVal dwFlags As Long, pdwRegister As Long) As Long Private Declare Function RevokeActiveObject Lib 'oleaut32.dll' (ByVal dwRegister As Long, ByVal pvReserved As Long) As Long Private OLEInstance As Long Public Sub AddToROT() Dim mGuid As GUIDs Dim lp As Long 'The magic happens here 'This code is responsible for creating the entry in the ROT 'Make sure to insert the correct qualified object (class) that 'you want in the ROT. OLEInstance = 0 lp = CLSIDFromProgID(StrPtr('YourActiveXServerName.YourClassName'), mGuid) If lp = 0 Then lp = RegisterActiveObject(Me, mGuid, ACTIVEOBJECT_WEAK, OLEInstance) End If End Sub Public Sub RemoveFromROT() 'Once we are done with the main program, lets clean up the rot 'by removing the entry for our ActiveX Server/DLL If OLEInstance <> 0 Then RevokeActiveObject OLEInstance, 0 End If CoDisconnectObject Me, 0 End Sub HTH, Hector
Fri 04 Apr | commanderSpock | Thanks for the help.
ECMA Architects tour now online | Thu 03 Apr | Just me (Sir to you)
MS Finland has just posted the whole event streaming at http://www.dotnetmaailma.com/dotnetmaailma/seminaarit/online/EMEA+Architects+Tour.htm . I was not there but have seen this at another location (its a tour gig). Recommended!
Fri 04 Apr | ODN | Very cool. Thanks!
Fri 04 Apr | GP | You mean EMEA architects.
Fri 04 Apr | Just me (Sir to you) | GP, you are absolutely right. Sorry for the confusion.
In-House Customers Have Different Needs? | Thu 03 Apr | Fernanda Stickpot
I used to work for a software company. I now work for an in-house development team for a large corporation. Our team scores one, at most, on the Joel Test. When I make suggestions about better practice - say, having a change control system, or introducing testing - Im often heard with interest, but at least as often, I hear Yeah, that might be the way they work in a software company, but this is a business environment. What could the thinking be? Do they suppose that the many businesses that were our customers at the software company, had different needs from the business that is our customer in-house? Do they suppose that software companies dont really have customers to worry about, but are more like universities, following ivory-tower processes for their own satisfaction? Whereas *this* business has a pragmatic, real-world view of customer needs that my last company did not have? The more I hear this, the more I think it *really* means In-house development is not supposed to be very good. Otherwise, why would you try to produce software by intentionally *not* doing things that are done by companies that successfully produce software? Why would you say that their example is exactly the one we should *not* follow? Does anyone else have any thoughts on this?
Thu 03 Apr | Thomas Eyde | I explained the benefits of unit testing and having the tests to validate that future changes don't break anything to a client not long ago. The client developes their own software which they sell to their customers. 'Yeah, that would probably be nice in a new project, but not here. We're nearly done.' This nearly done project needs serious performance tuning on the file export. The export could easily use 50 million function calls to complete. Too much cut'n paste, nearly no reuse and global data. A nice suite of unit tests would be very practical and money saving. So no, not only in-house customers thing they have different needs.
Thu 03 Apr | Outsourcing for Dummies | This mirrors my experiences almost exactly. In a previous life, I worked in a high-tech silicon design shop but switched to database programming to secure a job in the vicinity of my wife. Now, I thought I'd brought some useful outside experience into my new job but the status quo just refuses to be defeated. I, too, ran my own Joel test and felt that our methodology could use some extra practices (most notably, source control and unit testing); in three years of campaigning, I've fould *zero* people willing to add the weight of their opinion to my arguments. Three years is a long time in IT and things have moved on. Our company was sold to another, who then promptly outsourced the IT dept to a 'big two' global services provider. Our new masters are keen to impose a One True Process onto everything we produce, one element of which is a Test Plan. Quicker than you could say 'cargo cult', our more senior developers (who were 'promoted' to project analysts) have decided what those test plans should consist of. Those same people who, for the last umpteen years couldn't see the value in unit tests and haven't written one between them in their life, are telling me that my 'comments' on the process are 'very interesting' but ultimately irrelevant because the decisions have already been made. Despite many examples of deployment snafus, there's still no recognition of the need for source control -- even CVS isn't available because nobody has permission to download and install it. It's a completely different workplace to the one I joined not long ago. The day is filled with frustrations which are too tedious to go into here. I've come to realise that, over time, the neophytes have become the masters. But, instead of moving on like their masters before them, they've simply moved into project management. So, not only are the rest of us left dealing with the shitty code they've left behind, but we're also powerless to initiate any force for change. Meanwhile, these newly minted managers are intercepting and interpreting the mandates from central office and reforming them in their own image. We haven't had a raise in two years (well, a 1% increase 14 months ago counts, I s'pose) and have just been told that we've had our salary review and that we won't be getting a raise this year. But we should thank the lord that we still have jobs and can look forward to another review in 15 months time. Meanwhile, our glorious ex-leader has just trousered $35 million in a severance settlement. Getting back on topic, I've often wondered whether I could social-engineer our clients to demand more from us, such as consistent UIs and bug-free behaviour. Sadly, they'd be charged so much that they'd rather stick with the crap they've got. After all, the people who have to pay for the work aren't the ones who have to use the product, right? Do I sound negative? I guess I'm just too stupid to dump this gift horse and get a real job.
Thu 03 Apr | one programmer's opinion | The answer to your subject line question is -- more often than not in-house corporate customers do have different needs. After reading your post, it appears to me that the question you really seem to be asking is, 'Are all corporate in-house IT departments as f*cked up as the place I am working at?' If this truly is the question you are asking here then my answer is -- I think so. Many large corporations have layed off a large portion of their technical staff and replaced them with contractors and consulting firm employees. Typically, the only company employees you will find walking the hallways are IT people who have jobs at the project manager level or above. IMO, most of these individuals are nothing more than clueless suits who are only interested in climbing the corporate ladder and will do whatever it takes to earn a promotion or salary bonus. The current trend inside these type of corporate IT departments is to reduce IT costs wherever possible. This typically means canning any technical worker or firm who won't work cheap. In this type of work environment, it is almost impossible to introduce productivity changes and expect them to get implemented. IMO, you should forget about trying to make productivity suggestions and concentrate on making 'cost reduction' suggestions. Unfortunately, trying to make yourself into a more productive laborer will get you nowhere. Butt kissing (i.e. making your boss look good) is what gets rewarded in this type of work environment.
Thu 03 Apr | Brent P. Newhall | People generally resist change, particularly big changes. This is not stupidity; it's often a very good thing, especially when it comes out as, 'Our process works reasonably well. Why change it?' However, this is a problem when a process is broken but nobody is willing to change. Joel has some excellent advice on this, in 'Getting Things Done When You're Only a Grunt' ( http://www.joelonsoftware.com/articles/fog0000000332.html ): 'A lot can be done to improve the project just by one person doing it. Don't have a daily build server? Make one. Set your own machine up with a scheduled job to make builds at night and send out email results. Does it take too many steps to make the build? Write the makefile. Nobody does usability tests? Do your own hallway usability tests on the mailroom folks with a piece of paper or a VB prototype.' 'Many of the Joel Test strategies can be implemented by a single person on an uncooperative team. Some of them, if done well, will spread to the rest of the team.' So, you could just implement these processes yourself, as best you can.
Thu 03 Apr | Jonathan Hager | To answer the question -- Yes! Joel describes it best in his article here: http://www.joelonsoftware.com/articles/FiveWorlds.html ...but even with agile methodologies (for example, XP) source control, requirements, testing and bug tracking are important. Some of these items are elevated to focal points for the process. The Joel Test should be applied regardless of the environment. My suggestion is to lead by example. It is amazing what can become part of a process (i.e. source control, automated testing) because someone just does it. At my company we have an automated build with unit test that runs every time something is checked into CVS. Neither CVS nor unit test could be found when I started a little over two years ago. Initially it ran on a Linux machine that was scavenged after layoffs. Now CVS is the company standard and many of the projects have unit test.
Thu 03 Apr | Brad (dotnetguy.techieswithcats.com) | Make sure you REALLY like the job before untaking such an effort. It will be a labor of love for a long time, and you might at times feel frustrated when you're not having a large enough impact, fast enough.
Thu 03 Apr | Andrew Reid | Are there really places out there that try to write software without _any_ version control and can't be convinced otherwise? Wow. Scary thought.
Thu 03 Apr | Bored Bystander | Fernanda Stickpot: I think that this thread is partially mislabeled. It's not just about the differing needs of in-house customers. The original post begs the question - why do so many shops wallow in stupidity and abject dumb@$$ed mediocrity? >> Our team scores one, at most, on the Joel Test. >> When I make suggestions about better practice - say, having a change control system, or introducing testing - I'm often heard with interest, but at least as often, I hear 'Yeah, that might be the way they work in a software company, but this is a business environment.' First of all, don't blame the specific argument being given - that your suggestions are being labeled as irrelevant because the management is 'business' oriented. WTF does this mean? As compared to what? A software product business is started in order to lose money and be a philanthropic agency? While other forms of business need to turn a profit? I take that as kind of insulting to say the least. That 'business' label is common but can be interchanged with other argumentation devices that are used mainly to discredit anyone who suggests doing correct or workmanlike things. The point is - that 'business' argument was a cheap shot being used to discredit your initiative by implicitly labeling your intentions one or more of the following: 'irrelevant', 'too hard', 'too expensive', 'good for really smart developers at product companies but way too much for humble numnuts like us who only write in-house applications that nobody looks at anyway'. Oh, and don't forget the ever present 'but we can't use bla blah because we need to be FLEXIBLE and your suggestions will unfairly rein us in!' That's the common lament of people protesting source code control. >>What could the thinking be? The thinking is exactly this: you apparently work with turkeys who enjoy or at least expect no process, no configuration control, and other hallmarks of the crummy hack shop staffed by amateurs and wanna-bes. Here are two key bits of info on political motivations: working without proper tools or methods benefits the type of employee that *likes* crisis mode management and who revels in being indispensable. Or, another top contender is the intention to have lowered expectations of the in house development staff. I'd bet good money that one of these (or both) is the agenda of the people you're dealing with. Simply put, they like 'sucking'. Bottom line - you're working with butt covering t*rds. OH, I'm sorry, did I say that? Yes. And I'm not sorry. Tell 'em Bored Bystander thinks so. Maybe that will shame them. :-)
Fri 04 Apr | Katie Lucas | 'Are there really places out there that try to write software without _any_ version control and can't be convinced otherwise?' Oh yes. Lets see, a quick count up... yes... more than HALF the places I've either worked for or contracted at have either no version control or something so 'in the way' that it ends up being more of a handicap than a use. PC software houses are the worst I've come across; every project is regarded as a one off, engineered from scratch, almost all of them are 'loss-leaders' that don't lead and none of them /start out/ complicated enough to need revision control. It's only later that that comes home to roost. And Oh My God, does that come home to roost. It only usually shows up after they re-sold it, slightly modified each time, to a couple of dozen new people.. and then things go to hell VERY quickly. The current place has a guide to working on software for newcomers which actually says 'check code out, work on code, check code and executables in, tell resourcing you're done on that work'. Six months often seperates check-out and check-in. The reason for this is that a check-out can take a couple of hours and a check-in can take anything up to a couple of days fiddling before it succeeds. Duncan's worked for embedded software places where 'getting the version of the source code the client has running' has involved trips to attics to get dusty cardboard boxes packed full of unlabelled floppy disks... I guess the lesson from that is that no-matter how crap a job is, it could always be worse. An important thing to remember about the software industry is that EVERY client, in-house or not, thinks they're 'special' in some way[1]. This is why financial places will only hire people with financial skills to write trivial C++ stuff, because they think what they do is special in some way. Games companies really think they need to hire maths PhDs to do games physics and every damn council in the entire of the UK has had their council tax accounts package custom written. Every client uses the 'we're special' argument as a reason to do insane things like not use version control, not test software or not buy an off-the-shelf package. [1] They almost never are. There are times when it is the case, but these are not that large. A friend once wrote, in essence, 'grep' for an employer. They did however want to search practically every major book written in English to help them compile dictionaries so it needed to be 'a bit faster'. I, on the other hand, have wasted a lot of my life re-writing things already better written (like general ledger systems) because the client absolutely MUST have it written in Access/VB instead of just going to PC world and buying a copy of Pegasus Accounts or something. It's not that I begrudge the vaster sums of money they paid to me to have me do it, I just feel my life is being a little wasted.
Fri 04 Apr | Joe AA. | There can be good reasons, such as business competition, for a customer not to select an off the shelf package. Hopefully this would be an application that supports the core business and not some support service such as HR, payroll, accounting. Source control is a necessary process in my opinion, as long as there is no misunderstanding for its purpose. As an example of a misunderstanding... one company bought a source control package because it was advertised to enable concurrent development of multiple projects - the management assumed that 'enabled' meant 'totally automated' and proceeded to have projects stepping all over themselves.
Fri 04 Apr | Brent P. Newhall | Regarding source code control: It can seem that operating without source code control is like high-flying without a net. But if a group is making frequent backups, it can operate without SCC. Developers just learns to make their own peronsal backups occasionally and try to work such that they don't have to go back to previous versions. I wouldn't want to work that way, and SCC certainly makes our lives easier and provides other advantages. But it is possible to work without it.
Fri 04 Apr | Steven C. | Of course, its also possible to work without all these new fangled 'languages' too -- real men code in hex!
Fri 04 Apr | T. Norman | 'I wouldn't want to work that way, and SCC certainly makes our lives easier and provides other advantages. But it is possible to work without it.' It's not about whether it is possible, it is about the gross inefficiency and risk to quality that comes with a lack of version control. They may as well have been using dollar bills to provide fuel for their fireplace. The dollars will surely burn.
what % of population can be good developers? | Wed 02 Apr | anonymous
Was having a discussion with some friends, giving the wide range in quality of software developers, what percentage of the population would make a good developer? 20%? 30%?
Wed 02 Apr | Dennis Atkins | It depends on nutrition health culture and education. So do you mean worldwide or in industrialized nations or what? Let's assume English speaking areas... so that will include south africa and australia and developed areas of india and the phillipines but perhaps not rural areas of india and the phillipines. So now we have to ask what sort of development? Web app design? 50% ... ASIC design? 0.3%
Wed 02 Apr | anonymous | I am talking about a western country, not web apps, working on say a fairly complex C++ project(3D graphics,socket level work etc....)
Wed 02 Apr | Dennis Atkins | OK, I'd say you're looking at an IQ of 105+ -- a little above average, so that's around 40%. But then only 1/4 will have one of the personality types that will allow them to be motivated enough to be good, so that knocks it down to 10%.
Wed 02 Apr | Dennis Atkins | You do mean general population right and not just a subset of actual developers?
Wed 02 Apr | Punter | Being a little cynical I'd say the population of actual current developers who I'd trust to build a moderately complex system that is 'good' would be around the 5% mark.
Thu 03 Apr | anonymous | yeah general population...not a subset
Thu 03 Apr | Punter | General population, I'd say you'd probably be looking around 1%, maybe less. Not because it's particularly difficult, just that I'm constantly surprised by most peoples utter incompetence.
Thu 03 Apr | Vincent Marquez | Uh...I don't know about you guys, but I would say less then 20% of actual professional DEVELOPERS are compenent enough to do the job they should be doing. I wouldn't be suprised if most people on this board are in the top 10%. I'm not saying that because I'm cocky, I know I have a LONG way to go until I consider myself a senior developer, but there are just way to many morons in this industry.
Thu 03 Apr | Dennis Atkins | Well how good is good then? Sounds like some think good is great. I am thinking good is acceptable, as in good (C), very good (B), outstanding (A) and exceptional (A+). There's also needs improvement (D) and unacceptable (F). In volunteering to do little summer programming classes at the local high school, I'd say 5%-20% have the potential and possible inclination to become acceptably competant in C++ development. Only a few of them will I am sure. And most of the bright ones will leave the field to do something more sensible with their lives after experiencing the realities of this industry which I try to give them the heads up on before they get too serious.
Thu 03 Apr | T. Norman | Those high schoolers doing programming classes should not be compared to the general population. They have a particular interest and aptitude for programming, otherwise they wouldn't be there. Of the general population, I'd say that less than 1% can be good developers. Within the developer population, I would consider only about 30-40% to be 'good enough', meaning good enough that I would hire them if I had my own software business. >'And most of the bright ones will leave the field to do something more sensible with their lives after experiencing the realities of this industry which I try to give them the heads up on before they get too serious.' You got that right. Within the next couple of years I expect to be employed in a real profession where you get actual respect and decent job security ... and get out of software where there are neither respectable qualifications nor an industry association to prevent workers from perpetually being victims of their employers.
Thu 03 Apr | Dino | A developer must be able to analyze a large number of stronlgy interrelated facts. A very good developer must be able to find the patterns in which these facts interact. I 'guesstimate' that when we program, on average, we deal with 3 to 5 objects and at least 30 to 120 relationships (power of 3 or more). Experience would create patterns and that lowers the number of objects and relationships one has to deal with at one time (ie the code is readable and easy to understand). To get an idea, here are some actual numbers measuring complexity of the J2EE 1.3: - 91 packages - 2147 classes - 886 top level classes - 20165 methods - 1.224034 average depth of the inheritance tree - 3.182311 average number of subclasses per class - 9.576086 outoging package level dependencies - 5.336956 incoming package level dependencies Cheers Dino
Thu 03 Apr | 3 | I would estimate about the top 2 percent of the population, the same as the proportion eligible for, say, Mensa membership or medical school. If we're talking specifically about real-time, with a requirement for excellent spatial math, perspective transformations and the rest, we're talking about a more restricted sub-set - maybe the top 0.5 percent. The big problem is that this group is not the group that's selected for in the general business environment. The general business environment i.e the predominant workplace, selects for pliant, deferential people who either don't notice problems, or will refrain from investigating them. And also work for the the $55,000 or so that management considers is appropriate for 'technical' staff.
Thu 03 Apr | | 'I 'guesstimate' that when we program, on average, we deal with 3 to 5 objects and at least 30 to 120 relationships (power of 3 or more).' I'm not surprised at the first. We can apparently think clearly of a maximum of between 5 and 9 'things' at a time, so it would be natural that when programming we would keep within that limit (maybe its when we exceed that that it starts to get hard). Those relationships might be a problem though...
Thu 03 Apr | Dennis Atkins | OK you guys have convinced me. 0.5-2% it is.
Thu 03 Apr | Anonymous Cowboy | I would wager that the average competent software developer has an IQ around 130. Given that, I believe that limits the probable pool to around 2% of the population, but of course intelligence along isn't sufficient to make a developer: You need incredible self-motivation to continually learn a field that changes constantly (moreso than any other field).
Thu 03 Apr | robert | IQ? That's laughable. It's all about interest. If someone is interested in coding, they'll be able to do it. If they aren't, they won't.
Thu 03 Apr | Bored Bystander | I think Anonymous Cowboy has the most accurate stated opinion on this subject in this thread. You can be motivated all you want, but if you're not naturally quick, fuggedaboutit. If by 'developer' you mean someone that can master development in compiled object oriented languages, then an average or near average IQ just isn't good enough, so I agree that an IQ of 130 or more is requisite. Consistent mental quickness is required to jump through the hoops of understanding how things should be designed and implemented. People with near normal IQs are just too slow in putting the pieces together mentally. The sort of person that can master C++ or Java is so quick that he or she can be socially irritating to most average people. I've observed this quite a bit in business. And the saddest phenomenon is the rare person who *wants* to be a 'good' developer who just doesn't possess the natural aptitude and gifts. And, the IQ isn't enough as he stated. It requires major amounts of personal dedication to learn the generalities and details of class and component libraries and to keep up to date. Also, the person's brain has to be wired such that they enjoy and embrace working with abstract logical structures. I don't find it inconceivable that there are people around with 130+ IQs that aren't interested in understanding hierarchies, inheritance, pointers, links, keys, associations, memory models, etc. And another empirical attribute of high IQ is lack of work ethic; someone very smart can skate through public school and many colleges (I did both and I know a lot of people who've done this), which erodes work ethic. So, working steadily and working to learn new material may not be part of the mental tools that an overly bright person has to work with, right out of the chute. IE - the stereotype of the 'lazy genius' is probably founded on certain kids that can get B's while hardly paying attention. That hardly prepares the kid for the grind of worklife later on. Due to all of these factors, I'd say that the pool of candidates for 'good' developer roles is vanishingly small.
Thu 03 Apr | trollbooth | 13.79 %, up 3.2 % from yesterdays high due to good news on the war front. How can one seek to find out a percentage of good developers? Define good. Ok now do a test of every developer and compare them to your 'good' standard. See the problem yet?
Thu 03 Apr | Devil's Advocate | Bored - Verliy, you and I are the only good developers out there. And I'm not so sure about you...
Thu 03 Apr | Alyosha` | What a silly thing to ask. Why would anyone want to know the answer to this question? I sense the rubbing of hands and the chuckling of 'gosh, I'm so ELITE!' in the background ...
Thu 03 Apr | Bored Bystander | Devil's Advocate, you said it. And I feel the same way about you. :-)
Thu 03 Apr | 3 | trollbooth, yes of course we could precisely define what the question is about. But then we can also deduce reasonably well what the enquirer is asking, and then contribute using fuzzy parameters. It's a discussion so that's the way to go. If it was a contract or a scientific experiment, we would indeed define what we're talking about. My estimates stand.
Thu 03 Apr | And the horse you rode in on | Well, at most 10% of the CS classes I took had any hope of ever being good developers. Then consider I went to a 'good' university, so overall maybe 5% of CS students will become good developers. Now, out of the entire student body, people in CS were about 3%. Now out of the entire population of university age, at most 30% went to university. So If we multiply through, we get .3 * .03 * .05 = .00045 or ~0.05% And I feel I've been conservative on all estimates. Now, we may consider that some people who have the interest to become good developers might not go through comp sci. Lets be generous and say that of the percentage of the population interested and good enough to be programmers, only half did comp sci, the other half electing to do something else, or not go to uni at all. OK, we arrive at my final estimate, 0.1%, or 1 in 1000 people. That means there are about 20,000 current, past or will be good programmers in Australia, or 300,000 in the US. If anything that sounds bloody high to me, based on the average quality of code I've seen.
Fri 04 Apr | . | Anyone can do anything well given enough time and training. But don't let that stop you all from stroking your egos.
Fri 04 Apr | ODN | 'Anyone can do anything well given enough time and training.' True, but with the rate of change in this industry, time isn't on your side. I believe that with an average IQ and even an above-average motivation level, your chances of keeping current (let alone ahead of the curve) are quite slim. I'm hoping that among all the day-to-day scrambling I can acquire enough 'timeless' skills that I can some day safely throttle down the implementation-technology knowledge intake, perhaps by moving to management.
Fri 04 Apr | choppy | I dunno. when people say 'rate of change' i wonder if i'm in a different industry. Everything new I learn in software seems like the same old shit to me. ;-)
Fri 04 Apr | Bored Bystander | >> Everything new I learn in software seems like the same old shit to me. ;-) It takes a *LOT* of intelligence to see past the new tool du jour and grasp that it's a repackaging of older concepts. The feebler intellects think that every new toy is a new world busting paradigm. I'm not against lower IQ people (lower than 'elite' SW developers, I mean). In the right position, they usually outearn us. Why? Because almost everyone hates a smart guy.
Fri 04 Apr | . | 'IQ' is another fallacious mechanism by which people stroke their egos.
Fri 04 Apr | T. Norman | I agree, it's pretty much all the same old stuff in new packaging. Real new substance comes along only about once a decade. These include: - Compiled and interpreted languages - SQL and the relational database - The graphical user interface - Object oriented languages - Web application programming Still, the packaging changes quite a lot and it's the packaging that usually determines whether you are hired.
What, exactly, is MS doing? | Wed 02 Apr | Philo
http://biz.yahoo.com/rc/030402/tech_microsoft_google_1.html We do view Google more and more as a competitor. We believe that we can provide consumers with a better product and a better user experience. Thats something that were actively looking at doing, Bob Visse, director of marketing for Microsofts MSN Internet services division, said. ******** This is from the company whose web search engine is so useless that many people use Google to search their site? Google is clean, fast, just plain works, and is free. Why would MS even try? Philo
Wed 02 Apr | flamebait sr. | Well, because MS has a lot of cash to keep throwing stuff at competition until the competition has run out of cash. They have tried to ramrod MSN down people's throats ever since they decided AOL was a threat. MS wants to be a diversified monopoly, even though all they've got that actually makes money is Windows and Office.
Wed 02 Apr | Simon Lucy | Sounds like there's some hiring to be done for those that understand how to index a database.
Wed 02 Apr | George McBay | Microsoft spends billions a year on software R&D, some of it quite 'pure'. It makes sense they'd try to commercialize some of this work, if it fits. Perhaps that ties into this story. My guess would be that the article in question has way overblown the situation based on a single comment from one guy at Microsoft to position it as a clash-of-the-titans (Microsoft vs Google) deal when it is really something minor going on at Microsoft that just happens to overlap Google's bread and butter.
Wed 02 Apr | Li-fan Chen | What google is doing is so advanced and huge and weird that it's seems beyond the everyday db wizards. But yeah sure send Microsoft a resume :-)
Wed 02 Apr | Brian | We'll probably just have to wait and see, but I don't understand why MS thinks that they and Google are in the same business. As was said above, MS's web search is worse than useless - I can't tell you how many times I have entered an aticle's 'Q' id, only to have the search fail. Without googling with 'site:microsoft.com', you would be SOL. But note that it was someone from the MSN division. They've been heavily advertising MSN 8, and I guess they are looking to add value to it.
Wed 02 Apr | pb | Depress the price of Overture and then buy it out. I think Google is close to its peak. An MS or AOL combination with Overture and the renewed Yahoo/Inktomi should present Google with stiff competition. Search engines don't have particularly defensible positions considering that browsers (and portals) have demonstrated no resistance to switching search providers.
Wed 02 Apr | Mike | MS just wants to own the web, that's all.
Wed 02 Apr | Tony Chang | 'so advanced and huge and weird that it's seems beyond the everyday' Boy I'm with you on that one Chen. news.google.com -- like it completely does all this using some algorithm? Dang! Stand back and get out of their way! And it's free too? Holy cow! And they're not the government taxing us to pay for it? What is going on here? They must be run by space aliens.
Wed 02 Apr | Prakash S | Actually the news bit was ONE person's idea. read more abt it: http://www.fastcompany.com/magazine/69/google.html
Thu 03 Apr | John Topley | I'd assume that Google is set as many people's browser home page. Microsoft would like that to be MSN. Advanced search technology is also going to be important for Longhorn, with its new file system.
Thu 03 Apr | slowpokes! | You mean MS is going to have full indexing of every file on all your disks, allowing for google-like instant searches of all your files, ranked by relevance? Wow, so they are finally catching up with what has been free with Apple computers since system 8.6 came out several years ago...
Thu 03 Apr | John Topley | Actually, they've had that since Windows 2000.
Thu 03 Apr | Ged Byrne | I think MSN really fail to understand why Google is homepage for so many people. When MSN is the homepage (the default) it takes minutes for the browser to load, because MSN is so fat. With Google as the homepage, it takes a few seconds. Lean and mean. I think the big advantage Google has over so many other portals is that they're thinking 'tool' while everybody else is thinking 'media'
Thu 03 Apr | Thomas Eyde | My homepage is about:blank. And I think that one is too slow.
Thu 03 Apr | about:blank | Me too! That's not a very helpful comment I know. Does anyone know why it _is_ so slow?
Thu 03 Apr | Walter Rumsby | I have to agree with what Ged said. But still... I do believe that a significant percentage of the population want a 'cool looking' internet (probably those people entering 'amazon.com' in Google to get to Amazon). This is something I personally don't want/need, but our contemporary culture is very impressed with surface features and I'm sure there are people who use MSN search over Google because 'Google doesn't look cool enough'. A few things will happen to resolve this: (1) Those people who 'don't get it' (it's a tool, not something that needs to be cool) will 'get it'; this goes contrary to so much other media that I don't think it'll happen (yes, I agree the media analogy is kinda broken, but these people are still trying to come to terms with the internet from a media perspective). (2) Google will hire 37 Signals and Eric Meyer (or similar) to come up with an ultra-light weight, ultra-nice looking CSS/XHTML UI. The 'this ain't cool' school will jump on board. Cool looking standards compliant web design will get another boost (to go along with Wired and ESPN). (3) Microsoft will produce a 'good enough' compromise. A fast loading, cool looking, relatively accurate search engine/portal which is about 70% as accurate/helpful/on-the-money as Google. People will switch to MSN. I'd guess the ordered likelihood of the above is (2), (3), (1).
Thu 03 Apr | Philo | LOL! 'Skinnable Google!!!' Philo
Thu 03 Apr | Bill Tomlinson | Remember, this is coming from the MSN people. MSN people tend to view the web like AOL does. That is, if you're an MSN subscriber they desperately want you to only view MSN sites and not stray off onto non-MSN sites (like google). So it only makes sense that they would want to enhance MSN to include, basically, all the useful functionality of the web. If you're not an MSN subscriber, well, first they want to make you one. But if you refuse that, then they don't really care about you. MSN isn't trying to create a google killer to attract non-MSN subscribing web users to their search engine. It's trying to keep MSN subscribers from going to non-MSN sites.
Thu 03 Apr | Rikard Linde | If MS present better search results I think the battle is pretty much over. It's not easy but there are lots of areas to explore; relevance and context, adapting results to the users knowledge level, using documents from the users pc to understand him/her better, translations to create a bigger index for each language and on and on. Web search is, as far as I can tell, only in its infancy.
Thu 03 Apr | Just me (Sir to you) | Search is a big thing. Not only in the discovery of new pages, but a lot of people just do not bother with saving or bookmarking, and just search again. What is important is the ranking bit, not the indexing. MS has had world class indexing since ages, but their ranking is not up to Google's. Who cares you can find 5.000.000.000 pages containing the word 'snot', your only going to skim the title of the first 40 max. Who controls ranking has a major impact on access and associated revenu. Right now that is Google. I'm sure MS is not the only one that would like a piece of that.
Thu 03 Apr | Lee | I'm reminded of a Richelieu quote: 'No state is immortal. Its salvation is in the here and now.' Everyone thought IBM was unstoppable too.
Thu 03 Apr | r1ch | Off topic, I know, but to the guys that say about:home is too slow, and assuming that you are using Internet Explorer, change the shortcut that launches IE to pass it the '-nohome' argument (for example: 'C:\Program Files\Internet Explorer\IExplore.exe -nohome') - it's a LOT faster.
Thu 03 Apr | Isaac Morland | Ged wrote: >When MSN is the homepage (the default) it >takes minutes for the browser to load, >because MSN is so fat. Of course, this could be fixed by embedding the MSN homepage into Windows along with the browser ;-)
Thu 03 Apr | runtime | thanks for the IE -nohome tip. It actually seems to work!
Fri 04 Apr | mark | Microsoft won't be able to do it. Much of the appeal of google is the integrity of the search. They are very clear about keeping sponsored links and advertising separate from the search results. Unless there is a drastic change in the culture at microsoft they will not be able to resist using a popular search tool to further their marketing aims. You won't be able to get results that are not tinkered with in microsoft's favor and as a result it will be difficult to find what you are looking for--unless, of course, you are searching for a service microsoft offers. If you go to google and search for 'internet service provider' MSN is nowhere to be found in the first few pages other than the sponsored links. Will Microsoft let this stand in their own search service? Go to msn.com and type 'internet service provider' in the search box. Six of the first fifteen are for msn.com including their 'top pick.'
Fri 04 Apr | Ken Anthony | MS is doing what they've always done historically... They are hungry they want [your/fill in the blank] lunch money. If you don't hand it over, they're going to beat you up.
Questions to ask when stating a new Job | Wed 02 Apr | Reginald Braithwaite-Lee
One of the things I admire about this site is the Joel test: it provides a list of questions to ask to determine a software teams effectiveness. If l were starting a new job, l would certainly ask those questions. But what other questions should l ask? l guess Im looking for some help developing some questions to help me understand: what needs to be done who does what and why how to get things done What do you folks suggest?
Wed 02 Apr | Kyralessa | I'm guessing you mean not when you're interviewing, but when it's your first day on the job...?
Wed 02 Apr | George McBay | Good questions to ask: * How much money will I be making? * What are the minimum number of hours I'll have to work to keep getting a paycheck? * In the case of an 'inside job', how likely is the company to prosecute the offender?
Wed 02 Apr | Tom Vu | What incentive do the employees have to work harder? Why won't you just take me on as a contractor...it's cheaper or the same for you and better for me? Do I get a piece of the pie? Who is your network? Who is your competition? Can you market and sell?
Wed 02 Apr | George McBay | Whoa, it's Tom Vu! Another question: * There are two kind of companies: the doer and the loser. Which one are you?
Wed 02 Apr | the artist formerly known as prince | How far apart are your release cycles? some companies say: oh we only expect lots of overtime right around release time releases are every month repeat
Wed 02 Apr | John McQuilling | Where is the rest room, coffee machine, soda machine, copier, supply closet.
Wed 02 Apr | Brad (dotnetguy.techieswithcats.com) | A new question I'll be asking, if I ever have to look for a job again (god, I hope not): * Do you fully and completely subscribe to XP? Man, I was an anti-XP person until I actually put it into practice. Now I can't imagine the typical 6 month release cycle with massive back-end loaded integration and QA. That's just insane. I want a release every two weeks, I want an quick 'breaking test' build everytime someone checks into the tree, and I want nightly automated builds with unit tests.
Wed 02 Apr | Martha | How do expense reports/check requests/purchase orders work? Where do I find the forms, how do I fill them out, who signs them, who do I give them to? [You'd think they'd put that stuff in the manual, but I've found they either don't, or the info in the manual is so out-of-date as to be useless.]
Wed 02 Apr | Lou | Some questions I've had in the past three months at my new job: What are the data flows Where can I get a copy of the formal reporting structure What's the informal reporting structure Who's a contractor and who's a FTE (now that's critical info) Who is in charge of each data/path/program/pull/push If I need to get something done, who should I contact How do we track tasks How do we handle projects - roving project teams versus procedural upgrades (prefer the former always) How often is our hardware upgraded - how do I get it upgraded more quickly Where are our standards documents What other systems do I need to get access to and of course - how long a lunch can I get away with on Fridays?
Thu 03 Apr | Caveat | One question I wished I'd asked before starting my current job: 'Can I talk to someone who does the job now?' Would have saved me a a lot of grief. But at least I've got a steady paycheck.
Thu 03 Apr | | 'Shouldn't you take me out for a beer since it is my first day?' 'Where is the toilet?' 'Who stole all the fscking toilet paper?'
Thu 03 Apr | Matt H. | Find someone you know inside the organization that is doing a similar job. Ask them to talk you out of working there. At the very least, you'll find out about the stuff you won't learn in an interview, and then can make a more informed choice. Possibly, you may end up deciding that the culture or environment just isn't the right fit for you. If the worst things they can come up with are non-issues to you or trivial/minor, you may have found a place to work! regards,
Thu 03 Apr | Reginald Braithwaite-Lee | Thanks for the interesting questions. My initial question wasn't particularly well formed, but now that I'm seeing some great suggestions I'm getting a clearer idea of what I'm trying to ask.
Thu 03 Apr | Bill Tomlinson | I usually ask them to walk me through their development process. Something like: 'Imagine one of your salesmen sees a clear business need for a significant feature in the product. Walk me through, in detail, all the steps between the glimmer in the salesman's eye and the feature being in the customer's hands.' Now, determining if they answer with the theory or the practice of the company is a whole different problem.
Thu 03 Apr | A. Coward | When you're at a job interview, I think a good thing to ask is, Do you press charges? -Deep Thoughts by Jack Handey
Thu 03 Apr | xyzzy | If before taking the job, ask the following: 1. Are you ISO 9000 or ISO 9001 complient? 2. Do you use ClearCase, ClearTool, Rose or any other Rational product? If you get a 'yes' to these questions, think about looking elsewhere for a job.
Fri 04 Apr | Prakash S | I locate people who are from the same university as I am, who are working there or who have worked there.. , set up an informal meeting with them, get more info. This has been the most useful way for me...
What the #$*()& is Dave Doing? | Wed 02 Apr | Word
Do not question us. We are Microsoft. Conform.
Thu 03 Apr | Joe Grossberg | a.k.a. 'You're too stupid to think for yourself' or 'We know what you want, better than you do'
Thu 03 Apr | rexguo | we should've known when he showed us the first sign: '640K ought to be enough for anybody'
Thu 03 Apr | rexguo | then came the second sign: 'There are people who don't like capitalism, and people who don't like PCs. But there's no-one who likes the PC who doesn't like Microsoft.'
Thu 03 Apr | Brent P. Newhall | What's wrong with the statement '640k should be enough for everybody'? It was a statement about current and immediate future memory needs at the time, not about how much everyone will ever need in the future. Plenty of software products describe their current memory requirements this way, but nobody laughs at them.
Thu 03 Apr | trollbooth | I thought Bill G refuted that statement anyway.
Thu 03 Apr | tommyhl | And anyway, it was after the fact and had nowt to do with MS. IBM designed the IBM PC. They put the memory mapped I/O and ROM in the top 384K of the address space. And, unlike the 68000 (let's say), the 8086 addressing is such that you can't just expand the number of available address bits and have it work. So, effectively, you're stuck with 1MB of memory, and even if you extended it slightly (expand size of segment registers, say) you're still stuck with this silly 640K at the bottom. Anyway, how long before 4GB becomes insufficient? That's going to be a problem soon, I should think...
Thu 03 Apr | tommyhl | <> And I just said 'you couldn't do this' :) What I was getting at is that if you write your programs correctly, they work correctly after expanding the 68000 address space of 16MB into 4GB. This expansion (as used on 68020 and later) happens by not ignoring (as the 68000 did) the highest 8 bits of the addresses. Net result is that the bottom half of the 16MB is at the bottom of the 4GB, and the top half is at the top of the 4GB, and you have another 4080MB inbetween. Not so easily worked around on the PC.
Fri 04 Apr | rexguo | If BillG was referring to the 8086, then it is understandable, as (IIRC) the 8086 had only 10-bits of address space. When the 80386 came out, DOS extenders like DOS/4GW and PMODE/W became wildly popular to break the real-mode 640K limit. But there was some funky address mapping going on for the bottom 1MB address space, and it was hairy doing timer interrupts stuff and making call-backs to real-mode DOS and BIOS services. Actually, now that I think about it again, the whole PC design is quite silly... .rex
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | tommyhl: 'how long before 4GB becomes insufficient?' It's already insufficient for some applications. Hence, 64-bit memory architecture is available for just about any serious platform you can think of. Now, I have doubts that we'll overrun the limits of 64-bit any time soon. ;)
Fri 04 Apr | Joe Grossberg | rexguo and Brent: It was 64k, not 640. It's easy to laugh at now, in the days of cheap and abundant memory, but MS had to make decisions in that context. If you go on the record as saying *anything* statistical, you will look like a moron soon thereafter. If you underestimate (e.g. '64k ought to be enough ...'), you look like a fool. If you overestimate (e.g. 'In the year 2000, everyone will have a personal flying car'), you look like a fool.
Fri 04 Apr | rexguo | Joe, 640K is what BillG said: http://www.brainyquote.com/quotes/quotes/b/q103747.html 64K is the space addressable by a x86 segment register in real-mode. Please get your facts right before correcting people. .rex
Fri 04 Apr | Tim Sullivan | I don't care what BrainyQuote says, Bill Gates never made the 640k comment. It's an urban myth, and there is no news source that can be referenced that indicates he ever said that.
Fri 04 Apr | David Clayworth | In my very first job in 1980 I worked for a team building microprocessor based avionics systems. I was asked to write a report assessing the merits of two new microprocessors then just coming on to the market - the Zilog Z8000 and the Intel 8086. My conclusions were that the 8086 was marginally better, but that a whole megabyte of address space was totally unnecessary, and I couldn't imagine who would use it.
Fri 04 Apr | Philip Dickerson | As Tim Sullivan notes, it's not certain that Bill Gates ever made the statement '640K of memory should be enough for anybody' - it was more likely someone at IBM or possibly Intel. The 640K barrier was a hardware limitation (in the processor chip) at the time, as mentioned by tommyhl in an earlier reply. The page http://www.urbanlegends.com/celebrities/bill.gates/gates_memory.html contains an excerpt of a New York Times article where Bill Gates denies ever making the statement.
Fri 04 Apr | rexguo | Well given BillG's ability to avoid giving straight answers or deny things, as displayed during the anti-trust trials, he could be denying ever made that 640K remark after realising how silly it is. Anyway, this is pure fun speculation and it doesn't really matter to me. But yeah you are right, the 640K is really a hardware limitation due to IBM's design. Though we should bear in mind that MS supplied IBM with the OS at that time, and they worked closely together. The plot thickens...(calling anyone with anti-fog devices...) .rex
Can engineers learn web/visual design creativity? | Wed 02 Apr | engineer looking for artistic skills
Is it possible to learn the creative aspects of web design, or do you need to be born an artist? At work Im part of a team of programmers, and I program (anywhere from the GUI to the database design at different times) web sites and pages - someone else creates the graphic images and designs the style of the pages. I also have had a variety of personal web pages/sites over time, and I sometimes help out family and friends with web pages. My training (and aptitude) is in engineering, not in an artistic field, but I would like to improve my web design/creativity skills a little if thats possible. Years ago, my work involved writing Windows applications, including the GUI; I did reasonably well with the GUI style for those, but there were fewer variables - there are well-accepted user interface styles for various types of Windows applications, the colors come from the users current selected Windows color scheme, etc. I learned a lot from Microsofts guides for Windows user interfaces and from authors such as Alan Cooper. However, with web pages, I struggle with the visual design/style. I know the technical details very well - I can write the necessary CSS, DIVs, tables, etc, etc to exactly match almost any page that I have seen (or, obviously, I can view the source and just copy the details) or almost any page for which the visual style has already been designed. But, I dont want to exactly copy other pages, I want to use them as inspiration and create my own styles using some of the same concepts. Whenever I try to do this, the page that I create looks clunky (for want of a better word) or harsh even if it has broad similarities to a professional page. For example, I might see a page that has a title banner with a blue horizontal stripe containing the site name followed by a thinner pale orange stripe separated by a small amount of white space - when I try to create something similar, the colors I pick dont seem to match as well, or even if I use the exact same colors, I have more or less text in the first stripe and it doesnt look balanced or I havent used the exact same text size and it makes the bars out of proportion, or something similar. This example probably doesnt explain the issue - Im not looking for specific help on how to design this particular striped header, Im looking for more general page design and style techniques. I have read several of the typical web-design and user-interface books (books by Jakob Nielsen, Joels book, web design books, user experience books, style guide books, Donald Normans book, etc) and I learn some things from each book. I have also examined a lot of good sites (and some bad sites) on the web to try to learn more. I still seem to be far from being able to create my own good visual designs for web pages. Is there anything else I can do to improve my visual design skills, or are most engineers doomed to never be much good at visual design?
Wed 02 Apr | Steve Barbour | First, buy a color wheel. Second, keep reading. There are 'rules' for design, learning them will not necessarily make you great at design, but they'll help you to not be a lousy one. I'd recommend some book, but I'll be darned if I can remember any of them, although the title 'Design Literacy' seems to spring to mind for some reason. The only other recommendation would be to play around on paper with different themes and elements. Don't try and make it look like the finished work, just do some rough drafts to get an idea of what might look nice together as far as shapes, text sizes, and what not. You'll find out the sort of stuff you like after a while. Once you get a library of stuff you like, feel free to mix and match elements from the different designs and get an idea of what works and what doesn't. Have fun, and don't worry about it, you're just doodling after all. I'm not a designer, but after working with several graphic artists, I can crank out a not ugly design now. It's usually good enough for the purpose, and if it's not, that's what graphic artists are for.
Wed 02 Apr | Brent P. Newhall | First: Yes, of course they can. This is like asking if mathematicians can learn how to paint. Learning one thing does not preclude a human being from learning another. I'd recommend a trip to the local library for books on this subject. There are plenty of them out there, and they can help tremendously. That's what I did, and I think my web design skills are improving.
Wed 02 Apr | Beth Linker | Try taking an art or graphic design class. Practicing and getting regular feedback may be more productive than reading books.
Wed 02 Apr | Benji Smith | I agree with Brent, to a point. Yes, anybody can learn to be a great graphic artist, just like anybody can learn to be a great programmer. But it's not easy, and it won't happen by reading books (no matter how many of them you read). You need practice working in a visual medium. You should pick up a pencil and some paper and start teaching yourself to draw. The absolute best drawing book on the planet is 'Drawing on the Right Side of the Brain' by Betty Edwards (ISBN #0874774241 ). The idea of the book is that people are so used to looking at objects symbolically rather than visually. That's why children draw people as having a round head with dots for eyes and a curved line for a mouth. They're drawing a symbolic representation of a face, rather than a visual representation. As an adult, drawing can be frustrating because you draw things symbolically but then evaluate the merit of those drawings visually. For example, even as a (somewhat) practiced artist, I find it very difficult to draw a realistic face at an oblique (or three-quarters) angle. I can draw profiles, and I can draw a face straight-on, because I know (symbolically) where the eyes and the mouth and the nose all go. But if I try to draw at an angle, the proportions change in such a way that I have to drop my symbolic expectations and work from a purely visually. And I'm not good enough to do it. Drawing on the Right Side of the Brain takes a systematic approach to teaching you how to stop drawing symbolically and start drawing visually. It's a great read. And I think it's really effective. Of course, why in the world am I suggesting that you learn to draw when all you want to do is design slick web pages? Drawing stimulates the visually sensitive areas of your brain. And that's the same part of your brain that does web design. So learn to draw.
Wed 02 Apr | Benji Smith | By the way, I think I speak from experience as someone who feels very comfortable with both visual art (and graphic design) and programming. A few of my designs: http://www.xxagg.com http://www.xxagg.com/inshift http://www.daryntufts.com (I also did all of the programming for these) And my visual arts portfolio (including drawings & paintings) http://www.xxagg.com/benji If you like my style, send me an email with links to your web design projects, and I'll be happy to give you a point-by-point checklist on how you can improve them, from either a visual perspective or a functionality perspective.
Wed 02 Apr | Herbert Sitz | Engineer -- My belief is that if you are sensitive enough to at least be able to tell a well-designed page from a not-so-well-designed page (e.g., one of your own), then you'll be able to develop a better eye and a facility for designing well yourself, though it could take a lot of work. It's the person who can't even tell the difference between an aesthetically pleasing design and a not-so-pleasing design who I would say is doomed to failure. You've got to have enough visual sense to bootstrap yourself upward. Also, some people think they have a good aesthetic sense when they really don't. (These are the people most commonly categorized as having 'bad taste'.) So you may have to learn to user other people's opinions as barometers of your own. If someone who's widely acknowledged to have good visual sense tells you that you don't, you'd be well advised to listen. And if lots of people whose judgment you trust tell you that you have no visual sense at all, even though you think you do, you'd be well advised to start seriously questioning your own judgment.
Wed 02 Apr | One-Armed Bandit | I can totally relate to this. It seems like all of the web pages I create have a primitive, unprofessional feel to them. I understand (mostly) where to put things to make a good UI, but I just can't seem to make a nice looking web page.
Wed 02 Apr | Benji Smith | Incidentally, good web design has very little to do with good web usability (though you should strive for both), so knowing, in general, where to put things on the page doesn't really help contribute to good aesthetics. If you want to be a good web designer, you have to become (at least to a certain degree) an artist. As an artist, there are some definite guidelines that get you going (form, color, texture, line, etc.), but in the end, you need to be able to say 'That's ugly. And that's not ugly.' And you need to know how to take ugly things and make them not-ugly. And to do that, you need practice. Like I said, grab a pencil and some paper and get to work. (Or, if you want the fast approach, hire someone who's already good at it, and stop worrying about becoming a Jack-of-all-trades).
Wed 02 Apr | Colin MacDonald | I'd recommend The Non-Designer's Design Book, by Robin Williams (no relation, female) for basic graphic design principles. I see she's also put out The Non-Designer's Web Book. Haven't read it, but I'd tend to trust her.
Wed 02 Apr | S | I had (well still have) similar issues when I first started designing web pages as well. I knew technically how to do them but somehow mine never had the same 'polish' as the professional ones I saw out there. I did a few things that helped that did not involve reading countless number of books (I am a slow reader). First I got my wife to review my design. Even though she is not an artist, my wife is clearly more right brain oriented that I am . That helped a lot. After making a whole bunch of small iterations, she was able to guide me in the right direction with what worked and what didn't. Second, I made many iterations and spent lot of time on them. That's where the Pros have an edge on us. They probably went to school for a few years during that time they probably spent countless hours just practicing little graphics details that we take for granted. For example, look at the curriculum for a design course of a local design school http://www.eciad.bc.ca/eciad/degrees/communication.html You will see courses like 'Design for Motion', 'Typography' so on. Man they spend a lot of time on typography!! Now on top of this great background, they have a full work week to work on that stuff while most of us probably have a few hours at night here and there. Finally, don't forget that the grass always look greener on the other side of the fence and you are probably more critical at your own work then you are at other people's work.
Thu 03 Apr | rexguo | Engineer, I designed and programmed www.waterlogic.com.sg. If I summarise all my experience into a single advice, it will be: observe, and learn how the good ones did it, then do it yourself; just like how we learned many of our programming skills. Good solid graphic design is often the application of many different basic designs. Just like how a good solid application is the composite of many different basic 'design patterns'. Horowitz once told Perahia, '...to be more than a virtuoso, you must first be a virtuoso...'. .rex
Thu 03 Apr | Arron Bates | Reading books, and learning to how draw and such is ok, but it's exact parallel is telling people how to construct 'if/else', 'for/while' and whatever other flow operaters and saying 'keep practicing, in time, you'll be a programmer'... It's not 'wrong', but... With the basics and time, the rest will happen with raw determination. But everyone will tell you that it'll help you see the light faster that when someone shows you how to 'do', they tell you how to 'think' as well. This is not very well conveyed through books. Art is a process. It has a way of thinking. If you can think the certain way, then the rest will be a simple act of doing. Like coding... if you can visualise the design path, and how it's all fitting together, all that's pretty much left to do is typing. Design is quite the same, but you wont get there without knowing how to visualise. There are those times when nothing comes to you, and you have to rely on experience to drag you through by the gonads. Same for coding and design. This is where schools and instruction comes in. A good design teacher will show you the path to the thinking game of design. I'd actually start out with some crazy loony art teacher that's commonly a wild wooly and free designer to show the creation process, then go to some other place to learn the technique. This is what a graphic design school does. You'll have crazy classes of pure creation, these mixed in with doing the deed. I do have to say though, some people are more wired than others, and instruction may not get you too far. In design school, it's just as painful watching someone try to be creative, but not find their groove as it is explaining to someone how an algorithm is working but the light not shining for them. Same thing. Not to discourage in any way, but there's many levels of design. Just like it's not all that hard for someone to be a 'good enough' coder, it's possible to take enough of the design game to make a presentable page. Nothing that's going to win the archibald, but quite spiffy. This is very achievable. Everything comes down to effort and pashion. You'll know if your forcing a square peg into a round hole. Some people are just creative thinkers, and some are coders. The creative thinkers will do pretty stuff, but they'll balk at the simplest of logical problems. But there is a middle ground. I also have to say... do you really want to be a designer?... If you're not in the right environment, it's the worst job on earth. I moved my day job of graphics to a night job, and took up fulltime coding because I was working for someone with no idea. But, he had eyes, so he had a visual design opinion. Being the manager, it was the last word. He also liked watching me drive photoshop 'cause it was pretty watching pallettes and colours flying around. It was hell. But, turn to some code, and he'd get bored and leave the room in under a minute. That's when I had the epiphany that I was going to be a coder... :) Anyways, like most things, design is a very rewarding thing. I love it. But I'm very wary about doing it for managers who don't know it from the hole in the ground. Nowadays, it's a night job. Churn out print ads or whatever for those people who let me do what I do, the way I think it should be done. Very rewarding. Everything is possible by anyone, it's just that various skills and accomplishments have different length journeys for different people. Don't be discouraged by the square peg. With enough effort, it can be jammed in there to make it fit! :) Problem with learning totally different skills like this, is that we place too much anticipation on things, and things never happen fast enough. Probably the best tip I can give, is that design is constructructive play. If you're not having fun, you're not gonna get better. Many of the great designers note that graphic design is the art of guiding and controlling accidents rather than following a path or a rule. Rules only govern more mechanical aspects, like balance and such like that. Anyways, enjoy whatever new things you learn, design, coding or otherwise. All the best mate. Arron.
Thu 03 Apr | engineer looking for artistic skills | Wow - lots of good advice and a lot of very thoughtful and insightful commentary and suggestions. Thanks. I'm not sure if it's possible for everyone with one skill (programming or mathematics, for example) to learn a new totally unrelated skill (such as painting or graphic design) - well, actually, it's possible to learn at least the basics but not necessarily to become extremely good at the new skill. When I was a teenager, I tried learning the piano for a while (by choice, I wasn't forced to), and I learned the 'mechanics' and I could read the music and play an existing tune relatively well (the timing and all the notes were correct, etc) [my favorite piece to play was 'Sounds of Silence' by Simon and Garfunkel], but even I could see that I didn't know how to put any 'soul' into the music, I couldn't change anything without it sounding totally wrong, and I could certainly never compose any new music. In my soul (or brain), I was always an engineer, not a musician or artist. There are relatively few people, no matter how much training they receive, who could paint a 'Mona Lisa', and I'm not trying to become an 'artist' in graphic design or web design. But, I would like to be able to move a little above the 'paint by numbers' level (fill in the pre-defined shapes with the already-specified colors). At work, (as suggested) the best solution is having the visual design done by a professional designer or graphic artist - we already do that and I'm not trying to take over that role. However, sometimes at work I create quick prototype pages or concept pages to demonstrate a new proposal (without the assistance of the designer) and I would like these to look reasonably good because the people reviewing these pages get distracted by the visual appearance if it's not quite right. Also, for my own home pages and those of friends that I help, I can't realistically hire a graphic designer, so I want to be able to design reasonably attractive pleasing pages on my own. Benji Smith: 'good web design has very little to do with good web usability' - this is a very important distinction, and I think I can usually create web pages with good usability (and other people tell me that, too), but I need help with the style and design. I tend to build the usability first with a visually simple (even stark) page and then try to add the visual style; perhaps that's not the best approach. I work this way with Word also (for work documents such as specs and proposals) - I type in (and edit and revise) all the text without any formatting and then when the words are close to what I want, I add headings, formatting, diagrams, etc; this usually works well for me, and other people have told me that they like my documents and understand them very well. However, with PowerPoint presentations, I usually start by selecting the visual template and page style before I type in any text and this approach seems to work well for PowerPoint for me. Benji, I also appreciate your offer to review some of my pages and give me point-by-point improvements, but that's not what I'm looking for - I want to learn enough to be able to review the pages myself and make my own improvements. I don't expect to be able to create pages as excellent as yours, but I want to learn 'how to take ugly things and make them not-ugly' as you say. Yes, this process takes time, and I have improved over the years - I can create much better looking web pages now than the pages I created in, for example, 1996 (when I was doing it as a hobby, not for work). Some improvements are because of changes in accepted styles and practices, learning from improved designs at commercial sites, etc; and some of it is improvements in my own web design abilities. It feels like a very slow process. Maybe, as 'S' says, it just does take a lot of time, and I should create more iterations and spend more time on them, as he does. From some of the replies, it seems like perhaps I should take some sort of graphic design class at a local technical college, and I will see what I can find. There were also some helpful book suggestions that look interesting: Drawing on the Right Side of the Brain: A Course in Enhancing Creativity and Artistic Confidence; by Betty Edwards (June 1989) http://www.amazon.com/exec/obidos/ASIN/0874775132/ The New Drawing on the Right Side of the Brain; by Betty Edwards (September 1999) http://www.amazon.com/exec/obidos/ASIN/0874774241/ The Non-Designer's Design Book; by Robin Williams (January 1994) http://www.amazon.com/exec/obidos/ASIN/1566091594/ The Non-Designer's Web Book: An Easy Guide to Creating, Designing, and Posting Your Own Web Site; by Robin Williams, John Tollett (October 1997) http://www.amazon.com/exec/obidos/ASIN/020168859X/ Robin Williams Design Workshop; by Robin Williams, John Tollett (October 2000) http://www.amazon.com/exec/obidos/ASIN/0201700883/
Thu 03 Apr | choppy | 'I'm not sure if it's possible for everyone with one skill (programming or mathematics, for example) to learn a new totally unrelated skill (such as painting or graphic design) - well, actually, it's possible to learn at least the basics but not necessarily to become extremely good at the new skill.' Crossover isn't that big of a deal. A lot of people are way better than average at more than one thing. Herbie Hancock, the famous jazz pianist, has an undergraduate degree in electrical engineering. In his early days he recorded a lot of his own concerts. Kandinsky was a theoretical economist before he became a famous painter. The guy who does www.slowwave.com cartoons, is an illustrator, has a PhD in computer science, and plays the upright bass. Most people that work at MOTU.com are also really good musicians. People that are 'technical directors' at pixar have to be good artists and programmers/technicians. I taught myself spanish and japanese by listening to tapes walking to work, have commercial artwork published on t-shirts and skateboards, and can embed a scheme interpreter into a C++ program. What helped me, is quitting watching 18 hours of TV a day, waking up earlier, and not drinking as much hard liquor.
Thu 03 Apr | Arron Bates | What a load of hooey! I get up late, and dig hard liqour, they have nothing to do with it! :) People can learn totally unrelated skills, but certain people have a disposition that allows them to pick up certainy skills better than others. But 'crossover isn't that big of a deal' is wrong. Sure there's plenty of examples (Pixar's probably the largest collection of such), but some people will find it almost impossible to learn something they're not geared to do. I'd take up Benji's offer to review your pages. You need mentors. They're very important. How can you ever pick up on things that you've never been shown to pick up on?... All art books will tell you to pick one or a few artists, and simply copy them. Follow their exact lead to the absolute letter. Eventually, your style will appear from nowhere, and you'll be marching to the beat of your own drummer. Just remember that 'always two there are'... :) Arron.
Fri 04 Apr | | 'Robin Williams Design Workshop' Someone actually _designed_ Robin Williams? I always thought he looks like he'd been made up from the spare parts that were left over from the previous week's producti0on run.
Fri 04 Apr | Mark W. Lewis | One topic that you should surely investigate is 'Design Gestalt Theory' which, at it's core, is a simplified view of why (understanding human nature) things are percieved as 'right' or 'wrong' visually, within a given context. Now if that previous sentance seems like trying to tapdance on a soap bar, I apologize, but whether something looks 'good' or 'right' depends, mostly, on the use and audience. However, the underlying organizing principals (gestalt), such as rhythm, proximity and closure, for example, do not vary. They are those oft noted 'rules that can be broken.' I believe that much of what people call 'artistic talent' is actually an inherent (internalized) understanding of the impact of the visual gestalt of a design. But these skills can be learned. How do I know? I teach them. Student work improves MARKEDLY when they learn and understand the principals of gestalt. When someone uses the phrase 'it just came together' it almost always means that, at some point, through whatever mechanism (chance, sometimes?) gestalt principals have been satisfied. I would encourage you to investigate the topic.
employment agreement | Wed 02 Apr |
Hello, I recently had to consider whether to sign a new employment agreement at my organization. The terms included a) to not be involved with any form of employment outside of work (unless approved), and b) to not approach clients for a number of year(s) after leaving the organization. I dont have equity, and it is a large company. My feeling is that a) is a privacy issue - I shouldnt need permission on how to spend my own time. What if I wanted to contribute to open source, brush up on web skills (with a personal web page), volunteer at the hospital, or yes even become an entrepreneur, etc? Hypothetically speaking. Regarding b)... I dont see justification for artificially prohibiting an individuals right to make a living, and I dont think it would hold up from a legal viewpoint... Its the principle of the thing that ruffles my feathers. I suppose the intention is to err on the side of caution with their hires, but not everyone is the same... Has anyone run into this, and what are your thoughts? Thanks in advance for responses.
Wed 02 Apr | Vincent Marquez | I'm pretty sure they can't dictate how you spend your time outside the office, unless it is a conflict of interest: Writting software for a related product, or even making money doing similar tasks in a similar industry. They can't stop you from working on something that isn't related to work. I'm pretty sure the law is pretty clear on this. As for not taking future clients, do they mean their clients? I think thats understandable and enforceable. If you mean you can't get another tech job, I know thats against the law in some states (for sure in my state California).
Wed 02 Apr | Dennis Atkins | there's a pretty good prinicple in negotiation that you should walk away from any first offer you would find unacceptable under any circumstances. That said, there may be circumstances under which you would accept these terms and that is why contracts are always negotiable. In the case you give, if they are asking to control the 16 hours a day when you are not at work, then you are basically on standby and you should be paid for that. It would be reasonable to find out what rate they are proposing to pay you for these off hours during which they expect to place restrictions on your activities. Regarding the clients thing, that's more common at least. I wouldn't sign it myself unless they present you with a list of their clients in advance so that is undefined. if you go into this with a client list that is undefined in scope you may later regret it. For example, is the US government one of their clients? Do they sell shrinkwrap and have millions of clients? Etc. I'd insist on seeing an exact list of these clients. Likewise, if agreeing to not work for a competitor for X years, you need to see a list of who those competitors are. Some companies believe they are in competition with the whole world. Also, for the years during which you can not work for certain people, you should *definitely* be expecting a severence package to be granted regardless of the terms of parting. Without a irrevocable and undeniable severance package in writing, you should never agree to post employment restrictions on your activity. You reasonably need to be paid for that service.
Wed 02 Apr | Herbert Sitz | My thoughts are that they are probably well within their bounds in requiring these things. And I would also guess, if they are a large organization, that their lawyers have already advised them regarding the legality of these provisions. You say, 'My feeling is that a) is a privacy issue - I shouldn't need permission on how to spend my own time. What if I wanted to contribute to open source, brush up on web skills (with a personal web page), volunteer at the hospital, or yes even become an entrepreneur, etc? Hypothetically speaking.' First of all, the only 'right to privacy' people have is under U.S. or state constitutions (and it's even pretty controversial under those). That prevents state or federal governments from violating any 'outside work' right to privacy you have, not private companies (though there may be other laws enacted preventing it). My guess is there aren't. I believe there are laws in most states prohibiting employers from placing restrictions on the 'recreational' (i.e., uncompensated) activities of employees outside work hours. So you don't have to worry, your open source work, brushing up on web skills, and volunteer work at the hospital would not be prohibited. But I doubt whether most states prohibit employers from restricting paid outside work, with good reason. For example, a software developer who is paid an annual salary may be expected to work long hours when needed, say when a project is behind schedule and a deadline is approaching. When this happens, an employer does not want to be told by the employee that they have outside work obligations that prevent them from working extra hours on their main job. Does that seem unreasonable? You also say regarding their restriction on approaching their clients for a number of years after you leave employement with them: 'I don't see justification for artificially prohibiting an individual's right to make a living, and I don't think it would hold up from a legal viewpoint...' I can guarantee you that many of these clauses are legal and that they are upheld in courts. It is called a 'noncompete clause' and there are fairly clear rules regarding which ones are enforceable and which aren't. I believe in most jurisdictions there is a standard that says the terms of a noncompete clause will be upheld only if 'reasonable', and what exactly is 'reasonable' has been fleshed out in many cases. Depending on your length of employment with the employer and the position you held with them, I would guess that in many cases 2 and perhaps 3 year restrictions on poaching company clients after your employment ends would easily be considered 'reasonable'. An employer has an obvious interest in retaining its own clients, clients that you are introduced to only because the employer puts you in a position to deal with them, clients that the employer may provide you with special training to service, etc. You can go after those clients when the noncompete clause ends, but you can't just quit your job and plan to poach a number of your employer's clients if you've signed a noncompete clause. I'm surprised that would seem unreasonable to anybody. You're free to reject the company's offer of employment, of course. Or free to accept the offer and abide by its terms whenever your employment terminates. So long as the restrictions are 'reasonable' I don't see how anybody can complain.
Wed 02 Apr | Nat Ersoz | Writing open source is, most of the time, not employment. So you'd likely be in the clear, just so long as your contributions are not comptetive with your employer. Same goes for web development, unless you're getting paid for it. Additionally, most employers will gladly grant you the time and blessing to publish for money - just so long as it doesn't interfere with your schedule, and that whatever you publish not be in conflict with their priorities. The most likely thing, is that they don't want you moonlighting with their client list. Steer clear of that and consult with your boss - they will probably never care.
Wed 02 Apr | Nick | Aside from the legal arguments, you need to put yourself in the shoes of the hiring manager. If you hold up the hiring process because you want to negotiate the right to do side work, the hiring manager is likely to recind the offer. I know I would, and I've seen it happen. If you've got several qualified candidates to choose from, are you going to pick the guy that's a pain in the ass? I'm not. Instead, do what everyone else does. Sign the contract, then keep hush about the side work. As long as it doesn't interfere with your day job or compete with the company's business, nobody really gives a sh*t. Lastly, I don't think all contracts are negotiable. the last two companies I worked for were very large (+100k employees). Much of the 'employee agreement' stuff was boilerplate handed down from corporate headquarters. The local HR minions had no wiggle room to negotiate out those terms.
Wed 02 Apr |           | Nick has the answers for you: http://www.asktheheadhunter.com/crocs66nca.htm 'Recognize that signing an NCA costs you money and confers a benefit on the company. For the deal to be fair, the NCA should cost the company money, too, and it should confer a benefit on you. If a company wants to restrict your ability to earn a living, it should give you something in return: a guaranteed severance package for the term of the NCA, to tide you over while you're out of work and not competing.'
Wed 02 Apr |           | Nick Corcodilos that is.
Wed 02 Apr | | Bottom line: some companies will push for as much as they can get, even though they know it's excessive and that smart people would object. Work out the bits that oppress you and insist on them being changed. Restraints on employment with other companies are often unenforceable because the employer was greedy and made them too sweeping, or failed to provide suitable compensation for restricting you.
Wed 02 Apr | igor | AFAIK, in most states employers can only require you to sign an proprietary information/non-compete agreement when you are first hired. The cannot legally force you to sign an updated agreement if you're already there. However, they have all sorts of ways to make your life uncomfortable if you don't. One company I know tied signing of an updated agreement to stock option grants. They usually grant options every year to all engineers, but when they needed to update PIA, they said the only way to get the options is to sign the agreement. I don't think many people refused. On the other hand, it's very rare for a company to enforce the PIA unless you really piss them off. Of course the 'really' part varies with how touchy your employer is. Most companies you'd want to work at will be very flexible on dealing with these issues.
Wed 02 Apr | fool for python | Regarding a), I've seen a 'no other employment that would affect this job' clauses but not 'no other employment period'. I wouldn't want to agree to that on principle but in this market, i'd have to consider whether this is a real problem. I would consider any unpaid, non-competitive work on anything else to be a non-issue. Only things that directly affect your performance on the job should be of concern.
Wed 02 Apr | Kyralessa | Am I the only one disturbed by the idea of 'Go ahead and sign, because they won't enforce it anyway?' Presumably because you posted here, (nameless), you're looking for opinions, not strict legal advice (for which you'd talk to a lawyer). My opinion is that (b), on not approaching clients, is quite reasonable of them to ask, but as others have said you need to see that you'll get a list of these clients so you know whom not to ask. As for (a), it sounds absurd to me. Perhaps the clause is actually more specific than what you describe, but if it really means 'You may have no other job but this one,' it sounds outrageous, whether or not it's legally enforceable (and I have trouble seeing how it could be, but I'm not a lawyer). Of course, most people who sign these things do so because they figure they have no other job options...
Wed 02 Apr | Simon Lucy | How much do you want the job? X How important is outside work? - Y The net 'how you feel' result tells you whether you want to work there or not. As for post employment restrictive clauses unless I had direct contact with these clients I'd probably demur at that clause and if they said it was standard decline the offer. But that's me. In the EU, except for some excluded professions, lawyers I think still have non-compete clauses, it would be almost impossible to enforce that kind of clause. Of course it would still be theft if you took the client list with you, and that happens a lot.
Wed 02 Apr | T. Norman | The problem with these damn non-compete clauses is that almost all employers include them in their contracts. So turn down this one, and the next offer will have the same crap. The only good thing though is that the more blatant the restrictive conditions are, the more likely it will be unenforcable - so ironically you may actually be better off by signing a ridiculous contract. Early in my career, I got an offer that came with a huge pay increase (over 50%) but they had an eight-page contract with all sorts of outrageous conditions, including that I was supposed to repay them for every training dollar they spent on me if I left them before a certain number of years, and I was to refund them for lost profit resulting from my departure. I turned them down, but then they started calling me back practically begging me to join, but still refused to change the contract. I reconsidered but I first sought an opinion from a relative who was a retired judge. He said the contract was so laughable that I shouldn't worry about it having a chance in court. That contract cost the company money too, as instead of resigning with notice, people would just vanish from work, sending in an email or letter of resignation days or weeks later. After I was there about a year, they realized it was making people flee and scaring away potential recruits so they re-signed everybody to a new milder contract. If you have concerns, don't ask advice from faceless people on a message board. Pay for 1 hour of a lawyer's time - preferably a labor lawyer who specializes in the *employee's* side of things to go over it with you. Unless you're being considered for a very senior position, it is highly unlikely they will actually change the contract. You'll just have to decide whether to take the job based on the degree of risk. Don't tell your employer about your outside activities; just evaluate the risk of being caught AND being penalized, then go and do whatever you want as long as it doesn't cut into the time for the job.
Wed 02 Apr | Tony Chang | 'I was supposed to repay them for every training dollar they spent on me if I left them before a certain number of years, and I was to refund them for lost profit resulting from my departure' That's a good one. The craziest thing I ever refuse to sign was in a 18 page contract in a tiny font and narrow page margins that I was handed after working at a place for 1 year. One of the clauses was that I was not to speak with, write, socialize or in any other way interact with or have contact with any employees of any competitor. The competitors were unspecified, and I complained and was given to meet with the company's attorney. He claimed the scope of the company's work was 'the IT industry' since our products were 'of a general nature'. I asked what happens if I talk to a competitor inadvertantly on USENET while I'm at home on the weekend reading comp-dot posts and they said 'use of USENET is not consistent with your acceptance of the contract.' And that was just one clause, the whole thing was full of other stuff almost as crazy. So I refused to sign and they fired me because of that. This stalled their development efforts since I was the key person working on several critical systems. Eight months later they cashed out, selling the company to a big name firm.
Wed 02 Apr | Chris | I worked in a place which had the (a) clause in my hiring contract. The job involved a lot of computer-based work. When I asked abou it, I was told that it was to ensure we didn't do too much of the same sort of work (ie computer-based) and wind up with RSI or the like, for which the company would then be liable (in terms of compensation and rehabilitation). It just came down to me notifying the HR mob when I did do external work.
Wed 02 Apr | Jamie Anstice | Something that may or may not be common is for the non-compete portion of the contract to be waived if you are made redundant - my contract has this (although that's because I wrote it). While it may mean that the employer might fire you rather than offer redundancy, I suspect that if redundancies were on the cards then the employer would have more important things to worry about, and leaving themselves open to lawsuits is something companies tend to avoid.
Thu 03 Apr | T. Norman | Layoffs also can hurt the enforcability of those contracts. There is actual case law where the company who sued their former employees after a layoff lost the case based on the fact that they were laid off. The court said that the layoff showed that the employers no longer valued the employees enough to justify the 'protection' of the non-compete clauses. Of course, IANAL, and labor law varies with each individual state, so your mileage may vary.
Thu 03 Apr | . | I might just comment on the references to seeking advice from lawyers. I have actually paid a lot of money to a top law firm, and yet I found I knew more about the issue at hand than the solicitor at that firm. I ended up writing the contract. There must be many cases where people who go this route get superficial advice from law firms. I have also negotiated important contracts directly with lawyers from customer firms, and again found I had a much better appreciation than they did. I get the impression they're used to the other side just agreeing when they say something, even though their claim is often wrong or inadequate. My advice is to do your own research.
Thu 03 Apr | choppy | I second the do your own research comment. I've wasted a significant amount of money dealing with lawyers who didn't know any more than I leanred myself reading a handful of NOLO press books.
Thu 03 Apr | Herbert Sitz | I'm a former lawyer, and I would have to say I disagree with the 'skip the lawyers and do your own research' comments. Of course, you should do your own research. And the Nolo books are great. But a large part of what a lawyer can provide is a good 'feel' for what is legal and what isn't. You often can't get that merely from reading the rules. Of course, you should go to a lawyer who specializes in employment law if that's the question you've got. Law is, if anything, an even broader field with more specialized areas than software development. Just as I wouldn't go to an embedded systems guy if I were looking for someone to develop a database app in VB, you should take care that the lawyer you see has some special expertise in the area you're asking questions about. They may charge more per hour than someone else, but it will be well worth it. Not only will you get better advice, you may well get it more cheaply because the specialist is already familiar with most of the issues and won't have to do as much research. There is a place for general practice/small business lawyers, too. And some of them may in fact have special expertise in employment matters. Just make sure you check before you use them. Ask for references, etc. Be a good consumer.
Thu 03 Apr | . | Herbert, maybe you should go back into business as a lawyer. You would probably be very useful. The lawyer I used charged $450 per hour. His firm was one of the top ones. He was supposed to be an expert in the particular field but I found his knowledge was superficial and, since then, I've noticed similar patterns more widely. I think this whole: 'you need to see a lawyer' thing is part of lawyer marketing.
Thu 03 Apr | choppy | I agree with the last poster. If Herbert was my lawyer I would believe what he has to say, as he obviously has done work in the field. However, just as it is hard for a non-technical person to judge whether or not a programmer really knows what he or she claims, it is pretty hard for a non-lawyer to figure out whether or not the 'small business specialist' lawyer knows what he is talking about until after they receive the bill...
Fri 04 Apr | Herbert Sitz | Well, I agree that it is difficult for laypeople to know what lawyer they can trust. But it's no more difficult than it is for a businessperson who's trying to hire a programmer/consultant for their newest programming project. It's dreadfully easy for programmers to deceive potential clients regarding their actual abilities, and many do. The potential clients could protect themselves by asking for references of past work and checking them out. The same thing can be done by people who are looking to consult a lawyer. I actually don't have any expertise in employment law. But I know enough to be able to identify the important issues. I haven't had to consult a legal expert yet on employment issues, but when I have the need I will definitely consult a lawyer. It will be a bit easier for me since I have friends in the business and more knowledge than most people about how the law business works. But really I won't do anything different from what everybody should do: ask for references to someone who has plenty of experience in the area where I have questions. A lot of it is just knowing what questions are the right ones to ask. Many areas of law are very specialized. A good small business lawyer in a small practice, though, should have good answers for a broad variety of questions that a programmer would run across. In most cities you should be able to get these services for not much more than $200/hour. If you're careful and find the right lawyer, the advice will be as good or better than what you'd get from the average lawyer at a big high-priced firm, unless you're consulting a specialist in the field at a high-priced firm. Even then, I don't really see any reason to go to a big firm with questions like this. There are plenty of good small-practice lawyers specializing in small business issues who I'm sure deal with these kind of questions all the time, for both potential employees and potential employers.
For the 4,532,198th #$*@!!%* time, check CVS!!! | Tue 01 Apr | Chas
Pardon my rant...I simply cannot stand it when people dont check CVS (or your other favorite source control system) before making wild accusations about breaking the build!!! Scenario: I create a new package, build it out, test it, and merge it into the main working branch in CVS. Our supposed senior developer then storms into my office, barking about how I broke the build. I then double-check things, and ask as sheepishly as possible, did you do an update from CVS? The genius starts to say something (again, in that annoying barking tone), and then starts to stutter a little. Uh, well, no...ah, well, lets see if that fixes things... He disappears for a few minutes. I go to check up on him, and he grunts something about everything being in order. This is literally the fourth time this has happened in four days. Im seriously tempted to barrage him with emails every time I commit anything into CVS, and maybe hell get the picture. Im sure some folks will say that its only courteous to notify the team when you commit something, but doing so in a team our size would cause everyone to lose an hour or two a day dealing with the email load. Sometimes people should take a minute to think about what theyre doing before blaming others.
Tue 01 Apr | Mark Hoffman | I would tell him flat out that you don't appreciate his tone and he darn well better check CVS next time before storming into your office and wasting your time.
Tue 01 Apr | Andrew Murray | At my office, we have a script run on commit to mail everyone on a list about cvs checkins. Everyone on the list just runs filters on the subjects in their favorite mail client to avoid mailbox clutter. Seems to work well and helps to alleviate this kind of frustration.
Tue 01 Apr | Lydia | I think it is reasonable to expect team members to check CVS before doing a build, and I agree that the e-mail headache is not worth it just to coddle the one or two people who won't get with the program. The storming in and yelling at you is wrong on several levels, but I'm not sure the direct approach (confronting him) would work, since it is likely he'll get offended and not listen to your concerns. One solution might be to email him and say something like 'I've noticed that there have been a couple times when something I committed close to a build isn't picked up and breaks the build. Would it be helpful if I sent you an e-mail each time I commit something?' This approach (a) puts it back on you, (b) puts the burden on you and (c) points out how silly such a scheme would be by laying it out in plain terms. Either he'll get the message or he'll ask you to email him each time, which takes you two seconds and should ensure that he doesn't bother you in the future (because now he has no excuse). Good luck - what a nasty situation!
Tue 01 Apr | Chris Tavares | How'd the other guy get only some of your changes but not all of them? He'd need to do a cvs update in either case, right? Also, is this talking about daily builds, or an individual build. The daily build system should be set up to do a full get of all files every time. Don't try to get just the changes; we tried that route once, it wasn't pretty.
Tue 01 Apr | Tj | It might be one of those junky incremental compile tools that IDEs have. 'Oh, um let me compile this one file...' This was the culprit behind most false accusations I've seen.
Tue 01 Apr | Chas | Chris, I gather that he does updates selectively, perhaps where *he* thinks that an update is warranted. I think that this is connected with modifications that he makes that are in conflict with changes that have already been committed; he gets an update of the problematic file, fixes the conflicts, but never gets other changes in other files.
Tue 01 Apr | George McBay | It is pretty common to get a 'selective update', using any SCC tool. Generally this happens on file checkout. Say you're using a development snapshot of the code as it existed two days ago -- checkout a file and that file will be updated as of now, the rest will not. Try to compile now, and if the changes in the checked out file rely on changes in other files, things fall apart. I agree that one should always do a full local update before making 'build-breaking' accusations. If for no other reason than to avoid looking like an idiot. Storming in on someone and shouting accusations is completely unprofessional work conduct regardless of the reason...even if you were at fault.
Tue 01 Apr | Chris Tavares | He updates where he things it is needed. I alway roll my eyes at people like that. He has to guess. The tool KNOWS EXACTLY what's changed. Why isn't he using the damn tool and saving his brain for the important stuff? Whacko. Just Whacko.
Tue 01 Apr | Brad (dotnetguy.techieswithcats.com) | George, This 'check-out before editing causes compiler errors' make me happy I use CVS (which doesn't have an explicit 'check-out' step that pulls you to the latest version). :)
Wed 02 Apr | Vincent Marquez | yeah, is he either updating only a portion of CVS, or are you commiting bad code then recommiting a fix? I don't think the latter is his fault, (although he should be more polite) but if he didn't update everything, and this has happened more then once, he needs to go back to college (oh wait, they don't teach you that stuff there. :-)
Wed 02 Apr | | Chas, just print out something in big letters which says 'Have you checked CVS?' and show it to him when he barges in. Then when he leaves hold up the second piece of paper to his back which says 'F*ckwit. That's the Nth time.' (just keep adjusting N with a red marker pen). (Childish? Yes. But funny, particularly if you share your office with other people.)
Wed 02 Apr | Colin MacDonald | > I'm sure some folks will say that it's only courteous to notify the team when you commit something, but doing so in a team our size would cause everyone to lose an hour or two a day dealing with the email load. Did you know that you can configure CVS to email out all commit messages? You need a line in your CVSROOT/loginfo file like: ^ProjectName /usr/local/cvs/CVSROOT/sendcvsmail %s mailinglist@yourdomain.com There should be some documentation on this in the depths of cvshome.org.
Wed 02 Apr | Srdjan | I guess one should get latest versions of everything every morning -- I have task scheduled to run every morning in 4:00 to sync my copy of sources with source control database... Off course, this doesn't update files I checked-out, but it is not a problem because it very rarely happens that two developers are working on same source file... Plus, if you have lot of build breaks and similiar situations during development, it usually means that either a) someone didn't assigned tasks properly (meaning two or more developers are working on same component); or b) someone did poor job designing whole thing and left components without clear interfaces -- so it forces developers to change them on the fly...
Wed 02 Apr | George McBay | Colin, While that is a nice feature of CVS, I don't think it addresses his stated problem -- in fact it probably makes it worse. I don't think he was complaining about having to send the email out, but rather having everyone deal with the incoming spam when the project is experiencing heavy activity.
Wed 02 Apr | Steven C. | With a bit of work, however, you can get check ins mailed in digest form to all the developers in your group, so that as a general part of the work day you do a once-over of what your coworkers checked in yesterday. Admittedly, this wouldn't help the incident described in this thread, but its worth keeping in mind if you want some form of informing people what's being checked in but don't want to spam them all the time. Srdjain (spelling?): the large project I work on has some components which are largely seperate and some areas which any number of people might need to touch for various reasons -- so I've run into this exact problem with some regularlity myself. I just suffer a full update and rebuild, so *shrug*
Wed 02 Apr | David Clayworth | I'm going to presume that it's your programmer's local build that breaks. Also that the reason he sees a failure is that someone (in this case you) has made a change so that when he compiles, a discrepancy between code in the repository and code he is working on causes his local build (which worked fine ten minutes ago) to fail. While I'm certainly not suggesting that rants and accusation are justifiable, if the scenario I described above has happened four times in four days I wonder if the source repository is being updated a bit too frequently, or maybe that there is too much interconnection between modules.
Wed 02 Apr | Steven C. | As long as the code you check in WORKS, there is NO such thing as 'too frequent source checkins'. Well okay, maybe there is -- but I sure can't think of why it would be bad in general. Care to give a reasonable example?
Wed 02 Apr | Simon Lucy | Ummm well you should check out test (fix collisions) then check in and if its a critical section lock it. But as the original point was that it was a tested build, then the point is true and is always true, check out before doing anything.
Wed 02 Apr | Srdjan | Steven C.: Spelling is correct, my name is Srdjan :) (actually, Srđan, but I live in US, where 'đ' doesn't exist and alternative spelling is 'dj').
Wed 02 Apr | Srdjan | Joel, it seems that your forum doesn't support Unicode (See my post above)...
Wed 02 Apr | Martha | [Testing: đ is a d with a horizontal line through the ascender.]
Thu 03 Apr | David Clayworth | 'There's no such thing as too frequent checkins. Can you give me an example?' I'm assuming here that the way the team works is that they check out part of the code they are working on, and when they do a local build the make local object code for the routines they have checked out and link against central object code for the rest. Now for any method you call that you have not checked out, if its interface is modified by someone else, your local build is going to fail the next time you compile. You are going to have to fix this by stopping what you are doing, making modifications to deal with the problem and then going back to what you were doing. If you are lucky running CVS update or similar will deal with the problem. In either case its annoying if you are in the zone. I would think that if this problem is happening once a day then you could either batch up the changes so that you only checked in once every few days (obviously not possible if other people need the fixes) or possibly your classes are too tightly coupled. I'm not saying that either of these are necessarily true in Chas' case. In any case it doesn't excuse a daily rant. Just a suggestion.
Thu 03 Apr | Steven C. | Interesting -- I suppose I'm blinded by the way we operate where I work: everyone has their own local checkout of the source. So presuming you update your entire checkout, you won't have any problems compiling your changes. The most you might have to do is update before you commit (which is good practice anyway) and make sure someone else hasn't changed an interface you were relying on -- although if you get emails when things are committed, you can just make sure none of the files you utilize were changed. In any case, I can see why in the system you describe frequent check ins are to be avoided. I must say I prefer my system though. :)
Thu 03 Apr | Brent P. Newhall | We solved this problem -- if I understand the problem -- at my last company by having 'clean build times.' All check-ins had to be during the first half of every hour; during the last half of the hour, any complete check-out of the application should result in a clean build. It worked reasonably well. There were times when folks forgot, but that was fairly uncommon.
Fri 04 Apr | David Clayworth | Steven C I prefer your system too, and we use it. If we didn't we would probably go to a system where you partly linked against a clean version that was built overnight, rather than whatever was most recently checked in. That way all your pain occurs once a day first thing in the morning. I'm presuming Chas works the way I described because I can't see how he could have the problems he did otherwise - unless his 'senior programmer' comes and rants every morning after the overnight builds, in which case he probably needs some serious behaviour modification. Incidentally I believe it is possible to merge too frequently for other reasons, including the overhead involved with reviewing code. Maybe we should start another thread?
Beards and glasses | Tue 01 Apr | ODN
The recent sex thread reminded me of a comment Joel made once that 0.01% of people can figure out Microsoft ATL programming, and all of them, without exception have beards and glasses. (3/4 of the way down the page) http://www.joelonsoftware.com/uibook/chapters/fog0000000064.html He even links to a picture that proves his point: http://images.amazon.com/images/P/1861000111.01.LZZZZZZZ.gif I know it was meant to be humorous, but part of the humor comes from the feeling that its fairly accurate. Am I way off base here, or is there some correlation between beards, glasses, and highly technical subjects?
Tue 01 Apr | Philo | ATL -> geek geek -> more concerned with code than appearance Less concerned with appearance -> glasses. Because contact lenses require too much maintenance. I think as Lasik becomes mainstream you'll see the geek->glasses thing go away, since most geeks can afford laser surgery. :-) I'm not so sure about beards - maybe a counterculture thing, maybe starts as 'I don't feel like shaving this week'? Philo
Tue 01 Apr | Chris Tavares | Well, I wasn't on the cover of that book, but I did figure out ATL programming. I don't have a beard. I do wear glasses, because contact lenses hurt too much (and cost a small fortune; bad prescription).
Tue 01 Apr | trollbooth | These are the things I KNOW because I have observed them and made a scientific analysis: VB programmers wear kakis and cheap shirts they got from devcon. Java programmers wear loose painters pants and have hairdoos like sideshow bob. C++ programmers wear hiking boots and ride bikes to work. C programmers have pony tails and links on their hompage to EFF, freedom for Tibet petitions, and the jargon file. Web Designers wear shiny shirts and buy cars that are way too expensive. They occasionally don horn rimmed glasses and sip crappaccinos. Marketers are similiar to web designers except they have no actual skills and spend most of the day in FRIENDLY YELLING sessions on the phone. CEOs are in way over their heads and can only remain cool because they wear the same cool-suits that race car drivers and astonauts wear. Accountants drive Volkswagen Passats and leave exactly at 5:00 every day with no delays on the way to the car. Any delay will be debited from your account. Lawyers wear trenchcoats to cover up their shotguns full of whup-ass. Pray you never see one of these. QA personnel have absolutely no care what so ever about software. A data entry team member will kill you if you look at them sideways. Be careful of these people. They don't talk much but we know they all hate their jobs.
Tue 01 Apr |        | Most excellent post trollbooth. May I add that AS/400 programmers wear short sleeve button up shirts (with collar), polyester pants (before it was alternative), and bifocals at a minimum. Often trifocals.
Tue 01 Apr | choppy | don't forget: hardcore wizard unix sysadmins smoke, have tattoos, curse like sailors and generally seem more like they should be working as motorcycle mechanics bad unix sysadmins go to the renaissance faire, are hugely fat, wear black jeans, elfish boots and a 'got root' t shirt NT sysadmins wear cheap khakis, cheap shirts, and look like guys that coach the church basketball team on weekends serious network administrators kind of look like NT administrators, only they smoke like the hardcore sysadmins
Tue 01 Apr | Mark Hoffman | I couldn't grow a full beard if I wanted to, but I do wear glasses....Having someone make incisions into my eye after signing a release form that states 'I understand I could go blind from this procedure' doesn't appeal to me very much. I once worked closely with some Unix folks at a Verio office in Dallas. Their 'lair' was a huge dark room with the only light coming from the monitors and the occassional desk lamp. They seemed to be divided into two groups: 1. The fat ones with beards, glasses and suspenders. These were typical older and held more senior positions. 2. Younger ones clad in black, often leather, with tatoos and so many piercings it looked as if they had fallen face first into a tacklebox. There were one or two that didn't fall into either category, but they were the exception to the rule.
Tue 01 Apr | B# | ...hardcore wizard unix sysadmins smoke, have tattoos, curse like sailors and generally seem more like they should be working as motorcycle mechanics bad unix sysadmins go to the renaissance faire, are hugely fat, wear black jeans, elfish boots and a 'got root' t shirt... This is absolutely frightening! I KNOW these guys.
Tue 01 Apr | GP | I'm amazed. I happen to be a C++ programmer, and ride bikes to work. I'm not sure what 'hiking boots' are, but I may wear them. So much for the stereotypes :-) I should try and meet other C++ programmers, to see what they look like. Oh, and I used ATL a couple of times - I can grow a beard 'on demand'.
Tue 01 Apr | Tony Chang | Zounds troolbooth, you've really laid it all out there. It's true. All of it.
Tue 01 Apr | trollbooth | GP, These are hiking boots by my definition: http://www.fogdog.com/product/index.jsp?productId=789486 I bet you have those type OR a pair of Doc Martens. If I am wrong I will update my stereotype ;-) I wear Doc Martens btw; all that I said above is total BS but funny anyway. It's wierd how the brain tries to classify people and things into predefined groups.
Tue 01 Apr | FGWB Observer | A guy that I worked with dubbed the term 'fat guy with beard', or eff gee doubleu b (FGWB) - to describe one type of stereotypical hard core techie. The inspiration for this was the imagery connected with smaller technology company brochures from the mid to late 1980s that showed a krusty, fat, bearded guy (almost always with glasses) glaring back into the camera as he sat in front of a stack of 17 monitors on his desk. The beard *had* to be the bushy, unshaven, uncivilized type that resembled advanced pubic or chest hair - a neatly trimmed goatee doesn't count at all. This kind of 'candid workplace photo' inserted into company brochures was always intended to denote technical competency and solidity. (By contrast, a somewhat larger company brochure of the time would either show a stock photo of white shirted office types in a NASA control center type scene, or some clip art of generic PCs and mainframes with tape reels. The point seemed to be that a larger company was always more than its FGWB staff members.) It was generally assumed by managements in that time that the fatness, the beard, and the 17 monitors were a sort of preordained set of genetic and behavorial markers that always accompanied high technical competency and seniority. No beard, or normal weight, or relatively few monitors - ALWAYS denoted a lightweight poseur. Absolutely no exception. And I really think it was true. I don't make this stuff up. I can't.
Wed 02 Apr | The Real PC | [It's wierd how the brain tries to classify people and things into predefined groups.] It isn't weird at all; that's how the brain works. Our conscious minds can over-ride the stereotypes to some extent, but the subconscious mind depends on a system of categories, in order to make sense of anything. The way people dress is really a communication system, and can be studied by semioticians. Our decisions about clothes and hairstyle result at least partly from our ideas about how we want to be perceived. Even a person who dresses carelessly can be sending a message - 'I am too smart to waste time worrying about clothes.' On the other hand, careless dressing can mean the person is mentally ill or poor. You have to consider various factors. Also, the stereotypes constantly evolve and change. Long hair on men doesn't have the same meaning now as in the 60s.
Wed 02 Apr | Mike | Is there any place in IT for those with the chain-drive billfolds?
Wed 02 Apr | GP | Trollbooth, I must confess that I have hiking shoes (I do not wear them at work though), so your stereotype still holds, as far as I'm concerned. Actually, my daily shoes look more or less like these : http://www.decathlon.co.uk/ukstore/produit.asp?int%5FPfId=302330&int%5FDeptId=504482&int%5FDeptPereId=426&mscssid=C1R6Q9KWAUVQ8PXJAC339G63KLMWA6S0 If you think you're a free individual, don't read JoS forums... (By the way, same style of shoes for my fellow Java programmers -- and they ride motorcycles).
Wed 02 Apr | trollbooth | ooh GP those are dangerously close to Dr Martens. I think I might have hit close to the bulls eye on that one. My Doc Martens look very similiar to those. One of my fellow Java programmers also drove a motorcycle, a Honda Interceptor. So let me make a guess on the type - I am guessing not a Harley but maybe a ricer Harley like a Honda Shadow style cruiser OR a laid back sport bike like a Honda Interceptor. Extreme rice bikes aren't comfortable for long rides so that wouldn't appeal to their sense of logic for an all around value bike BUT they still want to haul ass so somewhere in between. Some would opt for a BMW, Ducati, or Aprilia simply for the name but not a Java programmer. Indeed those types are reserved for Web Designers and script programmers (asp, php, etc).
Wed 02 Apr | Too Ashamed to Use My Regular Name | This is very disturbing. In the last five years (since I entered the IT industry and started programming), I've gained sixty pounds. And I have been thinking seriously about growing a beard lately.
Wed 02 Apr | Tony Chang | 'Long hair on men doesn't have the same meaning now as in the 60s.' Yikes! Clue me in so I know what I'm projecting! I had a buzz cut by whole life until i met my girlfriend -- she thinks long hair on asian dudes is sexy so I've let it grow out and found out she's not the only one who thinks so -- I get hit on a lot more now, which she finds amusing.
Wed 02 Apr | HeyCoolAid! | Humm... I do web design, multimedia, and C++ but I don't seem to fit any of these stereotypes. I must be that 'there's an exception to every rule' person. Being female, I'm already an odd-ball so what the heck! ;)
Wed 02 Apr | flamebait sr. | Hmmm.. I resemble none of these steriotypes. I do not wear glasses, have a beard, or dress in any particularly offbeat way. Maybe I'm just not cool enough. Maybe this will come in time or something. But at least I've been to a party where there was more than one non-transvestite and non-scottish guy wearing a kilt.
Thu 03 Apr | Ged Byrne | I think the Tolkien has a lot to answer for with regard to all those beards. They all want to be Gandalf. I've notices that most of these sysadmins also name there servers after middle earth entities, or possibly Aruthurian legend. For example, our bearded sysadmin has provided us with Lancelot and Parcifal. At a previous gig if was Bilbo and Frodo.
Thu 03 Apr | Ged Byrne | Come to think of it, the generation divide between beard and leathers described above could show when required SF&F reading shifted from Fantasy to Cyberpunk.
Fri 04 Apr | GP | Trollbooth, sounds you're right again, these Java programmers drive a Honda and a Suzuki.
webapp design issue: many pages, or one page? | Tue 01 Apr | choppy
Ive built a few web applications, and am building one now. Im also taking a look at the demo of FogBUGZ. Id like to get some comments on what people think is the best design strategy for building out the pages in a web application. Do you use many pages? I.e.: /index.jsp then login at /register/login.jsp then get directed to /admin/index.jsp then to log out link to /register/logout.jsp Or,do you embed the logic into a servlet, (or equivalent microsoft paradigm) that is acted upon by one page, with different parameters telling it what to do i.e: /default.jsp then login at /default.jsp?pg=pgLogin then get directed to /default.jsp?pg=pgAdminMain then log out link to /default.jsp?pg=pgLogout I usually use the first approach, but Ive noticed that FogBUGZ uses the second approach. I was going to refactor my current code (not much there yet) to use the second one page approach. It intuitively seems like it would be easier to maintain , because there are fewer files. However, Id like to get feedback on the pros and cons of each approach. Thanks!
Tue 01 Apr | Li-fan Chen | Actually just because you have one single index.asp doesn't mean you have very few files. In our projects we have a single access point (default.asp) but everything is broken out to 1) aid creatives in internationalization (#include EnglishVariables.asp) 2) aid webbies in templating (#include processing.asp) 3) aid dbas in data access (#include data.asp) In Microsoft Commerce Server 2000 they really take it to an extreme where you end up calling main() which calls all the helper functions in ungodly numbers of asp files and components. Everything is modular.
Tue 01 Apr | Li-fan Chen | if you do your own session tracking (anti hacking anti google) you can always break the initial cookie-handling/challenge validation/failed challenge redirection/user flow state machine determination into a security.asp and include it for execution at the very beginning. Normally security goes first.
Tue 01 Apr | Li-fan Chen | Just a side note, SlashCode/ACS/OpenACS is similar, all the same spagetti mess.. we could all use a little aspect oriented programming... *wink*.
Tue 01 Apr | Li-fan Chen | Technically you might end up with a hybrid system where you get the best of both worlds. For example we do a thing where reasonably named index.asps call the same main(). And main() would deal which each function like a portal.. calling helper functions that takes on a domain once the user flow state machine determines which domain you should take in this one single access (you can do webmail, you can do discussion groups, you can do reporting... you can admin.. so on) and each of these helper functions can reside in separate files.. in a folder like scripts/ doing things like: news.asp admin.asp discuss.asp reporting.asp and so on.. and the access pages (used in ACTION tags in user viewable pages) would point to: news_en.asp or news_fr.asp and so on... and all of them do the includes that includes all the actual scripts... -- David
Tue 01 Apr | Bill Tomlinson | The approach that seems to be popular today is the 'action controller'. In general it goes like this: The path and page part of the URL is just a label for a particular action (e.g. /login, /cart/checkout, etc) and doesn't map directly to any particular file or code. Instead you've configured your web application server to send all pages requests to one processor (the action controller). The action controller then decides what bit of code should execute the request, usually based on a configuration file, and passes off processing to that code (perhaps after doing some other work). The advantage is that you've got a layer of indirection between the URL and the code that can be much more easily changed. This is, of course, sort of like the original poster's second example, but abstracted out in a computer programmers sort of way. The original poster mentioned JSP files and servlets, so I'll point out that the leading action controller framework for Java web applications is called Struts.
Tue 01 Apr | Li-fan Chen | What he said :D
Tue 01 Apr | na | Let's say you write a huge console application. you can definitely do it with one main() function and zillions of parameters. I think one of the main reasons for fewer physical webpages on the site are the following: - psychology -- I was able to solve it in 2 files :) - easier 'programmable' templating - easier parameters checks - and probably lots of others. Of course there is no word without cons.
Tue 01 Apr | Brent P. Newhall | I prefer to have separate files for separate functions, as that cuts down on the amount of code I have to search through to find the function I'm looking for. It elminates guesswork -- rather than having to remember the name of a function so I can perform a search on it in a file, I can just skim through the half-dozen functions in the file. You can do this in the other model too, so that the main page includes a whole bunch of other pages, but in that case I find that the central processing page turns into a big switch() statement. I find that ugly and unnecessary, when I can just do the processing on different pages. There also might be a performance impact; the server might be able to serve up a dozen different pages if they were all requested simultaneously, while it might have to serialize access to one central page.
Tue 01 Apr | Brad (dotnetguy.techieswithcats.com) | It's all the same. It's all dispatch. Dispatch at the file level, dispatch inside a single file, dispatch from a dispatcher called by the system without even having a file there. Whatever makes you happy. *shrug*
Tue 01 Apr | Brad (dotnetguy.techieswithcats.com) | Oh, and there's one minor advantage to a flat dispatch system: it's easy to make relative URLs. That doesn't necessarily mean everything goes through 'default.asp', but rather that everything resides at the same 'level', ala 'http://foo.bar/login', 'http://foo.bar/list', etc.
Tue 01 Apr | Bill Tomlinson | Brent mentioned, as an aside, performance issues about serialized access to a central page. It's my understanding that all the major web application environments operate as inherently multi-threaded applications. That is, each page request is a separate thread of execution through the page code. So as long as you don't explicitly serialize access, the two design approaches we're discussing don't have that type of performance trade-off.
Tue 01 Apr | Bill Tomlinson | Well, Brad, it's true that it's all dispatch. But that's like saying 'it's all ones and zeros, do whatever you want'. At some point we do have to make a design decision, so what's wrong with discussing the pros and cons of various approaches?
Tue 01 Apr | Steve Barbour | Fusebox. It's a standarrd methodology for writing web apps. In a nutshell your app is fuse, and it may have multiple circuits (actions) within it, and it maight also call out to others fuses. You don't put it all in one file though, you break it out into subcomponents and call them as needed. I'm horrible at explaining it so go check out the site at www.fusebox.org . It's done wonders for our internal development, as it makes web apps much easier to test and makes it a lot easier to re-use components as well. It was originally developed for Cold Fusion (thus the name), but it works for other languages as well.
Tue 01 Apr | PatternGuy | You might also want to check out the Core J2EE patterns catalog at http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html especially the front controller and dispatcher view patterns.
Tue 01 Apr | Stephen Jones | One minor point but all the .asp and other systems for generating web pages now make it a huge mess to save the pages to disk, as they are all called defautl.asp or something equivalent. Still, I suppose saving to disk is jurassic anyway.
Tue 01 Apr | Wayne | I was looking thru the Fogbugz code recently and I noticed that most requests are sent to the default.asp page which acts as a dispatch. To implement this model, they #include almost every single ASP page in default.asp. This means that IIS has to evaluate all those templates on every request to default.asp, even if only ONE or TWO functions are actually called. Needless to say, I think this is a bad design. Personally when I make ASP applications, I only include the classes and modules that I use on a page in that page.
Tue 01 Apr | Wayne | Furthermore, they use a LOT of ASP Tags (<% %>) in the pages which makes IIS have to parse them out before evaluating the code in between them. Don't you think it's better to do all the logic in between one set of ASP tags and then output all the variables in the page itself? I guess there are times you have to do loops in ASP to make a table, but that's why I use XML Databinding on the client side instead. It's much more efficent, but then you're limited to Internet Explorer 4.0+. The only output I ever have to put on a page is an XML Data-island that the client-side script then handles.
Tue 01 Apr | Li-fan Chen | Wayne > To implement this model, they #include almost every single ASP page in default.asp. This means that IIS has to evaluate all those templates on every request to default.asp, even if only ONE or TWO functions are actually called. The best thing to do is to pick your performance tuning battles. I don't think this model is the fastest, but there are ways to scale this software in ridiculous ways without worrying about this particular inefficiency.
Tue 01 Apr | Thomas Eyde | Do you feel FogBUGZ is too slow? If not, then the design is fast enough and it doesn't matter if it's not as optimal for speed as it could have been.
Tue 01 Apr | Philip Dickerson | This doesn't address the one-page/many-pages question, but is at least vaguely related to page design strategy. Many approaches, including (especially?) the 'default' approach with ASP (and still to a large extent with ASP.NET) can easily lead to pages with heavily intermixed HTML and script code, presentation and business logic, etc. This can cause inefficient server processing of the pages, and also makes it more difficult to maintain/change the pages. The code outline shown further below is a preliminary sketch of a template structure that attempts to separate some of these functional areas into separate files that can be somewhat independently maintained and modified. This template structure is based on XHTML and CSS (and XML/XSLT), moving all of the presentation markup (FONT, COLOR, etc tags) out of the ASP page into CSS and XSL files. (I started this as a proposal for work, but haven't had time to take it any further.) The page template shown below assumes a menu at the top of the page, but the template can be easily re-arranged for a left-side menu or other styles. Variations can be created if a site contains several different major categories of pages. A more complex template with multiple different sections in the page could also be created in this same conceptual style. The template as shown is intended for recent browsers (IE 5 and 6, Netscape 6, Opera 7, etc) that substantially support W3C web standards. The intent is that the content will still display in older browsers, but it may not be visually styled in the same way. This approach allows the page style and appearance, menus, and content layout and style to each be developed and maintained separately (and optionally by different people). The 'inner content' (the table of data, for example) is still the least separated, but once the basic style for this area is defined or created as a sample by a web designer in pure HTML, it should be relatively easy to change it (in code or CSS) in the future (especially if it uses CSS style classes - for example, ...... instead of specific HTML attributes
......). ========================================= Page.asp -------- <%@ Language=VBScript %> <% Option Explicit %> Page Title Goes Here (or call a function if the title is dynamic)

Section Header

<% ' Call function(s) in ASP file (that contains only VBscript ' code and calls to COM components, no embedded HTML) to ' generate this section of content for the page. ' This could be, for example: Response.Write TransformXML(XML-read-from-database, XSL-for-this-set-of-data) %>
========================================= The included files contain items such as the following: (Note - the file names shown are intended to represent the purpose of the file, not the actual file name, and may also represent more than one file.) setup-and-variables.asp ======================= Response.Buffer, Response.Expires, cache control, any page-level variables, perhaps authentication checking, etc Server-common-functions.asp =========================== Server-side (VBScript) functions that are common to all (or most) pages - such as data retrieval functions (or calls to data layer components or business layer components), XML transformation, etc. Server-functions-for-THIS-page.asp ================================== Server-side (VBScript) functions specific to this page meta-and-stylesheet-links.asp ============================= HTML META tags and stylesheet link tags, including stylesheets for printing, and alternate stylesheets JavaScript-for-all-pages.htm ============================ Client-side JavaScript functions that are common to all pages JavaScript-for-THIS-page.htm ============================ Client-side JavaScript functions specific to this page UI-header-and-menus.asp ======================= DIV blocks containing common sections (logo, navigation menus, etc) at top of page UI-footer-copyright-etc.asp =========================== DIV block containing common section (copyright notice, etc) at bottom of page
Tue 01 Apr | Philip Dickerson | Regarding the comment: 'they #include almost every single ASP page in default.asp. This means that IIS has to evaluate all those templates on every request to default.asp, even if only ONE or TWO functions are actually called.' I'm not sure that this is a performance problem. I did some performance testing some time ago with different styles of building pages (using IIS4, so there may be some differences with IIS5). Large numbers of include files (with many lines in each file) had an extremely small impact on performance if the includes were all script code, preferably all functions not inline code. The first time that a page is accessed, it is interpreted and cached (with all of its include files) and the unchanging parts don't need to be interpreted again on subsequent accesses. The number of times that the context is switched between HTML and ASP (with the <% ... %> syntax) had a much larger effect on performance than the number and size of include files. The next largest performance impact was the number of times that Response.Write was called.
Tue 01 Apr | Brad (dotnetguy.techieswithcats.com) | Bill wrote: 'At some point we do have to make a design decision, so what's wrong with discussing the pros and cons of various approaches?' Mostly because there's too many variables, not the least of which is the web technology at hand (fully interpreted, pseudo-compiled, compiled, JIT compiled, etc.) and the architecture of the web site. I wasn't being flip with my first post. It really IS just dispatching. You can let the OS do it based on filenames, you can let the web server do it based on mappings, or you can do it in your own code. It all works out the same in the end.
Wed 02 Apr | Vincent Marquez | For those of you suggesting the fusebox method, have you ever had to debug a site done entirely in it? I remember it fondly as the Worst Month of my Life. To me it seems like microsoft and java have completely different ideas about how to do this. Our current application is basicly a few controler servlets that are always called, and then pick which parameters and JSP file to server up. It works pretty well, and it lets your pages have inheritence while still having the ease of use of a JSP. Im fairly new to the java world, but I think its a pretty standard practice.
Wed 02 Apr | Matthew Lock | How would the fusebox method work out if you had mutiple developers working on different areas of the site? For example I use the many page method, and often work with another developer. We then divide up which pages we are going to do. It seems to me that it would be much harder to do this using the fusebox method as we would both be working on the same file.
Wed 02 Apr | Steve Barbour | Actually, with fusebox you would probably never work on the same file separately. The fuse has no display code or anything similar in it. Basically it's a case statement. For most of my stuff basically the main fuse parses out whatever parameters (either URL encodes, formsubmits, or session stored info) and based on that calls other files. All the files are broken out by what they do. For action foo, the fuse will first call applocal.cfm which contains all the application wide variables and 'stuff' and is always called, then it might call qryGetAllFoosFromDB.cfm which is a query (and may be called from other circuits as well), then it might call dspFoo.cfm which is the markup for the page. That's a really simple example obviously, but you get the point. So while you might be working on action foo, your partner can be working on action bar. Also, there is a spec for documenting the code, called FuseDocs, which basically says that you need to put a big block of comments at the beginning of each file to describe the inputs it expects, what it accesses, what it does and what it returns, which should be a really obvious idea, but hardly anybody does it. Usually, we'll sit down as a group with the spec (such that it is) and write the main fuse first, that gets us all on the same sheet as far as naming goes and also gives us all a good idea of what files are going to be easily reusable (queries tend to see a lot of reuse, as do portions of the presentation code), these we lock down early. Everything else sorta falls into place after that. Also, remember that if necessary you can always break things out into subfuses and call those as necessary. As far as debugging, well it sure beats the interleaved presentation and logic that I find everywhere else, and it tends to encourage more code re-use than the standard 'big ole mess o' code' method. Anyway, look at it, and if it makes sense for what you do try it, if it doesn't then don't. I'm not religious about it so long as I don't have to maintain your code.
Thu 03 Apr | Bill Tomlinson | Okay Brad, I'm just not understanding your point. You seem to be saying that the web application will be funcationally the same while running regardless of what level the dispatching is done it in the code. And while I'll agree with that point, it doesn't mean that the programmer doesn't have to decide what level to do dispatching in the code. And while it doesn't matter from a machine language perspective, it certainly matters from a development perspective. Different approaches to the dispatching issue will require different approaches to coding the application. I really don't understand your contention that it simply doesn't matter and isn't worth discussing. It's a design decision that needs to be made and does have an impact on how you develop the web application. It may not be the most important decision that the developer needs to make, but it still needs to be decided and is worthy of consideration and discussion. Now, you also seem to be making another point that we don't know enough about the original poster's web application environment and requirements to tell him what the best for his application is. And I'll agree with that. But I think that this discussion has focused more on explaining the different options to the original poster and the general pros and cons.
Fri 04 Apr | Brad (dotnetguy.techieswithcats.com) | My point was simply that it really isn't that important a decision to discuss it in such general terms. Each teams makes the decision that makes sense for them. There is no one 'right' decision. The post about 'fusebox' (which I've never heard of) seems to hit to the heart of the matter. If you intend to do internal dispatching, then your entry point -- 'default.asp' or whatever -- is simply just a dispatching service. It doesn't do anything else to deal with the call except hand it off to the entity that does know how to deal with it.
UI bugs | Tue 01 Apr |
In another thread someone said: [quote] here is what happened... - Incentives for every bug closed. The GUI presentation people loved this idea. The A/R people hated it. While GUI had more requests outstanding, the A/R peoples were far more time consuming to fix.[/quote] Is this normal? Are (G)UI bugs more common than bugs in other parts of a system (and if so, why), or is it just that the UI is more visible (no pun intended) than those other parts and therefore bugs in the UI are more obvious? I have a couple of ideas about this myself, but I dont want to poison the water so I will post again a little later when people have had time to think about it themselves.
Tue 01 Apr | Simon Lucy | As has been said a number of times, to the user the UI _is_ the application, its behaviour and presentation of that behaviour. The underlying guts of whatever an application does is frequently logically simpler with simpler data states and logic paths than a UI which has to sift, select and validate all the possible combinations of user input into something which matches the user's desires and the application's requirements. That's not true for all applications but its likely to be true for any application with a UI more complicated than a text box and a button that says 'OK'.
Tue 01 Apr | | Simon - your answer is along the lines that I have been thinking. Here are my thoughts, for what they are worth. 1) The interactions between all application features come together at the UI, and those interactions might well not be 'designed', which results in 'undefined behaviour'. This is basically your logic paths comment, Simon. Nice to see that I am not the only one who believes this to be the case. 2) Testing GUIs is _hard_ (I found http://c2.com/cgi/wiki?GuiUnitTesting this morning, which seems to back this up). I don't mean things like the random mouse click test, I mean: a) Writing automatic unit tests is so difficult as to be almost impossible. JFCUnit looks like it might be useful, but since it is for Java & swing and I use C++ & MFC, not in my case. In fact the link I provided above seems to suggest that there is not really a complete answer to this problem, but I'm still reading. b) If the we believe 1, then the chances of imagining and (manually) testing a greater number of possible actions and interaction than in non-UI software is slim to none. 3) As a result of 2a, refactoring is fraught with danger (because one cannot automatically test those small steps). 4) Reliance on external libraries is almost obligatory, yet they are often not flexible enough to account for user requirements (because, for example, they try to force a particular model on the implementation and that model is flawed - yes, I am thinking of MFC almost-but-not-quite MVC here amongst other things). So much for that. It doesn't help me with the next step though, which is what to do about it. Maybe I should just stop implementing UIs.
Tue 01 Apr | | Brute-forcing every perm of operations to test completely is a daunting task. Rearranging n operations and trying them in every combination is n!
Tue 01 Apr | igor | As someone mentioned above, it's much harder to do automated testing of GUIs. You can do basic smoke tests but it's hard to get the same coverage you can get for a business logic componet with a set of unit tests. I've used httpunit extensively on a previous project and found that benefit/cost ratio for GUI testing was very low. I believe that this is because code interfaces tend to be more stable than UI. The other reason UIs tend to have more bugs is that you wind up having spelling/grammar/wording issues that in code are caught by the compiler (sort of). Usability is also a more subjective area than software design. Everyone's got an opinion on how UI should look and flow. Finally, I've found that a lot of managers think UI work is much easier than business functionality. So these managers will assign their best developers to the 'back end' work and put less experienced people on UI work. The end result is that UI code winds up having more bugs.
Tue 01 Apr | Rob Daugherty | I think it's relatively easy to get a UI up and running and relatively hard to get all the little details right. To some degree, this is true for all parts of an application, but particularly so for the UI, because there are so many visible details and so many interactions between the parts. For example, you might hook some toolbar buttons to some actions in a few minutes, but then spend days getting the buttons to appear enabled or disabled at the appropriate times. There are scores of situations like this. What's more, the straightforward UI implementation generally doesn't result in the best experience for the user. I'm thinking 'multi-threaded' here. In my application, the UI accounts for half the 50000 lines of code (refactored continuously) and two thirds of the bugs.
Tue 01 Apr | Brad (dotnetguy.techieswithcats.com) | UI has something that the other levels of system don't: user expectation. The user has no expectation of the interaction between two core system components, because they don't know they exist. They can be tied together in whatever way is most convenient for the engineer. The UI, on the other hand, has the issue of user interaction. The user expects it to work a specific way, and when it doesn't, that's more than usually considered a bug. It could be that something needs to be changed, additional methods of interaction need to be developed, etc. A polished, usable UI is almost always the most difficult part of a project -- triply so with the web (not just user interactions, but working around the technology, and testing with a variety of clients with sometimes vastly different capabilities and interpretations of the 'rules').
Wed 02 Apr | Geoff Bennett | If you design your interfaces correctly, and apply something like the Observer pattern (or Model/View/Controller etc) you can almost completely automate the UI testing. There may always be bugs in the actual UI components (widgets), but if you can ignore that fact as they will be picked up pretty quicksmart by users (and there's not a lot you can do about it besides code work arounds). You can safely assume that the bulk of UI widgets will work. Eg. Textbox, Combobox, Listbox, ListView etc. Most of the bugs have been found and the known ones have (in most cases) documented work arounds.
Wed 02 Apr | | Geoff - regarding your first paragraph: Post Your Proof! (Seriously, if you can provide something like CPPUnit for testing UIs then I think you could make a bucket of money.)
Wed 02 Apr | Punter | There are various products to automate GUI testing - e.g. WinRunner.
Wed 02 Apr | | Those tools are not for automatic unit tests, they are for system testing.
Wed 02 Apr | Practical geezer | And most importantly, they do not test the UI against the user's expectations.
Wed 02 Apr | | Geezer - nothing does that. And the expectations seem to change depending on the phase of the moon anyway.
Wed 02 Apr | Brad (dotnetguy.techieswithcats.com) | It's important to differentiate unit testing -- the attempt to validate that the code is working as expected with no bugs -- vs. acceptance testing -- the human part where someone looks at it and says 'move this 3 pixels to the left, make this come before that, etc.'. You can't test the latter automatically.
Thu 03 Apr | Punter | Well, waaay back in the day I used a product SQA TeamTest(?) or some part of that family that would allow the automated testing of GUI screens. i.e. you could have a test script for a screen to enter data into the various controls and press the buttons, twidle the knobs, basically fully exercise the screen. My impression was that the SQA set of products was bought and repackaged as WinRunner / LoadRunner, etc. So, whatever it's called now, you could certainly use it for unit testing - i.e. check that all fields have the correct behaviour on invalid input, etc.
Thu 03 Apr | Martha | That sort of 'exercizing the controls' testing isn't really GUI testing, or at least it's only a part of it. (Or if you like, it's UI testing, but not GUI testing.) GUI bugs tend to be the sort where label text doesn't fit, perhaps only in some languages, or maybe depending on the system font settings. Or the programmer decided to be creative and mixed checkboxes and radio buttons in an option group (or some similarly absurd misuse of controls--don't laugh, you know you've seen these). Or he neglected to run spellcheck. Or there are their/there or our/out type mistakes that even spellcheck can't catch. Or the more subtle consistency and alignment problems, where some screens have controls x pixels from the edge, while others leave kx room; or buttons are y pixels wide, except for that one OK button on that one screen. Lots of GUI bugs are the result of the programmer failing to pay enough attention to the nitpicky details. But he shouldn't have to, right? Nitpicky details are supposed to be an ideal task for a computer, yet this seems to be impossible to program. It comes down to 'spellcheck will never be perfect', which is rather hard to accept when you've met the umpteenth stupid to/too mistake.
Fri 04 Apr | Geoff Bennett | 'Geoff - regarding your first paragraph: Post Your Proof! (Seriously, if you can provide something like CPPUnit for testing UIs then I think you could make a bucket of money.)' Best example I can come up with at short notice: http://www.codeproject.com/dotnet/tdd_in_dotnet.asp Scroll down the bottom of that article, and there's a little explanation about it. I'm not talking about excersising controls, or whether the contents of label captions fit. I'm talking about the code that handles grabbing input from UI controls and jamming it into business objects. Most people seem to shove that into the event handlers. If you have designed a halfway decent interface to your business object, you could create a view class that encapsulates all this and makes it unit testable. Like I said, you can't use this technique to check the 'G' part of GUI, but you can at least use it to test the app from as close as you can get. You can simulate bad data right from the highest point in the chain. We've started using this around here now and while I can't say there's a tremendous productivity increase at this stage, with clear requirements you can definately see an improvement in code. Especially when you merge stuff back into the mainline.
Fri 04 Apr | | Thanks Geoff. Actually that looks pretty similar to CPPUnit and that kind of thing is in principle exactly what I am after. My experience with CPPUnit agrees with what you said - these things are not so good for testing the G part of the GUI which is what I am interested in. I can test many of the individual methods in a class (those that do not directly affect the presentation for example) but that is not the same.
"Incentive Pay Considered Harmful" Revisited | Mon 31 Mar | Astarte
I re-read Joels insightful article on incentive pay (http://www.joelonsoftware.com/articles/fog0000000070.html), as well as Frank Hayes article on how to avoid employee burn-out(http://www.computerworld.com/careertopics/careers/labor/story/0,10801,79619,00.html) and I was wondering what peoples thoughts are on this issue in post-bubble days. Take a company that has a well-established performance review program and pays a very reasonable salary and is a great place to work. What if that company decided to pay a once-off incentive to a dev team to meet a specific objective, such as cut the number of open issues to less than 10, or keep a system running without failure for 3 straight weeks? This incentive would be totally seperate from salary and performance review. Does anyone have any experiences to share or any other references about incentive pay?
Mon 31 Mar | Patrik | I have experienced this before, everything you said was there; good pay, good working environment and good team of people. As a one-time deal I was offered extra pay for not scheduling my vaccation time until after we finished the project we were working on. In my book, this is not harmful or bad, because you know its a one time deal, and you can 'see the end of it' in lack of a better wording. Whats considered harmful in my book is ongoing demanding incentive programs; they usually end up with people backstabbing eachother instead of helping eachother as a team.
Mon 31 Mar | Mike Gamerland | Two experiences come to mind where this has worked and failed. One case where it failed, you mentioned. We have a bug/enhancement list of about 300 items. Someone thought that if we incented people we could cut the list in half. As a technical leader, I was in on some of the meetings and here is what happened... - Incentives for every bug closed. The GUI presentation people loved this idea. The A/R people hated it. While GUI had more requests outstanding, the A/R peoples were far more time consuming to fix. - Incentives for every hour on a bug beyond 45 worked. Younger managers did this one in. I would even say 'inexperienced' managers. Their question was 'how would we know they are not taking a long time fixing a bug so they get more money?' Trying to explain the depth of mistrust the very question posed, as well as the serious issue 'it' provided, was more than most of us could swallow. One area that did work was System Support. It is very difficult to get experienced people to stay on System Support. The hours stink, the benefits are zero, and in general as a senior person, you are needed during the day regardless of the hours you spent at night. The fix:each member on System Support was given the week following their on-call rotation off. This worked great. We got experienced people back onto the rotation, support calls were resolved in less than half the time and permanent fixes were implemented at an astounding rate. Then the complaints from people not in Systems Support started. They did not want to be oncall but they did want the extra four weeks a year of vacation or more specifically if we were giving them to others they wanted them too. (Time to differentiate between the leaders and the managers -- deal with it.) Now for the obvious, but often overlooked. Do not attempt to incent people with the same thing. Joel was on target here. Bob make want the cash, but Jane might want days off instead. Offering Bob days off is NOT an incentive. If you attempt to incent people to do their jobs you will lose. If I am responsible for bug fixes and you incent me when over 100 are in the queue, nothing is really important until we hit 100. We suddenly start looking at 100 being a pass/fail grade for Mike. If Mike cannot keep the number below 100, maybe the solution is to bring in some help (assuming Mike is not the problem). If you are going to bring in *gasp* temp help you should consider incentives for someone from another area within the organization.
Mon 31 Mar | Nat Ersoz | I have seen this sort of thing work well in the past: We won a large contract, and each member of the team working on it was evaulated, up front, regarding their responsibilities, scope and challenges by the heads of the project. Then specific milestones with associated testable/quantifiable goals (not stuff like researched feasibility of...) were set. As each milestone was met, the team would get a report card ranking how the goals were met - on time? met or exceeded performance requirements? At the end of the project, the bonus pool (total amount determined by the value of the contract and the report card scoring) was divided among the team according to their 'importance' ranking. The numbers were very significant. My bonus cut was in the tens of thousands of dollars over my normal salary. The project duration was 18 months.
Mon 31 Mar | Scot | In my experience, there is no such thing as 'one time' or 'temporary' or 'nothing to do with salary'. Either you agree with and implement a policy (such as incentives) or you don't. Otherwise, that 'one time' will just turn into the 'first time'. Sounds like you don't understand/agree with the policy of not using incentive pay. Just remember that people will adapt to their incentives, at the expense of the larger company goal, and ask yourself if that is what you want.
Mon 31 Mar | Bored Bystander | What I took out of Joel's article is that generally, most of HR culture's ingrained notions of employee motivation are patronizing and toxic to technology professionals who happen to be on payroll. My opinions and rambles: Minor incentives and perks come off like Bill Lumbergh's 'Hawaiin Shirt' day idea in 'Office Space', and larger incentives create a Pavlovian training mentality. Almost all technology jobs in IT today are fraudulently presented as career situations, so WTF cares if there's an incentive payment for a crunch? It's just another variation of treating employees like contractors. It's kind of saying that 'you, the employee, probably know the score, and we really need this done now, so take this bribe and work as much as we need in this crunch.' Or, less cynically - the kind of company that would care enough about equitable treatment of employees to pay a 'one time' incentive is probably a decent place to work and paradoxically, probably doesn't even need to fool with incentive pay. The opposite end of the axis from this is the sweatshop that figures that all salaried employee's time is potential unrealized working hours - places like this need and deserve a swift bankruptcy and repossession of the haughty owners' half a dozen luxury vehicles in order to restore equity and balance in the universe. But damned if a place with this business model in place will ever pay fair incentive pay. Typically, it amounts to a bonus of a dollar an hour or less - which impresses only the stupidest, and insults anyone who considers their time worth something. In the semi socialistic closed system paradise of the well run geek company, nobody would resent pitching in extra; extra effort would be appreciated and respected, not expected; staff would look forward to long, stable careers, protected from outside business cycles; and just as management could expect employees to chip in each according to their gifts and abilities - employees could expect to reap the rewards of trust and could expect to take off compensatory personal time in exchange for contributions made in crunch mode. But I'm a contractor. The 'closed system paradise' doesn't seem to exist which is why I am at where I am. And I don't fit in where there's a culture of long term balanced symbiosis between workers and management. Which is generally, never - but most companies play pretend that they're 'just like the old HP'.
Mon 31 Mar | Philo | Nat - doesn't this encourage padding your estimates? Philo
Mon 31 Mar | Lou | It is easy to focus on the technology professional (which most of us are), but these ideas, I believe, transcend that and apply to any intelligent worker. A bonus should be a gift by the corporation not tied to any activity not directly related to the employee. That is, 'If we keep the number of bugs below 100 you all get dinner out.' is meaningless because those bugs are not all equally valued by the client, the programmer, and the company. Bug #1 might be so difficult and important that the other 99 might as well wait until its resolved - instead the incentive keeps programmers focusing on those other 99 less meaningful bugs while leaving the big important one exposed and undealt with. Giving employees off or extra pay for dealing with difficult situations - such as the Systems Support personnel referenced above - is a reasonable measure taken to ensure employee satisfaction. However a better measure would be to put this in as part of the employee contract - any employee who is required to work X job will be given an additional 4 weeks. Employees may complain about inequality but they can't argue that it isn't published and they weren't aware. Companies pay a price to keep good employees around - most seem to relegate themselves to paying it out in secret bonuses rather than giving everyone who deserves it a raise and raising the comfort level of all.
Mon 31 Mar | Nat Ersoz | Rd: Estimates. Well, that was an interesting thing. There were actually 2 programs which had incentives like this. And there were no opportunities for engineers to provide any estimates in terms of the milestone schedules. They were purely driven by negotiation with the customers. So, of course, the biz team tried to negotiate the best terms possible, but in the end it was utterly ridiculous. Bottom up scheduling was ad-hoc, and only as particular subsystems showed risk. We worked like dogs, and came in about 2 monts late (out of a 12 month schedule). On the second, it was much more reasonable (18 months as I recall) - I think the biz team negotiated much better terms. Also, they were pushed into penalties for missing the final delivery date. They didn't take it lying down, however, and insisted on penalties should the customer not take delivery. Very shrewd. We met their schedule, they failed to take delivery. It was a billion dollar contract. Penalties were $50 million. There are some residual articles out there regarding it: http://telephonyonline.com/ar/telecom_cold_shoulder_california/ 'Of the 3 million digital wireless cable set-top boxes ordered from Thomson Consumer Electronics in 1995, only 250,000 have actually been delivered, with Tele-TV paying a substantial penalty for canceling the rest of the order, a source close to Tele-TV said.' You'd think that I'm violating someone's NDA, except I never signed one. But I never signed one. The NDA we were given when Thomson bought the place was so absurd that anyone who knew better tossed it (almost everyone I knew at the time took a look and round filed it). And TeleTV is long defunct (although I still have 2 shirts with their logo).
Tue 01 Apr | | That's interesting. One of my targets, against which my bonus will be based, for the coming year is how far under/over estimate my stuff comes in. Guess who gets to do the estimates? 'Yes, its defintitely going to take a week for me to change that string in the string table' (because I will goof off for two days, then fix it in 5 minutes and still come in ahead of estimate). This is a fucked up world.
Tue 01 Apr | Justin | Thanks, Bored. That post has given me some cheer this morning as I realise I am not alone in a cold uncaring universe. I have contracted off and on (mainly off, though) for a number of years, the last stint of which started 2 years ago following redundancy. I tend to contract for a bit, then get lured back into perm work for a few years with empty promises and lies. They all seem plausible at the time though. Almost everywhere I have worked has turned out to be at the lower end of your axis, owned or run by people with the business ethics of weasels ('axis of weasel'?). I don't have a problem with a company making vast sums of money on the back of my labour; that's what companies do. They exist to generate as much profit as possible for their shareholders. Independent contractors are no different, or should be. Indeed a common criticism of us is that we run our businesses like the enthusiasts we are, not as business people. Having said that of course, I realise its not completely true. I would like some of the profit to filter its way down to me. What grates is working every hour God sends for smug bastards who secretly laugh at being able to con non-business savvy people (ie anyone who actually cares about doing a good job) into working stupidly long hours for no tangible benefit. It’s the lies, greed and general blackheartedness that are so unbearable.
Tue 01 Apr | Astarte | What I am concerned about is the old saw 'you get what you pay for'. I am dead scared that this approach will discourage the pleasant, cooperative environment we currently have, and encourage an adversarial (to management and colleagues), competitive environment. I think inexperienced developers will burn themselves out desperately trying to jump through the hoop we're holding up. The whole idea seems too Pavlovian to me, but I thought maybe I am just being naive. I feel like this would not motivate me. But maybe I am not realistic about what motivates other people?
Tue 01 Apr | Joe AA. | 'It’s the lies, greed and general blackheartedness that are so unbearable. ' I have to agree with you Justin. The overall waste and overhead costs in most companies/projects is extremely distasteful. In a lot of ways, I see incentive pay as just another disguise for MBO... it works just as well in causing dysfunctional behavior.
Tue 01 Apr | Matt H. | Astarte: I'd suggested you read 'Punished By Rewards: The problem with A's, Praise, Gold Stars and Incentive Programs' by Alfie Kohn. Failing that, check out www.alfieKohn.org or my fourth article on 'leading the way': http://www.cadetstuff.org/features/200112/200112_huesser_styles_4.htm regards,
Tue 01 Apr | Stephen Jones | The problem with 'one-off' incentive schemes is that they are only 'one-offs' if they don't work. If they do, then the temptation to say, 'Well, this worked great last time, so let's try it again' is just too great. Incentive schemes cause 'local optimization'. If the particular goal you have is more important than anything else in the company fair enough. Also you should be aware that incentive schemes, or simply stressing certain aspects, can have the most peculiar effects. Our local steel factory decided it was going to have a crackdown on safety. It always posts outside its gates the number of man-days without accident and decided it was going to try and see if it could attain five million. It did, but what happened on the way wasn't quite what you could expect. If you had an accident at work and went to the doctor or nurse, then they would ask you if it happened at work. If it did, then there would be a full investigation (part of the safety drive) and you could pretty well guarantee that neither your supervisor nor higher management were going to be the ones responsible, even though they probably were by putting the emplhasis on production instead of safety. So, to avoid possible disciplinary action, you announced the accident happened outside work, and that, yes all those bruises and concusssion happened as you staggered out of the bar in Bahrain drunk last night and you had only come in to work semi-comatose for love of the company. You were then given a forthnight's sick leave, no questions asked. This continued for months; people continued being injured, no report was made - which meant that the blackspots were not identifieid - and the banner outside the factory gates crept closer to the five million. It all fell apart when they had a couple of deaths within days of each other. Both spectacular. In the first one a couple of tons of iron ore crashed down on a father-of-four's head when the frayed cable went loose. The banners were taken away, and they started to report accidents as they should have done. The management wriggled out of the debacle by claiming that what was needed was extra training, and I got called on to give suggestions, since I had helped devise the last safety course. The fact that they knew full well all of the safety rules but didn't apply them because 'in the factory it's quite different from college' was ignored.
Tue 01 Apr | Tony Chang | Matt, Alfred Kohn is a real piece of work. Radical communist doesn't even begin to describe him. In my mind, nothing he says should be taken seriously, but to each his own. You should check out his radically anti-american screeds. Some of them he links to from his website.
Tue 01 Apr | Kyralessa | I checked out his website but couldn't find any such links. Perhaps you could indicate how we might find them.
Tue 01 Apr | Tony Chang | http://www.rethinkingschools.org/special_reports/sept11/16_02/kohn162.shtml He argues that we need to teach our children that the motivation of the 911 terrorists was understandable, since the US has created and funded armies of terrorists, killed 100,000 iraqi civilians in 1991 alone, and some of the 911 terrorists suffered -personally- at the hands of US imperialist agression. Oh and also he argues we need to teach our children that 911 happened because the US supports 'brutal' Jews. Just the standard deranged antiamerican screed. In his other articles he argues that it is basically abusive to praise children. B: 'Daddy, look at the picture I drew.' D: 'That's a great picture, Bobby!' <-- this is the wrong thing to say according to Alfie. Anyone other than Matt want to argue his position about praising people for a job well done? Or paying people for competence? Kohn says that is bad too. To each according to his needs after all. What's it all about with Kohn I just don't know...
Wed 02 Apr | Stephen Jones | ----'Oh and also he argues we need to teach our children that 911 happened because the US supports 'brutal' Jews'----- Of course it didn't. The hijackers all decided to commit suicide because they had an irrational aversion to Ronald MacDonald and democracy
Wed 02 Apr | Tony Chang | Care to clarify here Stephen? Your McDonald's comment sounds like you intend to be sarcastic. Does that mean that you also agree with Kohn's suggestion, or is your sarcasm nonsequitorial?
Wed 02 Apr | Stephen Jones | Everybody who is not in denial or with a hidden agenda, knows that the US's unfailing support for Israel under all circiumstances is the prime reason fot its being hated throughout the Arab world. No doubt Bin Laden himself would be anti-American even if the US turned aganst Israeli expansionism, but he wouldn't find it anything like as easy to get supporters if US foreign policy were not so obviously subservient to Israel. Should we teach the truth to schoolchildren? a dangerous departure no doubt. It might be an idea ot start teaching it to adults though.
Wed 02 Apr | Tony Chang | So what are you saying Stephen? Are you saying that the Arab nations are all racist antisemitic bigots or what exactly?
Thu 03 Apr | Stephen Jones | Not in the least. The Arabs are quite right to be against American and Israeli foreign policy. To brand any criticism of Israel as anti-semitic is a cheap trick used by those such as Wolfewitz who want to stifle any kind of reasoned debate. To dislike a Jewish state demolishing your houses, evicting you from your land and killing your children isn't anti-semitic, it's a normal human reaction.
Fri 04 Apr | David Clayworth | Have to say I found the Kohn article linked to made a lot of sense, although a lot of his other stuff didn't.
Import tariffs and outsourcing code | Fri 28 Mar | ltarian
Heres my theory and Im submitting it for peer review: Imposing tariffs on imported commodities leads to outsourcing jobs to the third world. Heres how (The numbers are my own, and conservative): The government imposes import tariffs on apple juice from China and tomatoes from Mexico to make our local producers more price-competitive. Hence a meal with these ingredients that would otherwise cost $1 is about $5 now. As a result, Americans who work in an unprotected, free-market industry like software now need to be paid that much more for the same standard of living. So where you couldve hired only 2 Chinese/Indian programmers, youre getting 5 for the price of one US programmer. The US free market takes into account quality and reliability, weighs it against the price advantage and say, hires 1 American programmer for every 3 from the third world. Without these import tariffs, we couldve made this ratio 1:1. I agree that for political reasons, programmers in third world countries would work for much less. But since that applies to their tomato producers as well, Im not sure it has a terrible impact. I also submit that the cost of living in the US is not a consequence of the higher standard of living and that reducing the cost of living only improves the standard of living. In conclusion, I think the US government should seriously consider opening up all our industries, eliminate tariffs, and espouse free market principles across the board. The way were going I suspect well lose the edge in technology very soon.
Mon 31 Mar | Dino | ltarian, To make a very long story short, current economical policies are the only known way to feed 6 billion people. Your model simply misses this point. Dino
Mon 31 Mar |   | Surely current economic policies are just another of a long list known *not* to feed 6 billion? Or did you just wake up from some kind of dream just before you posted?
Tue 01 Apr | Dino | noname, The current economical practices can feed 6 billion for the next little while. IMO there is a bigger problem somewhere else. Currently we are 6 billion and growing. This change is quite recent - we went from 1 billion to 2 billions in only 123 years, and from 5 to 6 in only 12 years. Why? Because of practices of sanitation and modern medicine. 'It's not because people started breeding like rabbits. It's that they stopped dying like flies.' Of course good healthcare systems requier working economies or there would be nobody to pick up the bills. Now, building a working economy is something humanity is getting better and better at. Then why aren't we seeing wealth and happiness everywhere on this planet? The real problem is that current social practices cannot control population growth properly. An uncontrolled population growth can be destructive because it may locally block economical development. IMO the solution is education - which is observed to slowdown the population growth. Changing economical policies won't do. Personally, I take steps and contribute the best I can in The Hunger Project ( www.thp.org ) and just this year I helped building up a school in India (rural area near Agra). I'm also planning to contribute to the fund for Afghan girls setup by the National Geographics. What have you done lately? Dino PS Removing import tariffs is childish.
Fri 04 Apr | David Clayworth | Congratulations on your good work Dino. A good contribution. If everyone did the same the world would be a better place. However it's also true that the current system is NOT feeding six billion people. Millions in Africa are starving, or dying from diseases that could be cured by providing clean water or a few dollars worth of innoculations. Starvation is not caused by overpopulation. There is actually more than enough food in the world to feed all six billion of us. Most western countries destroy food that they cannot sell, or offer farmers incentives to grow less food. What the West spends on pet food would fix the African hunger problem. The problem is simply one of economics. Unless they have the money to pay for it, the people who need it do not get the food they need.
Am I being unreasonable? | Fri 28 Mar | RP
I am currently the only developer of a services company. The business were in forces us to have a great deal of internally developed tools, and I ended up being hired to maintain those tools. Theyre written in lots of different languages, so I decided to migrate them to a J2EE environment. This would make maintenance and the future development of the applications a lot more easy. Unfortunately, its almost impossible. The older staff at this company were scared shitless upon my arrival. They saw me as a threat and are currently blocking all my efforts at doing anything worthy. Instead of developing a full-blown J2EE application, I had to keep myself happy with a couple of servlets that dont even get used regularly. The current IT manager is simply unable to change the current state of things. He literally has no power whatsoever, and when I try to go up the chain of command I get blocked. Since I am a newer worker I dont know many people here and the older guys always get to the bosses first and manage to turn things around. Basically, although I was touted as an extremelly important hire by the company, I am doing nothing worthy and more importantly I am not doing anything usefull to the company. I spend the days surfing the web and feeling angry. I feel I have no support from upper management because they simply dont understand the issues at stake and so chose to side with the people they know better. I also feel that this will not improve. Either the company blows up or things will be like this forever (there isnt a chance in the world of the company going under. We do make a LOT of money). My question is: would it be unreasonable to leave the company now? Should I confront them first and give them a chance to change things (after all, its in their interest) or should I just leave for the first decent oportunity that shows up? I guess this post is more to vent my rage than to ask for advice, but any answer would be welcome. Thanks RP
Tue 01 Apr | Leonardo Herrera | My own bit of history. Every time I've switched jobs (about 3 times in 8-9 years) I wanted to rewrite everything. And I mean everything. I managed to do it once, and boy, never will do something that stupid again. In my current job I've replaced about 50% of the internal tools, incorporated a lot of good practices (CVS, for example) and helped to let the fear of change fade. But it took a year, and I think I'm being fast :-)
Fri 04 Apr | Just me (Sir to you) | RP, Just to add one more voice to the crowd: Take a deep breath, close your eyes, relax. Let's look at it from 'the other side': 1> New hire (I don't want to be rude but I guess we can deduct from the story so far) as green as the very first sprout of spring, walks in. 2> One low level manager, drank the Java Cool-Aid for managers, sends our friend on a J2EE course. Still no real harm done here. Knowledge is good. 3> Junior comes back (Add to resume: Mission Critical Enterprise Application Architecture/Design/Development: whole week of J2EE classes), fully enarmored, and declares that all current running systems should be scrapped, and a big nuclear bang rewrite in the shiny new silver bulled technology should start right now! 4> When the real developers do not stand in awe as if the lights of heaven had just shone trough, junior subscribes this to 'stupidity' and sees all actions against his big plan as political lowdown foul play to block the path of the one truth. 5> Junior slumps down into his monks cell, bitter. If they do not buy this, sod it. It's my way or the highway. Doesn't look so good from this side, does it?
FogBugz: Projects practically manage themselves? | Thu 27 Mar | Bill Tomlinson
I happened to check out the Fog Creek home page and noticed that Fogbugz is being advertised with the tagline Your projects will practically manage themselves. Now, Fogbugz is a wonderful product, but in my view that statement is stepping firmly over the line into hyperbole land. Its the sort of thing that I expect from Rational, not Fog Creek. To keep things on topic: when your primary customers are experienced software developers, what limitations do you have to put on your advertising to acknowledge the there are no silver bullets axiom?
Fri 04 Apr | Just me (Sir to you) | Anon, you mean things like 'Linux is secure, fast and scalable' ... by dogma, right? Sorry, I don't want to step onto the same treadmill but saying OSS developers are so much more 'honest' in their advertising is stretching it beyond where it snapped.
Get it? | Tue 25 Mar | B#
Tangential to programming but: Girl (or guy for that matter) walks into a bar and asks the bartender for a double entendre, so he gave her one. Ive told this joke to 25 people and the only ones to get it, both of them, were programmers. Wazzup?
Fri 04 Apr | Ergonomic creature | Try this one. Hours of entertainment guaranteed! http://www.brunching.com/cgi/barjoke.cgi
Memory/Concentration enhancing drugs | Tue 25 Mar | tapiwa
Has anyone here ever had an experiences with cognitive enhancers, such as Vasopressin, Hydergine, Pemoline, Lecithin, Choline and DHEA?? Do they work? Someone pointed them out to me, but I am bit sceptical. Tapiwa
Mon 31 Mar |   | Cars aren't illegal, but reckless driving is. This is so we, as a society, don't like the consequences of arrogant, reckless bastards who believe they can drive around residential areas at 90mph because they believe they are 'good drivers'. This despite the volumes of evidence you'll find laying in any hospital ward, on mortuary slabs or in obiturary columns. Free speech is allowed, but inciting violence is not. This is to protect society from crazy, arrogant nutcases who think that immigrants, for example, are the root of all our problems (despite having access to the same information as the rest of us - they simply choose to ignore the parts they don't want to hear). So maybe, generally, our laws are based on the principle that it's best to at least try to restrain people from hurting themselves and others. But lets forget all that for the moment - decriminalise drugs. Then whoop for joy as the newly formed Heroin Marketing Board buries all the balanced information in a torrent of advertising, pushing the stuff to us every waking hour. Then when the adult market is saturated, they'll push it to teenagers and younger on every Saturday morning TV slot because children are pretty sophisticated these days after all - they can make informed decisions. I'm sure this scenario would sort itself out given a few years - and after all what do a few more dead people matter? Not much, it would seem, when the real issue is the fact that a few selfish whiners want the laws lifted so they can experiment without the (minor, seeing as you're so clever and adult) worry of getting into trouble with the law.
Tue 01 Apr | valraven | The act of just taking drugs is reckless? If so then the act of driving is by definition reckless.
Fri 04 Apr | tapiwa | 'But Lisa, that's why we have government officials, so we don't have to think.' -- Homer Simpson
Getting the Inside Scoop | Thu 03 Apr | Reginald Braithwaite-Lee
In a different topic I asked about who really does what and why in a company. I posed the question as what questions would I ask when starting a new job. http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=37310 Some of the responses were quite thoughtful, and now I realize that what I am really trying to understand is this: In every programming team, group, and company there are unwritten rules for getting things done. Sometimes you can ask about them directly, sometimes you have to ask indirectly, and sometimes you just have to watch and learn. Some of these unwritten rules are negative: perhaps the company talks a great line about being family oriented but always demands that people burn the midnight oil and cancel their vacations to write code. And some of the unwritten rules are positive: the official org chart is ignored and the company culture is to make decisions in group review and planning sessions. What kinds of unwritten rules have people experienced (good or bad) in their careers? What tips do you have for discovering these unwritten rules?
Thu 03 Apr | J. D. Trollinger | Unwritten rule: If you're presenting some kind of analysis of your target market, or of sales data, or of some such thing, upper management doesn't want to hear about ambiguities, inconsistencies, or other such caveats. Tell a story and come to a definite conclusion, and a definite recommendation (even ifyou don't believe most of what you say.)
Thu 03 Apr | Philo | Other than the general politics and human nature stuff, I don't really do the 'unwritten rule' thing any more - I just ask. I'm generally the one in a crowd asking (out loud) 'Why?' 'Why can't we do that?' 'Why do we have to do [x] when it makes no sense?' Hasn't gotten me fired yet. Yet. ;-) Philo
Thu 03 Apr | Mike Gamerland | How about observations instead? Keep in mind a lot of this is illogical, but it still happens. - The person assigned to show you the system/area/work may not be the best qualified. - Said person is likely to supply you with work they should be doing. Smile and in the absence of other work do it. - Look who people seek out for information, experience. Use them. - You don't know what you don't know. In about 3 - 5 months you will know what you don't know. - Determine how you are evaluated. If they expect lone rangers, forming workgroups is punished. If they expect team players, coding hermits are punished. Know the terrain. When you have a track record you can explore changing the environment. - NEVER say 'at the last place I worked...' You either left or were fired so why should we care? - If you can think of a better approach speak up. But do so in a discussion type fashion. Too many people speak from prior experience and it might not apply. - Beware the ultimate excuse - 'We tried that once/before and it ...' Bad decisions propagate this way, for eternity. - Good people do bad things. The best people often do a lot of them. Mistakes happen. Repeating the same mistake is a career decision. [Joe was very good, loading changes at a rate 3 or 4 times my next best developer. People complained that Joe seemed to make an error at least every other month. - I was still better off for it. AND he almost never made the same one twice. Once I explained it, people started looking to Joe as the technical lead to emulate.] - Results matter. - Never use the word Obvious. It's an assumption and you know what they same about those. I could go on for days... no one ever should. ;-)
Philo's Rule of Connectivity | Thu 03 Apr | Philo
The quickest way to break a solid internet connection is to publicly announce an available resource. After 18 months of no downtime, last night my ISP had a router fail, so CAMEL is down for the nonce. Philo
Thu 03 Apr | one programmer's opinion | Well, I believe someone (Joel himself?) mentioned recently in this forum that Joel averages something like 15,000 hits a day and much more than that when one of his articles gets mentioned on Slashdot. Philo wrote, 'The quickest way to break a solid internet connection is to publicly announce an available resource.' Disagree. IMO, your blog is unique and people such as myself are interested in reading the content you plan on supplying. In other words, content is king. The 'build it, announce it, and they will come' philosophy doesn't work on the web anymore.
Thu 03 Apr | Leonardo Herrera | I believe Philo is making a humoristic remark, more related to Murphy's law than anything else. I doubt that this forum can lead as much traffic as slashdot.
Thu 03 Apr | Philo | Yes, you're right, and I meant to say that - I wasn't trying to imply a slashdot effect, but rather stating that my internet connection went down. Philo
Thu 03 Apr | Martha | This is related to the law that your demo/presentation/application/what-have-you will work perfectly, until the Head Honcho comes to view it, at which point it will fail horribly. It's also an inverse of the Mechanic Effect, whereby the thing that wasn't working will miraculously fix itself as soon as you bring in an expert to diagnose the problem.
Net 30 argument - check my logic? | Wed 02 Apr | Philo
Okay, Im working for BigITCo, which has a contract with the government agency Im working at. Im an independent contractor. BigITCos payment methodology: 1) I fax my timesheet to them. 2) They fax my timesheet *back* to me, with an approved signature. This used to take 24 hours, lately its been days. 3) I then take that faxed timesheet, prepare an invoice, and mail it to their accounts payable office. 4) Their accounts payable office processes it, then puts it in their system. 5) My check is cut the first check processing day *after* the 30th day after the payment was entered in the system. I fully recognize the concept of float and Im sure this was put in place because some beancounter did the math and told an executive for every day you can postpone paying every contractor, we earn eight bajillion dollars in interest The problem is that I cannot wait to find a job that wont wait six weeks to pay me. In retrospect, the worst place I ever worked (atmosphere wise) paid me upon receipt of the invoice, and Id rather work there than here. I figure since Im here and have no emotional investment, Im going to keep railing against the system. My latest thought: 1) Based on $50/hr and 6% return, they earn $40/month per contractor on float. 2) *Every* contractor here gripes about the pay situation. Two have left solely because of the pay situation. 3) If just one contractor leaves because of pay, thats $8000/month lost income for BigITCo (based on a billing rate of $100/hr). 4) It will take 200 contractors float to make up for the lost income from that one departure. This does not take into account lost referrals or lost business due to unhappiness with BigITCo. My sales pitch to attack this - Would you pay $40/month per employee to eliminate the #1 complaint and reduce turnover significantly? If they answer yes to that, then the suggestion is treat timesheets as invoices and pay upon receipt - IMHO if they did that one simple thing people would LOVE working here. So where are the flaws in this argument? Philo
Wed 02 Apr | Joe Blandy | I don't know a lot about banking, but 6% for a short term interest rate seems high.
Wed 02 Apr | Thomas Eyde | I would understand it if the company is a bank or Visa or some other business doing a huge amount of financial transactions every day. You just proved your employer looses money and they still insist on the arrangement?
Wed 02 Apr |   | I think 6% is low for short term interest. If you're a contractor, then I assume you have a contract? Payment needs to be specified there.
Wed 02 Apr | pb | Maybe that's just how long it takes. Assuming that situation arose from some legitimate process, think about how difficult it would be to sell a project to modify it.
Wed 02 Apr | aa | The interest on the float isn't the important part, it's the fact that they have a standing amount of money that isn't theirs in their bank account. Starbucks, for example, has a standing loan from all the people who bought into those prepaid coffee cards. I think I read somewhere that based on the numbers, their standing loan was something like $500,000,000
Wed 02 Apr | Philo | aa, but absent a business need for cash reserve, doesn't that just cater to the egos of the management? Is there an honest business reason to simply have money sitting in the bank (note - it's not a real cash reserve; under accrual accounting it's not there) Philo
Wed 02 Apr | Rob Walker | Assume they go for it: what happens in the month they decide to switch? They will effectively double their expenses for that month. Most companies cash flow positions won't like that. Is the money really just sitting in the bank? How soon are they paid by the government? Not that the situation isn't lousy ... but once you are in the system if it stays at a constant through put there seems to be little to be gained by leaving. ... and I'd _love_ to know where I can get 6% on short term deposit??
Wed 02 Apr | Joel Spolsky | Unfortunately the whole Net 30 scam is totally standard operating procedure by big companies in this country. Every time they figure out a way to delay paying all their suppliers by another day, they earn a windfall cash profit equal to a full days' spending. If you have negotiating power (i.e. if you can get together with the other contractors) you may be able to get Net 15 terms. This is something they can plug into their accounting system easily. Changing the way invoices and timesheets work is going to be more difficult for them, but changing the terms from Net 30 to Net 15 should be a simple flip of a switch. Alternately if you really care about time-value-of-money, you can offer a 1% discount if paid within 15 days, and they'll almost certainly do it because nowhere else can they earn 1% in fifteen days. Realistically, interest rates are about as close to 0 as they've ever been, so I wouldn't make too big a deal about this. Get one of those 0% intro rate visas and you shouldn't care when you get paid :)
Wed 02 Apr | Philo | pb - The solution is absolutely simple from a technical standpoint (and makes the workflow much simpler). My proposed solution (as I mentioned above): 1) I submit a timesheet. That timesheet can be considered a legal invoice. 2) BigITCo receives timesheet, authorizes it. They then forward a payment memo to Accounts Payable. 3) Accounts Payable enters payment due into their system, which processes it accordingly. All I've done is cut the byzantine 'fax the timesheet back then mail in an invoice' crap. Philo
Wed 02 Apr | tapiwa | Does your contract with BigITCo stipulate the payment terms. If not, then an idea would be to fax an invoice at the same time that you fax an invoice, and let them do the gruntwork. On the invoice, you would stick a big .... PAYMENT DUE IN 15 DAYS.... in red! Those drones in accounts payable will usually follow the letter of the invoice unless told otherwise. Oh yeah, on the back of the invoice, state that all late payments will be met with a monthly interest rate of 2% or so (yup 2% per month). If you can get them to accept these invoices a couple of times where the contract terms do not stipulate payment terms, then you set a precedent (IANAL), and that is always a good thing.
Wed 02 Apr | Philo | Lesson for the masses - never assume... The contract stipulates that invoices are payable 'net 30 days after receipt by BigITCo' I don't have a problem with Net 30 (obviously). I don't even have a problem with Net 30 after receipt. I have an issue with 'Net 30 after receipt but you can't submit until we tell you to and we really don't 'receive' it until we've processed it, so it's really more like net 45' Though I figure if I'm attacking the situation at all, I might as well go for broke and 'pay upon receipt' [grin] Philo
Wed 02 Apr | | Aren't you the guy working on the law enforcement application with the blog? Sounds to me like you have too much time on your hands and that you surf the web more than you get work done.
Wed 02 Apr | Hmm. | Hmm. BigITCo = EDS maybe? Just a guess. Big companies are wasteful, gov't orgs are wasteful, put them together, and everybody's sitting around billing for $100/hr. Great strategy.
Wed 02 Apr |     | Just switch over to accrual based accounting for your business and your problem is solved.
Wed 02 Apr | Mitch & Murray (from downtown) | It can actually get worse than this. We just did a small job for a very large computer company whose name is 3 letters. Even though we were the guys extending the 'credit' so to speak, they dictated the terms: - Net 50 - 2.5% transaction fee deducted from our invoice. So they pay us in 50+ days and charge us 2.5% to cover the cost of processing our invoice and cutting the check. If you think that is bad news, one of the automobile companies in Detroit whose name is commonly referred to by two letters is even worse.
Wed 02 Apr | tapiwa | M&M If a company wanted to charge me 2.5% for paying my invoices, I would make them earn it. Raise a daily or hourly invoice... pretty easy to set up an autogenerate. Irritate them into waiving the 2.5%. Shawshank redemption anyone?? Sure it might cost a few more pennies in postage, but 2.5% per invoice adds up to a quite a bit of $$.
Wed 02 Apr | aa | >Is there an honest business reason to simply have > money sitting in the bank Sure, you can spend it on buying stuff, hiring people, whatever you want. Or it can be a cushion if times are hard. > (note - it's not a real cash > reserve; under accrual accounting it's not there) While it might not be there under accrual accounting, it's sitting in the bank in a very real way. As long as it's a standing float rather than one-time, it's sitting right there, ready to be used for whatever you need. Of course it would be easy to over-extend yourself if you weren't careful, as it's not really there long-term, just short-term. But even if you just left it there, it's still better to have a spare $100,000 than not to have it.
Wed 02 Apr | pb | Philo, even if it's simple technically (which I highly doubt) it's not remotely simple operationally or financially, etc. , etc. The techies have to realize that there's more to everything than tech.
Wed 02 Apr | Prakash S | Net 30 is the standard pretty much.... Joel's idea of giving that 1% discount sounds good..you should factor that into your rate for your next gig...
Wed 02 Apr | Philo | pb - trust me, I am *well* aware of human factors engineering in proposing solutions. My only thought on 'simple' is that I will be absolutely shocked if there aren't *already* payment memos moving from contracting to Accounts Payable. I'll also be amazed if they have every single contract on the same terms - they're not always the big guys and probably actually negotiate a lot of their contracts, so they probably have everything from 'payable upon receipt' to bizarre combinations of discount rates and late fees. The machinery is *there* - I just hope to leverage it to my advantage. [grin] Philo
Thu 03 Apr | | If it is not in your contract that you have to submit for signature first, then fuck 'em. Send the invoice by registered mail as soon as you calculate it, I see no reason why you need their permission to invoice them, since they gave you that permission when they signed the contract. If it is not in your contract that you bill per month, then start billing every week, and if they make a fuss send the next invoives daily. Put the debt into the hands of an agency who will collect it. They effectively pay you X% and then collect the whole lot from BigITCo. I would be very surprised if they are not _much_ better at getting paid than you, though it will no longer be your concern. (All of these options are likely to piss off BigITCo. I don't know how much you want to do that, so use with caution!)
Thu 03 Apr | Mitch & Murray (from downtown) | Offering a 1% or 2% discount for payment in 10 days used to be common. The problem was large companies would take the discount and still pay in 30 days. Over time this discouraged the practice, and I haven't seem much of it in years.
Thu 03 Apr | Just me (Sir to you) | As I have mentioned before in some specialized verticals where consultancies vy for the jobs of a few big clients, not getting paid for over a year is nothing unusual. What are you going to do? Sue one of a very limited set of potential clients? It is something you know and account for in those sectors.
PowerBASIC Vs. VisualBASIC | Wed 02 Apr | Wolfric V. Elkrose
Just curious on any feed back related to this software, Im majorly familiar with its competitor VB, but anyone ever actually used PB and seen a major difference in speed? Oh. erm, on second note *raises a hand* new to the site *grins* great site, lots of info and great chances to merge with the other programmers or developers. The main reason I ask is cause of major interest into the game development business. I still have not found anything as to why one uses this program and not that one in this area of a game design, then again :P guess everyone is looking for a good rough game design plan ;)
Wed 02 Apr | GiorgioG | Wolfric, Are you interested in figuring out whether to use PB or VB for game development? I think the answer is neither. If you're interested in getting into the game dev business, you should consider using C# or C++ and the DirectX 9 SDK. I've heard that some (big) game dev houses have actually switched to C#/DX9 for their upcoming projects (no, can't give names - don't want to get anyone in trouble.) On the other hand, if you want to get into console programming, C++ is the way to go.
Wed 02 Apr | Ged Byrne | Wolfric, Take a look at IBasic http://www.pyxia.com. It has very nice DirectX / 3D functions.
Wed 02 Apr | Ged Byrne | You may also find a beneficial and informed discussion at the ABC Archives: http://www.allbasiccode.com/cgi-bin/YaBB/YaBB.cgi
Wed 02 Apr | Thomas Eyde | Blitz Basic is also designed for game programming: http://www.blitzbasic.com/
Wed 02 Apr | Mark Hoffman | 'I've heard that some (big) game dev houses have actually switched to C#/DX9 for their upcoming projects' I find that hard to believe...I'm a big fan of C#, but I've done side by side comparisons with DX9 code written in C and C# and there is a noticeable performance hit when using C#. Managed code is great, but unfettered speed isn't it's strongpoint.
Thu 03 Apr | Mr Jack | I also find it hard to believe many games companies are switching to C#, for two reasons. Firstly, games companies are incredibly conservative, many are still umming and ahhing over C++, let alone C#. Secondly the major games market is PS2/Xbox/GCN, not PC - C# is of no help there.
Thu 03 Apr | TJ Haeser | Delphi all the way, baby. http://turbo.gamedev.net/dlinks.asp
Thu 03 Apr | Mark Newman | As a user of both PB and VB, I can say that the performance of PB rips VB to shreds. PB performance is on par or better than many C/C++ compilers, depending on the application. Take a look at www.powerbasic.com for more info. (Not affiliated with PowerBASIC in any way, just a very happy customer.)
Thu 03 Apr | Eddie McMullen | PB generates easily installable,fast and memory efficient code comparable in performance to Visual C++. Normal C features like code and data pointers are supported. PB blows VB away in a lot of ways but you must know a little bit more about Windows to use PB.PB,in itself,does not support ActiveX though some COM support is there. Monkeys use VB.Thinkers use PB.
Thu 03 Apr | Troy King | I also use PB and the easiest way I've found to think of it is 'C with easier string handling and some excellent abstractions.' I don't know that it would be any more ideal for game development than C or C++ however, other than easier-to-read code, especially for a VB programmer. PB has the following features (and more) built into the language itself: TCP/IP communications, REGEX, inline ASM, Trace/Log/Stack output (that can be enabled or disabled with a single code statement), simple Windows dialog abstractions, File I/O (with some nifty features), full pointer manipulation, COM automation (but not ActiveX), serial comms, environment variable access, unusual (and useful) string manipulation features, Thread creation and management, output formatting, structured error handling (in addition to inline trapping), direct support for creating standard DLLs, a decent preprocessor. Some of my observations on PB, compared to some other languages: PB is not a RAD tool like VB. If you need to do apps with ActiveX controls and the like, it's probably not the tool you want. There is a third-party addon to give PB full power to use ActiveX, but it's not native to the environment or language. PB makes tiny, fast executables with no external runtime requirements other than what you explicitly add, such as third-party DLLs. It takes some serious mastery of C or C++ and intimate knowledge of compiler options to match just the default output of PB. The community is by far the best and most helpful programming community you will ever find for programming. They provide tons of source code, addons, and will help you through just about any challenge you can come up with. Check out the Forums link on the PB site and prepare to be amazed. Several companies provide third-party tools that work with PB, but they don't really provide the same level of as for VB or C++. Chances are if it's a well-know third-party library, someone has converted the headers to PB and given them back to the vendor to provide to other PB programmers. Programming in PB can be a bit of a shock to someone that's only done VB before. VB shields you from how Windows actually works (an ugly set of complicated functions with bizarre structures and callbacks with undocumented side-effects). It's a bit of a learning curve, but a very satisfying one. There are some excellent keywords in PB, which functionality I haven't seen in any other language. There are nifty escapes and shortcuts built into the standard language constructs. Sometimes I really wish PB had classes in the language. Sometimes it's very convenient to have an abstract combination of code and data, but PB is strictly procedural. You can fake classes in PB just like you can in C (with structs), but no one does it. Outside of the PB website and community, almost no sample source code is in PB. After a while, converting C or C++ source examples to PB becomes second nature. However, given the high quality of the PB forums, the very good PB documentation, and the high skill level of the community, this has never stopped me from accomplishing what I wanted to in PB. The 'IDE' isn't very good and contains only basic functionality. I think most PB programmers do most of their work in UltraEdit or similar editors, but I could be wrong about that. Wordfiles and keyword lists are very easy to come by. There are plenty of third-party IDEs for PB (built by PB community members) but none of them are VB or Delphi quality yet. This seems to be a pretty big stumbling block for some people (VB showed us what an IDE *could* be), but I've found that I prefer to build my GUIs in code anyway because the GUI abstraction keywords in PB (called 'DDT') are quite human-readable. You don't have to hunt down the declarations for the Windows API, or type them in yourself. PowerBasic provides the headers for that along with lots of abstractions for some commonly painful coding (like dealing with Windows Common Controls). PowerBasic (the company) never pre-announces anything prior to its release. This is good in the way that poof, one day there's something new and exciting, but bad in the way that you can't plan ahead. One thing that can be said about that policy though is that they never promise a feature they don't deliver :). PB is probably the most satisfying language I've ever worked in. When you produce those super fast 30K (really) executables with the functionality of 3MB apps written in other languages, it's very pleasing. It's not many compilers that output an app that zipping actually *increases* the size. I have many more thoughts about PB, but this post is really too long already, so I'll lay off.
Compromise | Wed 02 Apr | Chi Lambda
Heres the situation: 1. You are contracted to make a small website for a small company. 2. You have years of experience and a nice portfolio. 3. You study the trends and research how people use the Web. 4. Your client gives you MS Word documents detailing how he wants the website to look. 5. The quality of the Word documents shows that he mustve learned how to use a computer 2 days ago. (Lots of different fonts, Word Art, clip art, crap, crap, crap....) 6. You show him a couple designs modernizing his ideas. You explain, ever so patiently, why it is that you did what you did. 7. Its all rejected; he wants the stuff to look like the Word documents. What would you do now? A. File | Save As HTML or B. Tell him that youre not the person for the job.
Wed 02 Apr | Chris | Yes. Quick and easy money. You're in a business and by doing the job you'll have another satisfied customer. You don't have to put the work in your porfolio and you'll have one more person out there telling other people about your business. Isn't the customer always right?
Wed 02 Apr | Brad (dotnetguy.techieswithcats.com) | Agreed with Chris. You already took the gig, so it would be rude to back out. I'm guessing you're going to be more up front next time about the kind of work you do, and making sure you know pretty solidly what the customer wants done before taking it. Or, you're hungry, and you'll take it anyway. :) It's really up to you... we've all done things that we cringed over. It's part of the deal when you're not in total creative control.
Wed 02 Apr | | A, but only if you get the customer to sign an agreement that no reference to you is made on the website or anywhere else where your future potential customers might find it. Otherwise B. Oh, unless they are paying you so much money that you would never have to work again.
Wed 02 Apr | Mr Jack | Pull out. You don't want to be associated with a website that poor. Think more carefully about the terms on which you take on future jobs.
Wed 02 Apr | Mike Gamerland | Option C. - Try again. It may be that the type of business the person does or wishes to do is one where they believe this is the best way to represent their data. Fine. Maybe they are right. Or...maybe you are not selling to them correctly. Have you shown them competitors sites? Have you shown them any analysis giving support to your ideas? Have you considered the cost of your solution versus the cost of theirs? (Tight budgets are common). If you have done the best sales job you can, that is all you can do. If it is really as simple as 'Save as HTML', tell them that. In the future when they want more, they will contact you for being honest about it.
Wed 02 Apr | anon | If the client likes flashy designs with multiple fonts and colors-build a site with Flash with lots of animations etc. even though it is a big NO NO from the UI and HCI design point of view. It's better than associating yourself with a HTML site with multiple fonts and colors. Atleast you will have a Grpahic design project in your portfolio.
Wed 02 Apr | na | you can still do quality work even if the product is shit -- or find another motivation for this project -- Can I 'Save As in Html' and publish it with FTP in 12 seconds? And under 10?
Wed 02 Apr | Thomas Eyde | Why don't you show him a website or two about usage? You could use a 3rd party report to back up your thoughts. At least you should explain the rules of thumb in the publishing business on what kind of fonts goes to what, how many font types/styles you should have and no more, something about colour usage and readability. So you could use his draft, but clean up the fonts, reduce them to one for each of the body and headers. If he still insists on keeping his own work, then advice him to have one or two people he trust to test the design. Perhaps he change his mind after that? Is it all static pages? Some dynamic? Offer him to do the dynamic part and help him to link all pages together, install it all on server and so on. Be honest about what you think about the design, but say it friendly. Say you want to help him, but you don't want your name in any place on the web site.
Wed 02 Apr | Kyralessa | He can give the 'Well, _I'm_ paying' argument, of course. But you might look for an analogy to help him understand. For instance, if you hire an architect to build your house, you'd certainly expect to give him a set of expectations (square footage, number of bathrooms, etc.), but it would be foolish to approach him with a full blueprint; if you know how to design a house yourself, then just do it, but if you don't, then let the man do his work, trusting that he knows better than you how these things should be done. And if you don't trust him to do it right, then why did you hire him in the first place? You might also show him some examples of good and bad websites, so he can see for himself the contrast. If he still insists, then in your shoes, I'd strongly lean toward not doing it simply because I'd be scared that he'd show it off to others as an example of my work.
Wed 02 Apr | Dino | Chi Lambda, If their design is crap, you may end up playing scapegoat ... not a nice thing and it can hurt you (contractual liabilities, portofolio, reputation, etc). If you don't want to take this risk nor you don't want to code crap for $$$$, try and walk away from this job. If you cannot walk away or you need the extra money, then take the job and do exactly what they asked you to. Afterall, this is what they want and pay for and if you don't do it, somebody else will anyway. You may even help them learn something out of this. In my experience, you cannot stop people from hurting themselves - apparently humans need the pain to accelerate their learning process 8) Personally, I think life is to short to not enjoy it. So unless I were really broke, I wouldn't take this job. Cheers Dino
Wed 02 Apr | Chris | I agree that you should try to convince the guy that you need to do a good design but I disagree that you should walk away from the job. You've already made an agreement to do the work. If you don't do the work you will now have a customer that has a negative attitude toward your work. If you do the work, then you have a customer who will say 'he did the work exactly the way I wanted it.' It's not going to take you long to do the work and you will have a satisfied customer in the end. Chances are he'll never recommend you to others but at least he won't go around saying, 'don't hire that guy, he quit on me half way through the job.'
Wed 02 Apr | | What would happen is this: you do the job he tells you to do, hating it all the time. Later on a friend of his explains to him that the web site is terrible. They all blame you. If you want to be polite, sit him down and explain the options. Otherwise just tell him another firm would be more suitable for him.
Wed 02 Apr | Patrik | >Isn't the customer always right? No. Hardly. I think its incompetence on my part to do what the customer wants if its obvious that the customer does not understand the rammifications of the bad descision he makes. Say you do some bad design to meet a customers requirements, and later when the customer wants to add some stuff he saw his friend had on his website, and you tell him: 'No you cant have what your friend is having because your system was not designed to handle it' this ends up being your fault. Try argue with the customer that it was his descision, and you are in a no win situation. Its better to clarify any and all stupidity things you see and try to have the customer change his mind. If that is not possible I would pass on that job.
Wed 02 Apr | Joe Blandy | Chi, I'm not intending to be overly critical here, so keep that in mind. You don't seem to have much respect for your customer. Comments like 'he must have learned to use a computer two days ago' indicate that to me. Also, you seem to set up all your efforts for us with a decent amount of detail (and adjectives), but when you get to the 'compromise' part, you just say that it was rejected? Just rejected? Did he say anything at all, or did he just say 'no, do it my way'? All in all, I think I agree with the people who present the 3rd option of trying again. I know it's hard, but try to have some respect for your client and take another hack at it. I'm sure you are doing this, but maybe focus on how your idea meets his (stated?) goals and isn't just some artsy stuff that you want to do to advance yourself. You have to keep in mind that you are here to make him successful. Cliche, I know, but it's true.
Wed 02 Apr | Ged Byrne | And remember that although the word stuff looks rather amateur, your client is probably very please with his results. Try to avoid saying 'I've changed the design because it is rubbish' to 'Sadly, if we use that lovely piece of Wordart, it will take the page a lot longer to load. We're better off using plain text.' and 'The use of fonts is interesting, but sadly the effect is going to be ruined with all the different browsers showing them differently.'
Wed 02 Apr | John CJ | Agree to do the site the way he wants. Ask him to sign a release form stating that he rejected your advice on the design of the site, can't hold you responsible for any aesthetic or performance problems, can't tell anyone that you designed the site, and that he agrees that any changes to the site will cost extra. If he won't sign, then you have your chance to back out.
Wed 02 Apr | Simon Lucy | There's a bunch of ways to handle it, just doing what they say they want itsn't really one of them though. You'll end up bad mouthing them because you think they were pratts, and they'll end up bad mouthing you because you let them look pratts, they will entirely forget it was their design. First off you explain to them that you are a designer, that if they hire you they get design. You do this pleasantly and with humour, you give relevant pithy parallels in their own business; if their plumbers you'd say something like 'would you let someone tell you to put the header tank below the hot water tank' or some such. Then you say that you'll take away their requirements and produce a set of design proposals. Then you produce 3 mockups, the first a cleaned up and professional looking version of the structure of what they gave you. The second, you're personal prefererence for a design to do what they want (not what you think they should do). The third a completely on the edge version pushing their requirements as far as they'll go, the Extreme design. They will choose the second. 90% of the time (he says with nothing to back it up) Oh, and you factor in the cost of producing three sample designs into the quote. Which they have to pay regardless.
Wed 02 Apr | Simon Lucy | Ooops hit the button too early. I meant to say, you hit the 1% that want to do it their way regardless, so show them how to save as HTML, bill them for all the time and don't sell them any support. Or give them any.
Wed 02 Apr | matt | I can completely sympathize- in my previous life (12 months ago) I was helping companies raise money, and a lot of the people who came to me wanted help with completely unfundable ideas. My dilema was the same- I could take their money and help them craft the best business plan possible knowing full well it could never raise a cent, or I could tell them that, and have them pay someone else to do it for them- in most cases charging them even more and offering them false hope to boot. This is what I did (for the projects that were borderline enough to consider)- I would tell them that I would do my best for them under the circumstances, but that if they went forward as it was, then they were ignoring my advice to change or quit, and I made no guarantees of their success. Sometimes this made them change their mind, sometimes they changed their idea to something more feasible, and sometimes they choose not to work with me. See why I got the heck out of this line of work? :)
Wed 02 Apr | Chi Lambda | Thank you all for your intelligent, thought-provoking feedback. I chose to withdraw my services to the client, because I could not in good conscience charge him for a website generated in MS Word (I explained the steps necessary to convert his Word doc to HTML) or build a site whose principles so directly conflicted with mine. I also chose not to take on the project because I was afraid that, while I could please him in the short-term, sometime down the road it would come back to haunt me. Nothing is private on the Web. I told the client that I don't expect to be paid for the work that I did until now since the end result was no website. He was gracious, though, and still intends to pay me for what I did. I learned a valuable lesson from this experience.
Wed 02 Apr | Dennis Atkins | Chi, That sounds like a great solution and everyone is happy. you took time to evaluate his needs and present him with possible solutions, he insisted on one that happened to be very simple. Rather than take his money and do the simple save as thing, you showed him how to do it, which was a useful service to him, and also showed that you took the time to understand and respected his actual needs as he percieved them. At this point you would be justified in charging a consulting fee, but you graciously refused to accept a fee and in the end even ended up getting paid. It's like when you go to the mechanic and he spends a couple hours looking at your car and then tells you 'It was just a loose wire. No charge.' When that happens, you go back to that mechanic AND tell others about him. Great call.
Thu 03 Apr | smkr4 | Yep, one thing people should understand about sales: it's as much about qualifying the client for your company, as making a sale. Not everyone with cash is a good fit for your business. Joel has an interesting philosophy of 'no hire' vs. 'hire' for his prospective employees. IMO, it works two ways. If you're interviewing for a job, or selling to a client, there should definitely be some 'no client' or 'client' hot buttons in your head. :) If your sales process allows a client through who obviously doesn't fit your business, then it's failed nearly as much as losing the prospect altogether. Granted, it's much easier said than done in this economy...:)
Thu 03 Apr | Dino | Well done Chi!
Thu 03 Apr | ChicagoMan | If the client learned how to use the computer two days ago chances are that in time he'll learn more of what to expect from websites. What you did was perfect, let them build it for themselves for now. In time they'll build more into it and some time expect more than they can generate themselves. Then they'll come to you to build the better design. You should definitely listen to your customer though. Engineers, doctors, artists expect different things from websites. Unless you are a limitless God, the customer will know its audience better than you. Webmasters seem to forget that.
Self Imposed Pressure as Contractor? | Wed 02 Apr | Bored Bystander
This question is directed to those of you who work as free lance or contract developers. The question may, indeed, provoke a duh response. The question is - do you feel that you are under considerably more pressure to make every hour count than you were as a full time employee (FTE)? I certainly do. Its nothing new; its something that Ive accommodated myself to in the almost 10 years that Ive worked as an IC. Generally, the projects I take on are self directed and unmanaged by the client. So I cant generally blame external pressure. But Ive felt since starting this kind of work that I must constantly justify my contribution on an hourly basis. This was not bad for the first few years. But in the last 3-4 years Ive discerned almost an asymptotically tending and involuntary response on my part. I am REAAAALY starting to despise the entire service-for-hours model. The dislike for the continual-justification-of-self mode of work is starting to poison my enjoyment of the work. Frankly, I feel like a whore of sorts. My rate today is very good. Now, years ago, when my rate wasnt quite so good, conversely the pressure didnt seem much different, but I was not yet burnt out on a steady diet of this kind of work pace. Im not even convinced that I drive myself all that hard anymore. As a coping mechanism, I deal with the pressure by goofing around and being too-distracted, which cuts into billable hours, which in turn makes me feel not so good about the work and the worklife. Compare notes, please? Thanks.
Wed 02 Apr | Justin | Not noticed this at all. I think its more important to be seen to be working. What ratio of work:non-work do you have? In other words how many hours per day are you on site, compared to how many are spent doing actual work. If you spend 8 hours working, then half an hour surfing the net, what happens? In my experience if management only see the net use, then that's all you are doing. I don't know. Maybe it depends on the client. I have always put long hours in and get vociferous if I'm not allowed to concentrate 100% of my attention on what I'm supposed to be doing. The main reason for long hours is I'm still fascinated by what I'm doing and easily lose track of time. Of course, I don't spend every hour of day slogging away. Some days I do spend quite a chunk of my time on non-work stuff. However, I ALWAYS only ever invoice for the time I actually spend working. My clients pay for my time and experience.
Wed 02 Apr | Punter | Not at all. In fact one particularly inept client once paid me a fairly juicy daily rate to do nothing for two weeks while they found me a PC :)
Wed 02 Apr | Nat Ersoz | Bored... I've never been an IC, but have thought about it as an option, should the current job go belly up (which is unlikely in the next 6 months, but always a chance). This has been my main concern, that the pressure to produce results would be horrific - even when there are legitimate reasons for not pounding stakes in the ground. I get pretty obsessive about work in general. I can only imagine life as an IC.
Wed 02 Apr | Tony E | I used to feel like this but now treat most jobs no differently than when I was a full time employee. Maybe I find it easier because I always bill on a daily rather than hourly rate and I never work more than 8 hours. I'm also very choosy about my clients, even in these quite times. I too have found a lot of my time wasted while the customer gets ready for me, local government seems to be particularly bad for this. Still thats their problem not mine.
Wed 02 Apr | Nick | I've never been an IC, but I've hired them for projects. So, I'll speak from that perspective. At the companies I've worked for, projects that require outside contractors typically need a formal cost justification, signed off by senior management. In order to do the cost justification, you need a detailed project plan and associated timeline (Gantt chart, PERT chart, etc). Normally, you'll pad these by 10-20% for the cover-your-ass safety factor. But since it involves software, you know that a 10-20% cost overrun can happen in a heartbeat. If that happens, you get to stand in front of senior management and explain why the project isn't being delivered on time and on budget. Senior management often includes one (or more) person that would've made a great warden on Devil's Island. Sweat pours while thoughts of unemployment and mortgage payments loom in your head. So, what do you do? You monitor the progress (ride the ass?) of the software contractor that obviously, based upon the high hourly wage that they command, has super human efficiency capabilities. That's why contactors feel pressured - they can feel it in the air the same way that horses sense fear.
Wed 02 Apr | Punter | This is not always true. Time are hard right now, and I'm currently a FTE, but in general as an IC I have always been treated the same as other staff members, down to and including which projects I wanted to work on(!). Then again, although I have generally been on 6 month rolling contracts, my average length at one company would be around 2 years, and it's always been my choice to move on.
Wed 02 Apr | Katie Lucas | I never felt under pressure as a contractor. In fact the only difference between me as a contractor and me as a permie is that when I'm a permie I don't work overtime. See: if I'm a contractor, I'm billing hourly. So if they waste my time during the day stopping me working, they can ask me to put in overtime but they have to pay. If I'm permie, they can waste my time during the day, but overtime isn't paid so I don't do it... They can waste their money all they like, but not my time. It's the realisation that most companies aren't interested in productive work. If they were they'd remove all the stupid restrictions that are slowing me down. ('you can't write this string processing tool in Perl, you have to use C...') They're paying me to physically present in the building for 37.5 hours a week. Whether I work while I'm here and how productive that work is doesn't matter to me, and apparently doesn't matter to employers either. I'll happily spend those 37.5 hours being a superprogrammer and writing useful stuff for them, or I'll spend them reading a book because I can't progress any further on the project without waiting for a month while someone approves my login to a machine or something. It's amazing how little it matters to people which. My other half once ended up in the situation where he'd average 1/2 hour a day waiting to be let into the building. Chargeable time, at something like 50 quid an hour. This was because door cards were too expensive to give out to contractors who might not give them back when they leave.. Again, he had a coat and a scarf and a book so it didn't bother him to have to wait. Pressure? No. Contractors don't feel pressure..
Wed 02 Apr | Justin | Most of my clients have probably been a lot smaller than those of your other half, Katie. I have only ever had to charge once per client for time spent waiting. They soon get the message. It’s the only exception I make to what I wrote earlier about only invoicing for work done. Again this approach should be tempered with common sense. If things are going well in my life and some external factor that is not directly the fault of the client causes me not to be able to work (e.g. regional power cut), I only charge for time spent working and spend the afternoon elsewhere (cinema/pub/beach).
Wed 02 Apr | one programmer's opinion | Okay, I have to admit that I haven't read all the posts to this thread yet so I may have more to say on this topic later on. I have worked as a FTE, an IC, a salaried consulting firm employee, and as a W2 hourly contractor. Yes, some of the pressure I have encountered over the years has been 'self-imposed', however, more often than not it comes from external factors (the need to fix a critical bug in a nightly run production system within a very short time frame, being told to perform work that I am not qualifed to do, etc.). Pressure, as well as, the need to work long hours typically leads to burn out and this IMO is a very common problem. There is saying among project managers -- 'You are only as good as your last project' -- which I think applies to many contractors and salaried consultants as well. I have no idea how many people actually leave this field because they simply feel burned out, but I am sure that it is a bigger factor than many think it is.
Wed 02 Apr | Bryan Shaw | My father once said, 'The bad thing about being your own boss is that you are your worst employee!' A wiser man, I have never met. You are grappling with several different issues and you need to start writing them down. You need to put on your 'manager' hat and write down the objectives of your service that you are providing. Do this after a project is done and you receive a paycheck. On another day, preferrably on the weekend, put on your 'inner child' hat and write down all the fun stuff that you enjoy. Do NOT refer to your manager list, that comes later. On another day, preferrably when you are really angry at a client, write down all the stuff you hate about what it is your job and working environment. This is your employee hat. Do not refer to any other list, yet. Write a list for your father role, your husband role and any other hats you can think of. Take your time and don't rush it. Finally, take a vacation to a nice sunny place where there is no TV or other distractions and read all of your lists. Contemplate, reflect, mesmerize, confubulate, etc. Now that you have all of these conflicting emotions writing down, you can begin to get a picture as to why you have so many mixed emotions about what it is that you do for a living. You are in your own hell. Now you need to either change your attitudes or change your environment. By working these lists, you may see a way out. I wish you luck.
Wed 02 Apr | Ran | I have worked for the last 3.5 years as an IC. I have felt the pressure that you describe but I think it is natural for that pressure to decrease somewhat and find a balanced level as your career goes on. It may be helpful to keep in mind that you were hired for your considerable expertise and because your IC status fit into the company's manpower requirements (their inability to commit employees to the task, lack of desire to hire a perm, etc). Management belief that you would drive yourself harder than their regular employees was probably not a motivating factor in their decision. Don't let yourself burn out.
Wed 02 Apr | Mike Gamerland | Having done this for many years, do yourself and your client a favor. Explain to them you only bill for hours worked and you always produce a profession week. For example, you are available 45 hours a week of which you bill 40. Why? Because this means when your spouse calls on the phone they don't have to worry whether they are 'paying' for those minutes. Or that your lunch ran 90 minutes instead of 60. It removes the trivial bean counting. Two important factors: - honor that agreement you - Tell them in advance. If you wait until a issue, they may believe you are feeding them a line.
Thu 03 Apr | Bored Bystander | Thanks for the reality check, everyone. I guess what is surprising is the preponderance of responses that indicate that nobody else really feels that contracting is any different than a regular job in terms of the quality of the work itself. Some of the responses here do indicate some assumptions about things I wasn't clear about. The location of most of my work has been about 80-95% my home office, so I tend to be treated as being in a 'unique' role and not as an FTE equivalent. It's a dedicated work setup at home, but it still suffers from the fact that I'm out of the loop on projects unless I aggressively ping the onsite people. Projects I've taken on are generally in response to a specific client need. When the project is done or the problem fixed, I disappear. So I also feel pressured by lack of continuity. And, location - I am not in a technology based region, so I'm generally not used to being treated well in exchange for knowing my stuff and being good. Every decent situation around here for me seems to have been bought with my 'blood', proving myself on some hideously uncomfortable, lengthy, or tedious deliverable. Business people around me are (frankly) rather stupid about technology, denigrate it, and denigrate the people connected with it. So I'm not used to even being appreciated. The best (most applicable) responses in the lot seem to be Nick: 'That's why contactors feel pressured - they can feel it in the air the same way that horses sense fear.' and Bryan Shaw's: 'The bad thing about being your own boss is that you are your worst employee!'' In fact, Bryan probably described the best plan of action for this issue that I've encountered anywhere. I think I will do exactly as you recommend, since my life and work style do feel out of balance. Thanks.
Thu 03 Apr | Bella | Bored, Don't charge your client for unproductive hours. Problem solved.
How many products can you handle ? | Tue 01 Apr | Sunish
Just curious to know how many products can a typical developer handle. What I mean by handle is to design,develop,debug and support applications. The number of customers can vary from 1 to around 50 per product. Some products have multiple versions too. I had been doing this for the past 3 years for around 5 products + doing lot of R&D.
Tue 01 Apr | Li-fan Chen | Millions upon millions of people use my software. A team of multi-talented experts organizes the interaction between customers and developors. Without them I will puke foam running around in circles gobbling.
Tue 01 Apr | Li-fan Chen | No seriously though, most senior architects can swim in at most 2 major major size projects, and maybe ponder and manage innumerable tiny ones. It depends on the code monkeys he manages. The more organized you are at archiving your projects in a way you can come back to the more you can handle I think.
Tue 01 Apr | sgf | Anyone who thinks in terms of 'managing code monkeys' will fail at even one project. At least if that is truly the mindset, rather than just an ill-conceived quick joke...
Tue 01 Apr | Steve Barbour | One at a time.
Wed 02 Apr | suhu | I guess the number of products a developer can handle depends on the complexity of the program. Of course if there are a lot of bugs or errors in the product, you are looking at a nightmare scenario. The industry / environment that your software operates also plays a big part..in some fields, most people can solve basic problems that they face and in others it is the opposite. Just my 2 cents.
Wed 02 Apr | suhu | Sorry, I personally handle three products at the moment. Nothing complicated, just some business apps. Thanks
Wed 02 Apr | | What Steve said.
Wed 02 Apr | Mark Newman | I currently have 38 programs in active use by the Production Dept., plus another 9 R & D-type apps that are used by the Design guys, plus a few Access & flat-file DBs to maintain. Fun, fun, fun!
Wed 02 Apr | Steve Barbour | It depends entirely on the applications and the users obviously. I can handle 350 of my locked in concrete 50 line apps for my 3000 users who actually only use it once a year. I can only handle 1 app that I had to rush develop for the CEO last week who can't really make up his mind if he wants a text editor or an operating system, but whatever it is it has to look 'neat'. In other words, it's a pointless metric.
Thu 03 Apr | Philosiphizing | Like a software project itself, the estimate here is mired in hundreds of external variables. Time pressure, reporting responsibilities, staff availability, desire, and how far you are willing to let quality fall in order to meet project deadlines (which may be contractual).
Joel and reading | Fri 28 Mar | avid reader
How do you manage to read these many books and run a company at the same time? Joe
Mon 31 Mar | Lauren B. | Read a little bit every day. You don't have to go through 4-5 chapters at one sitting. I don't consider myself a reader at all, but when I look back over a year, it is surprising to me how many books I actually have read. I try to bring a book with me so it is possible to read a few pages during brief intervals of down time, such as waiting at the dentist's office, waiting for the oil change, or during an unexpected solo lunch hour. Borrowing books from the library also helps motivate me to get through it. I know I have to give it back, and if I went through the effort to borrow it I'd better read it. I just got 'Good to Great' by Jim Collins from the library. Can't wait to start it! It's been recommended to me too many times by too many people to overlook.
Mon 31 Mar | GML | Yep, if I had no kids and no need for sleep, I'm sure I'd accomplish so much more. Alas, that's not the reality.
Tue 01 Apr | Ged Byrne | A commute into work helps too. Now I drive into work I find it really difficult to get stuff read. I used to have 2 hours a day on the train. Perhap Joel will have less reading time now his moved the company closer to home.
Wed 02 Apr | matt | Ritalin helps immeasurably.
Thu 03 Apr | Alex Chernavsky | Ged, you can 'read' books on tape (or CD, or MP3) while you drive. I have a friend who drives a lot as part of his job. He listens to more books than I read.
Joel on office space | Fri 28 Mar | aa
Very timely article, as were in the throes of negotiation right now for new space. It was interesting to read about what its like looking for office space in New York compared to a much smaller Canadian town. Lots of similarities, a few differences. On the whole I think its bang-on, except in one respect. Im not fond of the idea of signing a five or seven year lease, especially for a tech company. Tech companies tend to grow, and sometimes they do it in leaps and bounds. Committing to a 5-7 year lease means that if/when you outgrow the space early (and you probably will, if youre a tech company), then you have to deal with sub-letting the space, and now youre not only in the software biz, youre in the landlord biz. I think its better to know what biz youre in, and avoid dabbling in others. Right now were going from a 3-year lease of 1800 square feet to a 2-year lease of 4600 square feet. The shorter lease affords us the freedom to move, while the option to extend (written into the lease) will allow us to keep it longer if we dont grow. That way we hold all the cards, though admittedly the landlord will do far fewer leasehold improvements for a shorter lease. Anyways, thanks for a great article Joel. My biggest take-away was the concept of using the lawyer for negotiation like that. Cool.
Mon 31 Mar | Kirk | I'm in the software development business and the landlord business. Renting space to 'tech' companies is a huge pain in the ass. At least around here, they always go under before the lease is up. They also never want more than a one year lease because they know they won't be around. Unfortunately, the commercial real estate market around here is pretty bad, so you take what you can get.
Thu 03 Apr | aa | I don't know if anyone reads topics once they've scrolled down as far as this one has... :) I blogged a bit about our company's search for office space. Not as good an article as Joel wrote, to be sure, but it might be helpful to someone. http://www.dragushan.com/archives/the_mill/000585.html#000585
Thu 03 Apr | Steven C. | I read stuff this far down!
MS SQL Server 2000 Windows CE 2.0 | Wed 02 Apr | William C
Has anyone used this? Im very interested in the Merge Replication feature: Common scenarios for merge replication include: read-only replication; data capture and upload; and replication, updating and synchronization. Most applications use a combination of these scenarios. For example, a sales support application might use read-only replication to download a price list to a device while relying on data capture and upload to capture new orders on the device and then upload them to a server. Any thoughts on RDA vs. Merge Replication? For those that have been battle-tested, any gotchas? Thanks!
Wed 02 Apr | William C | To add: What's interesting to me is that it seems like all I have to do is define the tables/schema on the desktop (msde) and write some configuration files which describe what data is gong to go the PDA and which data is going to come back. All that fun stuff allows me to just concentrate on the forms that I would have to write for the PDA (to manipulate the data I'm concerned with). Forms and configuration files! That would be great.
web app testing | Tue 01 Apr | Jim Dandy
Hi folks, Can anyone give me any quality pointers, links, etc with regards to web app testing? thanks
Tue 01 Apr | Daniel Shchyokin | be more specific: What do you want to test? data storage, data propogation, ui, background tasks, scalability, performace, the network What variables do you have: are you trying different app servers, different OS' What are your tools like? If its the ui, whats the ui like? lots of java script (gui test tool) vs basic forms (use http unit) I have done a lot of web based testing and can help, but you need to be more specific
Tue 01 Apr | Jim Dandy | Yes I need to be more specific. Basically, what we're working on is a web site developed with ASP, under IIS and Windows 2000 Advanced server. We have two web servers and one SQL Server for our backend database. Thanks
Tue 01 Apr | Steven Tyler | Look at the forums at http://qaforums.com and http://www.stickyminds.com
Tue 01 Apr | Daniel Shchyokin | if you are willing to write test code in java, httpunit is a great api for this provided you don't have a lot of java script in the browser. for some raw performace stats, there is an app called apache bench (akthough it does not handle cookies so if you use them you will have to mod the tool)
Wed 02 Apr | Walter Rumsby | CanooWebTest wraps HttpUnit and extends Ant - you write your tests in an XML file. You'll need a little Java know-how to run it, but once you're going it's basically just XML. http://webtest.canoo.com/webtest/manual/WebTestHome.html
Wed 02 Apr | Deepak Shenoy | Check this site: http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/intranet/downloads/webstres.asp for the Microsoft Web Application Stress tool, for load and stress testing of ISAPI and ASP applications.
Wed 02 Apr | Tal Rotbart | I think that Mercury Interactive's VuGen and other tools are nice. Allow you to 'record' scripts to measure and test your pages from the users' perspective.
CAMEL - new home | Tue 01 Apr | Philo
After some time struggling with Blogger, CAMEL now has a home of its own. Feel free to watch my postings from a real live Dilbert project: http://www.saintchad.org/blog/ Ill keep posting progress. At least until someone in management finds the blog, figures out its me, and fires me. :-) Philo
Tue 01 Apr | Li-fan Chen | If you are disclosing information you aren't allowed to disclose please let us know. It's one thing to talk about a fictional example to persuade, it's another thing to blog about confidential proceedings. Please understand I am not accusing you of anything, just want to be sure everything is kosher. I apologize if you take this the wrong way.
Tue 01 Apr | Philo | No apology necessary. I'm well aware of my obligations and making efforts to maintain confidences and respect NDA's where appropriate. The two other lead architects know about this blog. My personal take on it - would some people involved in this be embarrassed if this documentation came to light and the office involved were identified? Of course. Does my clearance require protecting management against embarrassment? Absolutley not. All I ask is that nobody try to make guesses about where I'm working. :) Philo
Tue 01 Apr | Just me (Sir to you) | Nice Philo, any chance of putting an RSS feed on that?
Tue 01 Apr | Philo | Yeah - I'll see what I can do tonight... Philo
Tue 01 Apr | Mark Hoffman | I'm looking forward to seeing how this progresses!
Tue 01 Apr | could be anyone | Glad you gathered this all in one place; I've added it to my sites of interest. I will comment only that the registration requirement on your forum prohibits me from posting there...
Tue 01 Apr | Philo | [sigh] yeah - I thought turning off 'registration required' meant you could post without registration - turns out that only controls viewing, not posting. I'll have to see if I can hack the source to allow posting without registration; otherwise I'll have to find another forum package. Philo
Tue 01 Apr | Philo | RSS is up! http://www.saintchad.org/rss/saintchad.xml (Unless there's a better place I should keep it?) Philo
Tue 01 Apr | Philo | Oops! http://www.saintchad.org/blog/rss/saintchad.xml Philo
Tue 01 Apr | Prakash S | Maybe managemnet will read it and give you a promotion aka Office Space:-) Thanks for putting up the blog..
Tue 01 Apr | Kirk | It seems like you're giving out quite a bit of identifiable information. I mean, how many other teams of developers are working on a case management system like this?
Tue 01 Apr | Tony Chang | I've found a few dozen just in the state I think he is in alrdeay and I was only looking for an hour.
Wed 02 Apr | | The (CAMEL) forum seems to be... err... 500 Internal Server Error
Wed 02 Apr | Just me (Sir to you) | No luck retrieving the RSS so far.
Wed 02 Apr | one programmer's opinion | I think this type of developer blog is a great idea! I too am looking forward to seeing how this project progresses! Allowing for constructive comments on daily postings would be a nice to see feature. That way people who post here don't have to clog up Joel's forum with posts specific to the CAMEL project.
Wed 02 Apr | Philo | For the RSS make sure you're using the second link - http://www.saintchad.org/blog/rss/saintchad.xml I just checked, it's there. As for the forum - had to do an emergency reboot for a project, forgot to restart that SQL server. d'oh! Not a big deal, tho, since I'm going to put a new forum in that doesn't require registration to post. Philo
Wed 02 Apr | Prakash S | Philo, Got a better definiton for Committee (Source: Reader's Digest) Committee: A group of people who individually can do nothing but as a group decides that nothing can be done. :-)
AOP demo | Tue 01 Apr | Just me (Sir to you)
For those interested in Aspect Oriented Programming and missed Clemens Vasters on the ECMA Architects tour, a streaming demo (30 mins.) of his can be found at http://www.dotnetmaailma.com/video/030303/10/demo2.wmv
Tue 01 Apr | Li-fan Chen | How do you do aspect programming with dot net or vbscript?
Tue 01 Apr | Ged Byrne | http://msdn.microsoft.com/msdnmag/issues/02/03/AOP/AOP.asp http://research.microsoft.com/collaboration/university/europe/rotor/wshop-aspectnet.ppt
Tue 01 Apr | Li-fan Chen | I think a lot of us in trade are too ashamed to ask for some spoon feeding. But I am shameless :P What would happen if we started to apply AOP to system programming? What would happen if we started to apply AOP to writing business logic? Anyone have presentation on this?
Tue 01 Apr | Dennis Forbes | There have recently been a couple of really good MSDN articles covering AOP or similes, including http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/default.aspx http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/default.aspx AOP has its place (and has been is use for years in the form of binary interception or custom interception chains), but I have no doubt whatsoever that there will be loads of 'new=awesome!' misuses of it in the coming year until it's 01d 5k0O1. Cheers!
Tue 01 Apr | Dennis Forbes | Doh! That second link should be http://msdn.microsoft.com/msdnmag/issues/02/03/AOP/
Wed 02 Apr | Just me (Sir to you) | Personaly I find AOP can have its uses. MTS is a form of AOP right? But to use it as a common programmers toolbox technique for things like simple business logic in my mind is opening a Pandora's box. At least IMHO AOP assumes every aspect is cleanly orthogonal from every other, right? How long would this assumption hold with aspects freely programmed by a diverse non-communicating buch of independants?
Wed 02 Apr | Ged Byrne | Sir, MTS is actually a good example of the usefullness of AOP. With MTS in VB6 you have to add SetComplete and SetAbort calls to every method. For you components you have to implement the Object Controls interface and it's methods. These calls and methods are crosscutting concerns. If I create a foo object, it has been poluted with code that is concerned with the managing of MTS rather than foo. An example of one problem this can call is when you run you MTS object in the IDE. A message pops up stating that the MTS functionality had been disabled. The crosscutting MTS code has tied the object to an MTS context. The IDE has to intercept on your behalf so that you can then run your object in a different context. Using AOP the code necessary to implement the transactions is held separately from your object code. The foo object code just deals with things that concern the foo object. The things that concern transaction would be in your transaction aspect. Your foo objects would then be weaved with your transaction aspect. Then if you want to compile the object for a different context where transactions don't apply, then you just leave the transaction aspect out. As with most modular techniques its not about doing something different, but doing something in the right place.
Wed 02 Apr | Chris Tavares | I think you'll find that most of the people who are really excited about AOP right now are plumbers. By this, I mean - people working on implementing object remoting, transaction sharing, distributed systems infrastructure... all the low level stuff. Each one of these is an orthogonal concern, so AOP fits well. Making AOP a run-of-the-mill tool will, I think, not fly. I also thing that is why the only example of AOP I've ever seen is message logging. It's the only thing every developer can relate to.
Performance related pay and buying lawnmowers. | Tue 01 Apr | Ged Byrne
Joel refuses to add reports to Fogbugz that can be used to monitor individual performance. While out shopping for a lawn mower, I think I saw some evidence that shows his right. Here in the UK we have a chain of stores called Argos. Theyre a catalogue warehouse where you choose your items from the catalogue, pay for them at the till and then collect them from the warehouse. Im sure that every country has something like it. One of the big problems is the wait at the warehouse. Originally you would have to wait around by the desk keeping an eye out for your goods, and then try to attract one of the server’s so they could hand over the goods. It would be a stressful half hour and the biggest drawback of this style of shop. Then the clever people at Argos invested in a new computerised system. The warehouse collection section is full of comfy chairs and screens that show the progress of the various orders. You sit in a comfy chair, browsing the catalogue for the next thing you want to buy. Any time you can glance up and see how your order is doing. Finally a synthetic order declares Order XXX is ready for collection. Then you wonder up to the desk and take your items. It all worked beautifully and I was very impressed. Last night I visited Argos and went through the usual routine. I was very pleased when my order raced across the screen and my order number was called out within a couple of minutes. Then I spend half an hour waiting around the desk keeping an eye out for my lawn mower. Everything was back to exactly how it was before the system! I can think of only one reason for this degradation - management are using the system to monitor the speed of order handling, and most likely setting targets. Ill bet there are bonuses involved. So now the staff are motivated to hit the buttons as soon as possible, certainly before the order has actually been picked. Head office is probably loving the 250% improvement over the last few months. The reality is that we customers are back to the stressful warehouse scrum and the money invested in the lovely warehouse system was wasted.
Tue 01 Apr | Mike Grace | >> comfy chairs Not in the ones I go into. 8-)
Tue 01 Apr | Philo | Ged, I hope you don't mind, but I linked to your post from my blog, since it was dead on target for today: http://www.saintchad.org/blog/ Philo
Tue 01 Apr | Ged Byrne | Philo, So thats whats happened to the CAMEL project. I was starting to miss it.
Tue 01 Apr | Justin | No you're mistaken, Ged. It has nothing to do with performance monitoring. Apparently the job printer in the warehouse is broken just before and just after your order goes through, with the result that orders XXX-1 and XXX+1 are ready for collection, but yours is not.
Tue 01 Apr | Andy | Where's the RSS feed Philo? :)
Tue 01 Apr | Stephen Jones | I'll be commenting to the same effect in another thread. Although I agree with you in general, I believe that another reason could simply be that the computer system doesn't gel with reality. Whatever triggers the computer to announce your lawnmower has been ordered it is not the same as the lawnmower actually being physically moved. The guy who wrote the computer system doesn't work in the warehouse, and nobody thought to sit around for a few days to see how it worked in real life. It's where you get the thermoclyne; all those swimming above the thermoclyne thnk the whole thing is hunky-dory, while all those swimming below know it's one big balls-up but their waters never mingle.
Tue 01 Apr | Martha | Ged implied that the system, when first implemented, worked perfectly. So it doesn't seem like it's the programmer's fault/lack of understanding.
Tue 01 Apr | Stephen Jones | ---' the system, when first implemented, worked perfectly. So it doesn't seem like it's the programmer's fault/lack of understanding. '--- The words of a true programmer Martha, and the reason why forty years of software investment has yet to have any discernible effect on productivity. The fact that something works the first time means nothing. The programme is not supposed to work the first time, it is supposed to work all the time. If there's a physical hold-up after the program has been told all is dandy, then the program is badly designed, since it's supposed to mirror the physical process. Your attitude is the well known response to a trouble shooting request: 'Well it worked fine on my machine'. This might not be the case here, but it all too often is.
Tue 01 Apr | Ron Porter | ' The fact that something works the first time means nothing. The programme is not supposed to work the first time, it is supposed to work all the time. '' Bingo! That was well said. OTOH, I find that when things work well at the beginning and degrade once everyone is used to it, it usually means that they've fallen back on old procedures rather than relying on the shiny new ones, many of which have less to do with new software than refined processes.
Tue 01 Apr | Martha | I re-read this thread, trying to see where you're coming from, but I fail to see it. The programmer was told to implement a system which did X. He did. People found a w