last updated:19 Aug 2002 12:04 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 28 Apr 2002) | View Other Weeks
enough already Joel. | Sun 28 Apr | Michel
Do you read what you write? Choices reduce usability! do you think you are contadicting yourself? Bloatware-do you remenber what you wrote on bloatware? The more options the better, yet choices are bad. You might think the two are different but when you have a zillion number of features and you are not sure which one to use, thats the same as having many choices. Soap, do you really know anything about soap? You just learned and wrote your first soap program a few month ago. Joel reaads about something, then write his toughts without really having any experience thinking hes so smart then learn it and contradict himself.
Sun 28 Apr | Michel H. (another Michel) | Good thing I just scanned this board! I hope readers know that the poster above is not the same Michel that posted a topic some weeks ago. Ahh... I hate giving out my full name. To be on topic, maybe the Other Michel is right, but that does not keep it from being a stupid flame that I am afraid will attract dozens of empty responses.
Sun 28 Apr | troll 13 | Here's the first empty response: This is what pundits do. They read something, or take a course, or go to a meeting, then write about it! An odd phenomena is that if you write something down, and people read it... people tend to assume it has some merit. Take a look at Joel's resume... he worked at microsoft, and viacom, and juno...then upgraded his IC status to a mini consulting shop. He wrote a bug tracker. And a visual basic app. I know 15 people in the new york city area alone who have nearly the same credentials. And they don't even have a web log! A blowhard is a blowhard and one shouldn't assume someone who writes a lot actually has something to say...
are other areas of programming as lame as this one | Sat 27 Apr | tired
Hi, Random biz programming seems prettly lame and I dont see it getting better in my lifetime. Please no pep talks about how I can make it better because I just dont give enough of a shit to worry about how XML/SOAP/.NET will increase some megacorps ROI BLA BLA BLA. Anyway, rather than the standard long boring rant about how life sucks, Ill admit Im still attracted to techy style work, and Im wondering if other forms of programming are as harrowing and ultimately boring as building CRM systems for random companies. Does anyone have experience working in the following fields, and if so, what is it like? Fun, boring, lucrative, etc? GIS/GPS - uh...like working on arcview...i guess? I suppose there are a bunch of telemetry style startups now that might be in vogue...or did that pass already? Games - ive heard various reports...the most common one is that it is really hard with serious death march style schedules, and only 1 guy in the company is really making more than $50,000 a year. Graphics - vizualisation jobs... do those exist? when I was at uni those programs were all the vogue...but...it is unclear as to who employs those people Embedded Systems - palm programming, digital camera OS hacking, etc. I know next to nothing about this field.
Sun 28 Apr | MarkTAW | is it just me or are all of those things also for corporations that are, at the end of the day, looking to turn a profit? my theory is that as long as you're working for someone else, there's on a certain level of personal gratification you can expect from your work. something like 3 to 7 on a scale of 1 to 10 with 1 being slavery and 10 being an artist who's lucky enough to shit gold every time he does something and is praised in his lifetime for his work. There's this story of an art dealer who bought a Picasso. He brought it to Pablo Picasso to see if it was authentic. Picasso took one look at it and said 'It's a fake.' A few months later the art dealer bought another Picasso, and again brought it to Picasso. 'It's a fake' he said again. The art dealer said 'But I saw you painting this not more than a year ago.' Picaso replied, 'Yes, I often paint fakes.' I'm not sure what you're expecting to get from programming, sounds like you're looking for 'Do what you love, get paid.' That's a wide open topic open to much debate and interpretation.
Sun 28 Apr | tired | true. I am looking to do what I love, and get paid. My mom tells me that too. However I don't have the heart to tell her that what I truly love is eating ice cream and having sex, and it is hard to get paid doing those things. Like (I think) many people in this field, I just sort of fell into it. I had a math degree from a relatively lousy university, and needed to pay back my student loan. Programming looked a lot better than being a high school math teacher. And for the most part, I think it is...but that's a digression. What I didn't really think about at the time, was that a doctor can order some Java books from amazon, and become a computer programmer. However, a computer programmer can't order some books from amazon, and become a doctor. Or a nurse. Or a paramedic. Or...much of anything. So, before I give up and apply to starbucks, I'd like to investigate other programming realms. It isn't even very easy to move from 'oracle application architect' to 'embedded systems design' but it seems more probable than moving from 'oracle application architect' to 'millionaire NBA superstar'. Thus, I thought I'd see if programmers in other problem domains liked their jobs, or if everyone is just lookign to get out...
Sun 28 Apr | Christopher Wells | > I'm wondering if other forms of programming are as harrowing and ultimately boring as building 'CRM' systems for random companies. I do telecommunications systems and protocols. There must be 'a million' programmers doing stuff like this (telco is huge, though in recession at the moment) but I enjoy it. It's broadly called 'systems programming' which means approximately anything that doesn't have much GUI, for example OS, compiler, protocol, database, device driver, tools and utilities... > What I didn't really think about at the time, was that a doctor can order some Java books from amazon, and become a computer programmer. One of the programmers I worked with used to be a pediatrician/microbiologist... he gave that up to become a programmer. Programming can be hard enough and deep enough (requiring deep as well as wide knowledge: problem domain (vast), languages (many), machines and OSes (diverse), design (huge), maintenance (staggering), development process, self and people issues) that though a person can begin to do it part-time, I wouldn't feel threatened that a person can adequately displace me if they're not doing it full-time. > because I just don't give enough of a shit to worry Maybe it would help to find something that you do give a big shit about, and turn your attention to some programming in that domain. > the most common one is that it is really hard with serious death march style schedules That may be a *potential* problem anywhere (in any s/w development industry)... it is (again, IMO) a big difference between an experienced and a non-experienced developer (or preferably company), that they have some experience with dealing with that.
Sun 28 Apr | somebody loves me | 'before I give up and apply to starbucks' Ahhh sbux baristas, so full of love! There's only so many ways to skin a cat. Eventually you will master your domain whether we're talking bizapps or graphics programming or whatever. You can either succumb to the humdrum or join the debate on MBA versus MSCS. ;) Actually, I'm sure doctors get tired of hearing 'it only hurts when I go like this' and accountants get tired of filling out 1040s. You sure you wouldn't rather be a teacher? At least its socially redeemable. :)
Sun 28 Apr | Christopher Wells | > Like (I think) many people in this field, I just sort of fell into it. I had a math degree Me too. When I was young, I liked the deterministic nature of programming, that it was unequivocably 'right' or 'wrong' (unlike, say, English Literature). Also it (programming) was my first experience of a 'professional' work-place, and of contributing something instead of being spoon-fed as a student. So, I kind of like programming itself. > [...] but I enjoy it. Beware, that could be 'just me'; for example, among the things I've enjoyed about programming are: its being tolerable when the rest of my life was hell; its being tolerable while the rest of my life was great; being the only person working on something; working with and respecting the other people who are working on something with me; meeting a deadline; being justified in not meeting a deadline; not having a deadline; ...
Sun 28 Apr | Dan Dunham | I've had some employment with that you mentioned was Graphics/Viz, there are plenty of those jobs available, especially right now -- government subcontracting. But, the industry I have far more experience in is games. I've worked for three game companies, from tiny to megacorporate (EA) and most people's stereotypes of the game industry are pretty far off. Yes, crunch time exists. Yes, death projects exist. However, I think you're fooling yourself if you think that's a game industry issue... it happens everywhere. You're still making software, and you're still subject to poor planning, featuritis, and bad marketing decisions. Your crunch time will largely be determined by how well your project is planned. There is *nothing* special about the game industry in that respect. I have seen several games shipped with little to no crunch time, and I have heard tales of games that went for 1.5 years on crunch time. However, a stroll through 'Rapid Development' makes the game industry sound pretty normal. Salary? It depends. You can get paid as much as you do in other industries, but some game companies do pay less. Honestly, I think you'll find just as much variance as the rest of the industry. Right now the game industry is really understaffed... they have a ton of applicants, but they can't find *good* solid people. Salaries adjust according to demand, just like everywhere else. Some companies try to take advantage of the fact that people love their jobs making games, and try to underpay accordingly, but those companies won't keep people for long. But really, the reason I'm doing it and the reason almost everyone else in the game industry is there is because we *do* love what we do. At the end of the day, I might write nearly the same code as someone in another industry (compression, UI), but I loved every second of it because I was making something fun, something that my friends would want to play. As a bonus, when you work at a company where fun is a priority, you get friendly, interesting coworkers, relaxed environments. From a programming standpoint it's a great job, there are opportunities to delve into any number of topics - networking, sound, architecture, graphics, processor optimization, i/o, artificial intelligence. There is also a huge creativity aspect. You get to meld your programming talents with incredibly talented and creative artists, and at the end of the day you're judged on whether or not you made something fun. Sure, there's money issues and marketing and all those other fun evils of software, but it's just fun. I don't want to paint too rosy of a picture of the game industry, but it is fun. You have to deal with just as much crap as elsewhere in the software world.
Sun 28 Apr | Bella | One solution to your probem is to get married and have kids. That way, you'll have no choice but to go to work, whether it fulfills you or not.
Sun 28 Apr | tired | thanks for the replies. In response to Christopher Wells, when I made the comments about the physician picking up a book and becoming a programmer, I wasn't worried about health care professionals coming in and taking jobs. I was trying (poorly) to illustrate that it is far easier to move from some other occupation to computer programming than it is to move from computer programming to some non-computer related occupation. For a doctor to make $50K as a .NET programmer he needs about 6 months of serious .NET training. For me to make $50K as a nurse requires about 6 years (master's) of nursing school and 3 years of experience. However, thanks for the insight on other techie occupations. Games do seem like they would be a lot of fun to make. However, I've never really been into _playing_ computer games , so I'm not sure the field is for me. I guess practically, what I am really interested in learning, are there programming fields where the norm is to work really hard on a project, then when the project 'ships,' that's it...project is done. I think the main problem I have with 'bizapps' is that I don't mind building out the initial project, but when i get to the end of the first rev, I'm not so interested in adding new features, maintenance programming, etc. I want to find another, more challenging project to move on to. It seems like for instance, console games...like for the PS2...when you are 'Done' with the project, it ships out the door, and I'm 'done'. Are there other programming areas where the work schedule is similar to that?
Sun 28 Apr | Christopher Wells | Device drivers require the least maintenance of any project in my experience.
Sun 28 Apr | Herbert Sitz | Tired said: 'Anyway, rather than the standard long boring rant about how life sucks, I'll admit I'm still attracted to techy style work, and I'm wondering if other forms of programming are as harrowing and ultimately boring as building 'CRM' systems for random companies. Does anyone have experience working in the following fields, and if so, what is it like? Fun, boring, lucrative, etc?' Sorry to say this, but I'd say you're likely have the same problem no matter what you do: whatever you do will end up 'as harrowing and ultimately boring'. All work, no matter how glamorous and exciting initially, is going to become drudgery unless you've got the right attitude towards it. And I'm afraid you don't. But it sounds like you're young, you may be able to get it. You're not going to magically get the right attitude just from reading and agreeing with my advice (which is unlikely to happen anyway; when I was in your same position years ago it would just have pissed me off a bit). But you may get it by having the same experience time after time and starting to wonder what it is that's causing the problem. The answer won't come from changing your work. It will only come from changing yourself.
Sun 28 Apr | red | You're not supposed to like these business companies. They exist only to make money, and that's how you must approach them. I worked in the games industry during the boom. The main thing to learn is that like creating a genius you need two things: a smart kid and reasonable parenting. If you want to be creative and have a lot of latitude to do what you want, you should be smart and find a good company. One sign of a good company is if it has a good 'about us' page on the website. (Of course, you get the best view when you interview with them.) With a good company, you're only doing death-march style things because you personally totally blundered somewhere. Otherwise, people only work long hours because they're inspired to.
Sun 28 Apr | tired | Hi, In response to Herbert Sitz, When I washed dishes one summer in high school, my friends and I actually had a great time doing totally crappy work. We goofed off, told jokes, maintained a positive attitude, etc. However, as soon as the opportunity for something even remotely better came about, each dishwasher and my self jumped ship. I suppose I could whistle while I work, dope myself with prozac, read oprah self help books and whatnot, and eventually learn to love enterprise programming again. However, I'm not stuck in my current position due to debt, family, or other obligations, so I'm putting out feelers to see if it is worth looking into changing my programming focus, or give up entirely and work at starbucks. I never hear anyone with a resounding 'yes, I love writing NT device drivers' or similar sentiment, so I'm beginning to think maybe starbucks might be the way to go... I'm not really expecting any ridiculously positive responses, but overall the best I've heard from anyone (not just on this bboard thread) is that their work is 'tolerable.'
Sun 28 Apr | Christopher Wells | > When I washed dishes one summer in high school, my friends and I actually had a great time doing totally crappy work. The jobs I've enjoyed best were being a hopital porter, and a courier (freedom to move). The job I've enjoyed least was sorting tax forms (sitting, and unable to think). > 'yes, I love writing NT device drivers' I found it challenging; frustrating when it didn't work or I couldn't understand the documents, and a relief to finish it.
Sun 28 Apr | somebody loves me | I think MarkTAW may be on to something. Is there redemption in programming for a non-profit?
Sun 28 Apr | red | Well, looks like I wasted my time posting here. What do _you_ think would be fun in programming? If you want to goof off with friends, Starbucks is a better choice for you. Or start your own company with some friends. Because in programming you spend a lot of time on the machine alone. Them's the breaks.
Sun 28 Apr | TK | The trouble with biz-aps (and probably most apps) is that the job is never done: new products, new pricing, new services, accounting rule changes, governement regulations, mergers and acquisition -- it never ends and your boring cost accounting application must go on and on. If you like payroll, for example, and if you are good, you'll quickly learn more about doing payroll than anyone in the company. You can camp out there for a long time and raise your family.
Sun 28 Apr | Tony | The grass is always greener, however, if you are developing internal ulcers or something due to negative feelings about work I advise at the very least a long break. Then think about it. Its not easy to get into the perfect career, and its Ok to question every now and again your current predicament.
Sun 28 Apr | Bella | Yes, I suggest you quit and take a break. You never know what you have till its gone. This can help in adjusting your attitude
Sun 28 Apr | tired | Thanks for the advice. I think TK hit the nail on the head with my main problem with 'the industry.' -- it never ends. In response to red - *I* think stuff like GIS/GPS, building palm apps, scientific vizualization apps, games, the stuff mentioned in my original post...sound fun. Or at least more fun than what I'm doing now. I just really don't know anyone involved in those industries, so was wondering if other people here might be, and if they have a good time with work. Ultimately I am planning on taking some time off, as some suggested, but in order to do so, I need to save up a bit of money. Thus I'm looking around to see if there is any type of programming that is a bit more fun which I could start doing for a year or two whilst saving up for a backpacking trip, or something like that.
part time mba...resources, forums? | Sat 27 Apr | mba_Curious
Could you folks pl share info about part-time mba and how to go about it ? (I am in bay area and havent even started gmat prep..have ms in cs ) background: I have been doing programmer/designer/lead types of jobs for the past eight years and I am not particularly excited about continuuing this for ten/twenty years. I have fairly good idea about software industry, trends, how to ship a product etc and I like to spend my energy/time into bringing ideas to fruition rather than worry about coding. Yes, This is as idealistic as CS guy assuming all the stuff that he learnt is going to be used in industry. But going for a solid local mba (Haas etc) seems to kick-start.. Yes, I am not planning to end up as a manager for a bunch of java programmers...
Sat 27 Apr | tired | as far as MBA programs go, HAAS is ok. Less bullshit than Harvard and Stanford...lots of inroads into engineering and software companies. good connections to asia, if you are into the international thing. I'd take a kaplan's GMAT training course. they really do improve your score. there's that new center downtown berzerkley...
Sat 27 Apr | mlr | what do you plan on doing post-mba? http://forums.businessweek.com/bw-bschools/start/
Sun 28 Apr | Jeb | If you need to ask this forum about MBA resources then you probably are not ready for grad school. Check http://www.google.com
Flexible Software Lifecycle Models | Fri 26 Apr | Nick Hebb
I work for a medical products manufacturer, which means that any software that affects quality, design, or operation of the end device must be validated per FDA guidelines. The FDA validation guidelines do not specify that a certain lifecycle model must be used, so companies are free to implement any lifecycle model that best fits their needs. My question is, what lifecycle model would people recommended that is flexible for all ranges of software? By that I mean, we would prefer to define only one (ISO-controlled) software validation procedure, but the types of software we develop fall all over the map. For example, the software we develop might use simple PLC ladder logic, Excel VBA scripts, VB, Labview, Matlab, C++, MS Access, MS SQL Server, et al. Some may be used for test, others for machine control, and others for quality data tracking, so there are varying levels of risk that will warrant varying levels of validation. Most “cutting-edge’ models are really OOP centric, so they don’t apply to the majority of what we do. On the other hand, a classic waterfall seems the most flexible, but I would prefer a non-linear model. Any advice? Anyone have FDA software audit experience?
Sat 27 Apr | MarkTAW | Nick, I have absolutely no idea what you're talking about. I get some of the high level stuff, but would love a brief summary of the various models you're discussing, and the pros and cons as you seem them for your situation. I think you're not getting much response because most people here are like me - not well schooled in management philsophy. Also I think you might not be stating your problem in enough detail. Your question is sort of like 'I'm dating a girl and I'm not sure if we should get more serious. She lives about 6 miles from my house, and we've been dating for 2 years. Can you help?'
Sat 27 Apr | Christopher Wells | If I recall correctly, the book _Rapid Development_ ( http://www.amazon.com/exec/obidos/ASIN/1556159005 ) published 1996 included a chapter on lifecycles; including waterfall, and some variants such as 'iterative' or 'spiral'.
Sat 27 Apr | Claus Christensen | I recently did some software development for aircraft engines. In the aircrafts field software development is reglemented heavily, probably just like in medical instruments. Are you using the same crappy RTCA DO178 document as a base for the software process definition? Anyway, we needed to define our process for some development activities and this is what I think might be helpful: When defining a process for audited software development you want to minimize the points of outside control (by the FDA) during the process. We came up with a process that allows us to divide the effort into stages and [requirements definition / architecture / coding / testing] activities mixed freely (iteratively, waterfall, whatever) inside of the stages. This means we can have a multi-stage effort with lots of control and many documents created at each stage. But we can also have a one-stage project with only one requirements and testing plan document as input and code plus one testing results and one review document coming out on the other side while giving our developers total freedom to test and change their design as often as they want while inside this stage.
Sun 28 Apr | Nick Hebb | > 'I'm dating a girl and I'm not sure if we should get more serious. She lives about 6 miles from my house, and we've been dating for 2 years. Can you help?' Think of it this way - the girl = software lifecycle management and her father = FDA. The question isn't whether I should get more serious, since this is an arranged marriage and custom dictates that we must get married. The question is, since I'm already committed to this relationship, how to I establish a flexible relationshaip with the girl and deal with it as painlessly as possible. > 'When defining a process for audited software development you want to minimize the points of outside control (by the FDA) during the process. We came up with a process that allows us to divide the effort into stages and [requirements definition / architecture / coding / testing] activities mixed freely (iteratively, waterfall, whatever) inside of the stages. ' This seems to be up my alley. Did you define the lifecycle model yourself or did you borrow from one of the mainstream models? I'm really looking for something that I can say 'hey that looks good!' and adopt it for my project plans. In the meantime I'll check out _Rapid Development_. Thanks
Degrees are good (aka: No sh*t Sherlock) | Fri 26 Apr | Bella
There has been a lot of discussion about degrees, in various contexts. What about advanced degrees for bas Obvious answer: Yes, having more degrees can only help. Well, DUH! Public vs. Private Universities? Obvious answer: Private is more prestigious, so that will benefit you. Well, DUH! Associate Degree vs. Bachelor Degree Obvious answer: Yes, a bachelors is more valuable than an Associate. Well, DUH! What about us liberal arts majors Obvious answer: Yes, in our field, having a CS degree is better than having a liberal arts degree. Well, DUH! The people opposed to the degrees are NOT saying theyre worthless. They are just looking at the problem differently. The detractors are weighing in other real life factors, such as cost, time, expected benefit, etc. Its called a cost/benefit analysis, a ROI analysis, risk/reward, opportunity cost, etc If you want to be dogmatic, well, SURE, no one ever got fired for having too many degrees. This is a given! But that was not the point of my stance. Everyone knows degrees and formal knowledge are swell. That was not the point of any debates.
Fri 26 Apr | Bella | Just a comment on the topic of degres, and the expected resulting 'Success'. I'd like to add again, IMHO, that a degree is just an ENABLER. People who think it's a ticket to any kind of guarantee are way off base. A degree gives to a chance to PROVE YOURSELF, by getting your foot in the door. With anything in life, success is not SOLELY the result of a 'ticket in', it is also the result of the traits such as the following: determination focus belief in yourself confidence reliability intelligence multitasking prioritization efficiency timing luck risk taking sacrifice motivation following thru accountability for your actions people skills making no excuses entrepreneurial instinct And yes, of course, the above traits may have also been used to obtain the degree in the first place. But make the distinction between the person and his degree.
Fri 26 Apr | JP | Bella, Perhaps I didn't follow the threads closely enough, but I don't think I saw anybody making the arguments which you're trying to shoot down. In the Associate's versus Bachelor's degree thread, for example, the most common argument that an Associate's degree was so much less effective a career tool than a Bachelor's degree that it didn't warrant the investment, because the ROI on the first was unlikely to match that on the latter. Even given the initial lower investment. And with regard to disassociating a person from his degree - sure, a degree is not the be-all and end-all of learning or ability. But degrees provide, in my experience, pretty damn valuable learning curves. And whilst you may have met some fairly hot code monkeys who've never done a degree, I'd be willing to bet they'd be much better at what they do if they had one. Particularly when it comes to relating their code to the business around it. Still, the only evidence I've got to hand is anecdotal. Which is worth approximately nothing. Mind you, that's all the evidence you have, too....
Fri 26 Apr | Daniel Shchyokin | Actually bella, if you had read my post more carefully you would have noticed that my question was not about whether an advanced degree is good (it probably is), but asking for peoples opinions on which ones were the best to get. i.e. MSCS vs MBA ...
Fri 26 Apr | Doug Withau | If you have spent any time working the real world, you have encountered people who have very impressive degrees. Some of these people will never be able to translate the degree into practice (cranial to rectal inversion or, more commonly know as head up ass). We have also met the self-trained person who has a better grasp of how to get actual work done that 10 PhDs. Why would I hire someone with a degree over someone with experience? The sad answer is because of the lawyers. When your company gets sued because of an unseen bug in the mission critical software, what do you want to say in your deposition? “This programmer has a degree from Wherever U.” or “They taught themselves in only 24 hours.” You can argue about which programmer would have made the mistake, but it is a moot point. I have no way to know at hiring time which programmer will put a bug into the code. At that time, I am trying to hire the best candidate with the least liability, so I am looking for a degree. I do feel this is a sad and unfair way to run a business.
Fri 26 Apr | Daniel Shchyokin | also bella, public vs private lets test this one: usc vs ucla? 'WELL DUH' uc berkeley vs standford? tossup (definately not a 'Well DUH') so yes Bella this is a discussion worth having.
Fri 26 Apr | Daniel Shchyokin | Doug, if I were asked in desposition the question you posedI would answer as follows: I hired the programmer with a proven track record of delivering high-quality bug-free software, rather than the guy that spent 9 years creating apps with few users, and no real world production exposure, any good lawyer would counsel you to do the same. on the other hand if the lawyer could prove that I hired 'some guy' that just spent 24 hours leaning basic, because he cost 40k less, and I made claims to the client that 'All my programmers are certified geniuses' and charged accordingly, then YES I would be screwed. so, no CYA does not hold water as a reason not to hire non cs types
Fri 26 Apr | UNLV Running Rebel | --usc vs ucla? 'WELL DUH' Er...are you saying USC is better than UCLA? I suppose, if you prefer blonde bimbos to asian ones...
Sat 27 Apr | Akira | I wonder who is more boring to read, Bela or Joel. They make such a nice couple.
Sat 27 Apr | UNLV Running Rebel | I think Bella's point of view is...why on earth would one spend time and money getting a degree that just gets you (maybe) a 15% better salary in the rat race. Sure, going back to school for a PhD in astrophysics or cultural anthropology is cool. Going back for a MSCS so that you can be a SENIOR java programmer at LameCo instead of a JUNIOR one seems incredibly silly. Same thing with an MBA. Getting an MBA so that you can make partner at McKinsey is a good idea. Getting an MBA so that you can manage a team of senior java programmers is a sad, sad goal. Most people who have been doing joelonsoftware garbage-y business apps for longer than 2 years want to maximize their income so they can get the fuck out of the industry as soon as possible. Getting an advanced degree is going to be counterproductive in this situation.
Sat 27 Apr | somebody loves me | I'm afraid that I'm at the height of my career. I work for/with great people and I make good money. I get to design my projects how I see fit (w/in certain constraints) and I carry them through from concept to completion. Its everything that I wanted out of a programming job. I'm going to ride this gravy train all the way. However, train wrecks do happen, or sometimes they make unexpected stops. I want to be preparing for that situation now. I want to know where the escape door is. The problem? I don't want to have to program anywhere else. I'm afraid it isn't in me. I'm thinking an MBA is my ticket out. Move into project management or something. Even a 10% raise would cover the cost of the program. Its too bad teaching pays such crap. Any thoughts?
Sat 27 Apr | Daniel Shchyokin | no running rebel, I mean a UC vs. university of spoiled childeren
Sat 27 Apr | UNLV Running Rebel | Teaching at uni pays crap. Teaching seminars as a talking head can pay way more than actually doing the work you are teaching about. ;-) $300 for a 1 day course X 30 people == gross $9000/day - renting the room ($200-$1500) ends up being a lot more than what the highest paid consultants can pull down in one day...or even in 1 week. the issue with MBA is often times you end up with a job that is more soul-crushing than the one you had before. Most of my pals that went to business school spend a lot of time drinking... MBA typically does NOT lead to a head exec position (well, unless you are George W Bush). It usually leads to 'whipping boy for head exec' position.
Sat 27 Apr | UNLV Running Rebel | daniel...whew. ;-) Actually though UC schools are a very special case in USA education. I would reckon UC berkeley is one of the most difficult schools overall to get into, because every student in california is trying to get in there (in state tuition, one of top 5 unis in world) and the state can't just economically weed people out (if you can't afford Columbia...you just can't go there. )
Sat 27 Apr | Daniel Shchyokin | Running rebel: some more good examples: michigan state, colorado state, university of illinoise all top notch engineering schools, and there are way too many private schools like USC to simply state public beats private. the key thing to remember is that comparing universities is not like comparing other private vs public institutions. 1. Universities as a rule are not run for profit 2. they all recieve substantial amounts of money from gov't 3. all are in a position where there customers (students)need them more than they need their customers 4. all things being equal, those liberal academics often prefer public education. 5. All universities prestige (I am talking about famous universities not small less-known ones) is built on things like: how nice campus is, how good football team is, how many papers got published ... none of them have very much to do with teaching (with very few exceptions)
Sat 27 Apr | Bella | I don't think teaching at universities pays crap. In fact, I can't think of a higher paying profession. That is, after you take into account that you have vacation for 4 months a year. And you certainly dont put in 12 hour days. More like 12 hour weeks, LOL.
Sat 27 Apr | J | Bella, I suspect that when your web-surfing and trolling on this discussion board is subtracted out of your workday, your schedule is not much different from the schedules of those professors whose jobs look so easy to you. And did you really need to start a new thread to discuss this? Were you afraid your troll wouldn't get the attention it deserves, buried under twenty messages?
Sat 27 Apr | Bella | Who's the troll ?
Sat 27 Apr | Christopher Wells | > That is, after you take into account that you have vacation for 4 months a year. Some professors are seen as sitting on (or abusing) their tenureship, but during those 4 months of not lecturing a professor can do their research or writing.
Sat 27 Apr | somebody loves me | I keep hearing that IT is a high burnout field. Where do all of these people go? What's the best way to leverage past programming experience in a future career? Not necessarily the same question.
Sat 27 Apr | the end | >>I keep hearing that IT is a high burnout field. Where do all of these people go? What's the best way to leverage past programming experience in a future career? Not necessarily the same question. i don't believe programming experience translates into anything. I for one am giving myself until september to save up enough cash for a sweet (pro digital) camera kit. then, I'm going to become a sports photographer. a pipe dream perhaps, but at this point, I don't give a shit. I would rather work at starbucks than sacrifice another day of my life to the machine. ... at least i'd be able to work in an upright position...
Sat 27 Apr | conservative arts major | There is a strong rebuttal against those who don't see the strength in degrees. More and more it becomes important to translate the language of CS to that of your target market. Colleges tend to require that you take courses outside your given concentration. Therefore a college grad has a clear advantage in translating to fields where formal study is more standard. (Or at least appearing to.) Of course, I didn't feel I needed to do this, because I'm a cocky sonofabitch. But the reasoning is sound. Anyway, I think this conversation is going in circles. There are two perspectives: 1) you're trying to get an advantage in the industry and 2) you're interviewing people. Whereas this discussion is just nebulous.
Sat 27 Apr | somebody loves me | 'Anyway, I think this conversation is going in circles.' Yes, yes. Degrees are good insofar as you gain value from them. The hard part is determining value, because there is no _one_ right answer. Hence the endless arguments. Enough with the degrees. What are some good ways to leverage past IT experience? I thought of one -- tech writer. I'm hoping you people have some better ideas.
Sun 28 Apr | Christopher Wells | > What are some good ways to leverage past IT experience? I thought of one -- tech writer. I'm hoping you people have some better ideas. The book _What Color Is Your Parachute_ suggests that when changing career the easiest way is to leverage past experience: experience in a 'skill', or in a 'domain'. For example, An accountant in the TV industry might become a reporter in the TV industry, or an accountant in the medical industry. There are many (innumerable) jobs that benefit from computer skills. Jobs within the IT domain include programming, being an operator/admin, doing networks, tech support, writing, management, sales, QC/QA, product specs and design, ...
embarrassing excel book request | Fri 26 Apr | excel newbie
Hi, Im a computer programmer...and I dont know how to use Microsoft Excel properly. I have only used it to employ joel-style schedules. Ive never really used it to compute anything seriously. I am working on a contract project right now, where I am creating an ASP for a very specific vertical market. I think this project has a good chance of being successful. However, I believe the guy who is running the project is going to put himself out of business with his pricing scheme. I think I have a better idea for pricing and would 1) like to test my idea via plugging some numbers in to excel and 2) like to use the spreadsheet to illustrate my idea to the guy running the show. Is there a good book for learning excel which wont seem too tedious to a programmer with a degree in mathematics? Im sure I can figure excel out on my own, but Im just wondering if there is an excellent book that would be worth reading over this coming weekend, which would make me a complete excel wizard. Thanks!
Fri 26 Apr | Ged Byrne | Take a look at: http://www.mathtools.net/Learning/Books_and_Tutorials/Excel/
Fri 26 Apr | Mary | I would recommend the O'Reilly Excel in a Nutshell book. It goes through all the menu commands and in plain English describes what they do. I've never gone 'under the hood' in Excel, but this book is great for figuring out what Excel can do from the surface.
Sun 28 Apr | RE | I recomend the Woodly Leonard book, Woody Leonhard Teches Microsoft Office XX, (where xx is the verson). You can pick it up for under twenty bucks, and it will tell you how do just about anything with Microsoft Office. Including how do verfication of your numbers and make them look pretty. I recomend just about anything from this author relating to Office.
Please re-read my article | Thu 25 Apr | Paul Prescod
Warning....overheated prose below. Im a little bit tired of people NOT UNDERSTANDING (perhaps not entirely READING) the article and then commenting on it as if they did. Joel says: Many things in SOAP are there to make it easier. WSDL is there so that I can type google followed by a dot and immediately get a little intellisense popup telling me what methods I can call. Then I can choose doGoogleSearch from the popup list and get intellisense again prompting me for all the arguments, and I can get little wavy red underlines in my editor if I pass a string where a long was expected. Guess what Joel! That isnt SOAP. SOAP is irrelevant. Thats WSDL. My article was *PRO-WSDL*. In the article I pointed you to an HTTP-based WSDL that should have *exactly the same behaviour* in Visual Studio.NET (Ive only tried it with the command line tools myself). I had a whole section of the article on ease of use but it seems to have flown over peoples heads. This is what frightens me. People around the world are choosing SOAP without the slightest understanding about what it is or how it relates to the tools they use. Heres another point about Joels article. He says: The real problem with SOAP is that its a completely inadequate remoting system. .... It doesnt support references (ditto). It has about 10 years to go before it gets to where CORBA and DCOM were 10 years ago. Guess what Joel. Thats the problem Im *trying* *to* *freaking* *solve*. Re-read the article. It says: The point that has not yet filtered through to the mainstream of web services implementors is that linking is just as important for machine-to-machine applications as it is for human-facing applications. If it is impossible to link to SOAP-exposed resources, then they are less powerful and useful than HTTP-exposed ones. Until SOAP has an addressing mechanism as rich as HTTP URIs, SOAP is less, rather than more powerful than HTTP. You use the term references. I use the term hyperlinks. Were talking about the same thing. We should be on the same side. SOAP doesnt support references because the reference syntax used on the Web is URLs and SOAP doesnt have properly support for exposing resources through URLs. Im trying to fix the problem.
Thu 25 Apr | pb | What is needed is a light-weight mechanism to replace screen-scraping. I thought SOAP or even XML-RPC was that but they both seem over-kill. What confuses me a bit is formatting the request as a URI (it could be a POST as well, Paul, right?) and then a response in XML. Since many/most web development environments can't parse XML out-of-the-box, why not format the response in something like URL-encoded, key=value pairs? For many function calls, there's not a whole lot of data coming back.
Fri 26 Apr | Akira | Paul don't worry too much about Joel, he's just a cocky person who don't really understand software engineering.
Fri 26 Apr | Justin Rudd | I read your article. It was a very easy read. I even caught your pro WSDL sentiments (*gasp*). The one thing that I have noticed is that everyone is hung up on SOAP 1.1. The inventors of SOAP 1.1 have said that they screwed up when they made wrote the data model section. That's a given. They had to write their own data model because XML Schema didn't exist and DTD wasn't expressive enough. So SOAP 1.2 breaks that model. The 1.2 spec only talks about the envelope, headers, and body. The SOAP Data Model (section 5 and 7) is just an addendum. What is being pushed in the community (from what I've seen) is the XSD Data Model. This means that you describe the body of your message using XSD. No more weird ref and href stuff. No more SOAP-ENC:array stuff. Just good ole fashion XSD which you seem to like. I do agree in general that some things are better as XML/HTTP/URI. Most APIs that query can be rewritten as XML/HTTP/URI. I'm finishing up an R&D project that proves that with our (my companies) current XML interface (which is SOAP using the XSD Data Model). And what I've found is that some of our messages don't make sense as XML/HTTP/URI. For example, we have a SOAP message (note not an RPC call) that allows a user to get certain preferences from our database. So an XML request might look like this (sans SOAP envelope) - Now I came up with the following - http://someserver/preferences?names=one,two,three Or I could use a form-encoded POST. Both work pretty well, but it is not as simple or as expressive as the XML above. Also caching actually became a problem. The following produce the same result - http://someserver/preferences?names=one,two,three http://someserver/preferences?names=three,two,one But as far as most caching servers go, they are different. Not a big deal, I'll just put a no-cache whereever I handle that URI. But now I gotta remember to do that and analyze everywhere else that might have caching problems. These are problems that I ran into during my research. So its not quite 'Just come up with the URI and move on'. One last thing...what is the difference in google sending the key plain text in a well defined element and basic authentication. Last time I checked, basic auth uses a well defined HTTP header that simply base64 encodes the credentials. Not exactly secure. So how is it different? Also why do you say that SOAP's RPC-over-HTTP hasn't solved the security problem. What is to stop that RPC call from using Basic Auth? I've done it many times. It sits in the same header that it would for a good ol' fashion HTTP call. But with SOAP (as well as SOAP-RPC), I get the extensibility of SOAP Headers. And the existence of these headers can be verified by a schema validating parser. Sure HTTP headers are extensible, but I have to validate them myself and I'm lazy. Also by putting information in these headers (such as security credentials from WS-Security), I can easily change the transport from HTTP to SMTP. Since I'm not dependent on any of the HTTP underpinnings (Basic Auth), this is very simple to do (in fact my company does it everyday). So in short, I think that SOAP 1.2 is fixing most of the problems that you have. Most of the forward thinkers (the people I know) are abandoning the SOAP Data Model (except for backwards compatibility) and moving to the XSD Data Model. Keep up the good writing... Justin Rudd
Fri 26 Apr | Paul Prescod | Justin: You are a rare soul. Someone who both chooses to read the whole article and actually has a sense of what SOAP really is. Congratulations!!! In response to your questions: 'The one thing that I have noticed is that everyone is hung up on SOAP 1.1. The inventors of SOAP 1.1 have said that they screwed up when they made wrote the data model section. That's a given. They had to write their own data model because XML Schema didn't exist and DTD wasn't expressive enough. So SOAP 1.2 breaks that model. The 1.2 spec only talks about the envelope, headers, and body. The SOAP Data Model (section 5 and 7) is just an addendum.' Okay, but the addendum is what everyone who says 'SOAP is easy and interoperable' is talking about -- SOAP RPC. The 'just envelope, headers and body' view is way too generic to 'do much' and thus is not much more interoperable than pure XML. So you can either have ease of use and interoperability from the RPC stuff (what I call implemented-SOAP) or you can have this future-looking stuff (that I call idealized-SOAP). You can't have both. Really, I think SOAP is two (or more) specifications in one. You said: 'What is being pushed in the community (from what I've seen) is the XSD Data Model. This means that you describe the body of your message using XSD. No more weird ref and href stuff. No more SOAP-ENC:array stuff. Just good ole fashion XSD which you seem to like.' XSD is okay. My point is to get people thinking about what SOAP is actually doing for them. If XSD is doing all of the heavy lifting of type mapping then why are they using XSD? 'I do agree in general that some things are better as XML/HTTP/URI. Most APIs that query can be rewritten as XML/HTTP/URI. I'm finishing up an R&D project that proves that with our (my companies) current XML interface (which is SOAP using the XSD Data Model). And what I've found is that some of our messages don't make sense as XML/HTTP/URI. For example, we have a SOAP message (note not an RPC call) that allows a user to get certain preferences from our database. So an XML request might look like this (sans SOAP envelope) - Now I came up with the following - http://someserver/preferences?names=one,two,three Or I could use a form-encoded POST. Both work pretty well, but it is not as simple or as expressive as the XML above.' I kind of dispute that, but anyhow.... 'Also caching actually became a problem. The following produce the same result - http://someserver/preferences?names=one,two,three http://someserver/preferences?names=three,two,one But as far as most caching servers go, they are different. Not a big deal, I'll just put a no-cache whereever I handle that URI.' Why turn off caching? It doesn't seem to hurt if the informtaion is cached three times...anyhow you wouldn't get caching with SOAP so as far as the comparison goes...SOAP doesn't win! 'One last thing...what is the difference in google sending the key plain text in a well defined element and basic authentication. Last time I checked, basic auth uses a well defined HTTP header that simply base64 encodes the credentials. Not exactly secure. So how is it different?' I deleted the paragraph that discussed digest authentication because the article was getting long. Even Basic Authentication has the virtue that it separates the cachable part from user-specific part. 'Also why do you say that SOAP's RPC-over-HTTP hasn't solved the security problem. What is to stop that RPC call from using Basic Auth? I've done it many times. It sits in the same header that it would for a good ol' fashion HTTP call.' I said that SOAP doesn't have a standardized solution to this. That's just a fact. Because of the silliness of 'protocol agnosticism', standardizing any SOAP over HTTP issue is a nightmare and some implementations will choose to use SOAP-specific solutions like the new 'WS-security' stuff. 'But with SOAP (as well as SOAP-RPC), I get the extensibility of SOAP Headers. And the existence of these headers can be verified by a schema validating parser. Sure HTTP headers are extensible, but I have to validate them myself and I'm lazy.' It's a minor benefit but I agree that SOAP's XML headers are a benefit. When I get time I will show how there is really no need to use the rest of SOAP to get the benefit of SOAP headers. 'Also by putting information in these headers (such as security credentials from WS-Security), I can easily change the transport from HTTP to SMTP. Since I'm not dependent on any of the HTTP underpinnings (Basic Auth), this is very simple to do (in fact my company does it everyday).' I'd be curious to hear more about this. Why do you do that? Of course it is possible to route any protocol over any other protocol but the practical advantages of this seem quite slight to me. I particular I'd be curious whether you write some apps to SMTP+SOAP and some to HTTP+SOAP or whether you really write apps to 'SOAP' and then just change the transport. I'm skeptical because I don't see how you could construct an application that doesn't care whether there will be a reply and whether it should keep a connection open or expect an asynchronous callback etc. 'So in short, I think that SOAP 1.2 is fixing most of the problems that you have. Most of the forward thinkers (the people I know) are abandoning the SOAP Data Model (except for backwards compatibility) and moving to the XSD Data Model.' In this 'just the envelope' model, SOAP's advantages are quite elusive. 'Keep up the good writing...' Thanks for reading and actually thinking things through.
Fri 26 Apr | Paul Prescod | 'What is needed is a light-weight mechanism to replace screen-scraping. I thought SOAP or even XML-RPC was that but they both seem over-kill. What confuses me a bit is formatting the request as a URI (it could be a POST as well, Paul, right?) and then a response in XML. Since many/most web development environments can't parse XML out-of-the-box, why not format the response in something like URL-encoded, key=value pairs? For many function calls, there's not a whole lot of data coming back.' Sure, I have no problem with that if it works for you. In my article I avoided XML for two out of the three methods. The third method was really pretty complicated so I did use XML.
Fri 26 Apr | Paul Prescod | 'So in short, I think that SOAP 1.2 is fixing most of the problems that you have. Most of the forward thinkers (the people I know) are abandoning the SOAP Data Model (except for backwards compatibility) and moving to the XSD Data Model.' First, Justin, I don't have much of a problem because HTTP works fine for most applications, as I demonstrated with Google and have with UDDI in the past. Second, SOAP 1.2 has no solution for SOAP's most pernicious problem, the one Joel mentions: the ability to handle object references. People do not run into that today because they aren't trying to integrate SOAP systems. Most corporations have at most one SOAP system (by which I don't mean a single piece of software but an actual information system). When they have multiple systems, and they want to integrate them and integrate them with their customers they will find it quite painful that there is no standardized way refer to a datum. The Web solved that problem more than 10 years ago but today's SOAP advocates refuse to listen. Today one of them asked me if what I really wanted was COOKIES FOR SOAP! In my opinion this is a fatal flaw which makes SOAP useful for building large integrated systems.
Fri 26 Apr | michel benevento | I'm with Paul. What turns me off about SOAP is that it looks so complex and hard to write, play with, debug. So not a lot of people will investigate it. The exact oppostite of what made HTML and the web so successful. Joel calls SOAP the 'wire format', but that's wrong: HTTP is the wire format, SOAP is what meets the eye. No, says Joel, we'll have this smart editor (presumably by MS) to write/interpret our soap calls/responses with. The very fact that we would need such a tool is proof that SOAP is just too damn complex for the easy task of calling a (remote) script and passing it some variables.
Fri 26 Apr | Justin Rudd | I was going to copy and paste portions of your response into this message, but I decided I'm just going to answer the general gist (at least what I picked up) of your response. SOAP 1.1 (or SOAP-RPC as we have called it) says that interoperability will come from people supporting the exact specification. You encode your data i their Data Model and magically everyone will be able to talk to you. This works (somewhat) today. There is interop. But you are saying that it is overkill. That it isn't really doing anything for you. That by using URIs, HTTP, and XML responses you can get the same thing. I'm inclined to agree with you...today. The SOAP Data Model is too complex. But that complexity for the most part is hidden by tools. This is good or bad depending on your viewpoint. If you say its bad, but then you turn around an use RMI without knowing what RMI looks like on the wire, aren't you being a hypocrite? The same for DCE-RPC, DCOM, and CORBA. Millions (ok...probably just thousands) of people use these technologies without worrying about the wire encoding. They don't need to. It's been done for them. Things get simpler with time. Take your URIs and HTTPs. Every single one will be different. Some might use query strings, others might use form encoded data, and still some might use an XML payload body (and from I understand this is evil in the REST world). How do we make that easier for business developers? What type of framework can we build that will be able to handle any type of URI and make that become a method call on their Java Bean or COM+ component. Notice I say business developer. I'm not talking about us the plumbers (to steal a phrase from Peter Drayton). I would love to see the framework. maybe that is the next step to write this framework that can take arbitrary URIs and HTTP headers and map them onto methods. Now balance the above with SOAP 1.1. It explicitely states how you must encode things. It explicitely states how you are to pass structures around. Because of the explicit nature, tool vendors (a.k.a. the plumbers) can build these frameworks that make the everyday life of the common business developer easier. The business developer gets to go home and see his family. The plumber...well...he moves on to the next challenge. Now I realize you state the 'envelope, header, and body' by themselves don't allow you to do much. I disagree (obviously or I wouldn't be replying). Defining my body using XSD gives me the best of both worlds. As more and more tool vendors figure out the PSVI (Post Schema Validation Infoset), they will be able to map arbitrary XML messages onto methods (which is what ASP.NET does today). Now add to that a structured way of passing in extra data (the SOAP headers), I'm not longer tied to the HTTP transport. It is but one of the ways I can send a message. This is all future. It can be done today but mainly by plumbers and business developers that have no life :-) You asked (or someone else) why I need to go from HTTP to SMTP. I do this because I might need to forward a SOAP message to a consumer. Right now most consumers don't have web servers. So I forward a SOAP message to a mailbox that my application checks from the consumers desktop. Pulls it down. Executes the message. Replies to the mail. The server gets it and can use an HTTP SOAP Message to respond back to the original sender of the message. No. I can't tell you what app this is. Because it doesn't have a name and it is being built by my (new) company and its huge engineer team (i.e. me). NOTE: If Groove succeeds with their Edge Services, then all bets are off. I'll build ontop of Groove :-) To sum up - We started with raw TCP. That sucked. So RPC came out. Better but still cumbersome. So then we got CORBA and DCOM. Even better but have issues. So now SOAP a new protocol is invented. It leaves behind a lot of the baggage that CORBA and DCOM have (ObjRefs which everyone seems to be hung up on). It is really only about 2 years old. It has a long way to go before it reaches the maturity of CORBA or DCOM. Justin
Fri 26 Apr | Justin Rudd | One last reply to just to get my point across - SOAP 1.1 defines the encoding. It is no different from RMI, CORBA, or DCOM. SOAP is on the wire. The DCOM packet is on the wire. The reason CORBA and DCOM are popular is because tools vendors have hidden this. I believe that the wire format of SOAP is getting a bad wrap because the tools have not caught up. Right now many vendors are saying - 'It's just XML, parse it yourself.' And that is where the SOAP Data Model falls apart in my mind. It supports things like sending an object once and having many different references to it. It supports open and conformant arrays. That is why people I know are pushing the XSD Data Model. If we insist on people parsing the messages themselves at least lets make it easier on them and give them schema validating parsers, XML Infoset compliant tools, etc. With this, plumbers can now build ontop of the XSD Data Model how to map to a method call. It takes time. It isn't going to happen overnight. Justin
Fri 26 Apr | Justin Rudd | OK...this really is my last response for now (boss is looking at me funny). If you believe that SOAP 1.1 is hard to look at - have you ever looked at RMI (or CORBA or DCOM) on the wire and tried to figure it out in your head? Justin
Fri 26 Apr | pb | POST/GET requests over http(s) with a set of key=value pairs as a response is looking better by the minute! What should we call it? REST, I'm afraid, is unlikley to get anywhere until it is presented in a more utilitarian fashion. It feels much too much like a philosophy or religion or something. A 'Wiki' site as it's home? Coined in a dissertation? 'REpresentational State Tansafer'? SOAP seems better suited for situations where a lot of data is returned. Since the average function call returns very little data, maybe it's not the right method?
Fri 26 Apr | Robert C. | I think the issue there are simpler or technically better solution than SOAP is irrelevant. SOAP is good simply because every single tool/platform/ERP/... vendor agreed to use it. Even with the problems pointed out, this wins hands down. The other good point about SOAP is that it's transport independant. SOAP can be used over HTTP, SMTP, MQ/Series, IIOP, JRMP, pure socket, TUXEDO, (name your favorite transport layer) etc. And SOAP is here not to be able to pass a couple of args to a remote function (aka Google), but a full business doc in a B2B exchange between partners (about 10k+ XML document in and out) Of course, SOAP has strong limitations for real business ($$$) WebServices. That's why we have the myriads of other XML dialects (ex: ebXML) . It will be a while before everyone agrees on these ones, but then the promise of WebServices will be delivered.
Fri 26 Apr | Ziv Caspi | Said pb: 'SOAP seems better suited for situations where a lot of data is returned'. I thought it was the other way around -- SOAP allows you to put more data (than REST) as part of your request, because URLs cannot be too long. Am I missing something?
Sun 28 Apr | Paul Prescod | 'Take your URIs and HTTPs. Every single one will be different. Some might use query strings, others might use form encoded data, and still some might use an XML payload body (and from I understand this is evil in the REST world). How do we make that easier for business developers? What type of framework can we build that will be able to handle any type of URI and make that become a method call on their Java Bean or COM+ component. Notice I say business developer. I'm not talking about us the plumbers (to steal a phrase from Peter Drayton). I would love to see the framework. maybe that is the next step to write this framework that can take arbitrary URIs and HTTP headers and map them onto methods.' This framework is J2EE or .NET depending on your preferences. What do you think peole have been doing in their web development for the last six years?
Sun 28 Apr | Paul Prescod | 'You asked (or someone else) why I need to go from HTTP to SMTP. I do this because I might need to forward a SOAP message to a consumer. Right now most consumers don't have web servers. So I forward a SOAP message to a mailbox that my application checks from the consumers desktop. Pulls it down. Executes the message. Replies to the mail. The server gets it and can use an HTTP SOAP Message to respond back to the original sender of the message. No. I can't tell you what app this is. Because it doesn't have a name and it is being built by my (new) company and its huge engineer team (i.e. me).' This is fundamentally a PULL-based applicatoin because it pulls from the mailbox. Therefore you could just pull directly from an HTTP server on the real web. Insofar as most end-users cannot set up their own mailbox it seems as if it will be much easier for either you or their ISP to maintain an HTTP-based 'mailbox' than to try to reuse the SMTP infrastructure. This is what Microsoft does with the Outlook/Hotmail combination, as an example. Yes, Outlook talks to Hotmail via HTTP, not either POP nor SOAP.
Migrating to .NET | Thu 11 Apr | Joel Spolsky
What do people think of our .NET plans? http://www.joelonsoftware.com/articles/Our.NetStrategy.html Please avoid religion and favorite language debates!! Assume *for the purpose of this discussion* that .NET is the only possible platform that will work for Windows development. What Id like to discuss are things like: > When will people have the CLR? At what point will it be possible to distribute .NET (Windows Forms) applications to people who are going to download them over modems? > How hard will it be to port VB6 code to VB.NET? Has anyone tried? > Has anybody done any significant Windows Forms development in .NET yet? What are your experiences?
Mon 22 Apr | Geoff Bennett | >With my current tool of choice (and fortunately my >corporation's current tool of choice) I've been >enjoying this nirvana since the product's inception. >I won't mention that tool lest I be accused of >being a religious fanatic. I'm going to go out on a (potentially suicidal) limb and imagine it's the 'D' word. That was the language I used in my first professional position, and I still use it today. Although, for the last few years, I have been more or less full time with VB/ASP/COM etc. From the point-of-view of a VB'er, this sort of architecture is a welcome relief. I can't count the number of times another application install has blown up my app due to DLL version mismatches, etc. Not to mention the bloated exe size (compared to other languages), and requirement of runtime distribution. I know that last point seems unusual under the present context, but the entire idea with the .net runtime is *everyone* should have it in the end, so you should not need to distrubute it. Whether 100% penetration will be achieved is a topic for another discussion. This brings us back to finally having the ability, with MS RAD tools -- I know C/C++ have been able to do it for a while, to have what's tantamount to an exe-drop installation. Of course, as time goes by, it won't be quite that simple.
Tue 23 Apr | gb | Has someone been taking drugs? Of course this current clr won't be the great last and only version of CLR to come out. There'll be more by and by and the fun will continue.
Thu 25 Apr | Chris Woodard | As a Unix/Linux/PHP/Apache developer, I thought I could bring another perspective to bear on the discussion. I am a regular reader of Joel's column, and by and large he has valid things to say. However, in the discussion forums I almost feel like I'm watching the Ozarks Intra-Family Dating Game. None of you guys seem to think there's a world outside of Microsoft, when (a) most of the web runs on Unix and open-source software, (b) eWeek labs has just tested Apache 2.0 for Windows and found performance to be identical (sans the security problems), (c) corporate America is paying attention to the steady parade of security holes in IE and IE's security patches, and (d) Microsoft hasn't really conquered anything but the desktop. .NET may actually be the greatest thing since canned beer. I don't know. I do know that I've heard similar hype for tools for decades, and the reality has always fallen short of the hype. One set of problems gets solved, and another one gets created. (I've been doing software for a living since 1980, and as a hobby before that.) The biggest downside I see for .NET (given my paltry knowledge) is that the CLR is Windows-locked. If your bread and butter depends on knowing how to work around the idiosyncrasies and sloppy QA that Microsoft is notorious for, then I can see how you'd be happy about it. But what happens when you want to work for a client whose entire platform is Unix/Linux and they aren't about to change it on your say-so? If your entire web services universe begins and ends at the Redmond campus, you're not going to get that job. As I said before, I've been around a long time. No matter how much of a mental stiffy it gives Ballmer, Valentine, Allchin, and company to think so it's never going to be a homogenous Windows world. The smart play is to be able to work across multiple platforms *without* having to port a framework, and I don't see that from .Net (so far). All right, let the flaming begin! ;-)
Sun 28 Apr | Mike Gunderloy | No flaming, just a few points. Many of the regulars on this forum have been around for twenty years or more, and many of us are familiary with open-source and Linux (of course, not all open-source projects are Linux-based, and not all Linux development is open source). The fact that tools do not supply magic bullets to make creating software easier is well-known to anyone who's read Fred Brooks' 1986 essay 'No Silver Bullet'. There are already projects out there to recreate the .NET CLR on other platforms. Microsoft's own shared-source 'Rotor' implementation already runs on FreeBSD. And there's the open-source 'Mono' project trying to bring it to Linux, which the last I'd heard was at the point of bootstrapping its own C# compiler. Of course how well these projects succeed remains to be seen. But one of the nice things about the 'Web Services' universe is that it is NOT exclusive to Redmond. You can right now, today, using existying tools, mix and match Web Services that are written using .NET and J2EE, for example. Of course Web Services only cover a small part of what you can build with .NET. Finally, I can't speak for anyone else, but I find enough clients who want Windows-based work to stay busy. I'd worry more about moving skills to the LAMP collection of applications if I was starving. And of course the other factor is that if I ever need to, I can pick up skills in those applications pretty quickly -- just as I'd expect you, with 20+ years of experience, to be able to learn Visual Studio .NET if one of your clients demanded work in C#.
Open Source hurts Sun, not Microsoft | Fri 26 Apr | Albert D. Kallal
I am repeating part of my receent post here since it unlikley to seen under the prevous headding. There are probably two important points to the open source movement that needs to be pointed out: #1) Open source is Unix. Unix is Linux, Sun Systems = Unix. In other words, any talk of success in the open source market generally means a blow to Sun Systems. While movement in the open source community can hurt Microsoft, it in general hurts Sun systems *much* more. Linux and Sun are direct competitors. Sun might endorse Linux, but that simply means that sun will be worth less $$, and their cost structure will have to change (ie: less pay, or smaller company). It is that simple. I was at a SCO Unix meeting some years ago, and I asked the rep what are they going to do about Linux? His response was classic FUD. A business cannot rely on Linux do to legal reasons, as there is some code in Linux that opens them up to lawsuits. I recognized his response as classic FUD. Of course when IBM and Oracle announced whole handedness support of Linux, then the Unix Vendor SCO was finished. They were purchased by Red Hat....and if SCO was on the ball, it would have happened the other way around! I have to admit that I am fan of Linux, and yet the ONLY intelligent real competitor with a brain to MS is Sun systems, and they have the most to lose in open source. #2) If the OS becomes free (as is Linux), then what becomes valuable? Ask your self what would happen to the cost of a air plane ride if the jet, fuel, and the pilot were free? In fact, the cost of a air flight would actually go up! Why? Well while you are reading this, you would say, hey lets fly to England for some beer, and real English fish and chips. Of course all the women in the office want to jump on a free plane ride to Paris to purchase some perfume. Of course the folks down the hall want to jump on a free plane ride to watch the next F1 race in Spain this weekend. Why not.....it is Free to go! Thus, when you arrive at the air port, there would be a incredible mob scene as half the city is now at the air port for the free plane ride. Thus, while standing in line, and I have a important business meeting in France, I will offer the person in front of me some money to move up in line up. In fact, that simple low cost fight from England to France will now actually INCREASE in cost, due to people who actually NEED to fly from France to Engalhed start paying a airport user fee. Thus, while the flight is free, to control and manage the mob scene at the airport, the user’s fees and cost of what people are willing to pay to use the airport will eventually balance. In other words, if air planes be come free, then you better invest in air ports. I also believe that the cost of flights from places like England to France would actually go up in cost, since those people who need the flight will actually pay a higher user fee then people who just want to buy some perfume. Ok, so a O/S is now free, so IBM who in a sense now owns a bunch of consultants and machines will be the winner. This is why IBM has endorsed Linux from top to bottom. From the smallest pc to the largest Mainframe from IBM can now run Linux. They are air port owners, and have been very good at selling systems for years. They don’t sell a OS, nor do they really sell computers....they sell solutions. That is what IBM does well. When I look at the company down the street that is running Linux, they need the same amount of support that they guy down the street running a win2000 server does (we can aruge raw $$ here, but the costs are very close right now). In other words, the general jobs in the IT sector will NOT be hurt by open source. What will change somewhat, is who is going to get the support contract. Since Sun is also a systems integrator, and application seller, it really means that IBM and Sun are also now heading for a big clash. MS just has to sit back and watch these two folks beat each other up... Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Fri 26 Apr | Andres | So, let's see if I got it right, you mean that people won't go to Europa because it costs (let's say) 1000, but they will fight for a chance to go if it they are allowed to pay 2000 for the privilege. And them, pilots knowing that they can get a plane for free, won't get one and create their own airlines and , therefore, there won't be more than enough planes to carry even those you want to go to Paris for breakfast. I never paid much attention to the economy classes I got, but I am afraid the economy doesn't work quite like you think it does. I agree that, for the moment, Sun is under more of a direct attack than Microsoft from Linux, just like a couple years ago ago SCO (which was bought by Caldera, not Red Hat) was under more of direct attack than Sun.
Fri 26 Apr | battle for stalingrad | Let's first point out you're only talking about free OS's like FreeBSD and Linux. I imagine Sun likes all the opensourced Java applications that can be run in Solaris as easily as Windows. Second, we are in the year 2002. I think there should be a decent free OS. Evolution must occur at some point. If a corp wants to make money, they should get with the times and build upon the basic infrastructure. Open source is notorious for creating /tools/. You can use those tools to create closed, proprietary software, despite what Microsoft FUDs. Just target one level above your tools, or make really nice tools. Respectfully, I have to read your post as if it said, 'HP-UX hurts Sun, not Microsoft.' If instead you're saying that free software is killing the industry, then you might want to bolster that argument.
Fri 26 Apr | Ged Byrne | Does Sun suffer, since Software is not there core business - hardware is. In the early days Hardware was very expensive, and software represented a tiny proportion of the cost. It was the hardware manufacturer, like IBM, made the biggest profit. As Hardware costs fell, the proportion of the cost spent on software increased and increased so that Software become the significant cost in purchasing a computer system. Microsoft wins, IBM loses. The importance of Software was hurting Sun. The most impotant software, Windows, didn't run on their hardware. This is why they've given away Java and StarOffice, to make sure the necessary software exists to make their own hardware is viable. Sun does lose out in terms of the Solaris OS, but there core business is Hardware. A return to Hardware being the significant portion is of benefit to them. Open Source lowers the cost of software again, so that Hardware becomes the significant cost once again. To refer to your analogy Sun is the airport, not the airline.
Fri 26 Apr | Ged Byrne | Andres --------------------------------------------------------------- So, let's see if I got it right, you mean that people won't go to Europa because it costs (let's say) 1000, but they will fight for a chance to go if it they are allowed to pay 2000 for the privilege. ------------------------------------------------------------------------- What Albert is saying is that only the people who need to go to Europe will go for a 1000, but if they were free then you would have to pay more to GUARANTEE a place on the flight. The effect he is discribing is easily visible here in the UK, where healthcare is free at the point of use. Waiting lists are huge and many patients are forced to pay more for private care.
Fri 26 Apr | Ged Byrne | Another example is road travel. A few decades ago cars were expensive, and only a few could afford it. This mean that those who did own cars could quite easily and cheaply drive into the centre of the city for work and park near to the door. Now cars are much cheaper everybody has one. However, the cost now to drive into the city is greater in terms of time and fuel because of traffic jams. The cost of parking once you get there is astronomical. The cost of maintaining the road network is also increasing. This means that as Cars get cheaper, the overal cost to the society gets greater - and thats even before you factor in enviromenal damage.
Fri 26 Apr | Andres | Ged, there is a big difference. If you applied the airline scenerario described to health care, you would have free medical equipment, doctors and nurses that work for free and hospital buildings that don't cost anything either. That's not likely to be the case in the UK.
Fri 26 Apr | Ryan Ware | Many of the large companies that switched to Linux did so from Solaris or other commercial UNIX. Lets not forget though, that Linux is displacing some Windows servers in the realm of web serving and file and print serving. This is a two-fold blow to Microsoft. 1. To there ego. How could someone actually want to use something besides our softwar? 2. Microsoft doesn't get any money from cals needed to connect to there file and print servers because the file and print servers are Linux. Also bear in mind that since Linux with Samba can handle higher loads than Win2k for file servering you will need less hardware. I see Windows on the desktop ad infinitum, but being displaced where applicable by Linux for cost reasons and performance reasons. Currently stuff that should be considered commodity serving: file and print serving, web serving, radius, are all likely candidates for replacement. Big stuff like RDBMS are further down the road, at this point most companies feel more secure trusting this domain to proprietary vendors and maybe always will. I also think Microsoft's newest, previously postponed twice licensing plan will push companies to seek genuine lower TCO, not just that promised by a certain large corporation's marketing department. Just my thoughts, but I know our company is doing all the things I've described.
Fri 26 Apr | Roger | If you could've all the women, all the cars, all the power and all the money in the world, wouldn't you eventually get tired of it all? Won't it loose value in your eyes? Wouldn't you eventually get bored? Same thing with free software, you can have everything you want, but is that what's really good for you? Look at kids, if you give them plenty of gifts on there birthday, they quickly get tired of them all and not play any. But if you give them only one gift, they'll keep playing it for a long time.
Fri 26 Apr | Christopher Wells | I don't find the reference anymore, but I remember reading on _The Register_ that Sun is phasing out Solaris on Intel and is supplying Linux to their customers that want it. Isn't Sun in the high-end hardware business? Certainly it's true that there are customers who want anything instead of MS.
Fri 26 Apr | Colin Newell | I understood sun's problems to be caused more by forking. Lots of flavours of unix were released making consumer choice difficult because of the conflicting standards and minor deviations between flavours. It is also a pain in the neck attempting to decide which platform to support or supporting more than one flavour of unix. It was the unix manufacturers themselves that weakened their market long before linux became viable. Linux stays strong because it has not forked, ditto for windows. There is one accepted version that stays stable. In fact you could look at the problems of linux establishing itself on the desktop market being down to the lack of standardisation in the windowing systems. With Gnome, KDE and all the other options it becomes a tough choice to decide what to support, and how to make it look good on any given system. An interesting read on the subject of forking is located at http://www.linuxmafia.com/~rick/essays/forking.html
Fri 26 Apr | Michel | Microsoft is dead scared of the open source movement and from linux. They are using every dirty trick, every resource they have to fight back. They want laws established to stop funding open source research, they give billions to CS programs to force the students to use Windows and their tools. How long can microsoft keep on doing this? On the other hand Sun is a hardware company, they have one of the best machines in the world that no x86 based atchitecture would be able to match for a long time. Remember a cluster of 256 X86 processor is not equivalent to a Sun enterprise with 256 processors.
Fri 26 Apr | Paul Brinkley | Albert D. Kallal: I would have to disagree that open source is bad for Sun. While open source could be argued to benefit Linux more than Solaris, it definitely benefits Solaris more than it does Windows. As you say, 'open source is Unix'. Say that is the case, and open source is successful, so that the majority of the consumer market uses applications developed for Unix. Compare those with applications developed for Windows. The former will be much, much more likely to run under Solaris, even if they were developed primarily with Linux in mind. That means that consumers thinking about using a different OS will have a lot less to worry about in terms of being able to use the apps they currently enjoy. There's a much smaller barrier between Solaris and Linux than there is between either of them and Windows. Even if Solaris isn't free, there are theoretical reasons to use it over a free Linux. Without knowing the details of Solaris, I can say that all OSes have to make decisions involving tradeoffs between performance and perceived responsiveness and security and ease of configuration and ability to take advantage of good hardware and so on. And all Unix OSes can make these different choices and still be completely compatible with typical Unix apps. That means Sun could market Solaris as the best OS for Sun hardware (which is itself very competitive), most secure, most scalable, easiest to configure, or any of a number of things, and charge, say, $150 per license, and still make money off of it. In other words, open source doesn't just fail to hurt Sun, it boosts it amazingly. Even the Solaris department benefits.
Fri 26 Apr | Doug Withau | I don’t like the airport metaphor. It makes no sense to me. The roads and cars metaphor is much better. It goes like this. Think of software as roads, and hardware as cars. You need both to get anyplace, but roads are infrastructure. We all pay for them through taxes or tolls. People and companies own cars and trucks, they are a physical asset, just like a server or a PC. There are many companies that build roads. Standards are available about how wide a road must be, how tight a curve can be, etc. All cars and trucks can drive on the roads. There is not a Ford only road that is incompatible with Chryslers. There is a Microsoft product that will only work with Intel architectures. If Sun is a hardware company, they want to have open, standard based software that allows their hardware to work with other systems. That would let them sell hardware based on features, performance, service, or stability. Unfortunately, it eliminates lock in which makes it much more important to build good stuff and give great service. IMH(umble)O, as a consumer this is a good thing. It forces people who build physical assets to compete. It also forces the software companies (road constructors) to bid and compete to upgrade the infrastructure. Everyone benefits from the improved infrastructure. A well-run company will succeed; a poorly run company will fail. This is very bad for a company like Microsoft. If I ran the only company that made roads, I would make a huge amount of money and not care how bad the roads are. In fact, I would force car manufactures to add features just to overcome my poor road making. I would also try to segment the market. I would charge different fees for truck roads and car roads and fast roads. I would do this for public safety, because I am a nice guy. After there were roads everywhere, and there was no more money in making new, better roads, I would force everyone to pay a subscription. In the case of a road, that is acceptable, roads wear out, bits do not.
Fri 26 Apr | AOL NOC Engineer | 60% of all Sun hardware goes directly from Sun into an AOL NOC. Hardware is still the core of Sun's business. Thus, anything that hurts AOL hurts sun, more than Linux does. In any case, Sun deserves to die for dumping Java onto the world and promoting it as a general purpose language.
Fri 26 Apr | Ged Byrne | Andres --------------------------------------------------------------- Ged, there is a big difference. If you applied the airline scenerario described to health care, you would have free medical equipment, doctors and nurses that work for free and hospital buildings that don't cost anything either. That's not likely to be the case in the UK. ------------------------------------------------------------------------- Andres, For the end user, it is as good as. Health care is free at the point of delivery. Sure I pay a hefty wad of tax, but when I go to casualty so that I can wait 6 hours to look at my newly broken arm, money is nowhere to be scene. After 30 minutes, if the doctor offered to see me straight away for $500, I'd reach for my credit card.
Fri 26 Apr | Andres | You are right, that's the way it works in real life, because the cost of health care is so astronomical that, no matter how much they tax out of us, the governments can hardly cope with it. But with the given airline scenario, the cost is null to the provider. If governments could get a hospital complete with the best technical means and doctors for free, you would have Tony Blair inaugurating a new hospital, just in time for prime time TV news, on a daily basis, there would be no waiting lists and private doctors would have to close shop for lack of patients. I know, it doesn't work like that, but that's the way it would work with the given hypothesis
Sat 27 Apr | Albert D. Kallal | I actually started this thread in sense to garner some opinions about Open source, and Sun. In thinking about this, some of you have actually managed to “change” my mind a bit here. It is very possible that open source is actually a benefit to Sun. Since much of my argument is Sun=Unix, then it does follow that if open source is a positive thing for Unix, then that could very well be considered plus for Sun. I am going to have to think on this a bit more. Hence, my argument really can go both ways. I do see a trend for many shops to drop those Sun boxes, and this of course is in the lower end of the market. As time marches on, then it would seem that Sun future lies in the same camp as IBM. That is providing quality solutions to businesses in general (this of course is what Sun does now anyway). As for some poking a few holes in the free airplane example, I have no problem at all with this!. However, I did offer this analogy simply as a *thinking* aid. In other words, to answer these tough questions, I often look for an analogy. This is simply what we call “out of the box” type thinking. It this type of thinking that I look for in developers. If I ask you how cheap can a phone call can get, then you might want to ask how much electricity AT&T purchases in a year! While the electricity used in a phone call might be small, you do have to ask that question, and most people don’t. Anyway, back to the cost of the OS issue. Even with such low cost hardware, the cost of the OS is actually quite a small portion of the total cost of owing a pc. Windows at OEM prices is what, around $90? That is not a lot, and is considerably less then what it costs a company to *remove* a old pc! If a company is run well, and produces a product that has value, then don’t think Sun, or even Microsoft has to worry about open source. Open Source can however kill profits in certain portions of the IT industry. It does however seem that Sun has more to lose in this. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Sat 27 Apr | Christopher Wells | > It does however seem that Sun has more to lose in this. I don't know about that. Think of a telco or ISP who wants for some reason to use PC-like hardware for some subsystems. If it weren't for Linux then they would perhaps have to consider to consider MS ... but, given Linux, they don't.
Joel writes : "SOAP is inadequate for remoting" | Thu 25 Apr | Serge Wautier
In his Apr 25th article about SOAP, Joel advocates that inventing a new protocol simply to be able to pass through firewalls doesnt make much sense : It will be obsolete as soon as firewall developers adapt their products. My 2 EUR cents to back him up : An article where Don Box himself (author of SOAP) explains that we need a new HTTP : http://news.zdnet.co.uk/story/0,,t269-s2105076,00.html BTW, I knew that Box left DevelopMentor a few months ago. I learned only a couple of days ago that he joined MS (as .NET evangelist). [Well, I must be up around 2.5 cents by now :-)]
Thu 25 Apr | Anthony Rubin | I'm actually somewhat confused about what he wrote. He seems to spend several paragraphs complaining about everyone complaining about SOAP, then he uses the last paragraph to rip it a new one. Over the last month or so I have really questioned if Joel articles are worth reading anymore.
Thu 25 Apr | Prakash S | I thought the best part of having SOAP is it lets you know where excatly to look..... SOAP is slow though over HTTP. I guess it has to mature a bit more, and the hype with all the buzz words need to stop, SOAP wow, Web-Services WOW!!!!
Thu 25 Apr | James Wann | I for one, am really bothered by the whole SOAP concept, but not for Joel's reasons. The idea of xml-based marshaling is certainly the next stage to go in making RPC more reliable and recoverable. The ability to have a readable call stack wired over the network will definitely make debugging easier. But should we really be performing procedure calls over the internet? It sounds like a nifty idea, but doing real 'business-functions' over the net requires Transactional (ACID) semantics, and that's something that SOAP really wasn't built for (Can you really do a 2-phase commit over HTTP?). I for one, don't feel there's anything wrong with either Batch loading or Message queueing as a way to inter-operate between enterprises. However, they are decidedly un-sexy in their form, and will probably not find very strong adoption since every developer seems to desire linguistic syntax/semantics over the simpler 'parse and process file/message)' paradigm. When you start introducing temporal complexity (ie. RPC sequences) into cross-business/machine/process communications, there's an increased potential for subtle bugs to sneak into the overall 'system'. This is worsened by the fact that SOAP-like services are essentially black box components that you have no access to. How is this any different from 'that third party library' you were complaining about last week? We'll, this virtual DLL is located across the country and there's little chance in hell you'll be able to track down the subtle bugs without raising a lot of ruckus. There are certainly unique and interesting services that can be performed with SOAP, and Google is definitely one of them. But for the majority of communications required in businesses (most of it is likely to be accounting/ reconciliation/ reports), if it ain't broke, don't fix it. BTW, I do have to commend Microsoft for raising the bar of awareness of cross-business/real-enough-time communications to the bill paying (READ: Management) public. I just hope it doesn't mutate into something unwieldy I have to debug in 2038 :-) -james
Thu 25 Apr | Ori Berger | SOAP originated when MS found out that big businesses prefer CORBA to DCOM because of the vendor lock-in associated with DCOM; They looked for something that would look 'open' enough to decision makers, and would possibly work as a DCOM/CORBA bridge, and eventually SOAP came to be Regardless of whether this is true, SOAP is, in general, bad news: It's inefficient in every possible respect (think 100:1 network and computation resources compared to a properly designed protocol, 10:1 to a less-than-properly-but-not-as-bad-as-SOAP one), taking XMLs inherent inefficiency to a new level, with almost 0 benefit. It's a management nightmare (as Joel hints when talking about Firewalls - but it goes way farther than that). It has no provision for robustness (two phase commit mentioned earlier in this thread, reliability guarantees, load balancing), and it doesn't actually solve any real problem (except, perhaps, Microsoft's problem of the market reluctance to leave CORBA - which is weird, because almost no one is actually using it). And to anyone who's going to respond that 100 times in efficiency doesn't matter because computers are fast enough - look at it this way: All of the distributed component architectures are complex as hell, cost lots in overhead, and aren't robust unless the app developer has an extremely good grasp of how they work (which is rarely the case). Distributing work among machines generally results in more opportunity for failure, and fault tolerance often costs 10 times as much to get the same performance. For example, no matter how many front end ASP/JSP servers you have, unless your database is distributed you still have a single point of failure. The minimal installation of an Oracle Parallel Server, A capable fault-tolerant distributed database, costs more than $200,000 (I got a quote of half a mil last time I asked, but if you press hard enough you can probably get down to $200K or so). A single machine license is about 10 times less. So, assuming you don't have a fault tolerant database, the best thing you can do (leaving, for the moment, security considerations aside) is to run your web server on the same machine that you run the database on, saving network bandwidth, network latencies, and overall cost, without increasing the point-of-failure beyond that of the database machine. The reason I don't like SOAP (and similarly inefficient systems) is that they don't let me deploy this kind of model - due to the inherent inefficiency, I'll probably be forced to (eventually) go to a distributed model that's extremely harder to do robustly. Am I the only one bothered by the fact that Mainframes with computational capacity of a Pentium-200Mhz and having 50MB of physical memory were able to handle real application software for hundreds of users simultaneously with good response times using something equivalent to HTML, and the latest-and-greatest technology can't come close with 5 times more processing power and 10 times more memory? (all in the name of making things 'simpler', and without any regard for robustness).
Thu 25 Apr | Ged Byrne | Forget what Paul Prescod has to say about soap, that Middle Earth analogy at the end should never have been allowed!
Thu 25 Apr | Brent Rockwood | Joel is right, but I think there's an underlying issue. The reason SOAP implementations (in most cases) are no better than the XML/HTTP/URI implementations is that they're largely one-way, untrusted, call-response setups. Let's say you're using SOAP to make calls to a service found using UDDI through a firewall not configured to allow for real RPC endpoints. Chances are this is an untrusted service - or you are an untrusted user. If you're going to allow events to be fired by a remote service, you better trust that it's not going to exploit that power. If you trust the remote service that much, and plan to have a rich discussion with it, why aren't you using real RPC? We know how to use tunnels. We know how to set up static RPC endpoints. If we're building a real mission critical app, surely we can bring the network guys in to help. The problem is not one of technology or protocols - it's a problem of trust and logistics. As for object references - I'm not sure I understand...in any distributed environment either you marshal the object or you don't. You can simulate reference behaviour with callbacks or some such but it ends up getting implemented by value anyway. The remote machine does not have access to your RAM.
Thu 25 Apr | Ged Byrne | Paul Brendon -------------------------------------------------------- When Google exposes its service through SOAP, it is behind the Web because the object with the web URI is the SOAP component ('endpoint'), not the actual query results. I need to go through the component to get to the data, like making a phone call through an operator instead of dialing direct. But in the XML/HTTP/URI way of thinking, every possible query result has its own URI and thus is a first-class web data object. -------------------------------------------------------------------------- Paul seems to have it all the wrong way round here, from a commercial point of view at least. Google don't want people linking into their search results whenever they like, but with http its hard to avoid. Taking the direct dial metaphor - most IT Departments discourage direct dial into their it departments. First line contact is always through the Service Desk, to prevent their programmers being constantly intterupted. Direct dial isn't always the most attractive option.
Thu 25 Apr | Mike Gunderloy | SOAP isn't required to use HTTP as its transport. While many of the other objections are valid, you need to separate out complaints about SOAP from complaints about SOAP-over-HTTP.
Thu 25 Apr | Ryan Ware | 'Am I the only one bothered by the fact that Mainframes with computational capacity of a Pentium-200Mhz and having 50MB of physical memory were able to handle real application software for hundreds of users simultaneously with good response times using something equivalent to HTML, and the latest-and-greatest technology can't come close with 5 times more processing power and 10 times more memory? (all in the name of making things 'simpler', and without any regard for robustness).' I wholeheartedly agree. It seems like cpu cycles on our machines today go into some black hole. Newer and shinier doesn't translate to performance.
Thu 25 Apr | Brad Clarke | 'Am I the only one bothered by the fact that Mainframes with computational capacity of a Pentium-200Mhz and having 50MB of physical memory were able to handle real application software for hundreds of users simultaneously with good response times using something equivalent to HTML, and the latest-and-greatest technology can't come close with 5 times more processing power and 10 times more memory? ' No, you're not. I used to work on mainframe sytems in the late 80's/eraly 90's. We had a large system (we were running a nationwide financial institution) but we supported hundreds of applications and thousands of users simultaneously on a 24x7 basis, without so much as a hiccup. Can't say the same thing for the situation today. It seems to me that all of these new ways of doing things are designed to make our lives more complex, not easier. For transferring of data, is XML REALLY any better than transmitting an EDI-like file? XML takes magnitudes more disk/network space required to accomplish the same thing. All of these new ways to do the same thing has me wondering if I really want to continue in the IT world....I've been doing this for 14 years now, and it gets less enjoyable all the time.
Thu 25 Apr | pb | I don't know how we totally skipped an RPC interface that made calls in POST/GET with results in something like a query string. Sure this can be done but it's not 'standard' and many environments aren't set up real well to do it. SOAP (and even XML-RPC) seems over-kill for most of the stuff I envision. I don't quite understand the comparisons to DCOM/CORBA. I'd compare SOAP more to screen-scraping.
Thu 25 Apr | Bill Carlson | I think some of the angst over SOAP here is because people are expecting a simple technology to be able to handle everything under the sun. If SOAP allows VB Joe to write a non scalable app that synchronizes CRM or order data from one database to another, it's succeeded. I'd go so far as to say that MOST distributed computing can be satisfied by the simple Call/Response format. Stateful objects, ACID transactions, etc. can be emulated, but making them part of the protocol? You'd have, gasp, DCOM+/CORBA and VB Joe then couldn't do his job. Easy stuff should be easy. Let's keep it that way.
Thu 25 Apr | Wayne Venables | Easy is XML-RPC. Same concept (XML wrapping of an RPC call over HTTP) but infinitely simpler design. I love XML-RPC. I use it to transfer data between a web application and a VB client (which then dumps the data into the clients back-end system). SOAP is scary by comparison; of course, it's designed for so much more (and the 'so much more' is what everyone is complaining about!)
Thu 25 Apr | Dan Sickles | Soap's highest and best use may not be in 'real 'business-functions'' if 'real' means an event that lands on the books at some point. I find it's application to collaboration much more interesting and less problematic. That said, Soap is just another tool that works, not the only tool that works.
Thu 25 Apr | Paul Prescod | I would find it amazing how many people really do not understand SOAP if it were not for the fact that the SOAP specification is extremely hard to read, SOAP has changed its stripes significantly over the years and Microsoft's tools so abstract over SOAP that people have no idea what SOAP is and isn't doing. Nevertheless -- if you haven't read through the SOAP specification yourself, and thought through the details, then I think you should. Consider that stark dichotomy between part 1 and part 2. What does that mean for interoperability? Why is there a type system in there if Don Box agrees that most people will not and should not use it? If RPC over HTTP is 'just one way' to use SOAP, then where are the specifications for the 'other ways'? Are non-HTTP uses interoperable? Will they ever be? Based on what specifications?
Fri 26 Apr | Justin Rudd | Hi Paul, As I mentioned in a response to your other post, the reason a type system was invented was because XML Schema didn't exist. There was only DTD which didn't express type only structure. I have read the 1.1 spec (many many times) and I still get a headache reading it :-). Too many SHOULDs and not enough MUSTs. I have also read the 1.2 spec (ok...recommendation) and it is a much easier read. Plus they have a pretty good primer section so far (much like the XML Schema 0: Primer). As for SOAP over other transports being interoparable (sp?), I say yes because I've built one. My routing server is based around the SOAP Envelope, Header, and Body structure using XSD defined payloads. I've sent messages over HTTP that got turned into SMTP payloads and then eventually made their way back to the original sender. I did all this without the WS-Routing specification. Now that it is out, it should help things significantly. Of course, it is a MS and IBM sponsored spec so maybe you don't put a lot of faith in it till the W3C stamps it. If so, that is your purogative. But I've got work to do and those specs (WS-Routing, WS-Security, etc.) are speeding my job up right now. If (or when) the W3C gets off their a$$ and writes specs (and I need more than just XMLDSIG and XMLENC) that accomplish the same thing, I'll move to them. SOAP-RPC is getting too much hype as you rightly point out. But SOAP (envelope, extensible header section, and body) is very useful. Just strip out the encoding stuff, your life will be more pleasent :-) Also someone somewhere in this thread mentioned, just use good ol' RPC and open up some ports. Bring the network guys in and have a go at it. So what happens if I'm using C++ on Windows and someone else is using Objective C on Mac OS X? Does the RPC framework take care of that? Does Objective C even have access to an RPC framework on Mac OS X? Also, having fired up a packet sniffer and looked at DCOM packets and DCE-RPC packets, I much prefer debugging SOAP on the wire :-) Justin Rudd
Fri 26 Apr | Banana Fred | An alternative to both SOAP and XML-RPC is MIME-RPC. MIME-RPC is even simpler than XML-RPC and avoids some ambiguity in the XML-RPC spec. MIME is not as 'sexy' as XML, but it is time-tested and seems like an interesting approach. http://www.mime-rpc.com
Sat 27 Apr | pb | Could someone please explain the problem with: Request -- https://www.paypal.com/cgi-bin/webscr?cmd=sendmoney&username=pb&password=password&email=recipient@hotmail.com&amount=10&subject=Madonna+Tickets Response -- status=completed&txn_id=1231jhj123
Sat 27 Apr | Matthew Christensen | Er...that it's running as a cgi-bin in 2002? :) - m
Sat 27 Apr | Dave Winer | Patrick, there's nothing wrong with the URL you posted. But if you want to pass a complicated structure or array or array of structures, you'll need some way to encode them. In other words, if your needs are simple, then keep it simple. If Paypal interfaces some useful functionality that way I'm sure people will use it.
MS in HCI...useful? | Wed 24 Apr | Osman Ullah
Im planning on pursuing my Masters of Science in Human Computer Interaction. This includes such things as usability, interface design, ubiquitous computing, etc. Are there lots of job opportunities out there for someone with such a degree? Its a very specialized field and Ive heard that many employers who are looking for HCI are looking for PhDs. Any comments will be greatly appreciated. Osman
Wed 24 Apr | MarkTAW | I've never heard of a company hiring an HCI specialist. It tends to be that the people in the decision making process don't think it's important and go for the flash over the usability. Designers who understand the importance of usability usually think they know enough about it to do it themselves. The only time you'd hire an HCI expert is if a designer was in a decision making position and wasn't designing the UI him/herself. Actually I heard of one instance of someone hiring someone to do HCI. It was a large shipping company looking to shave moments off of various interactions in the factory, making the whole process smoother. I believe there, where the commodity IS interaction (i.e. people interacting with computers, moving boxes, etc.) they can bottom dollar the value of an HCI specailist. IMHO, YMMV, ETC.
Thu 25 Apr | Nope | contrary to mark's opinion, some companies do hire usability desgners. sony is one. job opportunities are fewer than for software people, but it rather depends on what you want to do.
Thu 25 Apr | anon | we used to have 3 such guys here around. They are morphing into something like functional analysts + HCI, otherwise there is not enough work for them. I am currently in a webshop
Thu 25 Apr | Paul Brinkley | I typically hear of there being more demand for HCI experts in the hardware realm. Particularly, the automobile industry. Power steering has to have the right touch, radio buttons have to be easy to find when not looking at them, etc. Regarding computer hardware, I'd figure companies like Logitech and the various joystick manufacturers are big on HCI. In software, my impression of other 'enlightened' developers' impressions is that HCI is vital, yet regarded as a luxury to all but the most successful companies. In other words, you'll have a bit of an uphill battle simply justifying your usefulness to the Philistines.
Thu 25 Apr | MarkTAW | I agree with Paul (in fact he beat me to it). There's a lot more HCI in hardware than software. CD player interfaces, mouse and keyboard interfaces. It seems the more it costs to put a button someplace, and the less convention there is surrounding that button's placement, the more thought goes in to it. In software you can put a button someplace and change it with relative ease (the staff is already on the payroll v. the cost of manufacturing hardware), or release a 2.x with some assurance that the existing user population will upgrade. With hardware, on the other hand... It costs more to put that button where it is, and a lot more people take it seriously. You're paying $20,000 for the car, any advantage it has over another car is important. Also, in hardware there's alot more expense to real estate - the CD player can display a half dozen characters and a few symbols, they can't give you a monitor's worth of information. You also live with your hardware more than with your software - the software is usually seen as a means to an end. I.e. Dreamweaver makes web pages, MS Word makes text documents, ProTools makes songs, etc. While a car can also be seen as a means to an end (the destination), car makers seem more concerned with making the trip livable. My advice would be to study what you like. You don't want to study something you think will make money only to realize you hate doing it 5 years down the line and 'if only' you had taken another path you could be making similar money, but doing something you love.
Thu 25 Apr | Jim Corban | I've been a UI designer for six years, and started out in the field by getting a master's in HCI, so it can be done. There are not 'plenty' of jobs, but a designer in Boston / DC / Silicon Valley who's very good shouldn't have too much trouble staying employed. Most employers are *not* looking for PhDs. Check out the jobs mailing list for the Boston SIG-CHI group: http://www.topica.com/lists/gbsigchi.hotjobs/read?Act=view_archive&list_id=gbsigchi.hotjobs The jobs typically fall into two categories: 'usability engineer' and 'UI designer'. The job situation for usability engineers right now is worse than it is for designers. My take on this is that there are a lot of people out there who can conduct a usability test, but fewer who can design good software. So my advice: if you really want to design software for a living and think you have the talent for it, go for it. You'll get good experience, build up a portfolio, hopefully ride out the recession and maybe even get recruited out of school by a design firm. If you want to do 'usability', act more cautiously. Look for a way to do it part-time at your current job or at a new job. There is a third path for non-designers, if you're serious about it and academically bent: get a human factors degree. Employers for this path (NASA, government, aviation) *do* want PhDs, however.
Thu 25 Apr | Osman Ullah | Thanks for the info! Keep the answers coming...I'm still reading. All this advice has given me something to think about.
Fri 26 Apr | Paul Burkhead | I graduated with a MS in HCI 6 months ago. Its difficult to find entry level jobs right now, although some do exist. Its tough to tell if this is a temporary condition in response to economic conditions, or if its a more permanent trend. I think many companies realize the value of HCI, but aren't necessarily convinced that its worth the cost. Two observations about how companies have been dealing with this issue: 1) Contractors - Many companies hire HCI people for 3-9 month contract jobs in order to do UI design and usability testing. This way they company's products get some HCI advantages, but they also manage to keep costs down by not hiring a full time employee. 2) Multi skilled employees - I think there will be increased demands for people that can do HCI + another skill. This other skill might be tech writing, UI programming, graphic design, etc. Usability testing can be taught as a secondary skill to many current employees. Lets not fool ourselves, its not *that* hard. I do think there will be the need for a small number of HCI specialist that do for example, User Research. But this is a luxury limited mostly to large companies. Just my 2 cents. - Learn to program, so you can talk to developers intelligently and code prototypes on your own. - Learn basic graphic design skills, be able to work Photoshop, et al.
Sat 27 Apr | MarkTAW | What about being very opinionated so you can develop a 'cult of personality' and become a minor celebrity in the industry. Hopefully you can turn that into cash... I've been tempted to do this from time to time. Every industry seems to have a few of them, and they're always controversial, in demand to speak at conventions, write for magazines, and usually start fairly successful business surrounding their core compentancies. I don't have the quote handy but in Steve Krug's book on usability, there's a great quote in there along the lines of. 'A lot of my friends ask me why I would write a book on Usability, they think I'm writing my way out of a job. Well, I'm doing plenty of business and unless the internet boom bursts, I'll have a job for many years to come...'
Shackleton as a management example | Tue 23 Apr | Alex Moffat
As management techniques/styles are discussed here from time to time I wondered if people would be interested in this short note. Apparently Ernest Shackleton is now an example of good management, Id contend that Roald Amundsen is a better choice. Any and all comments towards refining or refuting this thesis would be appreciated. http://www.zanthan.com/itymbi/archives/000364.html Thanks for you attention Alex
Tue 23 Apr | MarkTAW | I'm not really qualified to comment, but there are quite a few books and movies about Shackelton now. I bet more employees feel like Jon Krakauer (author of Into Thin Air).
Tue 23 Apr | Ged Byrne | Alex, An excellent article, thanks.
Wed 24 Apr | Mark | Good article, however all these men took on challenges with a high probability of failure. In these circumstances chance can never be truly banished. How Shackleton managed to get his men home alive when they all should have died is the remarkable part of the story. Having said this the whole middle managers likeneing themselves and their daily banalities to heroic adventure is quite amusing. Leadership is not the lesson that we office drones should perhaps be focusing on.
Wed 24 Apr | Andy West | It's a plausible argument, but why use Scott's expedition to argue that Amundsen is a better example than Shackleton? IIRC the 'survival against all odds' expedition for which Shackleton is admired failed before it really started, when his ship became icebound & sank. I believe he took dogs with him on that occasion.
Wed 24 Apr | battle for stalingrad | The most edifying thing is one Amazon.com comment by 'A reader from a management consultant in Boston,' where he mentions that people may know about the qualities of good leadership, but fail to implement them in practice. This fits very well with an earlier comment about a manager who loved to quote from Mythical Man-Month while completely missing the entire premise of the book. Actual implementation is what theory depends on.
Wed 24 Apr | Ian Stallings | I was first introduced to the story of the Endurance and Shackelton while consulting at a company that went from trading at around $300/share to low teens in one day due to shady accounting practices. After this S#!^ hit the fan the managers were scrambling to keep morale up despite the dismall forecast. One manager sent out an email to the entire company pointing to the book he had just read recalling the story of the Endurance and how the crew driven by Shackelton survived against the odds. It was a great motivational move that basically said 'We are in the corner, we're gonna have to fight to survive, and I'm gonna get you out of this'. Unfortunately it fell on deaf ears as the employees could see through smoke and mirrors and wanted truth and honesty, not rhetoric from the same people that caused the whole thing. But the story of the Endurance speaks one truth, when plans go south in life you got two choices: Fight hard to survive or just 'go home'. We all would like to think we'll fight but only life will tell. You either burn out or shine bright.
Wed 24 Apr | Alex Moffat | Thanks for the comments. I agree that Shackelton's leadership and efforts in getting everyone on his expedition back safely really were amazing. Certainly if you end up in a difficult situation that's the sort of leader you need. I'd argue that trying to avoid those sorts of situations is a better approach. As to using Scott and Amundsen to argue that Amundsen is a better example than Shackleton I suppose I have to plead guilty as charged. I suppose Shackleton is a hook to hang my nomination of Amundsen as the polar explorer to take management (as much as leadership) lessons from. Does anyone have anyother nominations for other 'management examples' to share. I've certainly seen various Patton or other wartime leader choices. What's the most unusual management icon/example you've seen? Thanks again.
Wed 24 Apr | MarkTAW | Interesting article, though I don't see much comparing/contrasting between Shackleton and Amudsen. I guess you assume a familiarity with the material? i.e. What did Shackleton do wrong? Am I to assume he didn't follow your four steps because you state earlier on that he's a bad example and Amundsen is? In your second point you say 'Work Steadily' and point out how Amundsen travelled for 6 hours a day while Scott travelled for 9. Both sound like steady work to me. Perhaps you mean 'work less' or 'work smart' or 'schedule in rest.' Step three actually flows from step four - how do you pick the right tools if you don't learn about the situation you're going in to? Who's to say ponies are the wrong tools and that dogs are? Only experience, or knowledge gained otherwise, can tell you. If Amundsen's sledges fell apart and he died, would you be recomending to us that we shouldn't modify our tools for specific tasks and instead rely on tried and true methods and tools? My 2 cents.
Wed 24 Apr | Mikayla | Wonderful quote from Napoleon, speaking of military examples, which I did encounter in a tech book actually, though I forget which one: 'Any commander in chief who undertakes to carry out a plan which he considers defective is at fault; he must put forth his reasons, insist on the plan being changed, and finally tender his resignation rather than be the instrument of his army's downfall.' If perhaps not normally inspiring, it has something to say, and I found it so when I was uncertain how important 'doing things right' was to me. It's how I feel and why it grates on me to work with people who don't mind doing the wrong thing so long as someone is still paying for it. They are quite right that it's easier, but...
Wed 24 Apr | Christopher Wells | > What's the most unusual management icon/example you've seen? Kagemusha, from the eponymous film: his total job was to sit on his chair, and let his people get on with it.
Thu 25 Apr | John | This big difference in the Shackleton metaphor: Shackleton's men couldn't say 'that's it, I'm outta here' and log on to Monster.com. Companies that expect employees to 'burn out or shine bright' are being just a bit ego-centric.
Thu 25 Apr | Alex Moffat | Re MarkTAW's comment 'If Amundsen's sledges fell apart and he died , would you be recomending to us that we shouldn't modify our tools for specific tasks and instead rely on tried and true methods and tools?' My point is that the modifications he made contributed to his success. The way I approached it was the way I think some of the management 'gurus' seem to go about it. Try and look at the things that contributed to success, bearing in mind my own prejudices, and to derive some general rule/guidelines that I think are useful. The specific examples are then used as illustrations to try to 'enliven' the discussion. I think it fallacious to take the example, turn it round, and use it to argue the opposite position. To do that you need a different counter example where modifications made to a tried and tested method make the whole scheme fail (not hard to find I'm sure :)
Fri 26 Apr | Marshall Harrison | Alex aske: 'Does anyone have anyother nominations for other 'management examples' to share. I've certainly seen various Patton or other wartime leader choices. What's the most unusual management icon/example you've seen?' Ever heard of 'A Message to Garcia' Try these links: http://homeport.usnaweb.org/garcia.html http://homeport.usnaweb.org/howicarried.html
Sat 27 Apr | MarkTAW | >My point is that the modifications he made contributed to his success. Modifications themselves are an object, neither good nor bad. How do you know you're making the right modifications? Your conclusions can be all wrong, the facts you're basing your modifications on themselves can also be wrong. >I think it fallacious to take the example, turn it round, and use it to argue the opposite position. To do that you need a different counter example where modifications made to a tried and tested method make the whole scheme fail (not hard to find I'm sure :) I don't think I need an example, I just need to state a logical argument, and it won't be fallacious. === If the modifications are good, then they will be benificial. The modification are good, therefore they are beneficial. The modifications are not good, therefore you can't draw any conclusions about whether or not they are beneficial. === My argument is that it is difficult to measure whether or not your modifications will be successful while making them. That you can't always prove 'The modificiations are good' until you know whether or not they succeed. I believe what you're practicing is called revisionist history. 'He was successful, therefore what he was doing was good.' We praise Columbus and his silly motives because he discovered 'The New World' and we generally believe this was good. If Columbus brought a disease back from the New World that killed off most of Europe we would be damning his silly motives, much as the Native Americans do. The fact is, that at the time there is often no way of knowing whether or not what you're doing is going to succeed, especially on something with so many unknowns like an Antarctic expidition. A certain amount of research can be done, the odds calculated based on knowns (and the more knowns the better), and decisions made based on those. I believe where Amundsen should be praised is in the amount of research he did, and how he based his decision on facts and not assumptions. He spoke with Eskimos about their environment, possibly did some preliminary extreme cold travel, and was therefore able to make modifications that would increase his chances of survival. He should not be praised for arbitrarily making modifications, but for doing research that would give him the proper knowledge to make those modifications.
Sat 27 Apr | Alex Moffat | MarkTAW 'I believe where Amundsen should be praised is in the amount of research he did, and how he based his decision on facts and not assumptions.' I agree completely. He learnt a lot from the Eskimos, especially during his successful trip through the northwest passage. He adopted their clothing for his travels, learnt dog driving from them as well as igloo building and other techniques/skills. This was unusual for a westerner at the time. It was this that let him understand what were successful changes to make and what were not. His success showed that he learnt from this experience and research and could apply it. 'Learn from your experience, embrace other cultures and knowledge' and certainly lessons from Amundsen. I thought that I'd choose to point out the other one, that you can, if you know what your doing, improve your productivity and chances of success by modifying your tools. It's something wood workers/carpenters do all the time, to a greater or lesser extent, and something that programmers might want to think about relearning. I know that 'in the beginning' programmers had to write their own tools but in these days of IDEs for everything we need to think about whether the effort invested in tuning our tools will be repaid. I think it often is.
Sat 27 Apr | MarkTAW | I have the same complaint about Rock musicians. Folk, Jazz and Classical musicians learn old songs, standards, etc. but in Rock and Roll you don't want to be a 'cover band,' you want to do all originals. But your article is about neither music nor programming, but about management, and managers do learn from the past and present. The Project Management Institute is always doing case studies, as are business school text books, etc. Perhaps there's a point beyond which they're no longer interested in learning, but that's ok.
Public vs. Private Universities? | Tue 23 Apr | Paul Spaulding
X. J. Scott asserts this: >>If your goal is to do development work, you must either have: 1. A portfolio of software you have designed and preferable sold 2. A great resume profiling verifiable development you have done. 3. An MS. 4. A BS from a prestige university. 5. A BS from a state university with amazing grades, good letters of recommendation and a resume with development experience. (Most BS-CS grads are not qualified to do design work, though scripting and simple programming jobs are OK.) Mr. Scott seems to suggest that my degree from a public university is just not terribly valuable. This, however, certainly hasnt been my experience (Go Pitt!). We University of Pittsburgh graduates work right along side the Carnegie Mellon & MIT grads. (BTW, I do meet his fifth criterion, because I had excellent grades, but Ive *never* been asked about my QPA.) Is Mr. Scott correct? Should I give up my job and look for one more suited to my meager talents? Perhaps I can work for him doing some scripting or some simple programming... Seriously though, does he have a point? In general, how important is it to have a BS from a first-tier school?
Tue 23 Apr | MarkTAW | How about prestigious vs. obscure/infamous?
Tue 23 Apr | arsdigitan | I couldn't resist replying to this one, before I vanish from this forum forever. IMO if you have a degree from a first-tier school, you are a total schmuck if you are doing grungy bizapps at all. The point of going to a first-tier school is not so much that the education is better, it is that you have easier inroads to jobs on wall street, high-level scientific research positions, higher-level corporate positions, government, etc. I.e. the point of going to Harvard is so that you never ever have to think about if you need to learn .NET to increase your hourly rate. I went to a crummy state school and work along side MIT/Harvard/Berkeley people every day. I TA'd two courses at MIT. I'm making more money than 95% of people on earth. Thus, I'm doing just fine without an MIT degree. However, if I had kids, I would totally pressure them into getting into a name brand school, it just makes sliding through life that much easier.
Tue 23 Apr | Christopher Wells | > However, if I had kids, I would totally pressure them into getting into a name brand school, it just makes sliding through life that much easier. CNN had a surprisingly interesting documentary on Sunday evening about kids (young adults) in their final high school year, and the contortions (no social and little family life for example) that they were going through to get high GPAs, high SATs, several extra-curriculars, ...
Tue 23 Apr | Jeb | It does matter. The mindset of the students are different. Those who go to first tier schools start or eventually run companies. Those who go to the 'mills' become employees of companies.
Tue 23 Apr | James Montebello | I have no idea who 'XJ Scott' is, but he is saying that if you have a *verifiable* resume and/or portfolio of work, that's enough. It's certainly been enough for me. I've been working in software development, including doing design work and start-to-finish projects, for nearly 20 years, and I have no degree whatsoever from any university. I do have a list of good references from the half-dozen places I've worked over the years. I'm sure there are shops out there that insist on having a 'good' degree from a 'good' school (however you care to define that). I simply don't work for such places. There are a great many shops that are more interested in what you know than what school you went to. btw, writing an open source project is an excellent way to build a verifiable body of work if you can't do so at your current job (or you're stuck in a non-prestigious school and you're worried about getting a good job after).
Tue 23 Apr | arsdigitan | Wait I'm still here. I disagree with Jeb. More people who drop out of state schools start companies than do people with harvard degrees. (I just made that up, but I bet if I did research, it would pan out to be true.) Starting a company is an insane amout of work. The point of going to Harvard is so that you can get a mid six figure job that requires doing very little work. You bust ass in high school to get into the Ivy League, then you are entitled to an easy life.
Tue 23 Apr | razib khan | there've been studies done in recent years that show that indicate that going to a prestigious school doesn't influence your earnings that much. what's more important are the schools people apply to-insofar as that's an indication of how bight the person percieves themselves to be. what's important is how bright you are-not what school you go to. check this link out: http://www.nytimes.com/2002/04/21/business/yourmoney/21VIEW.html?pagewanted=print
Tue 23 Apr | Paul B. | 15 years after you graduate, it will become less of an issue.
Tue 23 Apr | MarkTAW | Hmmm. I almost applied to Harvard because I learned my SAT scores and GPA were about average for a Harvard student, but I didn't have any extracurricular, and my high school was a lowly public HS... Does that mean I have a low self worth? On the other hand, I'm thinking of starting my own business (in a totally unrelated field of work), and I did drop out of college...
Tue 23 Apr | MarkTAW | >15 years after you graduate, it will become less of an issue. Uh. If you go from Harvard to a management position or from a state college to a grunt employee it will. One says 'Future CEO' and the other says 'Future Middle Manager' and in 15 years it'll make a big difference.
Tue 23 Apr | Magnus | Anything can be considered an advantage if it's enough standard deviations in the black. Some people will hammer home their dull note to anyone who listens. Especially since it's a strategy that occasionally pays off. I found something interesting though. I once visited a quiet dinky little university. Looking through their newspaper, it was leagues better than each of my university's award-winning magazines, or of any other big university's I'd read. Less pretentious; more insight. I'm glad that Jack Welch, rockstar manager, agrees in his management philosophies. An Ivy League degree doesn't count against you in his eyes, but neither is it any indication of ability.
Tue 23 Apr | Anonymous Coward | >Starting a company is an insane amout of work. The point >of going to Harvard is so that you can get a mid six figure >job that requires doing very little work. You bust ass in >high school to get into the Ivy League, then you are >entitled to an easy life. After all of the downsizing of the 80's & 90's combined with increasing globalization, I doubt that many of the easy six figure jobs still exist anymore. You would probably have better luck winning the lottery or locating the fountain of youth than finding such jobs anymore.
Tue 23 Apr | Anthony Rubin | It is interesting to note that on the Best Colleges list for computer programs where the highest degree is a Ph.D. on usnews.com (http://www.usnews.com/usnews/edu/college/rankings/engineering/phd/computer.htm), 13 of the top 20 schools are public schools.
Tue 23 Apr | razib khan | Here's the question-are Harvard undergrads successful because they go to Harvard-or perhaps Harvard undergrads are brilliant and brilliant people do well? I tend to lean toward the latter. In a few areas-like politics, it seems getting a Harvard degree is important. Also, if you are in academia-it's important to go a good grad school (I went to a public University-but my friends who wanted to get a position at a University went to MIT and Harvard for grad school).
Tue 23 Apr | Bella | >. Those who go to first tier schools start or eventually run companies. Those who go to the 'mills' become employees of companies. What a horseshit gernalization. People who start companies are risk takers. Where is the risk in being a puppet and getting into an Ivy? It's a robot DRONE mentaility, if anything. Also, having little to lose also comes into play. It's a lot harder to walk away from a $200k law firm job to start your own firm.
Tue 23 Apr | Bella | In fact, many people from elite schools, understandably, since childhood have been conditioned to think they are better and smarter and have a 'different path' than mere mortals. But at the end of the day, they have to stand in line and work for a paycheck like the rest of us. Some have a SERIOUS problem realizing they are just another decaying pile of flesh, like the rest of us. Many become professional students into their 30's and 40's, b/c they cant cope with reality of being a mere mortal. And in IT, degrees mean squat after day one of your first job, at least in my experience. Degrees are the most over hyped SCAM racket. Skills talk. Degrees don't make the man. Send a genius to community college, and an idiot to Harvard. the oil and water will eventually rise/fall to their levels. The HIGHEST paid consultant I ever worked with didn't have a degree. Also, success only has a LITTLE to do with raw intelligence. It has everything to do with motivation, following thru, accountability for your actions, people skills, make no excuses, entrepreneurial instinct, etc. NONE of these traits can be 'bought' with an Ivy degree.
Tue 23 Apr | X. J. Scott | Yikes! Didn't mean to start a flame war... The list I posted was meant to indicate in a roundabout fashion a potential hire which I believe many companies would have concerns with, as far as hiring to do development work that involves design (for example, creating an application or subsystem from scratch). The qualifications I think would be unimpressive are: Someone with a BS from a non-prestige university with no verifiable development experience, no portfolio, no positive recommendations, and average grades. Why do I say this? Because: 1. I went to one of the best State engineering schools in the nation (one of the ones listed on http://www.usnews.com/usnews/edu/college/rankings/engineering/phd/computer.htm) and know that most of the students graduating could not do more than simple work, certainly were far from ready to do design work. 2. In my experience working and observing others, I have not encountered anyone as I described above capable of designing and implementing anything much more complex than a routine, a small module or a script. Now, there is a demand for people who work at this level and there is nothing wrong with only being able to work at this level, but a person with such qualifications may be disappointed if they are hoping to be put in charge of something. Note that any -one- of the items being true would be sufficient to bring someone in on an interview and check them out -- experience with no degree is great, portfolio with no experience working as an employee is fine (such as if they have been selling their own shareware or doing contracting since high school), or can show and intelligently discuss and demonstrate results from open-source projects they have been involved in (open-source work is a reasonable way to get a free education). The original post was in the context of advise to someone wondering of an Associate's Degree was sufficient to get a decent job in IT. I'd say no, and also point out that it's important to have some experience, or a portfolio, or great grades, or recommendations. The exception to this is if someone graduates from MIT or CalTech even with horrible grades, it's likely they are still spectacular performers since those are really harsh schools where anyone who manages to make it through is quite special. BTW, I included the last item of the list about people with music experience because I have noticed that the very best developers I have ever been fortunate enough to know were musicians with no engineering degree. Perhaps that could be another interesting topic. I think the reason musicians make great developers is because they are the sorts of people who are creative and think in terms of putting structures together in a cohesive manner. - Jeff
Tue 23 Apr | tbone | Actually what is the argument here? X J scott's original assertion seems to be reasonably correct - If one has a portfolio of work, and went to MIT, and has good recommendations...chances are that person is a better developer than someone with no portfolio, no recommendatoins, and a degree from north central iowa technical college. It must be that Pitt chip on the shoulder thing...not being able to afford / get into CMU really messes with the psyche of certain west pennsylvanians. >:-)
Wed 24 Apr | Paul B. | >Uh. If you go from Harvard to a management position or from a state college to a grunt employee it will. Sorry, you are right, I was thinking more a prestigious private school Vs a prestigious public. I tought that was the topic in question here.
Wed 24 Apr | Nathan DeWitt | I couldn't help but reply to this thread... I attended Carnegie Mellon Univ., and was in Navy ROTC. We were in the same ROTC unit as the Pitt guys. We were always giving them grief about state school, and the comeback I remember (at least, the one I can post here) was 'Physics is physics no matter where you are.' And I'd have to agree with that, to a certain degree. I left CMU after the first year (turned down ROTC scholarship, no $$ for tuition), and went to a local community college. I slept through the classes, and started working before I finished my A.S. (stupid english class...they make you attend them all!). I've been working for the past 3 years without a degree as an IT Consultant, and have on the side started an auto body repair shop with a couple other guys. I'm thinking about going back to school here to finally complete my BSCS. I'd say it's not so important where you go to school... I've been at the top and I've been at the bottom. Smart people are all over, and they *will* rise to the top.
Wed 24 Apr | James | I think one of the main values of an Ivy League degree (or degree from a similarly prestigious school) is as a marker of class privilege. Computer programming does not appear to be a field in which class privilege matters very much. Nor is computer programming a field overwhelmingly concerned with credentials. In my experience, most employers appear to expect, at most, a bachelor's degree -- and where the degree is from doesn't matter as long as you can demonstrate competence. By contrast, consider prestigious Wall Street investment banking firms. You would not be able to get an interview there with a degree from an obscure state university. They are looking for people from a certain social class, people used to privilege and comfortable with lots of money. They are more interested in good breeding than they are in competence. Some might say that you are more likely to be competent as a programmer if you went to a prestigious school -- but my observations have not shown this to be the case. I agree with something Bella said, to the effect that Ivy Leaguers are more likely to be conformist drones. They are more risk-averse, more afraid of making mistakes, and they will possibly be LESS competent as programmers than people who have been less fastidious in developing sterling, prestigious credentials.
Fri 26 Apr | Kevin Williams | 'It is interesting to note that on the Best Colleges list for computer programs where the highest degree is a Ph.D. on usnews.com, 13 of the top 20 schools are public schools.' I wonder if that's a function of funding. Are larger public universities more likely to get the huge government grants that can keep some of the best Ph.D.-type research-focused minds busy? While resources are finite even in government-funded programs, are research budgets relatively smaller for all but a few private schools? I can just imagine the pipeline of public money just behind a single program like NCSA. More to the point of this topic, does that research space for the Ph.D.s increase the benefit for your typical comp sci undergrad? Do they have the ability to work on some of these gee-whiz projects, are the instructors available who are at the leading edge of the research?
Sat 27 Apr | UNLV Running Rebel | --More to the point of this topic, does that research space for the Ph.D.s increase the benefit for your typical comp sci undergrad? Do they have the ability to work on some of these gee-whiz projects, are the instructors available who are at the leading edge of the research? -- No. Also, most 'leading edge' computer science research is done in industry, not at universities. For instance, google is a far more interesting research project than anything I've seen going on at any of the top 10 CS research schools in the US (with the exception of a couple projects at MIT). The simpsons episode where Professor Frink declares : 'Well, sure, the Frinkiac-7 looks impressive, But I predict that within 100 years computers will be twice as powerful, 10,000 times larger, and so expensive that only the five richest kings in Europe will own them.' Is sadly an accurate reflection of most university computer science research projects. YMMV. http://www.snpp.com/episodes/3F20.html
Inductive User Interface | Wed 24 Apr | MarkTAW
In an earlier thread, ( http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=6651&ixReplies=7 ) someone posted a link to an article on Inductive UI ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwindev/html/iuiguidelines.asp ). I like the idea, but Im not sure I agree with the philosophy. 1) It strikes me as a wizard type interface, which I always found annoying. It assumes a mental model of a beginner of all times. That a person doesnt keep knowledge from the previous page on to this page*, or that they cant encapsulate several concepts on to one page. A power user might find it annoying having to do extra clicking to accomplish the same tasks - their mental model is based on how the program works, or the larger task they want to accomplish, not the individual task on that one page. 2) the metric of coming up with a simple name for the screen isnt that great either because choose an account is no simpler than manage an account. While it might be conceptually simpler, the sentance structure is about the same, and this is really all subjective. Its like saying Choose the phrase that inspires the greatest level of confidence in your product: change your account or modify accounts. 3) A lot of the examples they gave made it seem like they changed the screen titles without changing the functionality. I realize the UI also changed under these, but it makes one wonder how much they really changed... 4) Doesnt this sentance fragment structure make it harder to read. There are a lot of implied subjects and such that make me have to re-read the title to get it. I also wonder what someone who doesnt understand english as well would do. Lastly, it makes it hard to pick out in a list of items. I like the idea that they break up user centered design into discrete components, but I wonder if these components are *too* discrete. * Even the idea of a process seems linear and one dimensional, while tasks are often multi dimensional, something from process b influences process a. How do you model that in this methodology? What do you think?
Wed 24 Apr | Nick Hebb | I thought it was good article. Some thoughts on your points … 1) Wizard type interfaces can be annoying, but among consumers I’d be willing to bet there is a larger potential market for non-power users than power users. For a product like Money, which they used in the example, they had to shoot for the lowest common denominator. I recently used Taxcut, which in retrospect, seems to be designed with inductive user interfaces. I am a power user is most senses, but not when it comes to doing my taxes, so the small-task oriented interface was nice. It allowed me to stop it the middle and not lose track of where I was upon returning. On the other hand, I’m writing a functional spec for an Intranet database app, and I’m having trouble finding the right middle ground between my two goals of simple user interfaces and minimizing the number of round trips to the server. [The connection speeds at our offshore facilities are very slow.] Tough call – do I frustrate the users because there’s too much information on one page, or do I frustrate the users by requiring them to navigate to a lot of task focused forms? 2) I disagree. I think that “Pick an Account” is much more task focused than “Manage an Account”, i.e., conceptually simply – which is the whole point. As far as sentence structure, I don’t think that’s the point. Besides, you have an imperative verb, an article, and a noun. How do you simplify that? Get rid of the article? 3) I don’t think the goal was to change the functionality, but instead to redesign the software so that the functionality was more apparent to a typical user. The whole point of the article was that many users don’t take full advantage of an application’s functionality because the user interface is not inductive. Hell, you could probably re-design the user interface of an application and make the users think that you’ve added new features just because those features weren’t readily apparent before.
Thu 25 Apr | MarkTAW | 1) A Wizard type interface focuses the user on the task presented on the screen and hinders the user from gaining an understanding of what the software does as a whole. For Web TV this probably works well because your average user won't be a power user, but for a tool like the one UPS guys carry around, it's far from the most efficient interface. To get from screen 1 to screen 9 must you always pass through screens 2 through 8? And for them, screens 1 and 9 might be combined, even if they are two functions like 'scan package' and 'enter address.' 2) My point is it's a very subjective 'loosy goosy' metric and difficult to judge whether or not the sentance is simple or not. Yet they insist that that's the way you measure whether or not a page is correct. I know I'm likely to screw this up in some places, as the designer I know what things do so things that are simple to me are complex to the user. This is more like a rule of thumb than an exact science. They make it sound like an exact science. 3) This is less of a point than I make it out to be, it just seems that a lot of their examples are re-naming screens and not necessarily making the more user friendly. They focus too much on the name of the screen and not enough on what they actually changed on the screen.
Thu 25 Apr | Jim Corban | I haven't read this article in a while, but as I recall the other purpose of renaming the page is so you, the designer, can articulate the purpose of page and design for that purpose. When you rename a page from 'Manage Accounts' to 'Choose Account', you also redesign the page to minimize or get rid of the 'Edit Account Information', 'Move Account', or 'Delete Account' functions. The author encourages you to go through your application and look for pages that can't be assigned clear, 'inductive' names - these pages are likely to be usability bottlenecks. It's a neat little trick and my main takeaway from this article.
Thu 25 Apr | fancy | I was a little disappointed when I got to the end of the article and they said that this methodology failed to get good results when actually tested. On none of the metrics they measured did they get any statistically significant improvement. I am likely to use this article as a way of killing future wizard-based design in the interfaces I am responsible for -- why choose a design that will insult advanced users and not help inexperienced ones?
Fri 26 Apr | Nope | fancy, i did not even get to the end of the article but i had already decided that this seems to be designing uis for dummies. like you say, such interfaces will insult advanced users, and will also insult users who believe they are advanced (who are probably a larger %ge :-). if an app gives two interfaces (a la winzip) then that might be a solution, but damned expensive to implement.
Fri 26 Apr | IanRae | I thought it was a great article. Comparing Money 99 to Money 2000, it's clear why 'inductive UIs' are better. The Money 99 forms had too much clutter, and they put the most important items (the buttons 'Open', 'Add Account', etc) at the bottom of the screen! Basic HCI state that a person's eye begins with the top 20% of a screen; which is exactly where Money 2000 put their task specific title 'Which account do you want?' One of my favourite new features in VisualStudio.Net is the StartPage (which is inductive). It lists all my recent projects in *chronological order*. One click and it loads. Compare that with VS6 where it opens with a blank workspace -- you have to know to look under File / Recent Workspaces, and even then the projects are listed alphabetically. Click, drag, click, drack, click. YUCK! UI got off to a bad start in the 80s with the idea of modelessness (a la MacPaint). But people are not modeless; we tend to do the same things in regular patterns. VCR manufacturers have recognized this -- you now stick in a movie and it automatically plays. When it reaches the end it automatically rewinds.
Fri 26 Apr | MarkTAW | Of course, the UI to MS Money could've sucked to begin with so that any attention to UI would be an improvement. I speak from experience. Let's take the Hotmail interface as an example. It's a web based interface, which they say is often IUI based, and it's from the same company that MS Money is from. I can't check hotmail from here at work so I'm using my memory. The Inbox lists e-mails. Clicking on the subject takes you to that e-mail. If you click on a checkbox you can delete those emails or block the addresses they came from, or put them into a different folder. You can also jump to a different folder, or perform various other tasks. You can do a lot of things on this one screen, and lots of people use hotmail that don't even own a computer, so I'm guessing it's fairly usable. Under the Inductive User Interface, you would have a screen called 'Click the e-Mail You Wish to Read' and that would be all you could do on that screen, except maybe jump to another section. To move an e-mail to a folder you'd click on a link on the left side that would take you to: 'Select the e-Mail(s) You Wish to Move' check, check, check, click [Next]... 'Select the Folder You Wish to Move these e-Mails To' click. 'You Have Placed (5) e-Mails in [Why IUI Sucks]' click on 'done' and it returns you to the 'Click the e-Mail You Wish to Read' screen. This is exactly like the 'Manage Your Accounts' / 'Select The Account You Wish to Somethingorother' example - they didn't talk about the 50 screens the had to add for the functions they took *off* of that page. They also, in the article, don't talk about how many other improvements they may have made to the UI that would make it more usable that may have affected their test results. I'm guessing a user model can accomodate more than one idea on a screen at a time. Let's take a mundane example.... A shower. Most showers have a bottom spout, a top spout (perhaps with massage) hot and cold water controls, and some sort of stopper so you can take a bath. A digitally controlled shower created using IUI: 'Select The Mode You Wish To Use' -shower -bath click bath 'What Type of Bath Would You Like To Take' -relaxing -cleaning click relaxing 'Select the Temperature You'd Like for Your Bath Normally I'd have one 'panel' of controls, I'd plug up the drain, select the bottom spout (usually pre-selected) and turn the knobs all in one interface. Microsoft thinks I'm too dumb to do this.
Fri 26 Apr | Nick Hebb | Mark, I see your points, and it all comes down to knowing your target audience. My perspective is tainted based on my background in manufacturing. For software (or even written work instructions) used by manufacturing personnel, everything needs to be spelled out very clearly and distilled to single task level in order to be well adapted and utilized. I'm not trying to be condescending about the 'working class', but the truth is that many assembly-level workers speak English as a second language and have low educational backgrounds. Due to economics and educational, many have had little exposure to PC's, so performing even simple tasks on a PC can be intimidating. So when I read the IUI article, this is the user group that immediately pops to mind - those who are intimidated by PC's and need clear instructions. If I were developing an application to be used by engineers, it'd be a totally different story. Making them go through 10 screeens instead on 1 or 2 would frustrate the majority of them.
Fri 26 Apr | IanRae | Mark, I agree that IUI wouldn't work on web applications because the latency time between screens is so long. But let's pretend HotMail was running locally. Group selection is an important task so an IUI would have to support it well. The opening screen 'What do you want to read' would have sub-task 'Move e-mails to folders'. Click. Now you see a list of e-mails which you can select using check boxes or any other multi-select method. Click click click click click. The subtasks on this screen are 'Move to My Favs', 'Move to Personal', 'Move to Sue', etc. Click on the one for the folder you want. click. Done. As for the shower: opening screen 'What do you want to start'. Two buttons : Shower and Bath. click on Bath and a bath starts (warm by default for safety). Next screen 'Adjust tempurature' with buttons or a slider for tempurature. So a bath or shower takes one click. Two if you want it hot.
Fri 26 Apr | MarkTAW | How about this idea. The IUI violates the 'real world' model of objects. The fact is we are able to pick up a letter, open it, throw it in the trash, put it in a filing cabinet, respond to it, etc. without going to a different 'read mail desk' or some such concept. We can turn on our radios and select stations or play CD's without going to different devices to do this. Even component systems tend to be organized in one area of the room. The IUI interface actually reqiures more thought on the part of the user than a different well designed interface. After a while, for example, we can change the stereo in our cars while driving. I can do this without looking on a rental car in a matter of hours, less if I'm driving in a city with lots of red lights, or on an empty highway with few cars. Donald Norman in his book 'The Design of Everyday Things' much quoted by Joel in his UI book is a big proponent of having one button per function rather than one button multiple functions. In software this would be akin to having the same buttons on the screen in the same place consistently. Witness the 7 series BMW that has a single knob that controls all sorts of things. http://catless.ncl.ac.uk/Risks/22.02.html#subj2 http://www.bmw.com/bmwe/products/automobiles/7er/sedan/iDrive.html Every time you select something you have to look at the screen to see (a) what it did and (b) what your new options are. You have to re-orient yourself each time you do something, re-reading the title/intro paragraph. I can envision my mother sitting there, nose up reading through the bottom lens of her bifocals trying to figure out now what *this* screen does. In fact, this is my real gripe about IUI. EVERY ACTION YOU PERFORM REQUIRES YOU TO RE-ORIENT YOURSELF. It's like the center of the world changes every time you reach a new 'page.' You're always zoomed in, never getting an overview of the system. It's like reading this posting one letter at a time, and being forced to click to get to the next letter. You'd never be able to get a sense of the whole. When you're selecting an e-mail to read, the whole program looks like a 'select a program to read' program. When you're deleting e-mails, the whole program looks like a 'select an e-mail to delete' program. You have no sense of hierachy, parallel functions, etc. Users are likely to only know about 10% of the functions in the program because: a) that 10% comprises 150 screens b) you never know at any point what alternate choices are available Take outlook for example, another e-mail program from Microsoft. Clicking on an e-Mail selects it and previews it. Dragging it to a folder moves it there. Double clicking opens it. Clicking reply opens a reply box, similarly Forward opens a forward box. One screen, multiple functions, yet countless people seem to be able to use it. In IUI the folders on the left would be replaced with options such as 'select an e-mail to delete' 'select an e-mail to move' 'select an e-mail to read' 'select an e-mail to reply to' 'select an e-mail to forward' 'select an e-mail to mark important' ' select an e-mail to mark unread' 'select an e-mail to reply to all to'... okay I'm exaggerating. now that I think of it, I've been using interfaces like this for a long time, and I've always hated them. Setting the VCR to record for example. 'Menu 1. First Time Setup 2. Program to Record 3. etc. (click on 2) Select a day you would like to record 1. today 2. Monday 3. Tuesday 4. Wednesday 5. Thursday 6. Friday 7. Saturday 8. Sunday 9. Monday - Sunday 0. Monday - Friday (click on 0) Select the Channel you would Like to Record... ARGGHHHH! Then going back in to change one variable.... 'Oops, that was 7-9am not 7-8pm' means tabbing through the whole screen again, often being forced to re-confirm old selections rather than just clicking 'next.' (Though IUI would probably let you click 'next' to get to the next step... hopefully it will be located in the exact same location on the sceen so I don't have to move the mouse at all to get to the next screen, and if it's at the bottom like it usually is I'm screwed because I have to scroll AND click.) Someone invented VCR+ and made a lot of people very happy. I wonder what the UI for the TiVO is like... 'People decide what they're going to click on before they move their mouse, therefore you shouldn't hide options from them at the beginning.' I'm paraphasing something I've heard numerous times, though I forget what the original source is. In IUI you're trying to push everything but the one thing you're focusing on to the side, and you can probably only put related functions on the same screen (which I believe is in the article), which means fairly unrelated options are really hidden from you.
Fri 26 Apr | MarkTAW | Oh yeah, to summarize, IUI keeps you ignorant by not letting you get an overview. Even an intelligent user would be lost in, say, a financial application like MS Money. I have a previous version of MS Money and wanted to balance my debt. I like juggling lots of variables and seeing how they affect the whole, but the interface required me to go back two screens to select which credit card to put into the debt reduction planner, then go to the second screen to select how much money I wanted to put towards the debt, and go to the third screen to see what the impact was. I would've much preferred a spreadsheet layout (like a much earlier windows 3.x version of Money I have) or like Excel, if I could figure out how to make it do RPN/compound interest, so I could juggle variables and see what affect they have on the whole without click through 2 screens just to change one thing. Basically, I hate interfaces that hide things from me because they assume I'm stupid. Just get me do what I need to do. Here's another real life example, my alarm clock lets you maintain 2 seperate alarms. There's a 3 way switch 'Alarm 1, Alarm 2, Both.' To set one alarm, select it on the 3 way switch and hold the 'Set Alarm' button and push the up/down buttons (there's four, fast and slow up and down). Another 3 way switch for Radio, Off, Alarm Now to set both alarms: move switch to 'Alarm' move other switch to 1 push set push up/down move switch to 2 push set push up/down move switch to both IUI: click on 'Set Alarm' 'Select an Alarm to set' - click 'Is This Alarm Active? y/n' - click 'Select a Time for this Alarm' push up/down click done click on 'Set Alarm' 'Select an Alarm to set' - click 'Is This Alarm Active? y/n' - click 'Select a Time for this Alarm' push up/down click done To change from both alarms to alarm 1 now: move switch to 'alarm 1' IUI: click on 'Set Alarm' 'Select an Alarm to Set' - click on 2 'Is This Alarm Active? y/n' - click no/done At 7 am changing the alarm for 15 minutes later.... I can't imagine doing it in IUI. I would actually have to look at the screen and read the options. Why? because the same button would be doing 2 different things. It would make me THINK about it, thinking would be bad at 7am because it would wake me up. Even if it's not much more clicking, it's a lot more thinking, it's even a lot more words in my description, and you constantly have to re-orient yourself because the old variables went away to be replaced by new ones in the same place. IUI claims that it's better because you're only focused on one thing at a time. I say it's worse because you're using the same space for multiple activities and you're forcing the user to re-orient themselves each time. IUI designers think that the old variables are instantly forgotten, but they're not. They linger in your mind, and you perhaps unconsciously try to figure out how the previous screen interacts with this one, and how this one will interact with the next screen, making your life even more difficult. In traditional design you have 12 options on the screen. In IUI you have 4 options on 3 screens, and when you're looking at options 5-8 you're trying to figure out what they had to do with options 1-4, and what options 9-12 might be. This actually forces the user to think more, and confuses them considerably more than showing them the whole. Another analogy would be getting directions. 'You head down this road a ways, turn left at the old mobile station, go a ways more past a bunch of trees, then turn right at the new church. Then go past six streets, mine will be the third light, turn left there and go...' at this point I'm screaming 'just show me on the map.' The person giving you the directions already has an internal map and can orient to it. Until you get that map, directions like these will make you nervous because you know one wrong turn will put you in an unfamiliar place without any way of re-orienting yourself. Turn right at the mobile station and you'll never figure out what you did wrong. You'll get to the mobile station, and even if you remember 'I should've turned left' you're holding all the other variables in your head - the church, the six blocks, the three streetlights - in your head and do what I've done - turn back the way I came from, make a U turn and approach the whole thing again because I can't think about whether a right and a u-turn makes a left without forgetting which way I'm supposed to turn at the church. PS, I use my alarm like this: Alarm 1 7:30 Alarm 2 7:44 Alarm 1 goes of 7:30... snooze Alarm 1 goes off 7:39... snooze - 10 minutes Alarm 2 goes off 7:44... snooze - 5 minutes Alarm 1 goes off 7:48... I get up - 4 minutes
.NET destructors - Is this important? | Wed 24 Apr | Mark Alexander Bertenshaw
Joel has talked about destructors not firing when an object variable goes out of scope - and he says that this is a step backwards. Do people think that this is a step backwards, and if so, do the advantages gained by using a separate garbage collection routine make up for this?
Wed 24 Apr | Rick | There are many advantages to an environment where memory is managed for you. The only case, that I really think about anyway, where the you get burned by non-deterministic finalization is the situation where an object is handling a precious resource like a database connection. Normally, in the COM world, when the last client disconnects from the object (RefCount = 0) you'll write code to release resources like db connections, file handles, etc. This code is executed in a very predictable manner. Regarding .NET, MS provides a method called Finalize which allows the dev to write this clean-up code, but it isn't nearly as predictable as the scenario I previously described involving COM. Basically, the GC runs on a low priority thread looking for objects that can't be reached anymore. If no Finalizer is present, the memory is reclaimed. If a Finalizer is present, it's basically flagged and ANOTHER thread comes by (hopefully) soon and fires the Finalizer. Then the object is GC'd normally. The docs are VERY conservative on this topic. They also indicate that there is no guarantee the Finalizer will fire (!) (This description of the GC process the information provided here is provided 'as is' without warranty of any kind. Rick disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. in no event shall Rick be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even Rick has been advised of the possibility of such damages. some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.) MS recommends you implement the Dispose pattern, which basically means you implement a method that you'll explicitly call to do your clean-up. But that takes away any advantage we had with deterministic finalization. You can always implement you're own reference counting! ;-) (The information provided here is provided 'as is' without warranty of any kind. Rick disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. in no event shall Rick be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even Rick has been advised of the possibility of such damages. some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.)
Wed 24 Apr | Mark Alexander Bertenshaw | Re. Finalize 'event'. I gather from reading articles on .NET that it is possible that Finalize might not get called at all - which is why they recommend you put all your clear up code in the Dispose method (assuming you implemented IDisposeable). And I believe that if you implement Finalize, you can get into some interest situations, since the garbage collector in this case has to put the object in a special 'Finalize' queue, where objects wait to have their Finalize methods called. Personally, I think that I will really miss COM type object destructors, since I am a VB programmer, and have made great use of this feature in a whole lot of my code, since it allows a lot of elegant coding. Having no need for a Terminate() type method means that I don't have to remember calling it, thus leading to fewer potential bugs. In general, I am really in two minds about VB.NET initiative. Whilst I really love the new features, and the light-weight objects which come with .NET, I think that it lacks something in the VB department. And also, they lost the opportunity to add some interesting features. I mean - why not parameterised Gosubs as a language feature? All the stack friendly advantages of local variables, with the strong type checking of procedures!
Wed 24 Apr | Rick | >> I mean - why not parameterised Gosubs as a language >> feature? All the stack friendly advantages of local >> variables, with the strong type checking of procedures! You're not serious.....
Wed 24 Apr | Patrick Lioi | It's a similar situation (if not exactly the same) in Java. You never know whether Finalize will be called. So, I just don't use it. I have yet to have a real need for a destructor, although my experience is intermediate at best. I guess it works well for most situations, adding to the safety net of GC.
Wed 24 Apr | Alex Moffat | Re Patrick's comment about Java finalization. It's also not a good idea to rely on this in wrapper objects to clean up the wrapped objects. From my experimentation, (http://www.zanthan.com/itymbi/archives/000345.html if you're interested) which matches what you think would happen, the wrapped object is finalized before the wrapper is. So, for example, if you wrap an SQLConnection and expect to be able to close it in the finalize method you're going to cause an SQL exception because by the time your code is executed the underlying socket connection to the db is already closed.
Wed 24 Apr | anon | Actually in Java the use of Finalizers is strongly discouraged as most of the GC optimisations cannot be used in a Finalize method is present - in case of object resurrection, etc. It seems that having a GC makes memory management easier, at the expense of making the management of all other resources more painful. And making you application have non-deterministic run-time behaviour. Whether this is a good thing or not depends on whether you consider memory management to be a significant problem.
Wed 24 Apr | Banana Fred | > for example, if you wrap an SQLConnection and expect to > be able to close it in the finalize method you're going to > cause an SQL exception because by the time your code is > executed the underlying socket connection to the db is > already closed. I think close() functions should be idempotent. close() means that the programmer wants that SQLConnection or whatever object to be destroyed. If it was already closed, then who cares? Library authors should assume the people calling the library are dummies and program defensively (within reason). ;-) I will miss destructors. I don't think Java programmers are bothered by Java's lack of destructors as much as C++ programmers are because Java does not allow objects to be allocated on the stack.
Wed 24 Apr | Chris Tavares | This topic was flogged to death over on the DevelopMentor .NET mailing list (http://discuss.develop.com) just after .NET first hit the streets. Part of what came out of this dicussion was two patterns on how to handle object cleanup. The first thing to do is always implement IDisposable on your objects if they need cleanup. This gives you a standard place & name to give your Close method (I forget what they actually called the method, though). Then, use one of the two forms in your code: MyResource res = new MyResource( 'Something expensive'); try { // do stuff with res } finally { res.Close(); } The try/finally ensures that res gets cleaned up even in the presence of exceptions. The other option is the new using form added to C# (so this won't work in other .NET languages). using( MyResource res = new MyResource(...) ) { // Use res } At the end of the using block, the compiler automatically calls res.close(). I may have a couple of details wrong, but this is the general idea. It's a little less convienient than C++, yes, but it's still a lot less work than tracking down cycles & bugs in reference counts!
Wed 24 Apr | Banana Fred | If Java allowed stack-based objects, then these hacks of using try/catch/close or using() would be unnecessary. Those verbous idioms are simply reinventing C++ destructors. sigh.. btw, does C# allow stack-based objects?
Thu 25 Apr | Mark Alexander Bertenshaw | My argument against the Close() idea is that it is really a bad idea to have an object in an invalid state. If it is in an invalid state, it ought to be literally unusable, or not even reachable. And also, I generally like to think that if there is a Close() method, there should also be an Open() method. But that's just the aestheticist in me, I suppose. As for the parameterised GoSub - I am not 100% joking. I recently wrote some reasonably complicated parsing code. Inside it, there was several places where the same seven lines of code was being run, so I did the obvious thing, and moved those lines to a separate procedure. But then, I realised I was passing about seven parameters, which was a real pain. It occurred to me then, that I could potentially use a GoSub, and thus save the overhead of a procedure call. However, in native code compiled VB, GoSubs are bizarrely a lot slower than procedure calls, and anyway I'm not very enamoured with the syntax. What would be cool is if I could gain the specified interface benefits of a procedure, but also be able to have the information hiding and stackless subroutine call of GoSub.
Thu 25 Apr | Frederik Slijkerman | Use Delphi: function TMyObject.IsZero(Param: Integer): Boolean; procedure IsArgZero: Boolean; begin Result := Param = 0; end; begin Result := IsArgZero; end; :-)
Thu 25 Apr | Chris Tavares | > btw, does C# allow stack-based objects? No, not really. You can put structs on the stack, but they aren't allowed to have finalizers, so you're back at square one. Something to consider is looking back at Lisp and Smalltalk. Both of these communities have been dealing with these issues for what, 30 years now? What do *they* do?
Fri 26 Apr | Adam Vandenberg | Mark wrote: Inside it, there was several places where the same seven lines of code was being run, so I did the obvious thing, and moved those lines to a separate procedure. But then, I realised I was passing about seven parameters, which was a real pain. It occurred to me then, that I could potentially use a GoSub, and thus save the overhead of a procedure call. Sounds like you want FORTH.NET!
Fri 26 Apr | Tim Moore | I just wanted to point out a fairly common pattern used in GC'ed languages to deal with this issue. It uses closures--object-oriented equivalents to function pointers--which in Java are typically implemented as anonymous implementations of some standard interface. The idea is that for each resource you create a class that has a 'withDo' method, which accepts a closure. The method acquires the resource, runs the closure passing it the resource, and ensures that the resource is released after the closure returns (either normally or by throwing an exception). There's an example in Java here: http://www.c2.com/cgi/wiki?ReleasingResourcesInJava It sounds like the C# 'using' statement is the same idea baked into the language directly.
What about advanced degrees for ba's | Tue 23 Apr | Daniel Shchyokin
With all the talk of education lately something else has occured to me: What do people here suggest a BA (in history) do to further their education? Is an MBA worth it? is it possible to get an MSCS after a BA... is anyone else in this position?
Tue 23 Apr | mlr | If you want to go the MSCS route, find a school that will let you enter their program with a minimum of prereqs. Even so, you will probably have to go through a couple of intense semesters of prep work. The school I chose required pretty much the entire undergrad curriculum. I finished the 2nd bachelors but never got the masters. The MBA route? Its been my experience that there is a dearth of programmers that have any sort of business knowledge beyond the bottom line. I think it would make a good combo, but it really depends on where you want to end up. Here is a good resource that may answer your questions: http://www.cio.com/research/executive/questions/12112001113153.html
Tue 23 Apr | tbone | An MBA is worth it in three circumstances: 1) You get into one of the top 5 schools, where you can network with the sons and daughters of extremely rich people, who can fund your startup ventures 2) You want to work LOCALLY and want to meet a lot of local business types. For instance, if you want to consult for HMOs in Minneapolis, it might not be bad to enroll in the U of Minnesota MBA program. 3) You work for some giant megacorp and they pay for it, so that you can move up to a higher salary bracket Other than that, an MBA is sort of useless. (my biz partner is an MBA, he gave me this advice when I was thinking of MBA ) Regarding the MS in ... CS? It is probably useful if you have some VERY SPECIFIC interest. A general MSCS isn't that valuable.. the curriculum is going to be like a BS curriculum at a serious engineering school. However, if you know you like some specific branch of CS, like networks, AI, security, compilers, etc...getting an MS and focusing on that topic might be a good idea and sort of fun.
Tue 23 Apr | mlr | tbone, I find it hard to believe that having an MBA wouldn't help you make better business decisions, whether for yourself or for a co. you work for. That's what you seem to be implying when you say that the degree is worthless. Am I just reading too much in to it? Its the whole arms race thing. Say the ceo has to choose between 2 programmers to promote to the cio spot. If they in all regards except one has an MBA, more than likely the MBA will get the spot. Same goes for contracting, or trying to get funding, no?
Wed 24 Apr | Hugh Wells | mlr, MBA is a dirty word in large swathes of investment land. And no, I certainly wouldn't hire a programmer with an MBA. I would wonder if he knew what he was doing. There is a view that a lot of the garbage in the dot com era arose from empty business plans created by people with or doing MBA's, and these are contrasted against businesses with solid technology and solid understanding of the technology markets. It's the old dichotomy.
Wed 24 Apr | Hugh Wells | Daniel, the fact that you're aware of and reading this forum shows you've probably more of a head start than the average MBA. I would advise against an MBA. Probably some other post-grad course in some area more closely related to your interests. As always, do something very well and you will do well.
Wed 24 Apr | tbone | mlr, I'm saying getting an MBA from Idaho State (or equivalent school that isn't Harvard, Stanford, Sloan, etc) is worthless, or perhaps worse than worthless..because if your employer isn't paying for it, an MBA program typically costs a lot of money and could put someone in severe debt. The real point of a MBA program is to establish a good network, and one does that at a tier 1 MBA program, or at a good local MBA program , if one wants to work locally. An entrepreneur or contractor will not benefit from most MBA coursework, and you won't get a job at McKinsey with an MBA from a school that isn't top 5, so there isn't much point of getting an MBA somewhere that isn't nationally or at least locally renown.
Wed 24 Apr | tbone | Don't take my word for it. Get the course list from an MBA program you are considering, then get the book list. Then order the books from amazon, or better yet, save some money by heading over to barnes and noble and checking out the books in the store. After reading through these books, see if you are still able to convince yourself that it is worth forking over $20K and 2 years worth of free time to get a piece of paper that certifies that you have a loose overview of that type of material. Probably the most useful aspect of business school is learning how to write a business plan and having it peer reviewed. But , why not just get a business plan book , write a business plan, and submit it to some real investors?
Wed 24 Apr | mlr | Hugh, There is also a view that a lot of the garbage in the dot com era arose out of techies that didn't have a clue about how to run a business. (My view is that the entire world is insane). Further, there's an awful lot of investment bankers that have MBAs. I have to believe that an MBA would only lend you credence to this audience. Granted, it won't make up for a lousy plan, but its far from being a 'dirty' word (except maybe to techies). I'll grant that having an MBA will probably rule you out of some entry level programming gigs. Fine by me. It will probably make you look expensive for the higher level gigs. Again, fine by me. I think that having an MBA will only help you make better business decisions. At least it will help you understand what the CFO is talking about???
Wed 24 Apr | mlr | Ok. I appreciate all the comments here, as I'm also in the process of deciding b/w MBA or MSCS. Some of my thoughts pro-MBA: It would be a great way to bridge that dysfunctional divide between management & engineering. Also, I'm getting tired of writing bizapps. There's only so many ways to sort a list before it gets really boring. I would like a research gig, but I'm confined to a geographical area where such jobs are nonexistent. What does that leave? If my present job goes down the tubes, that means either branching out on my own, or moving in to a mgt role. Surely an MBA wouldn't hurt in either case. Here's a sample class, would it all be irrelevant? 'Advanced topics in corporate finance. Topics include long- and short-term investment decisions, cost of capital, working capital management, dividend policy, long-term financial planning. The course emphasizes the development of computerized financial models. Cases involving domestic and international firms are utilized. ' anit-MBA: Why not just take a couple of accounting and proj. mgt. courses? That one's compelling, and the only way I can justify it is that I _want_ an advanced degree. Pro-CS: I would enjoy all of the classes. Anti-CS: I would never get to use the concepts in the 'real' world. Does it come down to which is least irrelevant? Thoughts?
Wed 24 Apr | Hugh Wells | mlr, if you're keen on the idea, go ahead. Maybe you'll be one of the useful ones. You can report back in three years and fill us in.
Wed 24 Apr | Katie Lucas | I've been pondering an MBA. Basically because I spend a lot of time turning up and people say 'here, computerise this business process' which turns out to be broken. You tell them it's broken and that the best they'll get is a VERY FAST broken business process, and they don't take any notice of a mere software engineer. Heck, what would I know about businesses? I've run a couple, I've been round lots of other businesses, I pay attention to how they're run. You'd think contractors would be seen as a great way to gain outside viewpoints - 'so, how does everyone else do this?' But no, I'm just a developer. The idea occurs that having an MBA might command a bit more respect from the people that are so distainful of the people who actually touch software. Plus: software engineers never get promoted. Big companies like to promote accountants. They seem actually opposed to the idea of having IT directors that understand IT. {It's like there's an assumption that a business degree makes you a businessperson.} If I ever go join a company, at this point in time, my future would be to retire in 30 years still sitting at the same desk, still dealing with the same shit still on the same salary and with the heart conditions that come along with that stress. If I'm ever going to make it into a position where I could be promoted I'd need business or accountancy qualifications. I don't want to be a code-grunt all my life (because it's bloody annoying). I've got as good as I can in this environment. I've run out of challenges - I can't grow professionally without changing environment. I can't change THIS environment because I'm just a code-grunt; so the only solution is to change environments: I want to run projects. I can't run projects at the moment because I'm a code-grunt and they don't run projects. As far as I can tell, people who run IT projects have degrees in Art History, but that would bore me: an MBA is at least something I'm interested in.
Wed 24 Apr | Hugh Wells | This has become the MBA thread, it seems. Katie, I've worked with MBA's and I don't see that as a good route to what you're talking about. Lots of companies do have high level architecture designers, usually with job titles like Architect. You should try for roles like that. In fact, there seems to be a trend for companies to require that their architects come from software developer backgrounds, rather than from more general, or business areas, as has been the case in many cases. I don't think any courses teach either product design or corporate architecture to a good standard; certainly not to the level of a talented practising software designer.
Wed 24 Apr | Katie Lucas | 'Lots of companies do have high level architecture designers, usually with job titles like Architect. You should try for roles like that.' Trouble is, I've been there. They say 'you can't be an Architect, you've not done that before.' And in the UK, technical architects STILL don't get company mercedes, stock-options or offices. They're still sat in the open plan office listening to other people's mobile phones ringing endlessly. Seriously, I should have studied art history because with a degree in art history and just enough IT knowledge to be dangerous I could have been hired as the boss of a whole load of developers... Basically, I'm tired of being disrespected. I want to move into something where there is some respect. I don't want to be a leaf-node on corporate trees any more. I've done everything I can out here. I don't want to do software anymore. I'm tired of implementing Perl programs in C++ because we're not allowed to use Perl. I'm bored of having my professional opinion overruled by someone who can barely read their email because of something their nephew told them. A number of times people have asked where the sensible working environments are: they aren't out there. It's going to need some of us to get into positions where we can make those environments. Currently IT is run by people who think quiet offices are for the managers, because developers are merely workers, and low-caste workers don't deserve quiet offices. I want to BE in that position. The software industry is going to stay screwed up until it gets some smart people running it. I want to be doing that. At the moment the decisions seem mostly to be being made on a mixture of superstition, the way businesses were run in 1900 and the headlines from IT newspapers. Basically it's either move up or move out, and I'm no good at anything beyond computing...
Wed 24 Apr | Christopher Wells | If you're a tech who's interested in the financial side of business management, another option could be 'CMA' (in the UK at least, that's a Management Acountant). My father-in-law started with that and became the Financial VP of various large companies and government departments, eventually Auditor General for a couple of developing nations.
Wed 24 Apr | mlr | Damn Katie. I hate to be a me-too'er, but that was well said & sums up exactly how I feel. I've seen both sides of it. Tech people making horrible business decisions and business people making horrible tech decisions. There has to be something powerful about a smart tech person that can make good business cases out of his/her opinions. 'Why should we use perl?' ' Why should we buy the Enterprise 450?' 'Here's why...' (plops down 25 page report detailing cost / benefit analysis, financial justification, ROI, cost of ownership, bunch of other stuff I have no clue about). Maybe its just wishful thinking... but at least we would have other skills once age discrimination kicks in.
Wed 24 Apr | Scott MacHaffie | If you are in Oregon, then another option to consider might be an MS in software engineering from the Oregon Master's in Software Engineering (OMSE) group ( http://www.omse.org ). The program is a mix of courses--everything from programming, design, and testing to professional communications, managing a software project, and understanding the software business. You can also just take specific courses (which I've done). Anyway, it is an option that takes some of the better parts of an MBA along with some more traditional programming / CS things. If you're not in Oregon, you might look around to see if there is a similar program locally.
Wed 24 Apr | Bella | All just one mans opinion: In IT, compared to other fields, I really feel degrees are a much a smaller piece of the puzzle. One criteria of a 'profession' is formal *required* certifications. That is not the case in IT. Regarding technical positions, I have never been in a place where anything beyond a BA/BS mattered. It's more of a 'Gee, that's nice' AFTER you have already decided to hire someone for their skills and experience. From what I've seen, it's all about skills and experience. Go get a degree if that helps you get the former. If you've already got it, don't bother unless your up against a wall with no opther options. Advanced degrees are a 'get out of jail card'. Use it when you have no other options. Degrees are to become employable. If you're already working, don't sweat it. If it will help you change jobs/careers, then that's a different story.
Wed 24 Apr | Chris Tavares | Having an advanced degree says something about the person, though. It says 'I care enough about my chosen profession that I'm willing to keep learning.' All those bitching about how useless master's are don't get the point - they can *never hurt*! Especially if you are working, and your employer has a tuition reimbursement plan. Because if you don't take advantage of it, the guy in the next cube over will, and then *he'll* have the leg up. I recently finished my master's program, and I think it helped make me a better engineer. Note - I didn't say programmer. Engineering is about a lot more than just laying down code, and the bigger a project gets, the more important those other concerns are. As far as project management goes, there is a specific certification you can get in project management, and from what I understand, it's fairly well regarded. That's all I know about it, though.
Wed 24 Apr | D. Holloway | One of the main reasons I'm currently considering an MBA is quite simple: I don't understand business. Every time managment/marketing/npi/&c. makes some stupid decision, I used to think 'That's a real stupid decision.' Then I realized that the reality was closer to 'That's a decision I don't understand.' In all these cases, the 'other side' seems to make the right decision half the time, and half the time they make the wrong one. When they're right, you can't convince them otherwise (and shouldn't try,) but when they're wrong, you usually can't convince them otherwise because you can't express the problem in a way that makes sense to them. Funny how that's _exactly_the_same_ problem as them being unable to express their decisions in terms Engineering can understand. I'm hoping an MBA can help give me the tools to (a) choose the right battles and (b) fight them more effectivly. And when someday I migrate into Managment (hey, c'mon, how many 50 year old programmers do _you_ know,) understanding both sides will make me a better manager. Engineering Arrogance is as plentiful as it is ultimatly pointless. Once a person matures to a point when they realize that (a) they are not the smartest person around and (b) there is more than one truth, that's when they really start to learn.
Wed 24 Apr | Dan Sickles | If you want the MBA 'degree', go to school. If you want to speak the language and understand the concepts read 'The Ten Day MBA'. It's easy material and it will serve you well. It worked for me.
Wed 24 Apr | Bella | I agree. If it's knowledge you're after, first read some books. In fact, being in control of what you learn may be better. What industry are you in?
Wed 24 Apr | Hugh Wells | Perhaps one of the issues in this discussion is a difference between levels of experience, and perhaps expertise too. I *advise* MBA's, I don't have any trouble achieving the changes I consider necessary, and I can explain to management why decisions are wrong. And they often are. Regarding the value of post-grad courses in general, I think Bella has hit the nail on the head. They tend to be more useful to people wanting to enter the profession or having trouble getting ahead. When I see a person with a course-work masters or diploma, I actually downgrade them compared with their peers, because, other things being equal, the peer has been working successfully and learning in that same period of time. Obviously this does not apply to PhDs, and would not apply for a really interesting masters program. mlr earlier suggested an MBA would help me present to VC's, or something along those lines. Well, mlr, I already do that, and enjoy some success, and know that investment executives tell empty MBA's to shove off.
Wed 24 Apr | mlr | Wow. The anti-education (or is it just anti-business education?) sentiment on this board is really shocking. I'm not going to argue whether or not reading a few books is just as good as attending a 60 hour graduate level program. I'll leave that as an exercise to the reader. Is it necessary? No. I never said it was. What I will continue to assert is that there is something to be learned in a curriculum such as the following: http://www.wharton.upenn.edu/mba/curriculum/core.html If you don't think that you could gain any value from such a curriculum, then good for you.
Wed 24 Apr | James | The comments of tbone and Hugh are the apex of idiocy. Here's tbone: '[G]etting an MBA from Idaho State (or equivalent school that isn't Harvard, Stanford, Sloan, etc) is worthless, or perhaps worse than worthless..because if your employer isn't paying for it, an MBA program typically costs a lot of money and could put someone in severe debt.' My response: The logic of this statement is bizarre. An MBA is 'worthless' because it 'costs a lot of money'? That makes no sense at all -- people go to business school to gain strategic knowledge about business, finance, accounting, and so on. This is high-level knowledge, gained through intensive coursework and group projects, and I suspect you would learn far more about business in a two-year program than you would working -- most people's jobs involve very specialized tasks that don't even come close to providing a comprehensive knowledge of business. That knowledge gained in an MBA program is most certainly worth something. Unless tbone has some hard data on the effects of an MBA on someone's lifetime earnings, he is just a babbling ignoramus. Here's tbone again: 'Get the course list from an MBA program you are considering, then get the book list. Then order the books from amazon, or better yet, save some money by heading over to barnes and noble and checking out the books in the store.' My response: An education involves more than reading the books on a course list. Any intelligent person knows this. An education is a form of socialization, in which you are required to interact with students and faculty, adhere to deadlines, submit your work for criticism and grading, give presentations, and learn in myriad ways from the constant, intense give-and-take of an academic program. Books are only part of this. You would not be able to find many business school texts in Barnes and Noble -- nor would you find the case studies that the professor distributes -- nor would you find the insights of your fellow classmates who have worked in diverse industries. At Barnes and Noble, you will not engage in a stimulating debate over business strategy, corporate ethics, or the nuances of venture capital. And here's Hugh: 'When I see a person with a course-work masters or diploma, I actually downgrade them compared with their peers, because, other things being equal, the peer has been working successfully and learning in that same period of time.' My response: This is another illogical statement. First of all, what basis does Hugh have for thinking that 'working successfully' will impart the greater knowledge than two years of business school? What metric comes into play here? What if the person is in a narrow job that does not give them any overall strategic insight into how business operates? Second, it suggests a negative, suspicious, even superstitious attitude, for Hugh to devalue someone so explicitly simply because they have an MBA. People are unique -- they have individual strengths and experiences and personal qualities. I would 'downgrade' a person if he were an ex-convict, or if her academic record were abysmal, or if he had an unattractive personality. But to do so because she has an MBA is bizarre.
Wed 24 Apr | tbone | I don't think this board is anti-education. I think this board *is* education. Wharton is a top-tier school, the advantage of going there is that you will make a lot of connections. However, going to Penn State for an MBA is an order of magnitude less valuable...just because you wont meet as many rich people. If you find accounting and 'leadership seminars' intellectually stimulating, then maybe the MBA curriculum is the right thing for you. However, most people consider the MBA as a means to advance their career, not as an academic pursuit in itself. I'm trying to make the case that unless you have an extremely crappy job, an MBA from somewhere other than the top 5 or 10 schools is not going to put you in a fabulous position when you finish. In fact, you will most likely be at ground zero again. Most of the things people think they are going to get out of an MBA program can be obtained in other ways... Want to learn about business...start one of your own. I used to work at a dot-com that went under. One of the people I worked with started an executive MBA at a top-10 school while the company was going downhill. She spent a year after the company folded finishing her MBA, and will be finishing up this spring. She has 0 job offers that pay more than what she was making as a software architect at the dot com, and is now looking for contract work as a programmer. (she also has an engineering master's degree from MIT) I might be in the minority, but me and my programmer friends are all still making decent money, and my MBA friends for the most part...are unemployed. YMMV.
Wed 24 Apr | tbone | --You would not be able to find many business school texts in Barnes and Noble -- nor would you find the case studies that the professor distributes -- This is completely untrue. Barnes and Noble is the back-end for over 50% of college and university bookstores in the united states. You can obtain nearly any college text from barnes and noble, in any field. Check here, to see if you can find what you want: http://www.barnesandnoble.com/textbooks/browse/browse2.asp?userid=3EP25FCN6M&specID=8&BunMI=Business+%26+Economics --nor would you find the insights of your fellow classmates who have worked in diverse industries. At Barnes and Noble, you will not engage in a stimulating debate over business strategy, corporate ethics, or the nuances of venture capital.-- This may be true, it depends on who you go to barnes and noble with. To shed light on my point of view, I have worked solely as a consultant and as one of the first 10 employees for 2 startup companies in 8 years since I graduated from college. I have simultaneously had stimulating debates about business strategy, ethics, and venture capital, whilst trying to actually obtain venture capital, implement my business strategy, and consider the ethics of shutting down the servers of clients who balk on payment. Thus, unless I really want to stop doing what I am doing, and go work for mckinsey, I don't see the value of getting an MBA. Now, if I had spent the last 8 years struggling to get out of the QA department of the megacorp I interned with in college, an MBA would probably teach me a lot about business and advance my lot in life.
Wed 24 Apr | conservative arts major | When I was in college, I took all the interesting classes for year, then dropped out. (I did a stint at the bureaucrat rumor mill, and had the scoop on all the profs. Plus, it was one of the top schools on that US News link someone posted.) I only really recommend college for the booklist and pals. Socializing with the other kids is educationally pointless, since most of them are at least as clueless as you. And profs by default presume a higher status over you. Sure, a resourceful person can always gain advantage by going to college. It brightens your resume, and MBAs need it to learn the dark arts of assfondling. Average people should definitely go to college, because they get the greatest benefit. BUT, people who choose to live & die by their resourcefulness often have compelling reasons to take the road less travelled.
Wed 24 Apr | Hugh Wells | mlr and Janes, please go and do your MBA's. Please.
Thu 25 Apr | mlr | 'mlr and Janes, please go and do your MBA's. Please' Thanks for the encouragement Hugh, but I'm still not for sure if its the right move for me. The program Scott MacHaffie posted a link to is exactly what I'm after. I know that Steve McConnell did a similar program at Seattle U. Unfortunately, no such program exists close by. The closest I can get would be the MBA/MIS.
Thu 25 Apr | Jeb | You are probably not going to learn anything that will make you money in school otherwise everyone would go to school just to make money. What will make you successful (meaning wealthy $$) is you. If you do decide to go to school it might as well be something you enjoy.
Fri 26 Apr | Mat Watson | just my 2 cents worth: don't you have the possibility of doing your MBA part-time? This thread just prompted me to look at MBAs again, and a lot of the schools near me run PT courses. With full-time courses, it all comes down to the old equation of [n years higher pay] > [n + (course length) years lower pay], but PT you still get to earn. Now all I've got to do is make sure that I'm in the same place for the next 3 years. Just remember marketing / manager types are a different species. I took some marketing courses in my BSc and had my work marked down for using the decimated (the marketing type insisted it wasn't a real word) and corrected my spelling of separate to seperate. Actually, I did learn something from those marketing courses - at the end of it the lecturer said something like 'well, marketing is essential, but on a different level, you have to question the benefit of having 50 different brands of toothpaste.'
Fri 26 Apr | mlr | 'just my 2 cents worth: don't you have the possibility of doing your MBA part-time? ' Yes... I've applied to the local program for a part-time spot. It will cost about 6K for books+tution spread out over 4 years. I think I've decided to ditch the MIS route in favor of the finance/accounting track. I'll get more out of it and it could serve as a 'backup' career.
Futuristic office | Tue 23 Apr | RK
This post is based on some of the discussion in the Enlightened companies thread. I just wanted to find out why no body is talking about working from home, telecommuting etc when they talk how an ideal workplace should be( private office ) . Would not this be the next step to having private office & other ideal stuff. Not only does this give you flexibility as an employee but also it could be environmentally friendly. I can imagine most of the employees of such a company working from home using high speed internet connections and use collobrative tools for interacting with their co workers. The company itself could maintain a small office, mainly for meeting with clients & a suite of guest offices. What do you guys feel ?
Tue 23 Apr | tbone | I do work from home and I think it is fabulous. I am never, ever going to work in an office environment again. (OK, maybe if someone gives me that $500k/yr job...) Even when I worked in an office, I found that I couldn't get much done in the office due to constant interruption. So I did most work at home early in the AM, then just came in for meetings. In fact all the members on my team worked the same way, and we were the only team in the entire division that accomplished _anything_. When the megacorp dropped the entire division last year (I left about 6 months earlier to take a contract job), the only people they kept were the developers on the team who all worked from home. I do think more and more, companies will operate this way. especially with 'tiger teams'...small development teams working on very specific projects.
Wed 24 Apr | Katie Lucas | One of the things I've noticed is that too often developers are just too accessible. Peopleware sort of touches on this - giving developers private offices and the like, but that won't help if they're still too easy to interrupt. Round here, people call the developers. End users call developers and ask them questions: developer gets interrupted to explain to someone how folders work or something. The 'management' team is in the same open plan office, so they pop over every couple of minutes to chat about things. Telecommuting is an extreme form of not being interruptable by people who shouldn't be able to interrupt you at all. Personally I find it stormingly hard to work at home - I have the 'fridge problem'. You get up in the morning, can't find the butter and before you know it, it's lunch-time, but the fridge is organised properly now. Anything but work. Actually going somewhere to work I actually do work. But it would be nice to be non-interruptable when I go there. {Actually I get to work on lots of different sites, being a contractor, and every bloody time, I get the seat near the fax machine (lots of beeping and dialing sounds) or the printer (people forever stood behind me gossiping). Or sometimes both...} I've figured it's not whether the office is open plan or cubicalled or what, it's how far you are from the non-developers that's important. You want it to be just far enough that they can't be bothered to wander over with trivial stuff so they'll email it instead...
Wed 24 Apr | Jack of all(?), master of none | I have worked from home on several contracting projects and loved it. As long as you can maintain a working mindset... damn fridge... there isn't a better place. Your favourite chair, soda, light music and Bob's your uncle. I'd love to work from home now, but don't have an office area, and I'm positive that my boss would freak if I brought it up (maybe I should stop asking for half days off to play golf). So working from home is out, but the good thing is I have a door to my office, blinds on my window, and a brand new light bulb. 'Close the door, I'm not here'
Wed 24 Apr | mackinac | IBM had it figured out about 25 years ago on their Santa Teresa project. Developers need to be able to spend some time working alone without interruption and some time meeting and working with coworkers. Their percentage was about 40%/60%. In my experience the basic concept is right, but I spend a larger fraction working alone. At my previous employer a few people decided that they wanted to move away but were allowed to (or convinced to) continue working on their project by telecommuting. This worked out for a few months, but eventually the difficulties of maintaining contact with the project became too much and they left to find other jobs. I have thought about the idea of telecommuting and even done it in special cases like staying home during a snow storm. But for the kind of small team projects I usually work on it would be exchanging one set of problems for another. Also, I often need access to special hardware which is located in a lab and would be impossible to take home. For some situations telecommuting probably could work fine, but for the general case it has its own problems.
Wed 24 Apr | Michel | Well, what are the pros/cons of working at home? I just wrote up a quick list. Cons: * personal bandwidth greater when face-to-face * millenia of societal evolution * dependence on uncontrollable communications infrastructure * security problems * possibly bad home environment * no informal practices like 'hallway testing' * certain resources are only available at office * decreased chance for spontaneous insprational smalltalk Pros: * costs (office, transport, perks) * discipline of specs and other recordable interaction * better communications infrastucture * less impedance mismatch - mgrs like to yak, programmers don't * supports heterogenous dev env * designwork may be easier w/out Big Brother watching * treats human capital as individuals * scales Solutions: * hybrid approach * personal offices * webcams so mgmt can still put fear of god into employees
Wed 24 Apr | Charles J Williams | I have an office at home with a cable modem connection to the net. I have worked from home. I have been successful and productive from home. I also have kids at home and about a million other 'interesting' things to do. I need 'face time' to really bounce ideas. Finding the magic balance between time spent working at home and at the office is the key. I have known people who cranked their schedules around at home (up at 4:00 work until the kids get up at 7) just to get the quite time. I'm pushing to get VPN access into my current company so that I will have the flexibility to deal with the chaos of three kids and a wife with her own company (and boatload of problems) to deal with. Sometimes there just isn't enough time or space.
Wed 24 Apr | Al | My office space is in the middle of a call center. When I have a hard problem to solve, I have to go in the parking lot to think it over!
Wed 24 Apr | Joel Spolsky | A call center?! That takes the cake for the worst programming office space I had ever heard of. I want one of those cool offices like Ryan Phillippe had in that dorky movie where he was fighting Bill Gates. A huge open space, with surfboards on the wall, and lots of cubicles floating around in space. Of course, as readers of this web site must know, the cubicles would have to be far enough apart from one another to keep it quiet. And they would have to have windows, and doors that closed, somehow, ...
Thu 25 Apr | Charles J Williams | Oh, I also worked in Japan for a 'traditional' Japanese company and then Apple. I went from: * A 60cmx90cm desk in a two column row facing a fellow inmate -- I mean employee, with the section lead at the end cap looking down the rows on his minions. ]XXXXXX * Stand up 9:00AM meeting spouting goals for the day. * Cigarette smog bank by 10:00AM To: * Quad cube clusters with cubes opening at the programmers back to a common table. * Hallway meetings * No smoke. You learn to do what you have to do in either environment, but I would never go back to a traditional Japanese company like that. Damnit though, the sushi was exquisite in Tsukiji...
Thu 25 Apr | Chris Rickwood | >>I want one of those cool offices like Ryan Phillippe had in that dorky movie where he was fighting Bill Gates. A huge open space, with surfboards on the wall, and lots of cubicles floating around in space. That sounds like what they have over at IDEO as I read in their book 'The Art of Innovation' (a quick interesting read). The first thing I did after reading the book was check their website for jobs.
Fri 26 Apr | Tony | I am a contractor and work from place to place, I'd have to say the biggest advantage for me for working from home is the consistancy of my environment as well as the peace and quiet. My study and P4/40G/1G RAM development PC as well as my network at home is far preferable to most development PC's offered at most companies, not to mention the consistant toolset that I can use from home, generally I find I am using better software tools than most organisations. Almost always, even at the better places, I am better setup at home to deliver software than I will be in the office. I have tried a high end laptop but that has not been a good solution and comes with a range of connectivity, security issues for most companies. I lke going to the office too, and think that a 40/60 type solution would work from me, basically if the work is difficult/challenging I'd want to be at home.
Fri 26 Apr | Nope | Charles, yeah japanese companies are really something, aren't they? to be honest though most japanese would probably be horrifed at the way 'western' companies are run. we and they have really different expectations and ways of thinking and behaving.
Test Plan Insanity | Mon 22 Apr | Benji Smith
Im working on writing a series of test cases for software that is supposed to ship this later this month. As Im writing the test cases, the sheer number of combinations of various options in the software is making it seem more and more impossible that the test cases will ever be complete. For example, on one of the tabs in our Preferences dialog, there is PREFERENCE 1, which has three different options A, B, and C. These are represented by checkboxes, any or all of which can be selected at a time (for a total of 8 combinations). On this same tab, there is another option, represented by 3 radio buttons. This gives a total of 24 different combinations of settings that can be input for ONE option. I have to write two test cases for each of these combinations (one case verifies a PASS and the other verifies a FAIL). So, thats 48 different test cases for one preference option. This particular product has at least two dozen such preference options, many of which interact with eachother. The number of configuration scenerios increases geometrically with the number of configurable settings added to the software. Mathmatically, Im seeing thousands of possible configurations. And, honestly, this is not that complex of an application. Im a strong believer in the importance of testing, but Im curious in how test plans have been implemented in the projects that you work on without setting the project late by another 6 weeks.
Mon 22 Apr | Joel Spolsky | This is not that unusual in software testing. You are going to have to make some intelligent, educated guesses about which preferences interact with which other preferences, and only test the ones that you think are likely to cause trouble with each other. But if you have a lot of preferences which are likely to interact with each other, that is as good argument as any as to why a feature should not be implemented simply because of testing costs. I have seen testing departments kill features that seemed simple to implement, powerful, and useful, simply because they were likely to interfere with so many other aspects of the software that they could not possibly be tested in finite time.
Mon 22 Apr | Mark Bessey | Yes, combinatorics will get you every time. I saw a similar situation come up recently where a 'simple' set of preferences yielded 14,688 different combinations that should be tested. When I was faced with this sort of problem in the past, I found it useful to make sure that everyone involved knew early on that not all the possible combinations could be tested. Here's a way to maximize the benefit of your (necessarily) incomplete testing. 1. Do most of your testing with a 'standard' set of preferences. 2. Test each option individually, to ensure that it appears to do what it's supposed to do. 3. Do a little bit of unfocused testing on 'sensible' sets of options - create use cases for 'novice' and 'expert' users, for instance. 4. Investigate test automation. If you can write a script that iterates through the combinations, that will help increase your test coverage. -Mark
Mon 22 Apr | Christopher Wells | Write the test-cases and test-automation early in the project... build self-test code into the application. Do 'white-box' testing (source code inspection) to see which options are inter-related (need to test all combinations) and which are mutually independent (should test each value but need not test all combinations thereof).
Mon 22 Apr | Daniel Shchyokin | couple of tips: 1. You NEED to work with product managment tell them that if they want to make a release by date X they will need to give you some some 'mainstream usage scenarios' which will help you prioritize the top 3 or so combinations of options which are considered most likely 1a. make sure you start testing any additional implmentations only after development has stopped (this is called a code freeze where any additional code can only be checked in to fix bugs, not add features, because it may introduce new bugs) so you need to make sure you have several weeks after product is feature complete to test and fix bugs only. 2. option dialogs, by definition need to be reflected in the api (HMM placebo options dialogs intersting idea), so if you can(have time,know the api well), test the rest of the option buttons using the api, although this is more difficult with api with graphical reflections (such as checking if a font appears correctly). 3. this can only be a stop-gap measure, because once you test these combinations, the developers WILL introduce new bugs through subsequent releases and you WILL need to automate this, if you post what your app is (web,desktop) I can give you more info on this.
Mon 22 Apr | Daniel Shchyokin | '...testing any additional implmentations' sorry meant combinations
Tue 23 Apr | Sean Conner | In the early 90s, 'Communications of the ACM' had an article about testing various Unix utilities. The authors had written software to feed random data to Unix programs (including interactive ones like vi). They found that about 35% (if I remember) of all programs crashed when fed arbitrary data and some even caused the kernel to panic. If a combination of data was found to crash a program, enough state (on the testing program side) was kept to repeat the same sequence of data to find out *why* the program being tested crashed. Now, how does this relate to you? Have you thought of just randomly setting configuration options and see what happens? While not as rigorous as testing all possible combinations, you may be able to test a significant portion of the possible states and by doing it randomly, you should get a decent spread of states as well.
Tue 23 Apr | Tony | Here is your test plan (I'm serious), 'Test all combinations of checkboxes and radio buttons to ensure functionality and output is in line with expectations' Some examples of expectations are: (dont list all 48) acknowledge that the tester has a brain.
Tue 23 Apr | Nope | that might well be the test plan, tony, but it is not a test spec. if you want to rely on not only your testers' brains but also their memory then that is up to you, but most of us need repeatability.
Tue 23 Apr | Steve Gilg | The test manager at our company actually DOESN'T want repeatability. He insists that test plans be kept vague (e.g., the 'expected behavior' states that the software 'works as expected.') He claims this provides better coverage, since different testers will test the product using different sets of inputs, etc. Of course, he ignores the fact that some of the testers have NO experience with systems like ours, and NO expertise in the field that our products serve, so that 'works as expected' is meaningless. Oh well, at least it ensures job security for developers, since it takes thousands of man-hours just investigating the nonsense bugs that these guys file, since they don't have a clue when the software is broken.
Tue 23 Apr | Christopher Wells | > that might well be the test plan, tony, but it is not a test spec. if you want to rely on not only your testers' brains but also their memory then that is up to you, but most of us need repeatability. I've written code to generate a test document where the code automatically iterates through combinations to print the various each-slightly-different test cases plus boilerplate... but more useful IMO is to reduce the number of tests (by decoupling features, e.g. when source inspection tells you that you can), to automate the tests (instead of writing code to make the test plan, write the code to run the tests), etc.
Tue 23 Apr | Robert Anderson | You either have a very serious design problem or the situation is not nearly as bad as you are making it out to be. If your large N number of option combinations each produce a specifically different behavior, then your program must be nearly impossible to learn, and is therefore a bad design. I think you will find that in fact you don't have a*b*c*d*... valid combinations of options, but a relatively sparse subset of the exhaustive matrix. Moreover, of the valid sets, _behavior_ will be independent of other options settings (again, otherwise your program is hella confusing for a user). So you may find that you can kill off a huge block of the option matrix with one test case - two valid states which are behavior changing, and all other valid combinations which should not change the behavior. Automating this can be tricky depending on your language, however. Something I try to keep in mind as I go along: if a program is hard to test, it is probably also hard to use. Bob
Tue 23 Apr | tangram | First, go get a copy of 'Testing Computer Software' by Cem Kaner. You can also look at his site, www.kaner.com. There was an article about testing undocumented software with not enough time, which might not solve your problem but sure sounds relevant. Get over the idea of testing every single combination, because you won't have enough time. 1) Prioritize. Separate the crucial items from the less important ones. Crucial means that this feature can screw up a lot of other features if it's broken, or it's associated with the most risk. Make sure critical bugs are tested. 2) Find equivalence classes. If you're testing a division function, testing division by 4 and 2 is redundant. Dividing by 2, 0, and the biggest value possible is more informative. 3) Make tests do double duty. If you're testing radio buttons, you're also testing that the dialog comes up. If you have a lot of platforms to cover, and there's a natural division among test cases which aren't dependent on platform, farm them out. Test the client under windows, the server on solaris, and the db with oracle for one set of tests, linux/nt/postgres for another, etc. 4) Finally, when you've got your plan of attack, show it to the manager you're accountable to. Make sure your prioritization matches, describe what can be done in the time allotted, and define risks ( like 'every new release means x hours of basic testing', or 'this section can't be tested until that one is stable'). Look around on the web for the 'Testers Network' . It's a repository of articles that came from ST Labs. The company got bought, but the articles are still out there somewhere. It has some articles describing test case design and coverage. Good luck.
Tue 23 Apr | Tony | Your testing is getting bigger than your project. This is of course, very silly. It is of no benefit to spend hours and portions of rainforest describing the minutae of checkbox/radio button permutations and combinations, as mentioned above, far better to use an automated testing tool to test the combinations and spend the time developing the test rather that writing about it. At the end of the day your testing must be as efficient as it can be, writing the test plans to cover all options is about as far from efficiency as you can get. Cross all t's and dot all i's is you want too, I have seen test plans like this and my experience was that the tests were either not done because they were too trivial and testers merely ticked the boxes anyway. In the cases where time was wasted testing the minutae sometimes the show-stoppers slipped through the cracks.
Thu 25 Apr | Bella | Take things into account such as release date, budget, staff, complexity, etc. Don't be dogmatic. Use judgement, and find a right balance. Yes, part of making software is subjectively using good judgement. (If there wasn't more to it, then it could be automated!)
Thu 25 Apr | Nope | christopher - out of interest, how did you test your code to generate a test document?
Thu 25 Apr | Christopher Wells | > christopher - out of interest, how did you test your code to generate a test document? Who tests the testers? I didn't test formally, but 3 ways: 1. I wrote/debugged the document generation code myself (a programmer moonlighting as a tech writer, I trusted myself to do that) 2. I inspected the resulting test document 3. Ultimately, when the test document is used to test the product software, then if ever the test document 'disagrees' with the product software then a human inspects to decide whether it's the product or the test document that's in error. Was it worth the extra complexity? I thought it was the only way that I could do it at all. The test plan was an afterthought on management's part, and they asked for a complete (multi-hundred page) set of idiot-proof test cases (to give to a small army of QA interns) to be written in a couple of months. Automating it was the only way I knew of to develope/maintain a document of that size in that timeframe (copy-and-paste, and global search-and-replace, only go so far ... they're insufficient where e.g. the structure of all test cases change). To help with step 2 (inspecting the document) I built variable information into the name and sequence number of each test case. For example if you have three variables each taking a value 0 through 9, then the corresponding test case titles have names beginning with 0.0.1, 0.0.1, 0.0.2, ... and looking at the auto-generated table of contents at the begining of the document, it's easy to see whether you have 1000 test cases titles which follow the above pattern. My one feeling of guilt about it is that I wrote the document generator using Script/VS which few people know, so when I left (I was a contractor, and management had no interest in how I did something as long as I did it) they would have had a difficult time maintaining it (but, management can't have everything). The next time I did anything at all similar (I was told to convert an SGML document to HTML, while the SGML document was still being written by someone else) I did that my writing a Rexx program, which the permanent people there would have been more familiar with.
Fri 26 Apr | Benji Smith | UPDATE: The test plan is finished now, with 200 specific test cases (some test cases require the same task to be performed multiple times with different settings). When I made my original post, I overreacted a bit regarding the number of configuration permutations. There are some settings that produce different functionality when combined with other settings, but the number of these types of settings is somewhat rare, and most options are tested on their own rather than in combination with other settings. Thanks for the input.
Religious Discussions | Mon 22 Apr | Mark W
... Furthermore, the Darwin OS is released under an Open Source license, which is just another name for Communism. They try to hide all of this under a facade of shiny, lickable buttons, but the truth has finally come out: Apple Computers promote Godless Darwinism and Communism. Yes, thats right, Apple is the Devil, and Open Source is Communism. I wonder if these people are pro-Microsoft, or is Bill Gates also an instrument of the Devil? http://members.truepath.com/objective/propaganda.html
Mon 22 Apr | Doug Withau | 'I go down to Speakers Corner I'm thunderstruck They got free speach, tourists, police in trucks Two men say there're Jesus one of them must be wrong.' -Dire Straits
Mon 22 Apr | James Wann | Don't forget the MS Tools vs. Delphi debates that pop up every few days.
Tue 23 Apr | MarkTAW | MS also thinks open source is communist. http://linux.com/article.pl?sid=02/04/22/2113214 'Bill Gates took another shot at the Open Source question last week, and came up with some interesting new spin. Essentially, if your country standardises on Linux, then you're not going to have any IT jobs in your country, says Bill.' I posted this because I know a number of people who read this forum are interested in this topic, and have strong feelings on it. Please don't let this turn into a flame war/religious debate. I'll stop /.ing now.
Fri 26 Apr | Albert D. Kallal | First, those threats rendered by MS is simply FUD An explanation of FUD can be found at: http://www.geocities.com/SiliconValley/Hills/9267/fuddef.html There are probably two important points to the open source movement that needs to be pointed out: #1) Open source is Unix. Unix is Linux, Sun Systems = Unix. In other words, any talk of success in the open source market generally means a blow to Sun Systems. While movement in the open source community can hurt Microsoft, it in general hurts Sun systems *much* more. Linux and sSun are direct competitors. Sun might endorse Linux, but that simply means that sun will be worth less $$, and their cost structure will have to change (ie: less pay, or smaller company). It is that simple. I was a SCO Unix meeting some years ago, and I asked the rep what are they going to do about Linux? His response was classic FUD. A business cannot rely on Linux do to legal reasons, as there is some code in Linux that opens them up to lawsuits. I recognized his response as classic FUD. Of course when IBM and Oracle announced whole handedness support of Linux, then the Unix Vendor SCO was finished. They were purchased by Red Hat....and if SCO was on the ball, it would have happened the other way around! I have to admit that I am fan of Linux, and yet the ONLY intelligent real competitor with a brain to MS is Sun systems, and they have the most to lose in open source. #2) If the OS becomes free (as is Linux), then what becomes valuable? Ask your self what would happen to the cost of a air plane ride if the jet, fuel, and the pilot were free? In fact, the cost of a air flight would actually go up! Why? Well while you are reading this, you would say, hey lets fly to England for some beer, and real English fish and chips. Of course all the women in the office want to jump on a free plane ride to Paris to purchase some perfume. Of course the folks down the hall want to jump on a free plane ride to watch the next F1 race in Spain this weekend. Why not.....it is Free to go! Thus, when you arrive at the air port, there would be a incredible mob scene as half the city is now at the air port for the free plane ride. Thus, while standing in line, and I have a important business meeting in France, I will offer the person in front of me some money to move up in line up. In fact, that simple low cost fight from England to France will now actually INCREASE in cost, due to people who actually NEED to fly from France to Engalhed start paying a airport user fee. Thus, while the flight is free, to control and manage the mob scene at the airport, the user’s fees and cost of what people are willing to pay to use the airport will eventually balance. In other words, if air planes be come free, then you better invest in air ports. I also believe that the cost of flights from places like England to France would actually go up in cost, since those people who need the flight will actually pay a higher user fee then people who just want to buy some perfume. Ok, so a O/S is now free, so IBM who in a sense now owns a bunch of consultants and machines will be the winner. This is why IBM has endorsed Linux from top to bottom. From the smallest pc to the largest Mainframe from IBM can now run Linux. They are air port owners, and have been very good at selling systems for years. They don’t sell a OS, nor do they really sell computers....they sell solutions. That is what IBM does well. When I look at the company down the street that is running Linux, they need the same amount of support that they guy down the street running a win2000 server does (we can aruge raw $$ here, but the costs are very close right now). In other words, the general jobs in the IT sector will NOT be hurt by open source. What will change somewhat, is who is going to get the support contract. Since Sun is also a systems integrator, and application seller, it really means that IBM and Sun are also now heading for a big clash. MS just has to sit back and watch these two folks beat each other up... Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Open Source - Microsoft's best friend? | Thu 18 Apr | Hugh Wells
Heres a radical suggestion. Open source afficionados like to believe it poses a business threat to Microsoft. I actually think open source furthers Microsofts interests, probably to the extent that their strategists welcome it. It does this by making it harder for new companies to earn healthy revenue to build and compete against Microsoft. After all, Microsoft has the business and government markets by the balls. Theyre not concerned that everyones going to ditch Windows XP/2000 and Office. What they are concerned about it is some new Bill Gates getting ready to come out of left field. (And this means having revenue and profits to fund rapid growth.) Secondly, if anyone does produce anything really innovative, the code will be out there available for inspection by Microsofts brains trust, who can then return to their cabins and produce a better version. I was prompted to write this by a couple of comments here where people opined that they might enjoy a future as highly paid open source customisation consultants. This was juxtaposed by another view expressed here, which I think is closer to reality, that programmers will increasingly become like writers, in workforce terms. That is, there will be lots of programmers accepting little jobs here and there, with an elite core attached to big corporations. I think thats the effect that open source will have - it will commoditise development. What does everyone else think?
Mon 22 Apr | Richard J. | Please don't speak for all us professional programmers who face the realities of bills. The simple fact is that I consume much more opensourced software than I create; and aside from my OS/browser I use little else to develop proprietary software. I have a financial interest in opensource, especially the GPL. And lawyers have been known to work for peanuts, to defend the poor. Same with doctors.
Mon 22 Apr | Hugh Wells | My apologies. I don't mean to misrepresent anyone. Yes, there are lawyers and medicos who do pro-bono work and they are fantastic people for doing it. However they do it as an explicit act of charity, of their choice, not because that's the standard someone's created for their profession.
Fri 26 Apr | Andres | Actually, lots of people work very hard for no money My mother, for example, likes to do cross-stich, she does these beautifull pieces, which take a lot of time, and most of the time she gives them away to friends, other people spend hours keeping their garden, making plane models or whatever their hobby is. They don't get paid for it, they never intended to get paid for it, and yet almost noone thinks it weird. Same with open source programming, big difference is, if my mother want to have two identical pieces, she has to do all the work twice, with software once you have a code, making a million copies is trivial, so why not give it away?
Fri 26 Apr | Benji Smith | Andres said: 'Same with open source programming, big difference is, if my mother want to have two identical pieces, she has to do all the work twice, with software once you have a code, making a million copies is trivial, so why not give it away?' This concept is full of holes. This is the idea that as the number of copies made approaches infinity, the cost to develop each of those copies approaches zero. This is absurd. No software has ever sold infinity copies. So, if a particular software product costs $35 million to develop, and 700,000 copies of that software are sold. The unit cost to develop the software is $50. Add in $2 or so for the CD media (on which the copy is delivered), plus $25 for the profit margin, and you get software that sells for $77. Or you get software that is given away for free at a loss-per-unit of $52. 700,000 copies of one product is a lot. Does this number approach infinity? I guess. It's closer to infinity than if only 10 copies were made. But it isn't _really_ infinity. Until someone actually distributes infinity copies of their software the per-unit costs of the products distributed will not be zero. This is why programmers need to take some basic economics classes, for crying out loud.
Fri 26 Apr | Andres | Benji, I am afraid you didn't get my point, in fact, the last sentece I wrote wasn't very clear so it isn't surprising. My point is that for people whose hobby is programming and do it in their free time 'just for fun', the cost of development, while high in theory, is actually not important. So if you take the hours spent developing a program 'for fun' and multiply by normal consultant rates, it can be 700.000$ or more, but the same happens if I multiply the hours I spend watching TV by those rates, I would reach the conclussion that I can't afford watching TV, going to the movies, or even talking to my family, unless I get paid for it. In fact, I think that if I wanted to get paid for my crappy open source development, once I had taken care of taxes and all that I would probably end up losing money, so I am better off giving it away. But I am not saying anything like 'information wants to be free' or 'all software should be free', I don't buy into that myself.
Recommendations for GUI testing tools? | Tue 16 Oct | Joel Spolsky
Does anybody have experience with GUI automated testing tools? Im going to take advantage of the CityDesk beta to develop an automated test suite (so we dont keep breaking 2 things for every 1 thing we fix!) If you have any recommendations, post them here. It needs to support Windows apps and be the sort of thing that doesnt involve a salesperson visiting your office with a $6000 projector for the demo (in other words, not too expensive.)
Fri 26 Apr | chris | Joel, What did you go with? How do you like it?
Companies that do marketing and distribution | Wed 24 Apr | Brett Rogers
I own a small company that has produced some software that VCs want a piece of. After looking at their initial numbers and the slice of the pie left after marketing and distribution, I might as well go back to consulting. The product is viable and I have sales to back it up (http://www.newsletterease.com). The software is a good start and Im working on several enhancements. My question: does anyone know of a good place to start looking for marketing/distribution partnerships? I appreciate any input that you have.
Wed 24 Apr | Joel Spolsky | Here are four companies that do this kind of thing: http://www.softwaremarketsolution.com http://www.mind-share.com http://www.mktstar.com http://www.relaunch.com But you are probably better off looking for a traditional software company with products that are complementary to yours. Software developers are often surprised at the cost of marketing and distribution; it would be reasonable to expect to spend about the same amount of money on marketing and distribution as you spend on research and development. When a product is new, you should expect to spend even more, perhaps three times R&D. Also, don't assume that the first term sheet you get from a VC is etched in stone. On the other hand, sometimes I'm surprised that any deals get made with VC's, given the fact that they're usually trying to find bargains, and entrepreneurs usually overvalue their own babies...
Wed 24 Apr | nPage | WARNING : http://www.softwaremarketsolution.com is infected by virus. Anybody visiting the site will also be affected. The virus will make your CD-ROM disappear. I was affected about 4 months ago. It happened when I went there to read about Joel's Opinion on rewriting software from scratch. Let me know, if they have cleaned up the site and you had gut to go there.
Thu 25 Apr | B | nPage seems to be right - not a hoax. Norton Antivirus alerted me it had blocked a script on the site.
Thu 25 Apr | MarkTAW | I think this is more a problem (in general) with IE than the other browsers. The internet & your computer *should* be seperate, but IE lets the internet run scripts that install things and change settings on your computer. Perhaps another downside to Microsoft's integration of the web browser and the OS. I viewed the page in Opera and still see my CD drive. You should be able to change your internet settings (if you can track them all down) to prevent this kind of activity. I heard a similar story last september about the FBI's website...
Thu 25 Apr | Joel Spolsky | It was the wrong link anyway. I didn't mean SoftwareMarketSolution, I meant http://www.softwarecompletions.com (Incidentally, the owner of SoftwareMarketSolution assured me that it's not a virus, just an innocent javaScript that triggers overenthusiastic virus detectors.)
IMHO | Tue 23 Apr | Whining Git
Can we agree to ban the acronym IMHO from this discussion group from now on? Or do people like being dishonest too much?
Tue 23 Apr | Marat Zborovskiy | I thought that H in IMHO stands for 'humble,' not 'honest.' I may be wrong.
Tue 23 Apr | MarkTAW | In My Humble Opinion i.e. 'This is my opinion, I may be wrong/feel free to disagree with me.'
Tue 23 Apr | Joe Blandy | IMHO, this is a complete waste of time.
Tue 23 Apr | Whining Git's Mom | Even meaning humble it always seems to be used by people who are about as far away from humble as it is possible to be without completely disappearing up their own asses....
Tue 23 Apr | dunno wair | FWIW, I agree.
Tue 23 Apr | Anonymous Coward | AFAIK, IMHO is not much of a problem
Tue 23 Apr | MarkTAW | ROTFLMAO
Tue 23 Apr | CharlesC | I agree. Can't we assume that everything you are saying is your opinion? Why would you enter a discussion to espouse some one else's opinion?
Tue 23 Apr | Benji Smith | I'm all for obliterating any of these acronyms. They smack of 1995 chat groups. In general, if people know what you're saying without you spelling out the words, they're probably pretty empty words in the first place.
Tue 23 Apr | Bella | FU
Tue 23 Apr | Matthew Christensen | Well, IMNAL, but I think Bella has a case.
Tue 23 Apr | spiny norman | Well, IANADBIPOOT, and I think Bella has a touch of the flu.
Wed 24 Apr | Whining Git | IANADBIPOOT?
Wed 24 Apr | Rob Moir | 'Even meaning humble it always seems to be used by people who are about as far away from humble as it is possible to be without completely disappearing up their own asses.... ' OTOH isn't it a useful device to show when you are stopping talking about facts and starting to talk about your opinion or interpretation of those facts.
Wed 24 Apr | MarkTAW | IANAD - I Am Not A Doctor BIPOOT - But I Play One On TV (?) 'I'm all for obliterating any of these acronyms. They smack of 1995 chat groups. In general, if people know what you're saying without you spelling out the words, they're probably pretty empty words in the first place. ' I disagree. They soften the conversation up. Text can come off as pretty harsh, especially if you miss a word somewhere. These things serve as roadposts saying 'hey, friendly conversation here, I'm not mocking you.' Besides, all words are just symbols. We've simply jammed some symbols together to create new symbols. If you take your argument one step further, all words should be abolished, after all, if you understand this string of characters without it being demonstrated for you, they must be pretty empty symbols. Unless I'm misreading you, that last sentances is really kind of awkward.
Wed 24 Apr | Benji Smith | Sorry. Didn't mean to come off as antagonistic. Really, I could hardly care less about the acronyms. They don't take any meaning away from someone's opinion. I just think they don't add much either. When someone adds 'YMMV' to the end of their post, I generally have already gathered that my mileage may vary from the tone of the post. Likewise with IMHO or OTOH, etc. etc. It just seems a little redundant to me. But It really isn't worth so much discussion. I hope I haven't made anyone upset.
Wed 24 Apr | Joe Blandy | 'But It really isn't worth so much discussion. I hope I haven't made anyone upset. ' Don't you mean BIRIWSMDIHIHMAU?
Wed 24 Apr | The World | Aaaaaarrrrgggghhhhh!
Thu 25 Apr | Paul Brinkley | For the life of me, I can't come up with a sentence whose words abbreviate to Aaaaaarrrrgggghhhhh...
Thu 25 Apr | MarkTAW | Aaaaaarrrrgggghhhhh Almost any and all aggrevation about really raucus reasonably realistic garbage gains gone garantuon here have helped host headaches. duh.
Enlightened companies | Tue 23 Apr | Jordan Tigani
On this site, Joel Spolsky has outlined many of the principles that he believes make a company successful. As a side effect, many of these ideas describe a company that is rewarding to work for as a developer. But is anybody paying attention? It seems that most of the people at this site are developers. Are there any companies with enlightened management out there? (other than Fog Creek, of course) To sumarize what I consider enlightened management (most of this gleaned from Spolsky and/or Peopleware) < note ... I dont even want to pretend that this list is all-inclusive, just a hint to give some idea of what I mean by enlightened > 1. Treat engineers as human beings, not as interchangeable cogs. 2. Give developers some degree of autonomy (ownership) of their project. 3. Believe that managements job is to remove obstacles, rather than dictate autocratic decisions. 4. Since they want to hire the best people, understand what it takes to attract and keep them (e.g. googles gourmet chef) 5. Give developers a work environment that allows them to succeed (large working area with minimal disruptions). 6. Put faith in people, not Methodologies. 7. Are committed to building a great company rather than just making a lot of money. 8. Not only give lip-service to these ideals, but actually put them into practice. One would think that these kind of things would be easy to find, but company after company that I look at violates the majority of these principles. It seems to me that Joels site would be a great place to keep track of the guys that are doing it right ...
Tue 23 Apr | MarkTAW | If this is a yes/no thing than for my company it's 'largely no' but a few pockets of 'sort of' that pop up now and then. It's very fun to watch, if you can distance yourself from it.
Tue 23 Apr | mackinac | This topic has been covered recently and we have not been successful in identifying many companies that meet most of these criteria. The big question is 'why not?'. Wouldn't such a company be able to build quality software and be successful? We need to find someone from the management side of software development to answer that. I used to work for a small software development company that was distinctly above average. For instance, everyone had a private office (unless working at a customer site). But they had problems. They built good software, were respected by customers and were profitable. But they had a real hard time getting customers and developers were often assigned to on-site contracts where they worked in the environment provided by the customer. Then someone with lots of venture capital came along and that was the end of that company and culture. I think this is a complex problem. The main factor is that a lot of decisions are made by management people who are trying to advance their own career and for whom such considerations are insignificant. We need to ask what can the developers do. Here are a couple of thoughts: - Exchange information. As you say, this is one place to discuss the problem. I think it would be a good idea to have some web sites to keep track of who the good guys are. I have even been thinking of doing this myself. When I get a round-to-it.... - When interviewing, make it clear to your prospective employer that these things are important. For instance, how many of you ask what kind of office space an employer provides? Make up a short list of questions and the next time a headhunter calls you up, ask about such things. I did that once, and got the expected answer: he didn't know and no one had ever asked him. - Concentrate on the essentials. A gourmet chef is a frill. I once worked at a place with an employee cafeteria and was assigned a shared office with a desk that vibrated from the HVAC system. Hiring a gourmet chef for the cafeteria would not have been all that helpful.
Tue 23 Apr | Jordan Tigani | Excuse if this has been brought up recently ... but it does seem that it would be a worthwhile endeavor to come up with a list of the 'good guys' ... companies that would get positive reinforcement by having lots of talented people want to work there. (and I certainly did not mean that a gourmet chef was a necessity to hiring good people ... just using that as an example) As to your question, 'why not?' I think that if you asked managers how they scored, they would rate themselves pretty high. Lots of people have read peopleware and 'the mythical man month' and claim to agree with just about everything they say, just don't seem to be able to put it into practice. Or worse, they don't realize that they are failing to put it into practice. I had one manager that would quote from 'the mythical man month' even while trying to hire developres in order to bring in a schedule that was only 2 months out. You mention venture capital ... I wonder if we're going to start seeing the decline of vc backed companies and more organically grown ones. I would wager that privately funded companies have a lot more stars in the 'good guy' column than VC backed ones. In this day and age of prostituting the future of a company for quarterly reports, I think it is hard for management of a big company to justify treating the employees to 'perks' like their own offices. The thing is though, Microsoft is the most successful software company on the planet. Whatever you may think about them, they know how to turn engineers into $. You would think that more people would emulate them.
Tue 23 Apr | tbone | Intel is one of the most succesful chip companies in the world and they have a reputation of treating engineers like prison inmates. I don't think the Microsoft/Google/Peopleware culture necessarily leads to good results. This culture has been implemented at certain AOL west coast campuses and at countless dot coms, all of which are in dire financial situations, or just gone. I personally find corporate cultures like google's eerie and cultlike. I would rather be treated like a professional and paid accordingly, rather than be treated like someone with nothing better to do than join the company foozball team. I've worked for a dot-com that emulated the google approach, and saw the dark side of it...spoiled kids from stanford whining that they can't work because there aren't enough materials to make the type of sandwich they like in the company fridge, overnight playstation contests, co-workers and managers giving you dirty looks if you actually have a life outside of work, etc. I think this culture only works if you are a kid straight out of college, and don't have a social life, anyway. My father is a physician and he does not worry about gourmet meals in the hospital cafeteria, or complain that he can't get an on-site massage...
Tue 23 Apr | Jeff Hultquist | This reminds me of a job interview I had once. The HR person was kept telling me about the foozball, and the ice cream socials, and the friday afternoon beer and snacks. I kept asking about the 401k plan and the pre-tax childcare acounts. The entire discussion followed this pattern of talking past each other. This should have been enough to convince me that I didn't really belong there. But I took the job anyway, and resigned about one year later.
Tue 23 Apr | Magnus | I think the Peopleware approach only works well when there's a culture that only accepts the best people working for them. But when the two work in synch, you have a powerful combination. After all, being a good employer is not at all expensive. Without the best people, nothing can save you.
Tue 23 Apr | mackinac | Jordan - I did not want to imply that your post was unwelcome, but that previous similar efforts were unsuccessful and you should expect to have difficulties finding the 'good guys'. I agree we should try. tbone - Your interpretation of Peopleware is quite different from mine. I view it as treating software engineers as professionals, e.g., providing the facilities they need, where methodologies are aids to the development process not replacements for thinking, etc... I don't know about Google. It sounds like they have some interesting technology to work on, but I wasn't too impressed about being able to bring the dog to the office.
Tue 23 Apr | tbone | The thing is, if everyone was making $500,000/yr, no one would care if their desk was too small, if there were gourmet lunches, or if they were being 'treated like a professional.' In fact, I doubt many people would even care if they were forced to use a certain methodology, rather than their brain.
Tue 23 Apr | mackinac | >>> 'The thing is, if everyone was making $500,000/yr, no one would care if...' <<< I think this is wrong in a couple of ways, but also rather instructive. Some people would care no matter how high their salary was. (Although some might put up with it for a year or two until they had saved up a bunch of money to start their own company). But one of the major factors contributing to the predominance of unenlightened companies is that most developers don't really care even with the salaries they make now. Thus, even when there is high demand for develpers as there was just a couple of years ago, there is really not much demand pressure for better working conditions. A few people complain, as we do on this list, everyone else just takes what they get.
Tue 23 Apr | Daniel Shchyokin | 'My father is a physician and he does not worry about gourmet meals in the hospital cafeteria, or complain that he can't get an on-site massage... ' I completely disagree with you tbone, because you are using a man of straw arguement: no one is advocating a dot-com 'that emulated the google approach, and saw the dark side of it...spoiled kids from stanford whining that they can't work because there aren't enough materials to make the type of sandwich they like in the company fridge, overnight playstation contests, co-workers and managers giving you dirty looks if you actually have a life outside of work, etc. I think this culture only works if you are a kid straight out of college, and don't have a social life, anyway. ' we are talking about something completely different: 1. Being treated like human beings doesn't mean a gourmet chef, what it means is: That you are allowed to have a life outside of work, and not being treated like idiot savants 2. Having a good working environment means, not allnight ps2 constests, but having a quite place to work, and the tools (hardware and software to do the job)- I don't think your dad has ever been asked to operate without anasthesia!!!!! 3. Having ones professional opnion respected by other parts of the company. i.e. not having marketing anounce, despite everything you say, that a product will be ready in two months, when it will be ready in six. (you Dad may actually be facing some of this from HMO's and I would bet everything I own that he is as much against this sort of stupidity as much as programmers do)
Tue 23 Apr | TK | The press produce 'Best places to work' lists. From Computer World http://www.computerworld.com/computerworld/records/images/pdf/23CR_bestplaces_charts.pdf The methodology: http://www.computerworld.com/cwi/story/0,1199,NAV47_STO61126,00.html From Fortune: http://www.fortune.com/lists/bestcompanies/index.html
Tue 23 Apr | tbone | I did set up a straw man...sorry. it seemed more fun that way. In response to the original question, I have not ever worked for a company that came anywhere near the ideals espoused in peopleware.
Tue 23 Apr | Jack of all(?), master of none | I read an article on SAS and like the way they work. More about respecting their employees, than how they build software. article : http://www.fastcompany.com/online/21/sanity.html company : http://www.sas.com/
Wed 24 Apr | Hugh Wells | Joel has questions for assessing prospective employees. Here's one for assessing prospective employers: 'How do you handle complex projects? ' If the manager interviewing you doesn't know what you mean, it suggests he or she doesn't have any useful experience, let alone procedures. If he or she answers with superificial responses, ditto.
Wed 24 Apr | X. J. Scott | tk showed some articles on best places to work: http://www.fortune.com/lists/bestcompanies/index.html I am skeptical of this first one since I see a couple of real dogs on that list. -- http://www.computerworld.com/cwi/story/0,1199,NAV47_STO61126,00.html There is an interesting series of profile articles here and various lists. Something I found quite interesting here is that these companies are generally established companies that are leaders in their fields and consistently and predictably profitable. At one point we are told 'To attract top IT talent, you have to be a top company to work for.' This seems self-evident. I see no mention in these articles of 80 hour weeks. I find that interesting since I occasionally hear (on this list and elsewhere) about these company strategies to have the engineers work excessive hours. I've wanted to say something about this but you know, it's all been said before. Someone working 80 hours has negative productivity because his screw-ups outweigh his productive activity. Also, there is such a thing as burn out and it will definitely happen and quite soon if someone is working 80 hours or more a week. Doesn't matter how much she loves her job or how competant she is. Anyway, glad to see that the profitable companies that tend to stay in business treat their employees well and am likewise not surprised to watch one company ofter another that runs its prize racehorses until they drop dead from exhaustion falling by the wayside.
Wed 24 Apr | Katie Lucas | 'A few people complain, as we do on this list, everyone else just takes what they get. ' No. *EVERYONE* complains. Management bitch about developers not delivering, top management bitch about IT being crap, and I bet the board has long bitches about how nothing in IT works despite huge money input. No, the only thing companies don't do is ask developers what they need to get work done. It's not on-site massages, it's simple stuff like: enough hard disk space to have the compiler AND the project on it. Computers that aren't five years old with flakey fans. Quiet offices without phones ringing all the time and people interrupting thinking. I could care less what sandwich flavours are in the fridge, I care more that yesterday I simply couldn't think for the racket in here. I couldn't have COUNTED lines of code, let alone written them. And yes, the customer would complain if they were aware they'd paid several hundred pounds to have me sit here and do nothing. They're just too disorganised to notice, but you bet they'd complain.
Wed 24 Apr | Hugh Wells | It *is* possible to change bad practices. You spend time working out the issues and reasons, go see the relevant parties, and then tell them why there needs to be a change. You also tell them that if they don't do this, they will have a complete load of crap on their hands. I've done this many times. My approach has resulted in departments changing their practices. For example, insisting that business managers provide detailed requirements specifications, and being prepared to reject foolish deadlines. I think the secret is somewhere in deciding you've got nothing to lose. You don't want to work on a dumb project, so you fix it.
Wed 24 Apr | mackinac | >>>'No. *EVERYONE* complains. '<<< OK, everyone complains. But mostly in the sense that people talk about the weather. I don't think most people complain with any sense that things could be better or that they might be able to improve things. We have a higher order complaining here. :-) Some of us believe that our situation could be improved, but we don't yet have a good handle on how to go about it. It is good to hear that Hugh has had some successes in improving his situation. I have had a success or two, but it has taken years to make a change that should have taken a couple of weeks.
.net again, for a change | Tue 23 Apr | Rob Moir
that 20 MB runtime is a real showstopper. Yes, this is an advantage to Delphi. Im starting to suspect that Microsoft doesnt care -- they are perfectly happy to have a development environment that is excellent for internal/corporate applications, where they dont compete, but borderline useless for shipping, commercial, shrinkwrap, where they do compete. Or maybe they dont care because everyone should be using XP or W2K at the very least according to MS, and it wont cost much to bundle the run time in as part of XP SP1 or W2K SP3.
Tue 23 Apr | Christopher Wells | The first thing I did after installing XP was to use 'Start/All Programs/Windows Update' to download 11.2 MB of updates, including 'critical' ones: painless, iff you have a broadband connection.
Tue 23 Apr | MarkTAW | That's funny. The first thing I did after installing Windows 98 a few months ago was to re-install Windows 95. Only twice ever did I have problems related tor running Win95. 1) some DHTML editor I wanted to evaluate would only run on Windows 98 and up 2) the latest MS Media Player, which used to run on Windows 95, but no longer does. That thing was resource hog anyway Otherwise, it's faster and I like the UI better. I also only upgraded to Windows 95 from Windows 3.1 in 1998.... Maybe I'll move to XP in 2010. Anyone with a website that gets a significant number of hits can do a browser sniff (perhaps your log files already capture this) to see who's using what OS. A site like Google or Amazon would have less a more homogenious population than, say, Joel on Software, which appeals to windows developers who are more likely to have, well, windows, and probably newer versions of Windows. On the other hand, if Joel wants to know whether or not people are using XP so he can move to .net, since much of his user base visiting his site (even if their clients aren't), perhaps the stats he gets this way can help him in his decision.
Tue 23 Apr | Frederik Slijkerman | Mark, if you're a developer, you'll find Windows 2000 a better platform than Windows 95. (Or Windows NT 4 if you insist :-) ).
Tue 23 Apr | MarkTAW | I use windows NT 4 @ work and I love it, though I hear we're going to be upgraded to 2000 in september. Most people complain that we're so behind the times, but for a corporation I think it makes sense to use an older OS that has more of the bugs ironed out. This is another consideration when thinking about moving to .net, though most corporations have their employees on a t1 and lock down NT so you can't install anything anyway. In other worse, those who could install a .net app would have no problem with a 20+mb install file. Everyone else will have tech support do it for them.
Tue 23 Apr | Adam Vandenberg | Delphi apps don't have a separate 20MB runtime, but they do have a chunk of VCL code baked into the .EXE file. Last time I checked, which was admittedly several years ago, a bare minimum Delphi app was 1.5 MB. If you download enough separate apps, I would think that libraries linked into the .EXE would more or less even out an up-front 20MB download.
Wed 24 Apr | Frederik Slijkerman | A 'Hello, World' Delphi application is about 300 K, which is roughly equal to the VCL footprint. If you include images and so on, the EXE is likely to grow. A 100,000+ line program I'm working on is about 2.5 MB now. I think Joel's point is that (some) people would have to download the 20 MB runtime just to install *your* program. Which could be a reason for them to look elsewhere.
Wed 24 Apr | Jan Derk | Adam Vandenberg wrote: 'Last time I checked, which was admittedly several years ago, a bare minimum Delphi app was 1.5 MB.' A basic app with a form, a button and a edit box saying Hello world is 385KB in Delphi 6. An small application is between 500KB and 1MB. The real win comes when going to full sized apps. No trolling or Joel trashing intended (CityDesk is way cool), but if CityDesk were programmed in Delphi with DBISAM database support, it would have been less than 3MB instead of 7.8MB and required zero (=0) dll/activeX's. Off course that could be even less using assembler/[any other low level language] but that would take the rapid out of RAD. Personally, I love Joel when he says that Delphi is finished [thanks for the cover!], because it will keep the competition on the less efficient development environments. So competitors please do use .NET. I love to see those 20MB+ downloads, which do not run on old computers, next to my 1.7MB one. Go .NET go!
Wed 24 Apr | Benji Smith | On the flip side of the coin, there's a certain stigma associated with having a 1.7 MB executable instead of a 20 MB install package. Lots of users (myself often included) will look at a 1.7 MB executable and say 'what features cant _that_ possibly have.' Many people perceive the larger install package as containing 20 MB of features. Of course, they could be wrong, and I'm not making any commentary supporting bulkier apps just for the sake of bigness. Since most apps are developed in VC++ of VB, the size of the install package is usually a pretty good indication of feature set. People aren't used to Delphi's smaller sizes. This is especially the case with power users, who actually know a little about an average application's download time.
Wed 24 Apr | battle for stalingrad | > there's a certain stigma associated with having a 1.7 MB > executable instead of a 20 MB install package. That's an interesting phenomenon. When I had a recent demo at an Apple convention, one of the Apple admins remarked in front of others, how many lines of code does your application have? I always felt there were too many lines of code, but raised an eyebrow and said I had no idea, leading them to laugh at the implication that there were so many I've lost count. Somehow, there's this whole macho idea which 'power users' have that bloat is impressive. I guess good Downloadable Bloat would be considered around 5 megs, and I should add in noise data to pump applications up to that sweet spot. BTW, I liked that admin & thought he was smart, so this is no reflection on him. ;-)
shameless money grubbing | Sat 20 Apr | arsdigitan
This is a semi-follow up post to this: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=6694&ixReplies=0 I want to make $150/hr or more, preferably as an independent software developer. Is anyone on this message board making this much money, and if so, what type of programming are you doing, and in what part of the world are you doing it? My current rate is $85/hr and I am reasonably competent in most forms of business-y software development. I have also written device drivers for windows 98, scores of massive e-commerce systems, and have passed 3 of the 5 oracle DBA tests. My problem is that I seem to be targeting totally cheapskate markets and dont have a good network of contacts who have inroads to clients with deep pockets. This might sound just openly crass, and it sort of is. However Im not saving up for a BMW. My goal is to kill myself for a couple years at a high rate, save up enough $$$ to buy a modest house or condo in a cheap university town, and then get a low key, low paying job and spend more time reading and riding my bicycle. I suppose I could just look on realrates.com and conclude that Id be making bank if I got my cisco certified internetworking expert certificate. but I thought Id see what the deal was with people on this board...
Mon 22 Apr | Hugh Wells | A good example of how much fees can differ depending just on how the provider sets his fees is in recovering data from hard disks for law enforcement purposes. I could image PC repair-type places doing this sort of thing for a few hundred dollars. However the big accounting firms have growing practices doing this at $275 per hour per person, with bills extending over several days. Obviously they provide more documentation than the PC repair shop, and more attention to detail, but not enough to explain the fee discrepancy on that basis alone.
Mon 22 Apr | MarkTAW | Also lowering the cost of your current lifestyle is important. If you make $150/hr and live like you make $150/hr you can still be broke at the end of a year. If you make $85/hr and live like you make $40/hr you'll have some money at the end of the year, in fact you could take a year off. I know increasing your income seems like the right answer, lowering your current cost of living is just as important. Probably moreso because that kind of discipline stays with you no matter what your income level. Another investing book, more 'realistic' than Rich Dad is 'The Only Guide to Investing You'll Ever Need' by Andrew Tobias. Millionaire Next Door would also back what I'm saying. Kiyosaki strikes me as being insubstantial, a modern day Robert G. Allen. I like some of his concepts, but he seems to be really milking the little he offers now, and charging more and more money for very little 'information.' One of the things I did like about Kiyosaki were his axioms - how rich you are is how long you could live without working.
Mon 22 Apr | Tony | If you were worth $150 per hour, you would know the answer to the question you ask. Like I do, but I'm keeping it to myself :-)
Mon 22 Apr | Bella | Hugh, Just b/c an large accounting can bill people for $275/hr, do you think a guy off the street can charge the same? Yea, technically, it's the same person, but it's not. They are selling an entire firm, an internal knowledge base, firmwide practices, reliability (If peson A dies, person B will step in the next day), etc ... 'The sum of the parts is greater than the whole' Yes, I believe those firms are giant ripoffs or certain commodity services, but I'm just conveying that you can't just bill yourself out at big 6 rates, just b/c you can do the same work. Doesn't work that way.
Mon 22 Apr | arsdigitan | Hello thanks again for the tips. Actually I'd like to reclarify what I'm trying to figure out. I have read all the 'simple living' books and indeed I am living about as simply as possible without moving into my parent's basement or squatting in a vacant building. I fully realize that if I can maintain my current salary and state of living I could end up buying a house in about 5 years. I could even charge probably $50/hr and do the same thing, depending on what part of town I want to live. However I would like to try to accellerate the process, and it seems like the most logical way to do this is to make more money. I don't think $150/hr actually is that exhorbitant, considering I have to pay for my own health insurance, taxes, legal fees, incorporation fees, computers, software, travel, training, etc. In fact charging less seems very risky. I know a number of people who do similar work to me who basically could not continue servicing their clients on the fees they were charging and went out of business. I am in a lucky position right now where one of my contracts loves me and has deep pockets and doesn't care about my rate. However my other contract does not love me and is perpetually trying to figure out a way to get rid of me for someone cheaper. I would like to replace this second contract with one that pays $150 an hour. I totally agree with Hugh Wells about the IT services thing. However I also agree with Bella in that it is hard for a single guy to pretend he is IBM global services. In fact in college I worked for an IT services firm and was being paid $12/hr as the company billed me out for $175-$300/hr depending on what I was doing. I was bumped up to $25/hr when I found that out and threatened to quit, so I stayed on. ($25/hr is a lot for a college student in the midwest). I have a couple friends who are network engineers and have high-level certifications from cisco. (CCIE, I think) These guys seem to have no problems whatsoever getting work at a $125-$175/hr rate, as independents. In fact when I am riding with them in their BMWs their cell phones are ringing off the hook with people asking them if they are available. That probably sounds like a total 'make money fast' spam, but it is true. I actually looked into getting into their line of work, but it seems like I would have to put in about 2 years of $50K/yr low-end work before I would even be considered for doing what they do. What I was looking for is if there is some form of pure programming work , in some industry, where I can say '$150/hr please' and the client will just agree, or even think they are getting a bargain. Sort of like the programming equivalent of the CCIE thing I mentioned above. thanks again and this seems to be a good discussion. i
Mon 22 Apr | Hugh Wells | Bella, yes I agree that it's not easy for a small firm to charge the same rates as an accounting firm. My point was that those guys charge that amount for the same or even less capable work; that companies will pay that amount; so the goal for the small firm is to capture the same confidence level, and it can be done. For example, I know of cases where a small firm was competing directly against an accounting firm. The accounting firm tried its trump card: 'If anything goes wrong, you can sue us; you won't be able to sue them.' In this case the client was a lot smarter than the accounting firm thought he was. They gave the job to the small firm and got a beautiful system, hassle free.
Mon 22 Apr | Joel Spolsky | The difference between $85/hour consultants and $150/hour consultants boils down to how independently they can work, how much management they provide, how much they are designing as opposed to merely implementing, and how much handholding they need. The big a IT firms charge $250 per hour because they will design and implement an entire project for you from beginning to end, and even though they will do a terrible job, there is always a conciliatory account manager available who is happy to be screamed at any time of day or night. Basically, there are three ways to get paid more than the usual rates you see on realrates.com: 1) manage the entire project rather than just providing warm bodies 2) have a brand name 3) be highly skilled in a fairly advanced technology for which there is incredible demand and very low supply. This explains all the HTML coders charging $200 in 1999.
Mon 22 Apr | Hugh Wells | Other factors are that the companies that pay the high rates are typically large consumer marketers such as car companies, soft drink firms and insurance companies, and large government departments. The people making buying decisions are not so much concerned about cost as about the impact on their career. That is, they can pay whatever they need to and the important thing is that, if anything does go wrong, no-one can point the finger at the buying decision. At the end of the day, we all, as consumers, pay for these decisions.
Mon 22 Apr | arsdigitan | Thanks for the replies. I have 1) and 3) that Joel mentions. My last 2 major projects were ecommerce systems I designed and 'architected'. I also managed the whole process from getting creditcard authorization set up, walking the client through getting a merchant account, interviewing and hiring maintenance people, etc. The implementation involved hairy integration details with an AS/400. I'm very skilled with Oracle, C, Java, Unix networking, and all that other good stuff needed to make a real-time ecommerce system function smoothly. I don't have a 'Brand Name' but I do have a good reputation. I just don't have enough friends who have friends with deep pockets. ;-) And...I think I probably should have been charging $150 from the beginning. I think I should probably just charge more money and see what happens. Too bad that 3 years ago I didn't start writing articles about how hyperlinks should always be blue, I could have been charging $35,000 a day right now. ;-) However ultimately what I guess what I really want to know is if there is a 'warm body' type skill right now where I could get $150/hr without having to be an entire 'IT solutions provider' all wrapped up into one person. I.e. , what's the 2002 equivalent of the 1999 $200/hr HTML coder? I think this type of work actually does exist, however I think it probably exists more in the DBA/Network Engineering/Sysadmin realm than it does in programming.
Tue 23 Apr | Bella | I don't believe there is any warm body skill that automatically commands insane rates. The boom is over. There is a labor glut. In fact, as I've said repeatedly, all the overhyped bleeding edge, silver bullet niches will, to turn the tide, not only no longer command crazy rates, but simply may be SHELVED. In a time of cost cutting, it back to basics as investment in IT shrinks. Vapor promise laden slick talk technologies are on hold until the 'sine wave of life' repeats another cycle. Learn COBOL. Firms make money with it. IMHO, knowing the latest and greatest isn't going to double your rate. B/c AS WE ALL KNOW, the 'latest and greatest' doesn't always push the envelope and necessarily allow you to do amazing things that other pogrammers CANT. For example, XML is my pet peeve. XML is a file with data. Yea, it's all neat and genericly parseable, but, it's a raw data flat file. ANYTHING you can do with an XML file, can be done with a flat ASCII pipe delimited file. We've had those for 50 years. Yea, easier and better and more elegant, but CEO's could CARE LESS. And now look, where is the XML hype now? Where are all the XML/XSL/XSLT specialists now? And when is 'XML going to replace Microsoft'? LOL, what an overhyped joke. Classic case of TECHNOLOGISTS trying to drive the BUSINESS. A disaster scenario that rarely works out. Companies overspent on IT and most were burned and did not achieve anywhere their expected ROI's. IMHO, they have learned (or will be forced to!) to want systems that help them make money. Period. IMHO, You will not command insane rates for any raw tech skill anymore. I can't name one IT sector that has a massive severe shortage. The mania is over, and as a result, IMHO, demand would slacken for all aspects of IT. You can't make a blanket statement anymore. Instead of focusing on a skill, focus on the business. Find a firm with money to burn. For example, find a client who desperately needs your services and is willing to pay a premium. IMHO, this is a better avenue, in the current economic regression to reality, than to find some hotshot shortcut skill. Your 'silver bullet skill' should be providing top notch services to a firm that needs it, and can afford it.
Tue 23 Apr | Christopher Wells | So far as I know some people still make a living in niches, for example in repairing corrupted Btrieve databases.
Tue 23 Apr | Bella | By niche, I meant unproven, bleeding edge 'promise' niches. I don't think firms are going to pay for overhyped promises anymore. I agree. CICS, COBOL, as400, JCL, Powerbuilder (heh heh) ....All these have potential to pay big since no one else wants to (or knows how to) work on them. It's always a risk tradeoff, b/c you can do that for a few years, and find yourself UNmarketable once that gig is up. (Of course, you can then conveniently blame age discrimination as a scapegoat for your outdated skills.)
Tue 23 Apr | MarkTAW | I work for a company with money to burn, and there's a massive push on technology to lower costs. Of course, they also seem to be making some multi-million dollar decisions that I don't think are necessary, and someone has to get paid to do that work.... With an organization this size there's going to be some pocket somewhere with money, and someone making the decision to spend that money.
Tue 23 Apr | Paul Sharples | Pick a hard problem to solve and build your reputation on that. Here are a few ideas: 1. Persuade IBM, Microsoft and the other 99+ members of the Web Services Consortium to invite Sun to join as a full board member. 2. Successfully benchmark an Oracle instance that achieves over 1 million TPC-C/min for less than (say) $50/tpm-c/min. 3. Succeed where Beluzzo failed: build demand for a subscription model for consumer software. 4. Defeat the GPL in court.
Tue 23 Apr | arsdigitan | Thanks again for the replies. In response to Paul Sharples, hopefully I don't have to succeed where Beluzzo failed or defeat the GPL in court just to increase my hourly rate by $65/hr. And if I did any of the things you suggest, I would hope that I could charge a lot more than $150/hr for my services! As stated in the original message, I'm just trying to save up to buy a house, not fundamentally disrupt the IT economy... I have a good idea of what I need to do, so I'm going to sign off of this forum. Thanks for the interesting discussion.
Tue 23 Apr | William C | In reply to >>>>>> I agree. CICS, COBOL, as400, JCL, Powerbuilder (heh heh) ....All these have potential to pay big since no one else wants to (or knows how to) work on them >>>>>> Ok. I have to ask....how is it that everyone thinks that as400 (because no one wants to do it) will pay big bucks? Let me give an example: I graduated in Dec. 1998. After graduating, I took the next 6 months off (ending that 6 months at disney world with girlfriend). Ok, so now it's June 1999 and I'm looking for a job. I apply at a couple of places (not many -- just a couple close to my house). It comes down to Pitney Bowes and American Skandia. I'm about to accept the Pitney Bowes offer, something nutty happens (won't get into it), offer gets taken away, I'm frustrated (confidence shattered), so I accept American Skandia doing AS400/Synon work (thinking...well...it might be a niche...I just wanted to work...didn't want to interview anymore). First off, the pay sucked. June 99 ... in CT (high cost of living) ... $37K/year + 10%bonus. Second, I did mostly Synon....but it was so darn easy! Booooring! They put us (me and 5 other programmers) in a class for 3 months to learn as400/synon (hard to find synon programmers). I was helping the other students...after about a week or two into it. Easy. Just plain Easy synon is (rpg is another story -- but that's not bad either -- i did some of that eventually too). Third, once I got onto the 'floor' (out of class)....90% of synon/as400/rpg people were consultants. Don't know if that means anything...but I'll put it out there. Oh...I know the reason why I mentioned it....most didn't live in CT. So you end up chasing jobs all over the country because there are so few jobs. Fourth, a lot of these consultants (a lot I knew) were taking Java classes...and were ready to not be synon/as400/rpg programmers anymore. One guy I sat next to who was really smart with it...was taking the certifications. No one wanted to stay with it permanently. Fifth, there was these 2 permanent people I worked with that had been with the company 'forever' (10 years)...they were rpg/synon/as400....they were the brains...they had a golden ticket punched....I can guarantee that they weren't making more than 100K/year (if that). In fact, one of them wanted to start doing Java too. Anyway, After 6 months...I transferred over to another dept to do Java, servlets, ejb's, *buzzwords* on the I*NET team. Let me tell you...when I was sniffing out other companies before moving over to the I*NET team....that as400/synon stuff meant nothing to anyone. My resume was a joke...6 months into my career. Getting away from that crap was the best thing I could do. So, I ask again...as400???
Tue 23 Apr | Bella | Recall the original problem specification: artdigata wanted money, not fun or recognition or marketability. He also clearly mentioned the intention of leaving IT. Goal was to pay off the house and potentially work part time, like his botanist brother in law friend Sounds like your old firm lost a lot of people for just the reason I mentioned. Why don't you call Skandia and ask them what hourly rate they'll pay for an as400 consultant? PS: your bitternedd exudes like a stench. Doenst it suck to be the underpaid $40k staffer in a place crawling with overpaid consultants? LOL ROTFLMAO
Wed 24 Apr | Paul Sharples | (Sigh). Yes... I know my limitations, and communication and diplomacy figure high on the list. It's a privilege to receive constructive criticism from an obvious luminary in the field. And now, for some news. I'm not on $40k since I'm in England, as a glance at my email domain would confirm. Over here, the job market is in tatters. My favourite search engine returns 10% of the number of openings as this time last year (Oracle developer, before you ask with your overt tact). Even Java openings are scarce -- it's almost as if the industry is holding its breath, waiting for .NET to either displace Java or shrivel trying. When the collective opinion shifts one way or the other, IT shops will be recruiting like mad to make up for the lost momentum and liquidity will return to salary-land. I don't feel too bad because I don't feel as if I'm missing out on some big goldrush. Oh, and I already have a house.
Wed 24 Apr | Bella | Paul, My note was obviously directed towards William C, not you. Please pay attention.
Wed 24 Apr | Paul Sharples | Ah. Mea Culpa. That's the problem with having the same initials as a timeless bit o' Latin. Um, I guess I take it all back then. :-)
Wed 24 Apr | William C | Bella said: >>>>>>> Doenst it suck to be the underpaid $40k staffer in a place crawling with overpaid consultants? >>>>>>> Ummm....yes. Wait no, HELL YES!! Part of the reason that I left the I*NET team (Skandia), as well (with money being a big factor too!) I remember there was this one consultant working on I*NET when I first got on the team. One day we were discussing salaries...and he asked one of the permanent workers...'if I was to work here full time...how much would I make?'. The permanent worker said, 'Probaly 80-90K'. The consultant said...'Knowing what I make now. There's no way I can accept something like that'. Yikes! And this guy was horrible. Example: a week before it was his last day (a friday) he was going over (in a meeting) stuff he had done, what was left to do, etc. to all the permanent employees. He mentioned that he was spending an awful lot of time on this javascript problem. The problem was this: you have an edit box and a combo box. As you type in the edit box.... the combo box should search the list and bring the relevant choices to the top. In other words... as I type 's' all the items in the list beginning with s go to the top. then I type 't' (now 'st')... all the items in the list beginning with st go to the top. Like in Microsoft Help. Ok...I'm overexplaining it....I know. Anywho...I'm in the meeting thinking to myself... 'that can't be hard...why is he taking so long?' So...on saturday night...while I'm watching a movie with my girlfriend...I pull up my laptop....and by the end of the movie I had it working (in IE and netscape). Monday morning... I send him the code. :) And they paid him big $$ for that kind of output? It's a joke. Bella said: >>>>>>>>>> artdigata wanted money, not fun or recognition or marketability. >>>>>>>>>> Yes. I understand the original problem. I thought that I made the point that the money sucked. In fact, I made the point twice (my low pay...and the low pay of two 'golden ticket' permanent employees). I think part of the reason was that Skandia was cheap. But I also think that the other part was that you aren't going to make $150/hr as an as400 programmer. In fact, I became very good friends with the consultant that came in for two months to teach us. I know she wasn't making $150/hr. This much I am certain (this is 1999 also -- more of an IT shortage). I'd be surprised if she made $100/hr. And she was good! So, I did address his money concern. I don't 'get' your response in this instance. Also, I think people are 'speculating' that as400 consulting would bring $150/hr. Well, I worked at a place that relied heavily on the as400. And I feel it's not true. So, as well as bringing up the money issues...I brought up all the issues. Being that I don't think you can make $150/hr....*maybe* you can still make more than other technologies. But if that *more* is only $10-$20/hr more than other technologies....is it worth it when: you are going all over the country chasing limited jobs (there has to be some expenses there). No one is happy with it and wants to get out (is your health and happiness worth $10-$20/hr more an hour?) I don't know. I thought I was adding some valuable insight. Maybe not. Who knows. I do know this: I've been gone from Skandia for a little more than a year.... a) I'm making almost double what I started at Skandia. b) I'm working with great technologies/platforms (Win CE, Palm, C++, GPS, GIS) c) I love my workplace (flex hours, work from home, self-managing). d) Every day is a happy day for me. Let's see...more money...better workplace...markatable...(very)happy....and it's not some obscure technology (although you might consider Palm,WinCE 'niche'). Life is good. :) PS. I'm interested in this thread because I'm doing the same exact thing this guy is doing. Saving tons of $ living at my parents (right now I'm thinking of paying off a condo/townhouse in cash -- houses in CT are ridiculously expensive). Even my fiancee lives with me at my parents ... she's a registered nurse ... we are saving a lot. Paid off all bills (I or my fiancee have NO debt). Drive my 89 Honda Civic still. Still use an old 19' tv when watching sportscenter or the Osbournes. I want to be that 'millionare next door'. Living frugal. Don't buy into the hype! You don't need the latest SUV! You don't need expensive tv's, stereo's! :)
Wed 24 Apr | Bella | William, I wasn't questioning your move. I applaud it. Most first jobs have menial tasks and low pay. Keep your contacts, and don't look back unless you have to! Yes, I know as400 probably doesn't make $150/hr, but I was making a point that the latest sexiest stuff isn't the ONLY way to go. In fact, I feel it's the last place to go these days. Every new technology will be flooded with newbies trying to get into IT. ie: Newbies aren't learning as400. And my other point was that a firms as400 system is proably more crucial to them than a .NET promise. In a time of caution, the money may not be where all the risk is. Just curious, where in CT are you, and where do you want to buy a place?
Wed 24 Apr | William C | Bella said: >>>>>>>>>>>> Just curious, where in CT are you, and where do you want to buy a place? >>>>>>>>>>>> Well, I live in Waterbury. My workplace is currently Norwalk. It's a 45 minute drive to Norwalk, but I drive in only 3 days a week (and I don't go in until noon)... so I don't mind the drive at all. So, imagine CT.... imagine Waterbury (intersection of 84/rt. 8)... I would obviously like to get something close to Norwalk (but no farther than Waterbury -- 45 minute drive). Now...think about what I just said... I am now priced out of every house. Anything outside of Waterbury (west, southwest, south) you are STARTING at around $250K. :) 3bed/2bath house (that's not a 'handyman's special ... or was built AFTER 1940)... in Waterbury: $150-$175K.... but with a 60 mil rate (not pretty). 3bed/2bath house in Norwalk: starting at $400K If you live in CT....you know what I'm talking about (Fairfield, Stratford, Trumbull, Shelton, etc.) all EXPENSIVE. Even the cities closer to Waterbury (Oxford, Seymour, Derby, Ansonia)... you are looking at $250K to start. That is a lot of money!! :) Yes. My fiancee and I could probably afford a $250K house. We could 'afford' it... but will we be saving any money? not likely. Do I want to be weighed down with such a high mortgage -- living paycheck to paycheck? not likely. :) CT real-estate is unbelievable! Thus, I think I might try and find a condo/townhouse in Wtby for $60K-$70K.... pay for it in cash... live there until I pop out two kiddes and they are about to start school... continue to save in the meanwhile.... in 5/7 years.... finally buy the house or move out of CT! :)
Learning to program - Good idea? | Sat 20 Apr | Ryan Ware
I have been wanting to program for sometime. Been reading various thing about what is going on in the industry. I am currently a DBA of Sql Server. I have decided to learn the C++.net. My reasons are as follows: 1. I know there are easier languages, but I want to learn one that has some low level details. 2. I know there is more to the world than Windows and would like a language that is available on other platforms. 3. I prefer to stay more towards the server side rather than client side, and I believe many components of server applications will continue to be written in C or C++ as opposed to some of the newer languages. 4. I thought someday I might be able to write some extended stored procedures or other things relating to my SQL Server work. What do you think? Is this as good a place as any to start? Should I start with another platform with more ANSI C++? Any thoughts are appreciated. Thanks Ryan
Mon 22 Apr | Ryan Ware | Thanks for some great reply's. I have some thinking to do. To answer Roland: '(3) Server-oriented You don't say why you believe that C++ will be used for server applications. Please elaborate.' I guess I didn't phrase that right, I meant to say I feel C or C++ will continue to be used when performance matters. I am more interested in maybe one day writing little components to a larger peice of software. I would prefer to let others do the UI and the bulk of the application in whatever language works best. The components I am envisioning would be similar to what Joe talks about in regard to his work in VB and C++. He writes C++ for peices that would be a bottleneck in VB. Maybe I should spend some time with C and Linux. I am just getting idea's. I guess I just need to jump in and play to see what I do like. I have taken some of my qualities as a DBA and extrapolated them to what language I would like to learn. I like speed and performance and like to hunt down and kill bottlenecks in SQL, whether it be through solving hardware or software bottlenecks - C or C++ seems like a language to do that sort of thing. I also want to understand the internal workings of DBMS's better. Since I assume most are written in C or C++ that also points me to this language. If I am off base or misinformed feel free to correct me. Ryan Ware
Mon 22 Apr | Vincent Marquez | I don't think anyone has pointed this out yet, but C++.net is almost an OxyMoron. Unless I'm mistaken, ALL .NET code is sandboxed, meaning you don't have access to the memory unless you specificly unbox a section of your code. All of the libraries you'll be using will be .NET libraries, and so the power and 'Low-levelness' of C++ will be negated because your coding it for .NET If your going to learn C++, learn real C++. If you want to do .NET programming, use C# or VB or javascript for that matter.
Mon 22 Apr | Roland Kaufmann | C/C++ is probably the best choice if you need intense performance, like in large-scale number crunching. Or a database engine for that matter. But most of the time you don't need that kind of performance. I have seen benchmarks where an MSIL program written in C# was within 10% of a comparable native program written i C++. Proponents of C always like to compare to VB, because VB is known to be notoriously slow despite having the same backend as an earlier version of Microsoft's C++ compiler. (That is because the frontend insert a lot of 'junk' in addition to your own code). There is a couple of languages that I think fill the ground in-between, like Delphi, C# and Java. Most optimizations come from choosing a better algorithm -- not cutting corners (although you can squeeze the last ounce by doing that when you've run out of good ideas) I may however have subconsciously been misinterpreting your intent as to *why* you want to learn programming. I assumed you wanted to diversify your job skills. If the intent is to broaden your horizon, you could indeed do something 'wacky' like making a Linux daemon or teach yourself Standard ML. Just don't expect to cash in on that -- yet. Profound skills do however have tendency to make use of themselves eventually. Please take this the right way: I am not against using C++ per se; I just don't think it is a good language to *start* programming in. People who do that tends to get frustrated by the amount of detail they will have to put their mind to before they are able to fully grasp existing code. Those who start out with a 'toy' language on the other hand get bored because they don't feel capable of writing 'real' programs. (I will probably induce a fatwa upon myself by saying that I include VB in this group...) So my advice was really that you should find a decent language and teach yourself good programming practice. Then you can start to dig deeper. Prepare for the future, but don't jump into it too fast. But if you want to study other people's code, C++ may be the way to go. Just be prepared to wade through some really ugly stuff.
Tue 23 Apr | Mike Swieton | Don't learn Java first. It's not a bad language, but I firmly believe that it is the WORST language to learn first. The reason is this: because it does not clearly differentiate between pointers and non-pointers in the code, say, like C and C++ do with * and &. Or perl with \. I believe that this makes it more difficult to learn to do complex things in, because you don't see how things interact. C and C++ /will/ frustrate you while learning, and if they don't, then you really should be programming an OS or something :). But they let you see what's going on. Java hides it and I've seen many many newbies confused with that. I haven't used many other languages, such as Python, so I won't comment on those. But don't try Java first. By all means, try it. But Don't do it first.
Wed 24 Apr | Roland Kaufmann | Contrary to most learning text that go to great lengths to explain the difference between 'primitive' types and classes, I have found it better to think of them as final classes with some syntactic sugar attached that allows you to call their methods with inline operators. Numbers etc. can be thought of as static members of this class (in a double sense), so they already exists without being explicitly initialized (by you). The trick is to realize that these classes are immutable, so what you get out of the operations are references to *other* objects (i.e. other numbers etc.) As an added bonus, the parameter passing mechanism actually starts to make sense. :-)
Please, hold my hand... | Fri 19 Apr | Bill Carlson
Okay, humor me for a few lines as I lay out the chronology (of which most of you are familiar): Discreet transistors >> Programmable microprocessors. The crowd: whats the point, we can do all this stuff more efficiently in silicon; besides, software people lack the technical skill to really understand whats going on under the hood Assembly >> C. The crowd: Are you kidding? Someone is going to accomplish the exact same thing and use way more memory and execute 100% slower? What a waste. These people even want to call bloated standard libraries instead of writing their own! C >> C++. The crowd: Theres nothing you can do in C++ that you cant do in C. C++ >> Java. The crowd: Javas way too slow and the libraries are awful. (note, the crowd was on to something here) C++ >> C#. The crowd: What, I cant even manage my own memory? Why would anyone want something so slow and bloated. It doesnt even have obscure feature X. Java/C# >> XYZ. Anyone have any idea what XYZ is? ========= Having seen most of these transistions, Ive resigned myself to them. Progress marches on and each layer, silicon, ASM, C, C++, managed code, still has its place and is still used for the problem domain its best suited for. My question is: Why do people think this is a bad thing? If a technology comes along and offers to hold my teams hand and remove obstacles (memory leaks, consistent library, etc.), why shouldnt we let it? In the end, most transistions succeed, and I predict managed code (C#/Java) will be one of them. If no one ever held our hand, we would all still be assembly developers.
Mon 22 Apr | Paul Brinkley | 'Java has reached an evolutionary dead end because it's no good for packaged software.' What makes you think this heralds the end of Java, and not the end of packaged software?
Mon 22 Apr | Hugh Wells | Interesting point and a different subject. I suppose my answer would be that the market has shown us that packaged software works best; that web services are one of those nice MBA ideas that doesn't work well. It probably all gets back to speed of response, the ultimately crucial usability factor. That plus reliability. This situation could be different in seven years time, but not before then. By that time, in my view, .NET will be the platform for web services, and Java will have declined into a niche player.
Tue 23 Apr | battle for stalingrad | I am generating Flash files that correspond to GUIs. Actually, I am working on tools that make this reasonably productive. Though I've just joined this project, I can see firsthand how very responsive the GUI is. I don't know where the brick wall is yet. It can be extended with scripting languages; perhaps it works badly in uncommon cases. Whatever the case is, it is possible to have very responsive web apps; it's just that there is too much dominance over the desktop by Microsoft, that things run in a kludgey web browser and are therefore unreliable. There are aspects I don't quite understand. I'm sure there is more to the problem than just Microsoft. Seven years sounds like a very sensible number, because of all the politics, security and support tools which need to be written. And there needs to be a killer app.
Wed 24 Apr | Charles J Williams | Adapt and overcome... I believe that's a Navy Seals saying. There will always be a programming language or methodology 'du Jour.' That's one of the reasons I'm drawn to this business. Don't get me wrong though, I believe that change for the sake of change alone is bad. It's simply our job as engineers and developers to keep abreast of new technologies and techniques and use our best judgement to winnow the wheat from the chaff and apply the best tools to task(s) at hand. I also like to remember Bjarne Stroustrup's line about '... once common sense is missing there is no limit to the damage that can unwittingly be done.' I remember this as I write code.
Best service for Domain name registration? | Thu 18 Apr | Steve Johnson
What is the best and cheap service for registering a domain name? In past, I used NameZero plus account for which they charged me about $15 for an year, but I would say that it is not good and is not a real registration. They just forward my visitor to the actual domain. And its not so simple to transfer the domain service fron Namezero to Network Solutions as Network Solution says that I am already their registration, via NameZero and for all changes I need to contact NameZero. So I am kind of locked in with Namezero.
Wed 24 Apr | B here | Yeah, http://Gandi.net (EU12/year, that's about US$10.5) is the best for simplicity and price (includes forwarding, email forwarding). Register.com is known for it's interface. Who can beat VeriSign's Mail-From interface? I love to see my clients being confused, and I'm helping them. And then still don't understand what I did...
C# vs. VB.NET for .NET development | Tue 16 Apr | Darren
Hi all, Were recently starting an internal project for a client that will likely be .NET based. The primary focus is on data collection and reporting. The reports contain a fair amount of numeric calculations. Any recommendations on whether to use C# or VB.NET? This is our first real .NET project, and the developers on the project are very experienced with VB6, and they all have worked with Java (some are very experienced with Java). From a developer perspective, I think the learning curve for either C# or VB.NET will be around the same. Here are our thoughts about C# vs. VB.NET: - C# and VB.NET should have identical performance (theyre both compiled to IL) - VB and C# have the same language features (ie VB now has proper error handling and full OO functionality) - C# does allow pointer manipulation, but we will be avoiding this Other than syntax differences, it seems to be a dead heat. The language purists prefer C# (curly braces are more hard-core), but it appears that Visual Studio.NET has better VB support. What is everyone else using? Why are you using it? Our biggest concern is that we pick a language that is orphaned by Microsoft, both in terms of future support and documentation.
Wed 24 Apr | Steve | If I had to do .NET development, I would definitely choose C# over VB.NET. In my opinion, the clarity of code is the major reason why I feel this way. In VB.NET, there were too many add-ins that made the language a bit too big and also made it really messy. For example, take a look at the block of code: Public Sub Whatever() Try For i = 0 to 10 With SomeObject Do Until myBool = True 'Add some code here Loop End With next Catch xxxxx as Exception 'Dont know if that's right End Try End Sub That's probably not the best 'messy' example, but I just think it's too cluttered and not as straightforward as C#. Take the C# example: public void Whatever() { try { for (i = 0; i < 10; i++) { while(myBool == true) { //some code here. } } } catch(Exception e) { } } See, much easier to read and understand. A personal preference, I guess? Steve
programming without design! | Tue 23 Apr | jag
hi all, a while back there was a post that had links to programming without lots of upfront design or being slave to particular approaches. if somebody could post those links again that would be helpful. the post had this link but others too: http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.0/0004.html thanks
Tue 23 Apr | hieranonymous | I believe you are looking for this: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=1414&ixReplies=9
Tue 23 Apr | jag | there was another link. the page looked yellow i guess. cant remember if this was the thread from which i went to it. it was a beautiful article. please help! thanks for these links :)
Tue 23 Apr | Karl | Was it http://www.jnd.org/dn.mss/Design_as_Practiced.html?
Tue 23 Apr | MarkTAW | Is it just me or is that yellow / left side of the screen thing hard to concentrate on? I know Don Norman works with Jakob Nielsen, but does he have to design his site like him too?
Tue 23 Apr | jag | nope not this. it was written by a 'mere' programmer, very easy to follow and you came away with a sense of power after reading it. damn! i cant remember what he said too! hate myself for not bookmarking it! anybody else. thanks for these links though. isnt this a nice way to get more and more info on what u r looking for? :)
Tue 23 Apr | MarkTAW | sleightly off topic but isys makes a search engine that indexes your cache. Maybe you can turn it up in there. It's called 'Isys Hindsite.' I know it's saved my ass a few times. Or maybe just searching your Temporary Internet Files folder or browsing your history...
Balancing Work and School | Mon 22 Apr | BWAS
Ive been working as a computer programmer for a few years; for a number of reasons I chose to pursue a career instead of an education. Recently, Ive been questioning my decision. A degree is something that I value very highly, and it is my goal to eventually attain one. At the current time, I have a fairly good, fairly stable job, and I am thinking it would be possible to leverage this, especially financially. Some options Ive considered would be: - night or weekend classes - shifting job to part-time - quitting work altogether and attending school I am quite young, without substantial amounts of savings.
Mon 22 Apr | BWAS | Whoops, forgot to ask my question. Has anybody had success doing this? Does anybody have any advice? Thanks a lot.
Mon 22 Apr | JD | Not sure if I can offer any advice, but I had a similar experience. I had enough of school after three years pursuing a BS in CS. I had a summer internship, and they were happy to have me, so I just kept on working there after the summer ended. I did that full time for about a year. The next year I started taking classes part time at a local University to finish my degree. That took me another two years. Overall I'm glad I did it this way. It turned out to be a good career move to have the work experience, and I actually enjoyed my classes without the pressure of a full class schedule. The only downside was that classes require constant attention. Teachers aren't generally sympathetic if you have a release in 15 days and you don't have time to do your homework.
Mon 22 Apr | James Wann | I worked quite a few jobs contracting my way though school. It's important to let management know about times when you won't be able to commit long hours (ie. middle of a release) during midterms and school project deadlines. The best job to have would be some kind of maintenance engineering, where you're more of a bug fixer than someone on a deadline to get x number of features out the door. I don't recommend it for anyone, especially if you consider yourself a poor multitasker. But if you do decide to go this path, make sure that you accept the fact that you may need to either drop a class or accept reduced responsibilities at work in order to maintain your sanity. Having pressure on multiple fronts is a certain formula for burnout. -james
Mon 22 Apr | Jeb | I am currently in graduate school at night and work as a contract programmer by day. If you decide to give up a life for a couple years you shouldn't have a problem.
Tue 23 Apr | Szasz Attila | I work as a full time programmer, and attend weekend classes, at a CS uni. The only things I find hard is passing those classes wich have little or nothing to do with computers. The rest is fairly easy, after 10 years of dealing with computers (hardware, c. graphics & programming), I can pass any exam with minimal efort.
Tue 23 Apr | Ged Byrne | BWAS, Here in the UK we have the Open University. I'm studying with them for an MSc at the moment, and they are very good at this type of education. They have been doing it since the 70s and now have it down to a fine art. They also serve international students, take a look: http://www3.open.ac.uk/courses/essential/world.htm Which country are you in?
Tue 23 Apr | MatteyBoy | I suggest you work full-time and get tuition reimbursement. This way, you get someone else to pay for your school. Young is the time to do this; I am currently pursuing a MS CIS while my wife pregnant with our first child. I am going to take a semester off when the baby is born ... I HOPE to maybe go back and finish ... In other words, this is easier to do when you are younger and have fewer comittments.
Tue 23 Apr | JP | Ged, I'm about to start my MSc with OU. Which modules have you done/recommend?
Tue 23 Apr | Bella | Forget the degree. Focus on skills.
Tue 23 Apr | tbone | you might want to get your degree in something other than computer science. a good programmer with a degree in biology/chemistry/physics/engineering/ has more doors open than a programmer who only has a BA/BS in computer science. The reality is, that it _IS_ possible to work forever as a programmer with no degree at all. However it is not possible to be a doctor without going to medical school. It is actually pretty hard to even do programming tasks related to chemistry/biology/financials/physics/anything unless you have at least taken a few courses in those fields. I would recommend getting a degree...but not in CS.
What turns you on? | Mon 22 Apr | Tony
Today I found myself writing some code for reference table data maintenance using VB6, some people here will be familiar with the technique I used (the language itself is not the relevant part of this discussion) populate a collection, use the collection to populate a grid, let the user select a row and pass the object selected to a maintenance form from where they can alter the properties of the object which has its own save and delete methods, hum drum stuff. etc, etc. As I sat there doing it, mindlessly but logically building classes and collections and setting properties etc, I realised - I hate this. Yes hate. I have performed this task using VB6, Powerbuilder, Gupta and Delphi. It seems that every application in the world required this sort of reference/mapping table maintenance in one form or another. I thought to myself, this is not challenging, this is hum drum droll boring work for which I am surely overpaid. The funny thing was that the application I am working on was really hard work to design, especially since the users kept shifting the goal posts, which is normal, but I started thinking, well the bit that is supposed to be fun, the design/architecture was stressful due to ambiguous goals and short timelines and the mechanics of the build are actually quite dull as well, sure at the end when Im getting the pats on the back, and the users bright happy faces are beaming joyfully at me Ill feel Ok for a few minutes but Im trying to analyse just what parts of my job I actually do like. Does anybody here get real job satisfaction or is software just what you do? If you get real satisfaction, can you quantify what turns you on about it?
Mon 22 Apr | anon | ' have performed this task using VB6, Powerbuilder, Gupta and Delphi. It seems that every application in the world required this sort of reference/mapping table maintenance in one form or another. I thought to myself, this is not challenging, this is hum drum droll boring work ' So, you haven't automated this task yet? . . . . . . Yep, you're overpaid!
Mon 22 Apr | Simon Lucy | Fixing bugs, whether mine or someone elses. Sculpting some design into a functional form, surprising users pleasantly. Providing a little more pleasure in the way people work. Doing new stuff. Jumping off a cliff and fabricating my own parachute as I go and hopefully seeming effortless. Actually seeming effortless is pretty rare.
Mon 22 Apr | Ian Stallings | I can relate to your feelings. I sometimes feel like my job is hum drum and boring. Using the same old technologies writing the same type of apps. But I love creating software using the newer technology/methods to do things better. Coming up with an idea that I think might be great and I can sit down and pound out a design or prototype that will tell me more. Creating my own tool box and my own tools. Hacking a bit of code because I like it a little differently or I think I can improve it. I hit the zone sometimes but I have yet to stay up for days straight coding. I here people speak of it like it's necessar to become a true code 'wizard', but it usually seems like they have something to prove. I could be wrong. I think what turns me on most is the fact that I can get paid to create something out of nothing. It's not hard work physically so I wont break my back like so many in my family have working blue collar jobs. And hopefully one day after starting my own business I can walk away with a little nest egg and find something else I love.
Mon 22 Apr | Leonardo Herrera | When I'm on a new job, I have the same problem. Since I can't use my old libraries (because I don't own them) I need to rewrite a lot of automation aids. Yeah, I hate it too. Fortunately, now I'm having real fun, because I'm working using old friends (unix, C, gcc) instead of developing brain-dead e-business web apps. But now I have to develop Yet Another Report Application and yes, I hate it again. I'll try ASP.NET for this. Hopefully, It'll save me from doing such horrendous things like 'for each... response.write' thing (yup, I hate the '<%=' things even more.)
Mon 22 Apr | Mike Gunderloy | Figuring out obscure bits of nifty code makes me happy. Explaining them makes me happier. This is why I am a writer. Just this morning I spent three hours working with Reflection.Emit in .NET. I will probably never actually write saleable code that uses this technique, but it was still very cool to have the program create a new class, write out the raw opcodes for a method in the class, and then invoke the new code.
Mon 22 Apr | Gerald Nunn | I have always enjoyed writing development tools. Being able to write something that you actually use yourself every day instead of creating something for other people makes coding a lot more fun for me. The instant feedback of adding a cool feature one evening and being able to use that feature the next day in your job is very wicked. I suspect this is why the successful open source projects tend to be things that developers themselves use. So far I have written an add-in for Delphi (http://www.gexperts.org) and a Java IDE (http://www.gexperts.com). Both were a lot of fun to do.
Mon 22 Apr | Michel | My work itself is not so satisfying. Just Java work, which is a language that eventually feels like you're repeating yourself constantly. But now that I've changed my schedule, I have a lot more time to learn things. Yesterday I just finished learning basic lambda calculus, which makes reading SICP so much easier. (I've been only programming for 3 years, so I'm still learning.) Eventually, I hope to write little, dense languages that compile to Java sourcecode, for whatever problemspaces I need to solve. So I can turn myself on very well. ;-) It's just that I had to maneuver to a position where I had time to do this. (And I'm far more productive to boot.)
Tue 23 Apr | Chris Hanson | Your description sounds like the kind of application DirectToWeb (part of WebObjects) can generate automatically. Essentially, D2W is a system that automatically generates web apps by probing your ER model file and putting data in templates according to a flexible and arbitrarily extensible rule system. You can create your own templates to use, override things at all sorts of different levels, mix and match regular WebObjects code, and so on. (And DirectToJavaClient can generate a dynamic Java application in pretty much the same way.) I have some more detailed info on DirectToWeb on my LiveJournal at: http://www.livejournal.com/talkpost.bml?journal=chanson&itemid=10410 I've just started playing with D2W recently. As I learn more I hope I'll have the time to post it. -- Chris
Tue 23 Apr | Sunish | Just curious what's the equivalent of opentools api of delphi in VC/VB ? If at all there's something similar. BTW Gerald, thanks a ton for your wonderful GExperts, its really an indispensable tool for any Delphi developer
How-To:business side of software consulting | Sun 21 Apr | cheapo
Im considering leaving my full time job and starting a software consulting business with a friend of mine. We have a product that is currently generating some meagre revenues, and Id like to supplement that with software consulting with the contacts that Ive built up over the years. Can anyone recommend any websites, articles or books that talk about the business, legal and tax how-to side of software consulting? Thanks!
Tue 23 Apr | Michael Levine | cheapo: You might want to take a look at: http://www.realrates.com/ and then more specifically at: http://www.realrates.com/news/consfirm.htm Hope they are of some help to you. Good luck! Michael
Stay or go? | Thu 18 Apr | Anon (considering the topic)
I find myself facing a difficult judgement call at the moment in work. Im in a situation where I was hired specifically to do a large project. This project will be done in Java / JSP even though Im primarily an ASP / VB kinda guy because management doesnt want to be dependant on the Microsoft platform. The project has been delayed time and again (Im 14 months there now) and at this stage I dont know if I have the energy or the inclination to successfully complete it when it does finally begin. Ive kept myself busy in the meantime by taking on some low-brow web work for the company which I postively despise facing each morning. One of Joels sabbaticals sounds great right now to my weary mind and outlook. To factor the get-up-and-go argument, the job market for the Internet industry is not that great at the moment, causing me to second guess the wisdom of quitting. I really feel I need a break before heading into a new project/job but is that more an emotional response than a logical one? Is it better to stick it out? All of this has tied in with finishing college and a slew of projects to complete. Needless to say, the thought of learning JSP / Java and all that spec writing for the oncoming project on top of everything else fills me with dread! I feel it would be worse to being the project and quit, than to quit before beginning. Naturally in this confused state, Im beginning to wonder if Im up to the task in the first place. While all this sounds like an agony aunt letter (!), Id really appreciate eveyones advice on this. Have you been in a similar position? What did you do? Is it better to get the experience than quit to refresh?
Mon 22 Apr | Dave Rothgery | My last job (before my present one) was as a contractor at a .com, fixing bugs in a system that they were in the process of rewriting from scratch, in a new programming language (moving from ASP to JSP/Java), on a new OS (moving to Solaris from NT), and with a new database system (moving to Oracle from SQL Server). As a very junior contractor, I was not able to present sufficient visions of doom to management about this plan, so when my group had largely eliminated the large bug backlog, and when I had no interest in rewriting a system from scratch with unfamiliar tools, my contract wasn't renewed. Despite being out of work for four months after that, it actually worked out pretty well for me; my current job pays better (by a large enough margin that moving to California was easily worth it), is more stable, and is more fun. And it doesn't snow in San Diego.
Tue 23 Apr | David Heinemeier Hansson | >>>It's fine and actually fairly normal to have your weekdays filled with tedium and boredom as long as the weekends you go have fun.<<< A lot of people can't live like that. I can't live like that. Spending in the area of eight hours a day in a state of boredom can easily ruin entire weeks or months for me. When I think back on some the months I spend in the 'boredom zone', I have a hard time remembering much else than the boredom. It's an energy sapper that'll tap all the creative juices out of you. At least that's how the boredom zone worked on me. My advice? Do something today. Make social commitments to that accord by telling friends and family you're in the market for something new. This will in turn increase your momento in getting to the promised lands of Somewhere Better.
Best CVS Implementation | Wed 17 Apr | Walter Rumsby
Hi, Im working on a project where we are considering using CVS instead of Visual Source Safe. The teams responsibilities are shared between developing a fairly basic Java Servlet application and developing .xsl files. Our requirements are that the CVS tool would hopefully: 1. Integrate with a Java IDE - WebSphere Studio or IDEA IntelliJ. 2. Be fairly easy to use, so that the transition from Source Safe is gentle. All users will be using WinNT, Win2k or WinXP. CVSNT will act as the server. From what I can tell there seem to be many implementations around the place, all of which are in various stages of development, etc and was wondering if anyone had some clear idea of the kind of client we should use so as I can avoid wandering down too many dark alleys. Thanks in advance.
Tue 23 Apr | Dave Bixler | I personally like Netbeans' integration with CVS. Setting it up is snap and the integration is simple and straightforward. I'm a believer in KISS and this fits the bill. I could rant on about all the great features of Netbeans but that's beyond the scope of this thread :), but I'll just say that I've looked around many times for a better IDE then Netbeans and have always come up empty handed. It's a bit slow, but on high end hardware it's plenty fast enough.
Do good programmers prefer projects to families? | Tue 16 Apr | Name Withheld by request
When I read Philip Greenspuns article, from which the following excerpt is taken, it reminded me of the heated discussions here about the folly of long hours: If you see one of your best people walking out the door at 6:00 pm, try to think why you havent challenged that person with an interesting project. If you see one of your average programmers walking out the door at 6:00 pm, recognize that this person is not developing into a good programmer. An average programmers productivity will never be significant in a group of good programmers. If you care about profits, you must either come up with a new training program for the person or figure out the best way to terminate his or her employment with your organization. The article, called Managing Software Engineers, can be found at: http://www.arsdigita.com/asj/managing-software-engineers/ Do any of you agree with Greenspuns apparent claim that good programmers must prefer being at work at 6 p.m. to being home with their families? Couldnt someone be a damn good programmer, but still regard programming as a job that ends at 5, at which time they happily head home?
Tue 23 Apr | Jordan Tigani | I think that Microsoft has it exactly right on this point. They completely separate the concept of 'hours worked' from performance. When I was there, my manager didn't care or even know how many hours I worked. What mattered was how much you get done. I worked some pretty retarded hours, but admittedly, I often spent a lot of the day reading e-mail and browsing the web. There were other guys who worked strict 9-5 and were extremely high performers (and rewarded for it) -- they just worked smarter. Taking into account how much people get done rather than how long they work allows everybody to work at their own pace, and in the end, I believe it produces the best results for the company.
Back to Basics | Wed 12 Dec | Joel Spolsky
Tue 23 Apr | Stephen Muires | I always thought that 'bit' was the past tense of 'byte', as in: 'Today I byte into the cake, but yesterday I bit into it.' And that this was why you always had to use bytes rather than bits...
yet another .NET what's the big deal question | Sat 20 Apr | arsdigitan
Joel says: >>Ive been having a lot of fun developing The Fog Creek Control Panel with ASP.Net. Its a web page that allows us to track critical business data in real time. I can see things like how many people are registering the CityDesk starter edition, how many affiliate applications need to be processed, how many bug reports have arrived from customers (2 so far today), and so on. This morning I added two features: one gets detailed order information for any purchase in our database, and the other lists open purchase orders people have placed with us. Elapsed time to implement both features: 20 minutes. ------ Ive had to do tasks like these every day since mid 1998. Writing functions which aggregate data from a single database and display them on a web page have always taken about 20 minutes, if you know what you are doing. Even aggregating information from multiple data sources isnt really that hard or time consuming, provided you understand what is going on. I still dont get what the big win is with .NET. If I already know how to build web services quickly with other tools, will it change my life? Or is it something that makes it real easy for people that dont know what they are doing to do what I already know how to do? More importantly, can I make a lot of money doing this? Im currently charging $85 an hour, because when aD bit the dust that was what my market would bear. However now it seems things are picking up a bit and I want to get back into the $150+/hour stratosphere. Will .NET help me get there?
Mon 22 Apr | Leonardo Herrera | I believe you should try it. Then you'll know what's the big deal. I don't know about .NET yet, but as I want to move out from web development, I don't care.
All GUI Guru's, Please Help | Fri 19 Apr | Damon Bruccoleri
Backround: I have been asked to help design an application that is easy for a PC novice to use. Our market is a male age 24-55, who is a laborer. Think of your plumber. I am asking for any opinions on how to lay out the GUI. The programmer (not me) is adept at Visual Basic and C. My backround is firmware development but they have moved me into more of a management responsibility (yipes, help!) I am soliciting suggestions on the interface that can be accomplished in a minimum amount of development time. Something I can suggest. The user task: We would like the lead the user through 5 steps. Four of the steps involve inputting a bunch of information. There are from 1 to 64 records in each of the steps, variable. There are between 3 and 12 fields to fill in each of the records, the exact number of fields to fill are variable depending on previously inputted data. The last step is downloading the data to a consumer device via the serial port, usb or a lan. Lastly, the user would need to be able to easily, ad-hoc, change one of the fields and re-download the changed data to the device. The Question: Does anyone have an example of a pre-existing application that fits this profile? Or, can a suggestion be made as to the GUI elements that would be involved? Again, the level of user is really really simple.
Mon 22 Apr | Damon Bruccoleri | Chris, The inductive UI / wizard concept I believe is right on! I like the Microsoft white paper because it spells out a plan, I can present this to the programmers in our division for consideration. The plan is actually pretty detailed with some very good ideas. To All, Thanks. A comment was made about the number of entries. If the user were to enter all that information in it would take forever, true. But in reality only a few of the records would be entered at any given installation. Because of marketing considerations we need to support a large number of records to play the numbers game with our competition.
what about us liberal arts majors | Fri 19 Apr | Daniel Shchyokin
All the talke Ive seen here has focused on CS degrees vs no degree, what about people who have a degree, just not in computer science? I have been working for about 5 years now, I know database theory,data structures several languages all that good stuff but never really delved into some of the more fundamental topics like os and compiler theory (and have never really needed it since I work mostly with DBs, J2EE, VB etc ...) I am currently employed and believe I will stay employed in the near future, but hypthetically lets say I found myself looking for a job as an application developer- would it really be held against me that I do not have a CS degree even though I have a four year degree, and all the skills of a four year degree?
Mon 22 Apr | mark | >'Yes, it really depends on the job, but bottom line, it's about money, and will a firm always pay for a CS degreed guy when they can get a high schooler with some kind of tech institute cert. to do their more mundane IT work? For half the cost, it isn't a no brainer. Market forces. Supply and demand. ' Ever thought about the difference between perceived value and real value? (Hint: The employer has to judge how much you are worth before he employes you. Therefore, he cannot compare the real value of two programmers but only the 'on paper'(resume or what a friend told him) value. That is at least what this whole 'supply and demand' field tells us.) In addition what if the CS grad guy offers his services at the same price as the high schooler? Will you hire the high schooler? I know, I am just being picky, but IMO our skills are going to become more and more a commodity over the next decades and there is going to be much more competition. As in every efficient market (with competition) whatever you have to distinguish yourself from the competition is to going to make a difference. If two people would apply to me: 1) CS College Grad 2) Guy who made 5 freeware tools (one of them in revision 4) with over 10000 user I would without question employ number 2. But what if it looks like this: 1) CS College Grad who made 5 freeware tools (one of them in revision 4) with over 10000 user 2) Guy who made 5 freeware tools (one of them in revision 4) with over 10000 user I would employ number 1. So basically a CS degree is not going to get you there alone (real programming is where the rubber hits the road), but everything else being equal it can give you the needed edge over your competition.
Associate Degree vs. Bachelor Degree | Thu 18 Apr | Matthew
In the fall I will be starting at a local two year college. Since I most likely will not be able to transfer to four year college I am looking into getting an Associate of Applied Sciences degree in CS. My question is, does anyone else have this type of degree and if so did you find it any more difficult to find employment than you think you would have had you received a degree from a four year school?
Mon 22 Apr | Nope | jutta, matthew - the uk equivalent to the german fernuni is the 'open university' which doesn't require you to know german to take courses (sorry jutta, its just i get the impression that matthew's native language is english). try www.open.ac.uk i believe they are quite open (no pun intended) to overseas students. having said that, i don't believe a degree is necessary to be able to do the job, though they are becoming increasingly necessary to get the job.
Anti Visual Basic | Mon 15 Apr | Frederik Slijkerman
In the spirit of recent discussions, why not let me know what you think about the opinions found at http://www.geocities.com/antivisualbasic/ ?
Mon 22 Apr | Barney Finucane | I got so frustrated with the lack of constructors I endedup creating a factory class to construct all my vb classes and building a check into all my objects to break them if they hadn't been constructed... a bit extreme I admit, but you wouldn't believe the reaction from my colleagues - they thought I was nuts. The real problem with vb is the slovenly culture it fosters - bug heaven. Most vb programmers I know think Hungarian is the pinnacle of programming style, and I don't know how muc time I've wasted trying to explain that it's probably a good idea to hide variables if you can't think of any good reason why any client should see them. And people wonder why I instst on recompiling the whole project all the time.
VB will never die! | Sat 13 Apr | Rune Moberg
Throughout many religious discussions in the past, ignorant developers have thumped their various bibles claiming that VB will survive, because MS is firmly committed to it!. C# and .NET proves that they were wrong. However, its interesting to see how easily Joel dismisses Delphi now. He obviously knows nothing about the tool, seeing as he mistakenly chose a mixture of VB/VC++ and even VBScript for his current projects (as mentioned in Our .NET Strategy), and yet, when his VB project finally hits the final fan and even he realises VB is doomed, he again chooses to go with MS solutions. MS never produced a commercial application implemented in VB, and AFAIK still have nothing to show implemented in C#, yet here Joel is, ready to hitch up his wagon once more. Impressive. And what, deep down, is C#? Its syntax, look and feel is closely related to C/C++ as far as I can tell. C is a language invented to make sure source code didnt occupy the larger portion of the developers available memory. That was back in the early 70s when 4KB of RAM was plenty and 16KB was pure and irresponsible luxury. C is hard to read, and even compilers have problems reading the code (C compilers are slow and smart linking is seldom very smart at all). Heck, most C developers dont know how to declare a simple function pointer without looking it up somewhere (I felt bad about that myself once, until I discovered that none of my colleagues could do it either). And this is what Joel chooses to base his next generation projects on? Some of his articles make interesting points, but this shades a rather dim light on the fella. Obviously hes very fond of spending hours coding, because thats what hes doing: Spending lots of time writing and debugging code that couldve been better spent doing something else had he chosen a proper tool... As for the talent has left the building... Well, Borland have somehow magically managed to churn out Delphi versions even after Anders departure. One version per year on average. Granted, more than two years passed between Delphi 5 and 6, but thats because time was spent getting Kylix (Delphi for Linux) out the door. No small feat (be it with or without Anders). Its nice to see Anders gets some recognition in the MS camp. Its also strange to see that he wasnt officially recognised by the same persons while working for Borland. Had Excel been developed in Delphi (or even Borland Pascal), it wouldve shipped years before, contained more features and required less resources to do its stuff. (but I bet actually delivering the product on time wouldve meant no tropical vacation for the lazy MS team) Just look at Borland Quattro. Borland tried to implement a spreadsheet using C++. It was late, over budget and finally the team recognised that Turbo Pascal was the right tool for the job and nailed it ahead of schedule. (the only way to ship a C++ project on schedule is to implement it in Object Pascal instead) It was the right tool then, and although APIs have changed and operating systems have come and gone, its still the right tool today for a surprisingly wide range of applications. Be it Web Services, NT services or full blown GUI applications, Delphi certainly does better than any combination of VB and VC++. I usually tense up when I hear a competitor has released a new product, but when I discover that theyve used Java, C++ or eventually C#; I relax. Our product is a 2MB download and requires 10MB of memory, whereas our competitors tend to prefer 10MB downloads and 40+MB memory requirement with half the features to show for themselves. :-) (and they usually boast of having used atleast ten developers, whereas were at most five developers who sometimes spend time on other projects as well) .NET as far as Borland is concerned is just another target platform. (http://borland.com/net/) Theyll be there as well, and Id be very surprised if the old rule Borland makes better use of MS technology than MS themselves is suddenly broken. Joel, you presumably still have MS insider contacts, ask the old platform guys what the best development tool is. After all, who came up with the best support for MTS first? Borland or MS? :-) -- Rune
Mon 22 Apr | Sonny | >its not Pascal anymore, its object Pascal. Sounds like a small difference when reading the words, but believe me, it's a huge difference when using the tool. Very similar to how C++ is different from plain old vanilla C.
tabs or spaces? | Fri 22 Feb | derek
Hi all, Ok, a simple topic here but one with much conflicting advice on the web. Which is the best for coding conventions, whether youre in working in HTML or traditional languages like C?
Mon 22 Apr | SteveOC | We solved this problem once and for all by migrating all projects to the V++ programming language - V++ has the unique aspect of declaring any white space / tab character to be a syntax error - even when embedded in strings !!. All code is therefore very compact, and fits on one large extended line. Besides that, V++ follows standard Tri-Intercal conventions, so is easy to learn and use. btw - Does Python work OK if tabs are -> to spaces ? Can Python handle this, or does it rely on actual \t's for getting it's nesting sorted out ?