last updated:06 Aug 2003 14:33 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 25 May 2003) | View Other Weeks
Any reason to consider .NET for this? | Sun 25 May | Mitch & Murray (from downtown)
Here at Mitch and Murray we are getting ready to develop a new end user app targeted to software developers. It must work well for both the one developer / no server shop as well as a full squad of developers using a server. There is a large amount of database action as well as various internet communcations protocols inherent in the design. A web interface is not required, and is not in the spec, but might be useful at some future point. Our first choice is to use Borland Delphi along with various third party tools to do the job. This is what we know, this is the environment that we have confidence in. On the other hand, is there any reason why we should look closely at .NET using either C++ or C#? Has there anyone that has been down this road before us who has _carefully_ looked at .NET and the tools, and can comment? We already own all the Visual Studio .NET stuff as well as the latest Delphi tools, so cost of development tools is not an issue. We want a deployment platform that works well now and into the future. Many thanks, and Good Leads to you all, - M & M
Sun 25 May | Geoff Bennett | Write the back end in ALGOL and use Simula for the front end... Seriously, unless you see an advantage in .NET, stick with what you know. It will take you less time to implement the design if you don't have to worry about language and architecture hurdles (not necessarily in your way, but just the different way of doing things). If time and or competitive/technological advantage is not an issue, go with .NET. Of all my products at the moment, 2 are in Delphi and 4 are in VB. I intend to move all of them to .NET eventually, but right now I'm only moving the ones across that have reached a point where it would be more beneficial to invest the development time in another language.
Why this design spec/model obsession? | Sun 25 May | Yablan
Hi. I work at a large european government agency and was dropped in the midst of a large and quite complex J2EE project about 7-8 months ago. First of all I just want to say that I am not XP follower, although this subject and my standpoint may make it seem that way. We have a large and complicated codebase, a really messy Rational Rose model, and quite a stack of design documents, all different and of varied quality. Me and two other guys have been appointed architects, and in this situation I am having a bit of a discrepance with one of the other architects regarding the design model. Our design model is at all times somehow expected to be an accurate representation of all the internal workings of the systems, having detailed diagrams for all use cases. So, if all the project members would die at once of some strange disease, the model would come to the rescue for our sucessors, being the means for them to assimilate all needed knowledge. Now, I have seen this before, and it seems like nonsense to me. I agree that people should always design before they code. I also think that all architectural mechanisms and commonly used pattern combinations in a project should be documented and followed. But at the individual use case level, I think that the design model should be disposable once written, unless you feel that you need to update it. It should however not be a requisite for the design model to always be an accurate representation of the system. Because it is unavoidable that once your design is done, and you begin to code, entropy will rear its ugly head, due to deadlines, quick fixes, added functionality and so on. So why bother? Why try to make the design model being the most accurate representation of the source code, rather than the source code itself? Why, why why? Why is source code so bad to look at? Rather than waste time fighting the unavoidable, is it not better to spend time documenting the general design and documenting which classes implement certain functionality, making this a simpler way for eventual sucessors to know where to look in the source code when things go wrong? To me, it seems like having an accurate design model (which is an utopia) is a lie, giving higher-ups in the corporate food chain a false sense of security (What? Fire old John? Why not, hes expendable, all his work is documented in the design model..). And this without even considering all knowledge in the collective minds of the project members which rarely is documented. Design model, bah.. So, except from all XP people out there, am I the only one to have these blasphemous thoughts about accurate project design models?
Sun 25 May | www.marktaw.com | The design model is what the programmers look at. The use case is what the business look at. If you don't care why the design model looks like it does, then by all means throw the use cases out. If, on the other hand, the requestors want a record of what the specifications where, and why things were done they way they were (CYA) then keep them.
Sun 25 May | . | This isn't 'XP:' it's called common sense, possessed by all experienced developers.
Sun 25 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'I agree that people should always design before they code.' I'm not even sure I agree with that. Sometimes, the only to find out what you can really achieve is to just start trying ideas. If you INSIST on a plan ahead of time, that more or less disqualifies all kinds of interesting work and ideas.
Sun 25 May | Eric Moore | I'm used to seeing reasonably thought out designs and a architecture on large projects, but not a formal design spec. In fact, I always thought the real reason for a architecture was to provide guidance on how the design should change, when the requirements inevitably change or people discover mistakes later on. The few times I've been on projects with true design spec's always involved big-ticket government projects with formal 'factory' and 'on-site' acceptance testing, and sometimes a third party like MITRE that provides technical expertise for the government representatives. Very different world.
Connecting to an FTP server on own LAN.  Any help? | Sun 25 May | Brian R.
I want to set up an FTP server on my Linux computer, and then access it via a client Windows computer. At school, each computer had its own IP address, and so I actually did it once, but dont remember how. Anyway, my problem is that both of my computers share the same IP address. I would like to use a non-routable IP if I could, but Win2k doesnt give me the option of adding a second IP address to a computer. It makes me wonder if I need to go to the router and add a DNS entry or NAT entry. The two computers are physically connected to the internet, and with each other, by a Router/switch. Can anyone show Dorothy the yellow brick road? harhar.
Sun 25 May | GiorgioG | Win2k Does allow you to assign multiple IPs. Steps: 1. Open up your network connection's properties 2. Select the TCP/IP protocol in the listbox 3. Click Advanced... 4. 'IP Settings' tab 5. Click 'Add', type in IP & subnet mask
Sun 25 May | j. | do the 2 machines see each other now? don't you have internal IPs? Is the linux box the router/firewall? Just add a specific IP address in windows on you internal NIC. and add a specific IP address to the linux box on you internal NIC.
Programming to Interfaces | Sun 25 May | Geoff Bennett
A while ago, I was reading (cant remember where for the life of me - maybe here?) about programming to interfaces with regard to good programming practise. Well, right now, Im practising and Im a little excited. I could always see that it made sense to do it, but now that Im doing it, I cant believe Ive never done it! The project is in VB6, but that doesnt seem to affect my ability to do it. Im making generalisations out of VBs strongly typed forms (as in MainForm is TypeOf MainForm) to handle things like the toolbar buttons on the mainform, status bar messages etc. Its brilliant. Has anybody else had a similar experience?
Sun 25 May | Dave | Sounds like you're starting to see the benefits of object-oriented programming. Kind of a nice experience, huh? I have experienced similar bouts of, 'You know, this whole inheritance thing is pretty neat. Someone should tell other programmers about this!' *grin* What I enjoy most is learning about a new technique or technology and it 'clicking in' with a bunch of problems I had encountered over the years for which it would have been a perfect solution...had I only learned about it earlier. I experienced this quite a bit when I first learned object-oriented programming, and continue to experience it as I learn more about the (very large and very useful) set of classes comprising the .NET Framework.
Sun 25 May | Geoff Bennett | I've been using OOP for a little while now, but programming directly to classes, instead of interfaces. This resulted in more code sometimes to deal with explicit instances of objects (as in the form example above). Now I can test to see if the ActiveForm supports a particular interface (as in IList) and then react to that, instead of testing to see if the form was a particular class (as in frmStudents) This cut one routine down from hundreds of lines to about 30. I have three interfaces, IList, IDetail and IPrint and the main form has a single method that any children can call when they need to reflect their state change in toolbars/status bars etc. The code now looks like this: dim frmList as IList dim frmDetail as IDetail dim frmPrint as IPrint if not (ActiveForm is nothing) then if typeof ActiveForm is IList then set frmList = ActiveForm SetToolbarState(tbNew, frmList.CanAddNew) SetToolbarState(tbOpen, frmList.CanOpen) SetToolbarState(tbDelete, frmList.CanDelete) end if if typeof ActiveForm is IDetail then ... end if if typeof ActiveForm is IPrint then ... end if end if Then in the event for the relevant toolbar button in the main form, it does the same basic thing (error handling omitted): private sub AddNew() dim frmList as IList if not (ActiveForm is nothing) then if typeof ActiveForm is IList then set frmList = ActiveForm frmList.AddNew end if end if end sub Now each form in the application inherits one or two of those interfaces, and I don't have to code for that fact. When I add a new form, I just implement them and it automatically gets integrated with the main form. It's beautiful.
Programmers Attack! (other programmers, that is) | Sat 24 May | Bored Bystander
Quoting from a current thread: >> an unusual characteristic of programmers as a profession ... is the propensity of programmers to attack other members of the same occupational grouping. >> This is relatively unusual. Most professions dont do this. Lawyers, doctors, journalists, plumbers, teachers, nurses generally understand the nuances and difficulties in their work and responsibilities, and protect each other against attacks from outside. >> What is it about programming that removes this group identity? I have wondered about this for years. Snideness and extreme lack of sympathy and esprit de corps have always pervaded this IT industry sector. If there is a less mutually self protective group of workers around, Id love to know. The most egregrious example is localized. Usually, Ive found that when someone loses their job or is hideously screwed over professionally in some other way, the victim generally has to find sympathy from outside this industry or at least outside the immediate peer group of co-workers. The most common reaction to professional misfortune is he deserved it because he was lame/weak/incompetent/dishonest/too high falutin. People closest to the victim tend to turn most decidedly. In my mind, the lack of loyalty and the back-stabbing nature of programming culture isnt anything new. Ive lived with it for > 15 years. I can provide a laundry list of key examples, but the psychology is what I am interested in. IE: why are we such an occupation of unprofessional, snot nosed weasels? (If anyone vehemently disagrees and states that programmers they have known have acted only with honor and valor and courage, I will cough up such a list...) I myself have even acted in the same manner that I am characterizing (only with very good reason, of course :-) ) and it just seems to be part of the culture of this field. Expect no loyalty. Expect no respect. Expect no deference to age, experience, accomplishments, or wisdom. Expect everyone who looks at the code you wrote at your last job from which you were fired to laugh at it and ridicule you as an asshole... and so on.
Sat 24 May | www.marktaw.com | Professionals like described - doctors, lawyers, etc. go through extensive training. There was a study where they determined that military personelle are loyal to each other, even years after being in the service because they all went through a similar difficult experience - basic training. This is similar to the hazing fraternities go through. Suffering brings people together, you've all been through the same thing, you can trust each other. Programmers, on the other hand, don't go through such a stringent and ritualized initiation period. Perhaps it reflects in the culture - haxors (or however the cool way is to spell that) one up each other - they carry it up with them. Just a thought.
Sat 24 May | victim, jr. | other professions go through a rite of passage that provides a common frame of reference and bonds the practitioners together. our profession consists of a majority of socially inept rejects. sadly, most of them don't even realize it.
Sat 24 May | Brian R. | Bored Bystander is completely on the mark, as usual. My experience is only w/class projects - can think of four off the top of my head. Programmers, in general, are *extremely* secretive. I remember one group had to kick out one of their members because he had like 12 pages of code and wouldn't let anyone else in the group see the printout. Otherwise, this guy was talkative and open. For a change, I wasn't able to contribute to my last group because of other classes (role-reversal for me). For the last couple of weeks (I had to ask the web master how to connect to the site w/ftp two weeks before it was due [my IP had been dropped 'cause I had tried to telnet once]) no one in my group would respond to any of my questions, like when the meeting was, etc. I asked one guy how he did the javascript, loudly, during the presentation, and he just ignored me, and no one was even talking (on the one hand I understand, but only a programmer would go that far). Anyway, there was barely any group communication, as usual. If it wasn't for the fact that the project was a website and you could look at it, I don't know how we would have communicated - just periodic meetings for the 'in' members, I suspect). There must be something about programming that attracts the CYA first and last.
Sat 24 May | Tj | Is that what you were reading? I was reading into it how police brotherhoods protect the bad seeds in their organization, or those nasdaq-blinded coders who treated their sysadmins like dirt. It was common to stay late in my last job, commiserating with undervalued people lower in the totem pole. Had I answered that question intelligently, I would have pointed out that the politics in other professions make programmers look like angels. Workplace backstabbing is just not a common problem in this profession, unlike in say academia. This is a little like Rashomon.
Sat 24 May | Brian R. | Actually, I had a blast observing this team. One guy said who wants to document the code, so I started doing it, but two other guys (whose jobs it wasn't) beat me to it (on the same day) and left my name off the group list. On the day of the presentation, I didn't exchange a single word w/any of the members. I don't know if anyone can understand how much I am laughing my head off on the inside, because I carried two projects previously (project manager -lead programmer), and spent 125 hrs. on one of them. So I was highly amused by them; it was just so much fun watching someone else squirm for a change. lol. Especially 'cause they seemed to act so superior - like I was bugging them if I talked about the code. They wanted to be the ones to ask the questions. It was a little more like 'king of the hill', than a group, to me.
Sun 25 May | Brian R. | And for the record, we didn't write the program. Just modified a very large one out of a book/CD.
Sun 25 May | Brian R. | The funny part is that I told all five of them what each of their roles should be at the beginning when they were looking for guidance, and they each took on those roles, and it worked out best because of that.
Sun 25 May | Prakash S | 'Expect no loyalty. Expect no respect. Expect no deference to age, experience, accomplishments, or wisdom' Bored, I would say this true for almost any profession & professional in this day and age.
Sun 25 May | Bored Bystander | Some thoughts in no particular order (and dammitall, I thought I was gonna start the mother of all flame wars. Guess I'm a lamer. :-) ) Prakash: re: 'this day and age' - I ran into slimey programmer behavior first in the late 80s', note that I qualified my statements with 'last 15 years.' I don't disagree with you, I just think that programmers have been on the 'foreskin' of backbiting. victim jr. stated the following (and www.marktaw.com stated something along the lines of the first part too): >> other professions go through a rite of passage that provides a common frame of reference and bonds the practitioners together. >> our profession consists of a majority of socially inept rejects. sadly, most of them don't even realize it. I'll go this one 'depressingly better' and state my general observation. Programming has (til recently) been quite easy to get into. No formal credentialing exists or is possible. No dues have to be paid. In some cases, rewards to some programmers have been dramatically disproportionate to the effort invested - dot com millionaires to cite one example, or, localized 'prima donna's who walk on water due to mastery of a few tricks. Programming attracts 'thing' people and those who have trouble relating to others. Many people (myself included) who could be called 'lazy geniuses' with some logic and language skills gravitated to programming over the years. So - basically, this is a field that attracts socially retarded to extremely arrogant bit heads with no people skills. Those who are not arrogant are very often socially backward. I've tried to raise the consciousness of people that I've worked around over the years, re: preaching to fellow code heads to broaden their social repertoire, to try to be more accessible to non techies, to read more, to listen better, to not think more code is the answer. I've lead by example, and I've tried to instill these messages with words. The results: very little apparent difference made. Usually, you just wind up pissing off most geeks when you try to speak to soft skills. So, I'm trying to get 'out' of programming, somehow. I've found a much better class of programmer (literacy and common sense wise) on some BBSs but it's not exactly a viable social scene...
Sun 25 May | . | I think marktaw is on the right track. Other professions, occupational groupings, or whatever, have rituals of entry. Those rituals develop group identify. Bored, you make a similar point but also illustrate my point by taking the opportunity to kick programmers. ('No formal credentialing exists or is possible. No dues have to be paid.') I actually disagree with you on dues not having to be paid. Extensive dues have to be paid, being long hours, hard work, persistence and creativity. More so than other occupations, you can not coast in programming. Anyway, I just thought this was an interesting topic. I've noticed over the years that when there are attacks on programmers as a group, surprise, surprise, many programmers and even industry groups join in. They're careful to exclude themselves of course. Everyone else is hopelessly incompetent, we must have licencing, etc.. By comparison, attacks on other groups are usually rebutted by those groups, and often belittled as well. 'What would you know about ...?'
Sun 25 May | smkr4 | Bored: Well, I think the behavior you describe is fairly understandable, because software development is (perceptually, at least) a meritocracy. That idea is more subdued in corporate environments, where people play by the office politics, but one can see it readily in the open source movement (a microcosm of software geekiness, if ever one existed). I think programmers tend to see themselves and their peers according to absolute standards of merit (eg, 'writing good code'), and when someone fails (for whatever reason), then they haven't lived up to them in some way. IMO, this is a bit of illusion that geeks maintain to cover up their insecurities--and more importantly, to justify their salaries and positions in a highly competitive field. It really doesn't help that most bugs, to an objective observer, look like stupid mistakes. So when programmers pick up new projects and they look at others' code independently, they see stupid mistakes; their own notwithstanding, of course. That's why code reviews get so vitriolic; programmers are exposed to an objective view of their mistakes. And that view is not pretty. So there's a very conflicted work environment here. Everyone is trying to cling to their place on the merit scale, but everyone is making 'stupid mistakes.' It's no wonder a lot of brickheaded arrogance arises. The fact is, of course, that we're all under a lot of pressure. Software is hard; merit is ill-defined and often thrown out the window in corporate America. Bugs are everyone's problem, not some acute intellectual disorder. Smelling the roses, literally and figuratively, helps a lot. Everyone should live and learn horizontally; if not for the here and now, but down the line it makes a huge difference. Careers, industries, and economies aren't forever, after all. :)
Sun 25 May | Brian R. | The meritocracy argument is right on. From what I see, aside from your coding ability, most programmers would 'kick their colleagues to the curb.' The biggest disappointment I see w/most other programmers, is that they don't share well. They are *very* bad at sharing with others. The cliche, of course, is 'herding cats'. I actually talk more than anyone else in my classes, probably because I like to share, 'talk shop'. Funny thing is system administrators like to share, and talk, a lot more than programmers. Which makes me wonder if I am in the right part of the field from that aspect. Sys admins are cool as hell, and many programmers (that I know in person) are kind of 'anal retentive', in an introverted way, if I may say that. At least sys admins, from those I know, are more extroverted about any such retentive opinions they may hold.
Sun 25 May | Brian R. | Programmers aren't so bad if you have time to get to know them. It takes longer to get to know someone who is secretive, and more judgmental. If you are thrown together as programmers, on a short project, then there just isn't any time to learn what that person is capable of.
Sun 25 May | RM | If this is a scientifically-unproven but well known attitude, How does it affect on XP? Sharing is a two-way trip, you can't expect people to share theirs, while you are hiding yours from other. I personally thought, if I share mine, people will 'eventually' do the same. But apprently, I am beginning to realize I wrong I was. Perhaps, my 'eventuality' needs more time.
Sun 25 May | Plain Rube | Some of this stems from the 'sink or swim' mentality that hangs over many workplaces. Mistakes are not tolerated even at the junior level, so C.Y.A. becomes standard operating procedure (epitomized in 4-D's: distract, deny, deflect, and denounce).
Sun 25 May | www.marktaw.com | Gawd I hate CYA.
Sun 25 May | Geoff Bennett | I think CYA comes from the fact that the people who have influence have very little clue (generally speaking) about software development. In the one company I have worked in that was completely devoid of the CYA mentality, the management and directors were software developers, and they continued to work in the 'pit' with the rest of us, on the same production code as us. They always adopted the attitude that the person didn't fail, the process did. Even at this stage, they still examined the process to see how early mistakes of that ilk could be caught. It was the most productive and happy place I've ever worked. Everywhere else has issues with management not understanding why things take so long and when you try to tell them, they write it off as a bunch of developer hoo-ha as if you're trying not to blame yourself (which gets us back to CYA). The easiest way to not get in trouble is to not do anything but look like you are.
Sun 25 May | Brian R. | Here is the difference between programmers and administrator (actual case, sort of ). There are two assignments in the syllabus named assignment 7, and two named assignment 9. One person (me) simply ignored the mistake, and came up with two extra assignment #'s. Another student said no way, if teacher says they are both 7, then they are both 7 (mind you each was worth 100 pts. individually as were all assignments)[another student agreed w/his logic]. Now this was a class full of programmers and none of them brought it to the teachers attention. A system admistrator would have spotted this error on the first fifteen minutes of day one and brought it to the class's attention. What happened is that the teacher renumbered my assignments (even forgot to give me a grade for three assignments that he gave me back graded!). I pointed out at the end of the semester, the numbering, and the teacher was bafffled. So, in summary, programmers are full of sneaky little sh*ts just like me (to quote 'Animal House').
Sun 25 May | Steve | 'When programmers attack!', stay tuned for the special on Fox ;) I've recognized this pattern as well. And I can genuinely say that I make an effort to do the exact opposite, -- and have been quietly rewarded for it by being offered jobs and making friends. I just quietly shake my head at the jerks that don't get it, they go nowhere.
Sun 25 May | Simon Lucy | Software development is one of those areas where everyone is aware that its easy to make dumb mistakes and everyone makes them quite frequently and yet a lot of the culture they come from, educationally and in the work ethic, making mistakes is a bad, bad thing. Many developers have low self esteem, low self worth and feel threatened if their work is shared or inspected. Once you realise everyone is in the same boat and that sharing code and development is one of the closest work relationships you can have with another individual you lose that self doubt and ego obsession. And you lose that defensive aggressive shell.
Sun 25 May | Prakash S | CYA?
Sun 25 May | Phibian | 'Expect no loyalty. Expect no respect. Expect no deference to age, experience, accomplishments, or wisdom' I've always gone by a completely different principle: 'You tend to get what you expect.' Even complete weasels are nicer when you treat them as if you were unaware of their weasel-ness :) One of the reasons I own my own business is so that I can keep control over my environment. Although I know that programmers of the sort described exist, such a beast does not work with me. I believe this is partly because we focus on the team, rather than individuals. Individual accomplishment is important, but the team accomplishment is what is going to bring success. We also require that new employees earn a spot on the team, either via an unpaid co-op or a lowpaying probationary period. Both are relatively long, too - our latest was four months. I know that attitude isn't popular on this board, but perhaps the best argument is that this period provides a 'ritual of entry' that others are arguing the profession lacks. It also tends to self-select people who are really dedicated to joining the team, weed out the prima-donnas and weed out people who value money over all as the end goal of employment. Programming is best done in small groups, thus the entire group has to be on board with the new person or the team will become derailed. I think we're unusual in that we run HR as a semi-democracy. Finally, we definitely focus on process failures when things go wrong. Everyone makes mistakes. The question is not why did the mistake happen, but how did the mistake become a problem? Then we come up with an approach to prevent the mistake from becoming a problem again.
Sun 25 May | Nat Ersoz | CYA = Cover Your Ass. I think it was the first new acronym I learned as a budding engineer, 20 years ago this May. Ahh, the nostalgia. Came out of college into a company with 2 groups fighting over the same project. Enough CYA generated to wallpaper a gymnasium. In my experience, it was the end of an age in American industry that had the luxury of tolerating that sort of waste and inefficiency. Multiple groups, same project, back-stabbing. You don't compete against the Japanese very long doing that. That was consumer electronics, early 80's. I wonder if the software industry has yet to feel this competetive pressure. All the H1B/India/China/etc. machinations... just the tip of an iceberg? I will tell ya one thing, I never saw foreign competition as bad, nor do I expect to going forward. As for dues paying, rituals and canibalism. Its all pretty tribal stuff - you saw it with RealPC vs. Bobnoxious (alpha male farting/claiming territorial boundaries - prolly laying claim to any women as well). We've had our share of alpha-somethings and power plays. If merit doesn't win out over bullshit, then you need to working on an exit strategy. Also, most lamers will give you enough rope to hang themselves with. Be patient, accumulate, and when the time is right and you have maximized your resources, you take your shot. Hope that you're left standing in the end,
Sun 25 May | T. Norman | Programmers' propensity to put down each other is also reflected in their adamant refusal to join together to form a sizeable union, guild, or professional association of any sort. Meanwhile, their lack of unity gives corporations and lawmakers free reign to trample them. That's why we end up with crappy laws like the DMCA and software patents, as well as any of the insane management practices and abuses that are too numerous to mention.
Sun 25 May | anon | I live in a society where it is very stable, and we have apprenticeships. The attraction of IT is that you can prove yourself rather than spend dull years in training in a boy's club. Maybe now that programmers get older and less idealistic, they will want for job security. It is a tradeoff, a meritocracy or union.
Sun 25 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'Programmers' propensity to put down each other is also reflected in their adamant refusal to join together to form a sizeable union, guild, or professional association of any sort.' Translation: Anybody who opposes unionization must be some kind of asshole who thinks everyone is worse than them. News flash: some of us like to earn what we get based on merit, not based on the 'negotiating might of the mediocre'.
Sun 25 May | Bored Bystander | This has been an unexpectedly genteel discussion. You guys all sure you program for a living? ;-) Anyway - T. Norman, you said a mouthful. As soon as anyone says 'we need to band together' you get the whining spoiled snot ass newbie who claims that he is so superior that he will never need protection or cover. I said earlier that I wasn't even excusing myself from the syndrome of 'programmer against programmer' - I've put down co-workers in a mean spirited and judgemental way, and given the same circumstances, I'd even go for 'toofers'. But I had my reasons. Here's what has caused me to 'back stab' or have the appearance of same: gross incompetency combined with hubris. It comes up time and again. The first time I encountered this was in the 80's. I hired onto a consulting company that supposedly had an 'in' to IBM sponsored new product development. The guys I worked with there were total dicks. Each one was a newbie writing 10x the LOC that he needed for a simple set of serial data collection drivers under DOS. They developed a huge bloated API that amounted to - open serial port, read chars, write chars, register callback function on leading incoming char, close port. They endlessly bullshitted and rejustified their crap, and they then ganged up on me when I tried to point out that it was unstable stuff. I had just come from a DOD environment doing this stuff for three years prior and of course NOTHING I said had any weight, except that customers also found these guy's code unusable and unstable. Of course, I was first laid off in a downturn. These guys would rebut anything I said with the excuse that I was from DOD therefore used to wasting taxpayer money. It was constant mutual fuck-you's hurled every day in both directions. Ugly. But all too typical. And I've intermittently been a party to similar machinations later on at other jobs. A recent example (recanting an earlier post now) was a guy that wrote a special purpose TCP/IP network routing program for a past client. The guy was fired for lack of performance. I was given the task of making heads or tails of the orphaned code. This guy was a beard stroking 'mensch'. He projected sincerity and earnestness. He also peppered a lousy and bloated C++ design with 'sleep()' calls to pace the code so that it would not lock up. Take out the sleeps for decent performance, and you'd lock up. I was never in the position to confront this guy, but if I ran into him, I'd ask him exactly what he was thinking, and I'd tell him that it would be best for everyone if he chose to not code for a living or say that he could. (on T. Norman's point - would a professional guild shield some dip like this guy and protect him from the consequences of his incompetency, or would he be smoked out as a fool? I really wonder.) I'm not saying I'm always right and that my judgement is infallible. But just that there appear to be a tremendous number of lightweight developers just clinging to their jobs in this industry, who refuse to listen to proven experience and who are snottily hostile and defensive toward anyone who could help them do their work. In turn, in these circumstances I've tended to get drawn into the conflict and painted as 'that arrogant prick that everyone really should resent because he's got all those years of experience that nobody else has.' The lightweight poseurs generally wind up in one of two tracks: they either get laid off or fired and find work elsewhere (either in this or another field); or, if personable and with the gift of gab, wind up ascending to corporate sponsored 'godhood', namely management, which seems to consist of feeling superior to programmers for a living. I've also observed that on some BBSs I frequent, some people who I consider par excellence character wise as people, who are voluntarily leaving this industry. As much for the poor character of both co-workers and management as well as the bad prospects for employment. I do sincerely admire guys like Joel who have managed to work in classy enough environments that they have avoided most of the timewasting, worthless moron turd wanna be co-workers of second and third tier companies in this industry. The rest of us, the unconnected proletariat lacking the 'good company' background, have to deal with the negative politics that the mass of programmers cluelessly wallow in.
Sun 25 May | victim, jr. | Come on Brad, I've seen your resume. You're not a special little snowflake.
Sun 25 May | Bored Bystander | PS: Brad Wilson - I just saw your comment. I wasn't aiming my commentary about the spoiled 'L33T' at you or anyone in particular. It was just a composite of the general meritocracy arguments I always hear, which typically come from people who haven't been in this field very long and who have never been screwed really badly nor seen someone else screwed for no good reason. Which I am also not attributing to you or others on this list.
Sun 25 May | Bored Bystander | More of my blather on the 'special little snowflake' mentality of programmers: Whyizzit that any explicit statement of self interest is ALWAYS considered socially unacceptable among programmers? It's ALWAYS attacked as an expression of loser-hood and victim mentality. I think that most of us appear to be haughty and smugly immature hypocrites who have never had bad things happen to our careers. The ones that have bad things happen to them tend to vanish from this industry (it's that hard, sometimes, to recover from setbacks in this field) and never are heard from again. So the majority voice is the special little creative snowflake. The IT industry has shills like Harris Miller whose full time job is to fabricate compelling arguments in favor of offshoring and H1B visa quota maintenance. Self interest in considered OK in that context. Or, the AMA, the bar associations, congress, teamsters, etc... We programmers are supernaturally bright idiots.... especially eager to be ascetic and self denying when it comes to economics. Each has GOT to be on his own. Depressing.
Sun 25 May | Tj | Bored, I would point out that you and victim jr. are the ones doing the vicious sniping. All these examples you come up with have nothing to do with lacking a 'shared childhood' but have more to do with just working at dysfunctional companies. The grass is NOT greener on the other side -- if you ever had a non-programming job or have friends in other jobs who complain, things are NOT better. Over 90% of jobs suck. 90% of anything sucks. If licensing will somehow get rid of the dmca or patents or pedophilia, great, but it just ain't gonna happen.
Sun 25 May | T. Norman | >'News flash: some of us like to earn what we get based on merit, not based on the 'negotiating might of the mediocre'.' Classic example of the 'I'm too good to need any group to help me with anything' mentality. Good luck in trying to get patent laws and the DMCA reformed by yourself. Good luck in putting a stop to the widespread practice of knowingly shipping unfinished crappy code by yourself. Every other profession forms groups that can promote their legal or business interests while we as programmers allow our interests to be squashed by those other groups with little or no opposition.
Sun 25 May | T. Norman | ' It is a tradeoff, a meritocracy or union.' It's not a tradeoff - you can have both. The Screen Actor's Guild for example, is a union of sorts, but it still has plenty of room for meritocracy. And associations like the AMA, Bar Association, etc. don't operate like the classic unions do. 'Union' does not mean it has to resemble the classic unions like the Teamsters. A union, guild, or professional association is what its members make it. Given programmers' mentalities, I don't see them allowing any group they form to become a shield for the incompetent.
Sun 25 May | Bored Bystander | Tj, This proves out my premise. You weren't there but you call my account 'vicious sniping'. I'm interested in hearing about the component of the self biography that you consider 'vicious sniping'. In one instance I was being attacked first when people weren't able to do their job competently and our group's viability depended on exactly that. In the other instance I was the fall guy for bad code written by a wanker who had elevated his image well above his ability to perform. I try to under-promise and over-deliver and to have objective reasons for doing things, and I tend to not fall back on arguments 'because it's me and I'm a precious little snowflake and I'm smartest'. In short, in a field where the work culture tends to center on adolescence, I try to act my age. Which uniformly gets interpreteted as arrogance, smugness, etc. This has worn on me tremendously over the years, which is why I'm posting about it. And I don't believe that I am terribly unique in feeling this way. I do think that programming is unique in one way: when infighting occurs, the reasons and justifications are absolutely opaque to outsiders, and all combatants look equally ugly.
Sun 25 May | Paul Sharples | Surely the reason the professionals don't badmouth one another is because they might be struck off and never work (legitimately) again?
Sun 25 May | www.marktaw.com | That's true.. Doctors and Lawyers have bodies that certify them as being legitimate Doctors and Lawyers, and they CANNOT practice unless the AMA or BAR association say they can.
Sun 25 May | www.marktaw.com | ... Therefore it's difficult to discredit a doctor (quack), whereas one programmer can easily rag on another, and they won't often have their certification to fall back on to prove they can practice.
Sun 25 May | . | It's interesting to see yet further illustration of my point in some of these comments. I pointed out that programming is unusual as an occupation in not defending itself against external attacks, either in popular culture or in the workplace. I pointed out that large numbers of programmers, when confronted with this type of external criticism, will actually join in with it, but of course exclude themselves. Sure enough, in this very discussion, we have people interpreting this point to mean that other programmers are nasty, or 'don't share,' or other things. I think the answer is more in that programmers have not generally been exposed to argument and advocacy, and thus aren't experienced in challenging attacks. Also, the acceptance of slights is a way for weak people to gain social popularity.
Sun 25 May | . | On the subject of sharing, do any of you people ever wonder if you've been brainwashed? Members of other professions are much smarter with these issues. In their training, they are taught that time is money, that only idiots provide free advice, and so on. Instead, CS students are taught to be 'team players' and spread their work around. Al this does is make it easy for you to be replaced by a cheaper offshorer or something.
Sun 25 May | . | Also, as T Norman mentioned, groups like the Screen Actors Guild, and the journalism unions too, provide fascinating insights into how professional people do actually have to draw a line in the sand in order to further their interests. This just comes from reading on the subject, and I don't have the URL's, but apparently actors were systematically screwed by the big movie studios in the early days. Then one day the actors got together and said there would be a few rules from then on. Naturally, the studios accused the actors of being morons etc and tried to push on, but in the end actors got a fair deal. Similarly, journalists in around the middle of last century, I think, suddenly realised they were the most highly educated people on newspapers, but the worst paid. Again, screwed by pubishers. Got some rules in place. Better deal.
Sun 25 May | Bored Bystander | '.' : You've basically contended that my posts are examples of the same sort of attack that I am lamenting. Or, that is what I am interpreting as the main point. Interesting. So in describing the problem, I become an exemplar of the problem. The only way I can choose to not become my own example of Heisenberg's uncertainty principle is to stop typing and talking about the nature of my occupation. No, I'm not taking offense. This angle seems to allude to the ultimate problem of programming as a profession: standards are impossible to enforce or even describe in rough terms. Reasons? Everyone has a vote. Nobody's standards are ever applied to anyone else or otherwise considered valid. There is no fixed reference point of professionalism or good practice in our industry. One person's criteria of goodness ('I comment all my code') is at once someone else's criteria of lameness ('huh, anyone who comments their shit is a lame dumbass because they have to use words to describe their code, and the code itself should tell what is going on.') Everyone is self made, an original, a 'precious snowflake', all at once. Everyone an expert, nobody willing to suffer any criticism or peer evaluation whatsoever. Basically, in programming, meritocracy can be claimed by individual practitioners regardless of actual achievement or experience level, and it is often possible for such 'voices in the wilderness', even though they are truly alone and have no 'validity', to be heard, listened to, and respected by someone who doesn't know any better who is willing sometimes to throw a real shitload of money at them. This confirms what I've always observed: programming is one field in which even the most egregrious bullshit artist can find respectability. Oftentimes, with much more ease than someone who is pathologically honest and self effacing. Check, please! :-(
Sun 25 May | Bored Bystander | More in response to .'s excellent points: >> I think the answer is more in that programmers have not generally been exposed to argument and advocacy, and thus aren't experienced in challenging attacks. >> Also, the acceptance of slights is a way for weak people to gain social popularity. 'Not being exposed to argument and advocacy' is a very good description of abject naivete'. And if you point this out to a group of programmers, you're a marked man. They will utterly despise you for pointing out what naive little babes in the woods that they are. >> On the subject of sharing, do any of you people ever wonder if you've been brainwashed? ... >> Instead, CS students are taught to be 'team players' and spread their work around. Al this does is make it easy for you to be replaced by a cheaper offshorer or something. Programming seems to attract a 'college professor' sensibility that is our undoing. Many programmers, even ones not formally educated beyond high school, fancy themselves elite academician wanna be's, respected for their pure brainpower. So they are quite susceptible to any form of flattery of their talent and knowledge. After all, professors are supposed to work for the betterment of the knowledge of mankind, eh? (In fact, on the college professor poseur syndrome: I've worked with *2* different ex-machinists with only high school and no formal technology training who stumbled into programming. Each was absurdly defensive and thought he was the best of the best. Each one was an impossible asshole to work or collaborate with. Each one's work was mediocre to sh*t. Each one had to have his ass kissed in order to even talk to him.) >> Also, as T Norman mentioned, groups like the Screen Actors Guild, and the journalism unions too, provide fascinating insights into how professional people do actually have to draw a line in the sand in order to further their interests. The faux meritocracy culture of programmers encourages rejection of group action for the sake of self-interest. Programmers immediately raise the 'union' objection whenever any action involving self interest is raised. We're supposed to be self sacrificing and never giving in to the 'weakness of the flesh' found in lesser mortals who actually group together to accomplish a goal beyond the reach of individuals. Programmers tell and brainwash each other, like macho infants, that they are 'supposed' to be beyond group action.
Sun 25 May | realist | Bored - I hear ya. Take a few days/weeks off is my advice. Don't think. Try and do something 'real' that doesn't involve moving electrons around inside a box.
Sun 25 May | realist | PS - Try not and have too many developer types as friends. I've been developing code for donkeys years and something I realised the other day is that I've got no friends that are developers, that's pretty weird I reckon, does it say something just about me, or about all of the developers I've ever met? I haven't figured that out yet.
Company's WebSite (Profile) - Should I put my pic? | Sat 24 May | CEO & Lead Software Engineer
Im planning to self publish software Ive written. Do you think people will think that Ive a HUGE ego if I put my picture on my company web site (in the corporate section) Right now Im the sole employee and I do pretty much everything. Since Ill be selling over the Internet I thought by putting my picture in the corporate section people will know that theres someone in charge behind the company. What do you guys think ? (Beside that Ive got an EGO has big as Peter Norton or Steve Job) ;-) Thanks in advance for your inputs!
Sat 24 May | 'Nuff Said | We've all seen the Wrox covers, right?
Sat 24 May | Norrick | Lots of companies have photo profiles of their management teams. Nothing wrong with it as long as you keep it in the corporate info area of the site. Now, if you slapped a half-screen image of your mug on the home page...that might be a little megalomaniacal. ;)
Sat 24 May | Norrick | P.S. NOBODY has an ego bigger than Steve Jobs... ...except Larry Ellison.
Sat 24 May | sgf | Why would you waste any time/space on something that isn't relevant to promoting/selling your product? It turns me off as a customer to see stuff like that on a web site.
Sat 24 May | somebody | >> We've all seen the Wrox covers, right? Unfortunately yes! What the heck were they thinking? There are people who won't buy their books simply because they have scary looking people on the covers.
Sat 24 May | Enjoy | Do you want to sell your software or yourself? Maybe you want to sell your consulting services and you're a well known person in the industry. In that case, you could put your picture. But if you want to sell a product, put a screenshot/package instead of your picture. Even if you think you already have enough screenshots on your web-site.
Sat 24 May | victim, jr. | sometimes you have to sell yourself to sell your software. would you rather buy a device driver from me or Linus? If you're good looking, and you're worth buying, put a picture up. If you're not good looking, just put a blurb about who you are.
Sat 24 May | J. D. Trollinger | Whenever I evaluate a potential company from which to purchase a product or a service, I always like to see a street address listed (no PO Box numbers, please), a photograph (or photographs) of real live people who work there, and a photograph of the building/offices where the company is located. Seeing all this builds my trust. So, to answer your question -- yes, absolutely, include a photograph of yourself. I would suggest that you consider hiring a professional photographer. A fuzzy, dark photograph won't help your cause.
Sat 24 May | Cletus | Put your picture as a watermark on all of your webpages. That'll bring in the sales :)
Sat 24 May | Brian R. | 'Put your picture as a watermark on all of your webpages. That'll bring in the sales :)' With the caption, underneath 'buy me or bite me.'
Sun 25 May | TK | As a surfer, the first thing I look for on a site is anything human: a bio, a picture, a real address - well I guess an address isn't human - but I hate when a site seems to be hiding from me. I consider the picture to be a worthwhile courtesy. Most folks do business with people. I'm certainly more willing to do busness with someone who'll show his/her face. One businesslike picture should do the trick.
Sun 25 May | Wayne | Making fun of the Wrox guys at Barnes and Noble is a favorite past-time for me and my girlfriend. She often accuses me of secretly wanting to look like some of them. However, a picture is worth a thousand words though, so why don't you just post your picture up and we'll tell you whether to post it or not? I'm guessing you probably don't want to do that. You could always try www.amihot.com ;^)
Sun 25 May | Lou | Do put up a brief biography (general industry experience etc. See http://www.anarti.ca for examples of this done well. Avoid large headshots - that's just scary. You could put up a small 3/4 shot of you at your desk, shot from above (4-6 feet elevation above the target) to get a good 'I'm working but I have a neat desk and I'm not trying to make you look at my pores' shot. Also, if you show your desk, get some graphs and screenshots or something interesting (perhaps some code) printouts on your desk so there's something interesting to look at. Headshots in isolation are quite offputting - but seeing how you work, that's something else entirely. (And no suit please!)
Sun 25 May | Bored Bystander | Suit or no suit in a professional website portrait? Pros: makes you look like you're in business and serious about providing a service. Projects maturity, reliability, and image. Any or all of these may be important if, for instance, you provide services in addition to a product. Cons: mainly cited by programmers who resent anything having to do with style, image and panache. Mainly fueled by apparent resentment on the part of those who do not own a suit purchased in the last 10 years which fits, as well as professional jealousy against those who are more image and marketing minded. See thread 'When programmers attack' for more background. :-) A LITTLE more seriously now: there is probably nothing the matter with a photo taken of you wearing a neat knit shirt or other business casual wear. But from everything I've heard, suits project confidence and maturity in 99.99% of the cases and can put your image over the top (in a positive way). The few who dislike suit pictures appear to have a personal axe to grind.
Sun 25 May | Dave | If you DO end up going with a picture, make sure you pop open the yellow pages for a local photo studio. Based on our company's experience, (when we put an employee photo into our 'People Behind the Product' section in each of our newsletters) they will be able to shoot a digital image, touch it up, and provide it to you in about 24 to 48 hours. The worst thing you could do is put an obviously amateur photo on your site. The investment of a hundred bucks or so in the professional photo will certainly pay for itself because of the credibility it will convey.
Sun 25 May | www.marktaw.com | And if you have to choose between the Autumn Evening and Day At The Beach backdrop, go with the Autumn Evening. Unless the beach happens to be in the Hamptons. Just kidding.
Case Studies for Design of Client/Server Systems? | Sat 24 May | Dave
Were working on a .NET project for what is, in reality, pretty much your basic run of the mill client/server system. Ive been looking for books and articles that describe case studies describing a design process for a complex system using the UML in the design process. Unfortunately, it seems like 90% of the books and articles that include case studies are talking about Web apps, which are really too simplistic to tell me what I need to know. For those books and articles that DO discuss old and boring client/server systems, they seem to include only bits and pieces of the design of the system, or they are old enough that they do not use UML for their diagrams. Im looking for a complete, top-to-bottom, heres how the system was designed, and here are UML diagrams illustrating ALL aspects of the system type of book or article. What would be PERFECT is a case study that involves a multi-user accounting system. Our system is a multi-user system that involves cost calculations, so in many ways, its similar to an accounting system. Were looking for case studies to help get the creative juices flowing when evaluating the best way to assemble our application using an object-oriented domain model persisted to a relational database. Thanks in advance!
Sat 24 May | Dave | I forgot to add: it's a Winforms app, which is why the Web stuff really doesn't apply too well.
Sat 24 May | Steve | Aside from being stateful rather than stateless, the concepts are the same. Check out: Applying UML and patterns, by Craig Larman
Sat 24 May | victim, jr. | Patterns of Enterprise Application Architecture? Haven't read it, but might be worth investigating given the limited number of responses you've received.
Sun 25 May | Simon Lucy | The most intelligent and useful book on UML applied to development I've read is Using UML. Software engineering with objects and components by Perdita Stevens and Rob Pooley published by Addison Wesley.
Sun 25 May | Himanshu Nath | This book might help: Building Client/Server Applications Under .NET: An Example-Driven Approach by Jeff Levinson, Steven J. Houglum http://www.amazon.com/exec/obidos/ASIN/1590590708/qid=1053883828/sr=2-1/ref=sr_2_1/102-5943199-1404941
Sun 25 May | Dave | Wow. Thanks for all of the prompt feedback! I will examine each of these titles to see what I information I can take away from each. Himanshu: Does this book take an approach of using business entity classes for the construction of the business logic layer, or does it profess the use of datasets throughout all the layers?
Sun 25 May | Dave | Nevermind! I was able to locate the detailed table of contents on the publisher's Web site. Looks like it takes an approach that is very close to what we're envisioning. Thanks for the tip!
The Matrix | Sat 24 May | The Real PC
The idea behind the Matrix movies is compatible with various mystical beliefs and also with the contemporary science of digital physics. When I listened to the Donald Knuth religion lectures I got the impression that he agrees with this kind of mystical/scientific philosophy, even though he practices a traditional Western religion (Christianity). If you havent heard of digitial physics, the idea was started by Ed Fredkin, who created the cellular automata Life game in the 60s. Of course in the Matrix movies reality is created by evil machines who are using humans for energy, etc. However, at the end of Matrix Reloaded you get the impression that the reality outside the matrix is another matrix on a higher level (because Neo winds up having special powers there also). I definitely believe our multiverse is made of information. I think there are many alternate universes/realities on many levels.
Sat 24 May | Michael H. Pryor | Check out the philosophy section of the matrix website: http://whatisthematrix.warnerbros.com/rl_cmp/phi.html My brother wrote an interesting article there: 'What's So Bad About Living In The Matrix' - James Pryor http://whatisthematrix.warnerbros.com/rl_cmp/new_phil_pryor.html
Sat 24 May | Dimitri. | yes, sure, based on deep philosophic beliefes. The dumbed-down, pop version of those. Come on. Machines need humans for electricity?!? Last episode, however, provided an interesting twist (stop reading here if you haven't seen it), we'll have to see if it gets exploited. Neo being able to zing out machines in the 'real' world could provide the interesting solution of that being the matrix as well. And then it could be more fun. But they're probably going to miss it.
Sat 24 May | Chris Winters | ObSpoilerWarning... I wouldn't be surprised if the whole 'electricity from humans' thing were part of the Matrix as well. Rebels need something to rebel against...
Sat 24 May | | The REAL Matrix: http://www.simulation-argument.com/
Sat 24 May | www.marktaw.com | 'Of course in the Matrix movies 'reality' is created by evil machines who are using humans for energy, etc.' Define 'evil.' I have my own definition of evil, but I'd be interested in disovering WHY you think the machines are evil.
Sat 24 May | www.marktaw.com | PS, I'm organizing a little outing to the IMAX version in NYC. http://www.marktaw.com/forum/read.php?f=1&i=24&t=24
Sat 24 May | www.marktaw.com | OH yeah... I read the original script of the first movie (available all over the web http://www.google.com/search?q=Baulliaurd ). MORPHEUS They discovered a new form of fusion. All that was required to initiate the reaction was a small electric charge. Throughout human history we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. The human body generates more bio- electricity than a 120-volt battery and over 25,000 B.T.U.'s of body heat. We are, as an energy source, easily renewable and completely recyclable, the dead liquified and fed intravenously to the living. All they needed to control this new battery was something to occupy our mind. And so they built a prison out of our past, wired it to our brains and turned us into slaves. If you ask me, the brilliant thing the Wachowski brothers did was refuse to give interviews. Everyone conjecturs and sees things they want to see, reading much further into the movie than they could've intended. A lot of the so-called symbolism everyone sees in the first Matrix was missing from this original script. Also the second half of the movie is very different, and IMHO not as good in the script... I think that the 2nd movie could've used some additions that the first movie seems to have gotten. Perhaps the extra freedom the Wachowski Brothers may have been given, coupled with the extreme pressure to perform left some of the refinements out?
Sun 25 May | The Real PC | [Define 'evil.' I have my own definition of evil, but I'd be interested in disovering WHY you think the machines are evil.] As you know, it's hard to define evil in a way that everyone will agree with. Here is my own (in progress) definition: Evil has to be defined in terms of the perspective of the observer. If I consider something evil, from my own perspective, that's because it has no consideration or compassion for me. It might be using me (as the machines in the Matrix used humans), or I might be in its way. By this definition, nature can seem evil to humans during natural disasters. During a war, the enemy may seem evil, because they want to destroy us and have little or no concern for us. A rapist seems evil to his victim, because he is using her against her will. An evil force or being has its own motivations and does not care about the health, happiniess, or motivations of its victims. It is therefore a potentially lethal force. Sociopaths can be evil because they don't feel the natural compassion and affinity with others than normal human beings feel. Our natural empathy prevents us from wanting to harm others of our species, and often other species as well. From the perspective of bug being trampled on, a human being may be evil.
Sun 25 May | www.marktaw.com | http://www.ee.bilkent.edu.tr/ge301/matrixfilm.txt http://www.nytimes.com/2003/05/24/arts/24MATR.html?ex=1054440000&en=273d89e8d6f2400a&ei=5062&partner=GOOGLE
Sun 25 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'Define 'evil'.' Philisophical assistance for your dilemma: 'The standard by which one judges what is good or evil is man's life, or: that which is required for man's survival qua man. Since reason is man's basic means of survival, that which is proper to the life of a rational being is the good; that which negates, opposes or destroys it is the evil.' [...] 'Thinking is man's only basic virtue, from which all the others proceed. And his basic vice, the source of all his evils, is the act of blanking out, the willful suspension of one's consciousness, the refusal to think--not blindness, but the refusal to see; not ignorance, but the refusal to know. It is the act of unfocusing your mind and inducing an inner fog to escape the responsibility of judgment, on the unstated premise that a thing will not exist if only you refuse to identify it, that A will not be A so long as you do not pronounce the verdict 'It is.' '
psychometric tests | Fri 23 May | Michael Moser
I just failed a psychometric test - what i thought (naturally) is that the whole exercise is pointless, it does not measure the skills needed for the programming tasks i did. (another question why) Is there anybody out there who could argue this issue out with the hr people responsible for hiring (after having failed the test) ? something along the lines of i failed the test, but you see, the darn thing isnt really worth much ? p.s. relevance of the test. Hacking (aka real problem solving) requires you to move between different levels of abstraction - what counts is the understanding of the function of different layers and how they interact. The test would measure how efficient you are within one seperate level of abstraction, not measuring what job you are doing overall. p.s. i think that human resources people are aliens (with apologies to man in black)
Fri 23 May | Joel Spolsky | For some reason psychometric tests are pretty rare here in the states, although they seem to be popular in the UK. I wonder why... Anyway I am highly skeptical of any organization in which HR has a say in choosing software developers...
Fri 23 May | Pete Robinson | Here in the UK, the only company I ever had a psychometric test was a US one, I was under the impression the tests were popular in the US and making headway over here... As for not 'passing' the test - get over it, move on ... you'll probably be glad you never ended up working there in the long run.
Fri 23 May | Wayne Venables | I've never even heard of a psychometric test (Canada). Is there an online example of one these tests? I wouldn't mind trying it out! (hey, it's Friday!)
Fri 23 May | www.marktaw.com | There must be an online Myers Briggs test somewhere.
Fri 23 May | Heston Holtmann | can you remember one of the question's from the test and repeat it here?..
Fri 23 May | Michael Moser | A matrix of operators (for example 4x4 3x3) Each operator takes an input string and transforms it into an output string by either 1) doubling a letter 2) switching order of letters 3) deleting a letter There is only the input and output of a series of operators (not the intermediate steps). Infer the meaning of the operator (30 questions in 30? minutes). blinkenlight test There is a network of operators where the input is a state of a traffic light (red, green on). Each operator acts as filter (passes only red and green) there are adders there are difference operators. One of the operators is said to be malfunctioning (according to the type of operator that means it passes all the lights through or blocks all light). Infer which of them is malfunctioning. Again, 30 questions in 30 minutes). And another one of those (again same amount of time).
Fri 23 May | Stephen Jones | Your liucky you're not in Spain. When I last there it was graphology. You had to send in every job application in your own handwriting so they could analyze it! And that was for jobs at filling stations! One way of cutting down on the number of resumes! In general management is always looking for the Holy Grail. The thing to remember is that most software sales are to companies that don't really need them but have been persuaded to buy them by the same tactics they buy Management guru weekends and psychometric tests. The kind of idiocy that has cost you one job will mean that there is going to be work for the next one.
Fri 23 May | Stephen Jones | Hey Michael, I know those tests. British Steel hired a company to come over to Saudi to test all the steel trainees with these kind of questions. They are basically vocational aptitude tests. The idea is to see what kind of job in the company is best for you. A bit late after you've spent three years doing a CS degree :)
Fri 23 May | Bagpuss | You are right. Some HR people are like aliens. The questions they ask!!! Moving between different teams in the same company is no big deal. Projects end. Some companies like moving people about. Groups raid other groups for developers. I remember one HR woman getting all excited when I mentioned I moved from one group to another in the same company. She obviously thought she was onto something and kept asking why. It was just a normal move so that I could do some more urgent programming work. I've done so much programming. I've listed it on my CV (resume). Some of it is quite interesting. I've written software to handle utility bill payments from ATM machines and that was back in 1997. I worked at a world famous company. I've written a compiler and a small language more high level than SQL. However all HR woman could ask about was a gap on my CV. The gap was because of an extended period of compusory jury service. It is almost as if what you actually do in a job is totally unimportant to them. Just gaps and lengths of time doing the same thing. Job agencies are even more insane. A couple of them seem to get stuck because I listed on my CV I can program in C/C++ and Java. When I speak to them on the phone they ask whether I can program in Java or C++. I say both. I've programmed in both for years. I'm not really much stronger in one than the other. The only thing is nobody can keep all with all the new layers of Java software constantly being added. However because I say I've programmed in both C++ and Java, they half my time in employment and then say I don't have enough experience to be put forward.
Sat 24 May | www.marktaw.com | Those questions sound similar to the http://www.techinterview.org/ questions Fog Creek publishes.
Sat 24 May | realist | Hey, Stephen Jones, ever worry about getting your head chopped off in Saudi due to writing buggy software? I hear the last thing they do before they chop off the head is to stick a knife up your arse so that you stretch your neck out. Can a westerner really live there?
Sat 24 May | realist | Sorry, silly question, of course a westener *can* live there, but would you want to? I assume from your comment above that you may have lived, or live there. Sorry to be nosey but I have a prospective (short term, big bucks, just like the hookers) job opportunity in Saudi and I know nothing about the place. Seems like a shit hole to me.
Sat 24 May | Stephen Jones | Dear Realist Short term. big bucks sounds like Saudi is doable, but it all depends on the alternatives. How short term? A month? A year? Best thing you can do is mail me through the link on the forum. They've not been known to chop of somebody's hand for typing unfortunate comments on the web (the standard punishment is a mere few hundred lashes in installments of twenty!) but there's always somebody who's going to be a first. Dion't worry about me stealing your gig. I'm an English teacher not a software developer. Which means I get three months or more holiday a year, which is how I stand it.
Sat 24 May | Stephen Jones | Incidentally they just give you a little nick on the back of the neck to get you to lift it in a reflex action so they can make a clean cut. So it's not quite as much a spectator sport as you would wish.
Sun 25 May | Gav | I used to live in Israel, where psychometric tests are the norm for computer jobs. I took two of them for two different companies; it was incredibly absurd. For one thing, they do graphology (!), which was kind of funny because my Hebrew at the time wasn't good enough to write a resume, but they wouldn't take a sample of my writing in English, and they didn't like any of the sentences my Hebrew was competent enough to cover. The test itself was half IQ-type questions (what's the next # in this sequence, which shape doesn't belong, and so on), and half psychological stuff (here are some circles; fill them in with pictures; draw a tree; waht's happening in these pictures, etc). And, after all that, I'd say the caliber of engineers they hired was no better than I've found in the US, and the single worst programmer I've ever met was in one of those companies, so obviously the weeding out doesn't work very well... Gavin
Sun 25 May | Simon Lucy | Psychometric tests are a little different to a lot of those described here, some are IQ tests. Psychometric tests attempt by asking a great many questions (500 is the minimum statistically useful population), to discover things like attitudes, emotional responses, logical and rational responses. You can learn how to take them to produce any desired psycho-social character. For the most part they are administered by people ill equipped and unqualified to do so and on some occasions the interpretation is performed by software. They are all witchdoctor tests and wholly without value, I certainly wouldn't work for any organisation that used them. Aptitude tests are a slightly different case and if I were an unexperienced tyro then I probably wouldn't mind taking one, but not these days.
Sun 25 May | Simon Lucy | Oh and Graphology is no more useful than Astrology.
Sun 25 May | anon | wow. sitting back scanning over these horror stories you folks are posting. WTF is next at some of these companies, phrenology? casting old chicken bones? Jeeze! what a charlie-foxtrot hiring is!
Evolving code layout style! You be the judge! | Fri 23 May | Heston Holtmann
After 15 years of C programming, my code layout style has evolved mostly from external influences and dealing with problems of large teams working on the same large code base. When it comes to function declarations, prototypes, and even function call statements, I have progressively evolved from FuncStyle1() -> FuncStyle2() -> FuncStyle3() to currenlty FuncStyle4() (see examples below) The interesting thing is that most of my co-workers alwasys seem to STOP evolving at 2() or 3() and their variations. I recognize that the biggest _potential_ gains comes from FuncStyle1() -> FuncStyle2(), and that 2->3->4 can be debated on the merits of dimished returns. However, i am wondering if anyone in the _community_ can think of valid general argument(s) as to WHY FuncStyle4() is better _on average_ then 3 and/or 2??? The only diff between 3 and 4 is the comma placement! //-BEGIN CODE ------------------------------------- // jam packed arguments on 1 (or more) lines void FuncStyle1( int arg1, int arg2, int arg3, int arg4, int arg5, int arg6) { // implementataion } // marshmallow packed arguments // uses more white space with // commas at the END of the argument lines void FuncStyle2(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6) { // implementation } // use much more white space and many more lines // commas at the END of argument lines void FuncStyle3 ( int arg1, // optional argument line end comments int arg2, int arg3, int arg4, int arg5, int arg6 ) { // implementation } // use much more white space and many more lines // commas at the BEGINNING of argument lines void FuncStyle4 ( int arg1 , int arg2 // optional argument line end comments , int arg3 , int arg4 , int arg5 , int arg6 ) { // implementation } //- END CODE --------------------------------------------
Fri 23 May | happy to be working | In my (oh so humble) opinion... Function style 1 is more than adequate, if you full document the parameters in the comment block above the function. For example, for those that use Doxygen (as I believe you do Heston), you should do: /////////////////////////////////////////////////////////////// /// @param one [in] description of one /// @param two [in] description of two /// @param three [in, out] desciription /// etc. For those that do not use function/method comment blocks, any variation of your examples 3 or 4 is acceptable.
Fri 23 May | happy to be working | Oh, and before you yell at me for not asnswering your actual question..... example 1 is great. example 2 is bad. example 3 and 4 are okay. I would personally use 3, although I use example 4 when I initialize vars in a constructor. Gerald
Fri 23 May | Nat Ersoz | They're all fine - the compiler won't generate a warning or error from what I can tell. The rest is human preference. Opinions are like assholes. Everyone has one.
Fri 23 May | Heston Holtmann | I aggree.. FS1() is adequate. they are _all_ adequate! But i wasn't asking about adequacy (sp?).. Even if every function was properly documented and commented, and 100% bug free, etc, etc. I still think/feel it is a valid question to ask 'Is 4() in any way slightly better then 3()'. I think/feel valid reasonable answers also exist to the question. For example, one of my team-members claims that 3() is better then 4() because the English language has always put commas at the _end_ off phrases and passages and that humans are trained to trigger of the comma's at the end! I do have my own answers! But I am more intersted in other's people's answers. Especially if the answers can convince me that 3() or 2() is better then 4().
Fri 23 May | Mike McNertney | I actually find style 4 almost painful to read. The commas are not significant, they are just there to separate the parameters. Why are you promoting them to placement at the front of the line where they stick out like a sore thumb? The only advantage I can see with this is that you don't have to change the line of the last argument to add one more (thus simplifying change logs). That seems like a pretty trivial advantage to me, and definitely not worth making it harder to read Personally I use style 2 a lot, though the indentation can get unwieldy for long function names so sometimes I fall back on style 1
Fri 23 May | raindog | IMHO: 4 is awful. 1,2 and 3 are a matter of taste. I prefer 1. But my Java IDE formats the code automaticlaly as 2 and it's OK with me. Why I think 4 is wrong: code is written for other people to read. Therefore, formatting style shlould be optimized reading, not for writing.
Fri 23 May | Joe AA. | I don't like 4... the commas at the beginning do stick out like a sore thumb. I've seen this in SQL queries, where the thought is that more attributes might need to be added and someone is prone to wind up with an extra comma at the end. Personal preference... I like 1. The list takes up too much vertical screen space.
Fri 23 May | Heston Holtmann | Mike McNertney... Now your on to something.. Lets just say your response has some 'weight' to it! Your the only one so far that did some critical-thinking before responding instead of just _complaining_ like everyone else! Thank you! I will have to wait until this weekend to follow up with my reasons WHY i have abandoned 3() in favour of 4(). But basically my reasons can be represented mathematically with the following formula: 0.4 = weight of Trivial Advantage A +0.3 = weight of Trivial Advantage B +0.1 = weight of Trivial Advantage C +0.1 = weight of Trivial Advantage D +0.1 = weight of Trivial Advantage E = ======================== =1.0 Significant Advantage to 4() over 3()
Fri 23 May | apw | i like #1 for declaring the function and implementing it i like #2 or #3 for using it elsewhere (to organize the args)
Fri 23 May | victim, jr. | you must have a very boring job, or not enough to do.
Fri 23 May | Joe AA. | Adding up the weight of an advantage means nothing without balancing it with the weight of a disadvantage.
Fri 23 May | dmooney | I think that this: void FuncStyle5 ( int arg1, int arg2, int arg3 ) { // ... } I easier to read than any of the other four. The { line already essentiall creates a line of mostly whitespace between the function header and body. One line per arg looks good in changelogs, scales well to high numbers of arguments (although I generally try to avoid high numbers of arguments) and makes it easy to do inline comments on arguments. I like style 1 right up until it becomes necessary to line-wrap because there are so many arguments. That generally signals to me that it some refactoring is needed. But I'm quite interested in seeing Heston's reasoning for putting commas at the start of line beyond minimizing number of changed lines.
Fri 23 May | dmooney | Imagine that there is one or two tabs worth of space in front of the arguments in FuncStyle5. I did not intend for them to be left justified.
Fri 23 May | Nat Ersoz | Commas in front: you can add params without changing the previous (needing to add a comma to the previously last argument). Lame.
Fri 23 May | Lou | Commas in front is something I've come to appreciate lately. I've been modifying enough code that's set up this way that its absolutely a pleasure to add and remove parameters - when I run across code that's not set up this way (see 3) I've found myself missing a comma and wasting a lot of time on a bad compile.
Fri 23 May | njkayaker | I use 1 when the function has a few arguments. I use 3 when the arguments are numerous or if long names would make the line too 'long'. (3 seems over kill for single argument functions.) I don't like 4 because of the commas in front (but it's otherwise very close to 3). 2 is miserable because it's different for each function. Also, if you change the name of the function, you have to align a bunch of other lines. If a formatting style requires aligning stuff like this, it's fussy and wastes time. The nice thing about 3 (and 4) is that it is the same for every function and it's easy to do with standard indenting. 3 (and 4) is much easier to implement as a standard than the yucky 2.
Fri 23 May | Christopher Wells | The advantge of 4 is that you can add/delete arguments without changing other lines (in style 3, if you add an arg7, then you also need to add a comma at the end of the arg6 line, which makes the arg6 line show up in a difference editor). That said, I don't like functions which take so many arguments: why not pass a structure or two instead.
Fri 23 May | Dennis Atkins | The indentation of the subsequent lines in 1 & 2 are bad because if you change the function name you have to change all the indenting. See Code Complete for an exhausting presentation of this point of view. I use a style similar to 3. 4s advantage is that you can easily add new parameters with out forgetting to add the comma to the former line and not include it on the new one, saving a compile, observe error message, change code, recompile step. My #3: int SomeFunction ( int a, int b, int c ) { int result; SomeCode(); result = SomeMoreCode(); return result; }
Fri 23 May | Danil | I end up using a combination of (1) and (4) 'He's inconsistent! Burn the unbeliever!' Well, not quite (4). I put the opening paren on the same line as the initial argument: void FuncStyle4 ( int arg1 , int arg2 // optional argument line end comments , int arg3 , int arg4 , int arg5 , int arg6 ) ; When working with initializer lists in C++, I do something similar Foo::Foo( int bar ) : m_This(0) , m_That(bar) { } I don't know why I've adopted this... no, that's not quite right - I've adopted it because I perceive that it makes my life easier. I haven't identified the source of that perception, and whether it has any validity.
Fri 23 May | Brent | occasionally, if appropriate, I'll go ahead and group related arguments on a single line: void function_style_3prime ( int x, int y, /* x,y coordinates */ int another_argument, /* etc */ int another_argument2, int another_argument3 ) { /* do something */ } I can see the advantage in debugging of style 4, it's like a visual equivalent of the trick if (0==x) { /* do something */ } but it's so ugly I wouldn't use it. Also, sometimes needing lots of parameters for functions is a sign you need to be thinking about your design.
Fri 23 May | George McBay | For me, commas in front gets: -0.5 disadvantage, confuses automatic code formatters, including IDE/editors. -0.5 disadvantage, confuses other programmers But then, I still refuse to force my equivalency tests to fit the form (constant == variable) based on the fact that it is Just Wrong and saves you from something a decent compiler can warn you about anyway using other context clues, so YMMV.
Fri 23 May | George McBay | Oh, and for the record, after 8 years I've never 'evolved' past FuncStyle1(). Personally I document the arguments in comments before the actual function declaration/definition. And -- especially with OO/C++/Java -- I find that if you're passing THAT many arguments to a function, your design is probably suspect to begin with.
Fri 23 May | Thomas Eyde | Readability is the key. I prefer all parameters on the same line as long as the line is not too long. Usually that means inside of the editor window. When the line is too long, I prefer to break it up with one parameter per line, starting at the declaration line: void myFunction(int a, int b, int c) { // implementation } (with monospace fonts, all parameter are nicely aligned)
Fri 23 May | Guy Incognito | Function parameters? Why the heck should I use those? Global variables all the way baby!
Fri 23 May | . | All those people who give job candidates paper tests, take careful note: here is another highly relevant question you can give them. Do they lay out their function declarations in the correct, approved way? This will make it much easier for you to pretend you are a superior development group who only hires the best.
Fri 23 May | Heston Holtmann | Hey '.' Be carefull what you say..... some corporations are more interested in how well you 'conform' instead of 'think'!
Sat 24 May | Keith Wright | I can see putting the commas up front for things like extremely complicated SQL queries where each selected column is a big expression (guilty here), and I guess the same could be true if you were doing a really heinous function call with huge expressions. Otherwise, it just strikes me as odd. Then again, The way one guy did it above looks kind of cool, because you have all the ( , , , ) aligned on one column clearly outlining where the block begins and ends. With that logic, though, you may as well start writing code blocks like this: { do() ; stuff() ; here() ; } which stinks.
Sat 24 May | Dennis Atkins | I didn't like #4 too much until I saw Danil's funkadelic variant. It's cool. I'm switching!
Sat 24 May | Dennis Atkins | Oh yeah! Oh yeah! Yeah baby! I just changed 27 header files and I've never been happier! Not just function declaration but all by pesky enum typedefs as well. There it's erally nice since the first enum is usually the special one that has a =1 or such tailing its name. Danil's Variant is symmetrical, it's elegant, it's beautiful and it's oh so sexy! Every line lines up now! Oh the joy! The rapturous ectasy! Hearken! Danil's Variant is the One True Way!!!!
Sat 24 May | Dennis Atkins | >{ do() >; stuff() >; here() >; } Listen not to the words of the devil! Sets of statements differ from lists. Lists endeth not with the separator, whereas verily all Statements must end with the semicolon. Similar these things are not! Apply Danil's Variant where it maketh sense and applieth not the variant to those realms in which it fitteth not. Follow the Way of Truth and the code which thoust create shall reward thee.
Sat 24 May | Justin | You're a muppet, Atkins! Thanks. I haven't had a good chuckle for a while.
Sat 24 May | Danil | My own cult! Tax exempt status, here I come....
Sat 24 May | Simon Lucy | I notice outdentation bigotry at work...
Sun 25 May | nobody you know | I like and use Danil's variant. I have used all styles but after 18 years in business I find Danil's FuncStyle4 code most easiest to maintain. Especially in groups where many programmers work on the same code. You never miss any commas, you always see all parameters, end of line comments don't interfere with commas, you just copy-&-paste line to get parameter from one func to the other...
Sun 25 May | IMnsHO | The convenience of cut-and-pasting as an argument for using certain style? That's lame. Copy-and-paste function should be disabled in a programmer's editor. Once again, readability is the key. This is why the 4th style is BAD.
Sun 25 May | so there | I find Danil's variant to be the most readible of all the styles.
Sun 25 May | IMnsHO | Of course, it's a matter of taste. However, I don't see how placing punctuation marks in front can improve readability(unless you're programming in Perl). Have you ever seen this style used in a (good) book on programming? I have not.
Spamm 'o Ramma - from JoS | Fri 23 May | Nat Ersoz
Just got email from myself, to myself from JoS. As agent Smith says the great thing about being me... Received: from mailx.myrio.com ([10.128.0.61]) by mail0.myrio.com with Microsoft SMTPSVC(5.0.2195.5329); Fri, 23 May 2003 08:56:46 -0700 Received: from mail.myrio.com ([10.128.0.135]) by mailx.myrio.com with Microsoft SMTPSVC(5.0.2195.5329); Fri, 23 May 2003 08:56:46 -0700 Received: from hobbes.fogcreek.com (hobbes.fogcreek.com [66.199.177.116]) by mail.myrio.com (Postfix) with ESMTP id 759B3176142 for ; Fri, 23 May 2003 08:54:46 -0700 (PDT) Received: from hobbes [127.0.0.1] by hobbes.fogcreek.com (SMTPD32-7.14) id A5031041418; Fri, 23 May 2003 11:57:55 -0400 thread-index: AcMhRBLsFqc5PqO/RHGfXY5gY3g9mQ== Thread-Topic: MS to buy Unix from SCO From: Nat Ersoz To: Nat Ersoz Subject: MS to buy Unix from SCO Date: Fri, 23 May 2003 11:57:55 -0400 Message-ID: <000201c32144$12ec13a0$74b1c742@fogcreek.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Microsoft CDO for Exchange 2000 Content-Class: urn:content-classes:message Importance: normal Priority: normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Return-Path: xxx@myrio.com X-OriginalArrivalTime: 23 May 2003 15:56:46.0669 (UTC) FILETIME=[E9DE47D0:01C32143] ?? ------------------------------------------------------------------- This message was sent on behalf of xxx@myrio.com, from The Joel on Software Forum in reply to your posting: http://discuss.fogcreek.com/joelonsoftware/?cmd=show&ixpost=44806 Your email address is never revealed to the sender.
Fri 23 May | www.marktaw.com | I got one from support@microsoft.com. There's a PIF attachment. What the freak is a .pif file? All I know is I'm not opening it.
Fri 23 May | | marktaw.com, See http://www.theregister.co.uk/content/56/30751.html.
Fri 23 May | | Try again: http://www.theregister.co.uk/content/56/30751.html
Fri 23 May | Lou | Nat, this is likely the same thing that was happening a few weeks ago. Some spammer is attempting to use JoS's forums as a spamming mechanism. The problem is Joel has a limit on the number of emails you can send during a day so its ineffective.
Fri 23 May | Joel Spolsky | PIF was a file format used to describe how a DOS application should be loaded in windows. You could specify how much memory to give it, whether it had to run full screen or in a window, etc. Out of laziness, I guess, Microsoft has a whole bunch of file extensions (.com, .exe., .pif, .scr for screensavers) which are all loaded the same way. The loader looks at the first few bytes in the file itself to decide what to do. So if you have a file foo.pif that is actually an executable file, it will run. This is a typical spammer/virus technique to avoid filters that just search for .EXEs.
Fri 23 May | www.marktaw.com | My favorite was the www.yahoo.com executable. Very clever. Now that I think about it... Could they have sent a binary attachment via the JOS forums? MIME encoding? They must've gotten my e-mail address somewhere else... Someone on this forum who has me in their address book?
Fri 23 May | Joel Spolsky | Nat, I'm guessing it was someone who knows who you are, since they knew your email address (they couldn't have figured it out from the forum). I won't go so far as to call it 'spam' since only 1 email was sent through the forum from that IP address -- in fact so far today there have only been a total of 2 emails sent through the forum total.
Fri 23 May | Joel Spolsky | Mark, are you sure your support@microsoft.com email came from our server? It's an email virus; much more likely someone with your email address in their address book opened it.
Fri 23 May | Wayne Earl | It is an email virus - I've seen the supposed microsoft message at my work email several times over the past few days. I've never used that email address with this forum, so it's safe to say that it's unrelated to here. mutt. The e-mail virus killer. ;-)
Fri 23 May | www.marktaw.com | Well, I only use this email address for JOS / Fog Creek stuff. Basically the only people who have it are either from JOS that I've contacted via the forums, and maybe you guys. The e-mail address is fog@(mydomain).com It doesn't get much more specialized than that.
Fri 23 May | www.marktaw.com | OK. It's not from the forums... I was just speculating out loud anyway about whether you could pass a MIME encoded binary through the forums. Return-Path: fog-bounce@(mydomain).com Errors-To: fog-bounce@(mydomain).com Bounce-To: fog-bounce@(mydomain).com Return-Path: Delivered-To: fog@(mydomain).com X-Apparently-From: support@microsoft.com Received: (qmail 6315 invoked from network); 23 May 2003 13:41:57 -0000 Received: from unknown (HELO mailshell.com) (10.1.3.212) by dev110.mailshell.com with SMTP; 23 May 2003 13:41:57 -0000 Received: (qmail 7533 invoked by uid 99); 23 May 2003 13:41:57 -0000 Message-ID: <20030523134157.13243.qmail@mailshell.com> Received: (qmail 3608 invoked from network); 23 May 2003 13:41:51 -0000 Received: from unknown (HELO ROCAILRCI) (213.22.2.18) by mail.mailshell.com with SMTP; 23 May 2003 13:41:51 -0000 From: To: Subject: Re: My application Date: Fri, 23 May 2003 14:41:13 +0100 Importance: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MSMail-Priority: Normal X-Priority: 3 (Normal) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary='=_dev110.mailshell.com-6319-1053697317-0001-2' X-Apparently-To: dev110-fog X-JUNK1: 3
Fri 23 May | www.marktaw.com | Hmm. I just had a thought. I'm sure Joel already knows this... e-Mail addresses are actually passwords here... Hidden to everyone but the user & admins. They can be used to seperate the real www.marktaw.com and an imposter.
Fri 23 May | Bob | That email was from somebody who clicked on your name in one of Joel's Forums, and wrote something to you. A great way to take control of your inbox: http://www.sneakemail.com - a pleasure and a joy.
Fri 23 May | Philip Dickerson | If you have your own domain and a wildcard alias for email addresses in that domain redirected to your email account, then you will almost certainly receive spam email at a variety of addresses at that domain. Spammers generate random email addresses in a variety of forms (dictionary-word, first-name, first-name.last-name, etc, etc [at] yourdomain.com), as well as harvesting email addresses from a variety of sources. One of these randomly generated email addresses may, by coincidence, match an email address that you used at a site like this - it doesn't necessarily mean that your email address was actually obtained from this site.
Fri 23 May | Philip Dickerson | Just to clarify, the first-name and last-name used to generate the email addresses (described in my previous entry) are simply picked at random from a huge list of all known names, or something like that. I have nothing to do with generating spam, I am speculating this all based on spam that I have received sent to a variety of email addresses at my own domain (email addresses like 'fred.smith' and 'valerie.hargreaves' [at] mydomain, etc - email addresses that have never existed or been used anywhere).
Fri 23 May | Stephen Jones | I posted this on another thread on Tuesday, but as it's relevant I might as well post it again here. ---'At work today we were still getting the iWorm/Palyh (the one that masquerades as a message from support@microsoft.com) I forwarded the offending message to our sysadmin with the question 'Why isn't Norton on the email server catching this virus?' Five minutes later he phoned. 'Steve, I can't open the attachment you sent me about the virus' 'Oops!'.
Sat 24 May | Ged Byrne | Mark, Did you change you email when the forum started hiding the addresses. Could the address have been lifted before that change?
Sat 24 May | www.marktaw.com | It could've. I'm sorry if I've been ambigious here, I've used this e-mail before the switch over, and have e-mailed people from here with it. I'm not one of those ultra strict people who would bother to change his e-mail address for every single little thing that happens. I use a service similar to SneakMail - www.mailshell.com - Despite the sign up lingo, I've been using it free for the past year. 10mb free. You get @yourname.mailshell.com (or @yourdomain.com) and then generate as many e-mail addresses before the @ as you want. You then create rules for those e-mail addresses. This way you don't filter on the sender, you filter on the address, so if one starts getting spam, you just tell it to send everything that goes TO that address to the trash. It's been wildly successful for me, my inbox stays clean, my filtered mail is filtered correctly, and my spam goes to the junk folder, which gets deleted after a week or two. This has been one of the few exceptions.
Sat 24 May | mb | someone who sent you mail from here has an email virus. someone you probably responded to. the email virus went through their sent items or inbox, found your address, and sent off the virus to you, trying to hide its tracks in some way (maybe it even grabbed some heards from the inbox). remember, security is often defeated by something entirely outside the 'system'.
Sun 25 May | Mike | People. It's windows. It's a virus.
How did you get here? | Fri 23 May | Ged Byrne
Reading the last few posts about what people do and dont know, I started thinking about the path travelled into the IT industry. Unlike more established professions, where there exists a clear curriculum that practitioners must master, the route into development is much more varied. I sense a strong continental bias as well. For example, C seems to have been established in america much sooner than it did here in europe. Thats the impression I get. This means that in America every developer worth his salt is supposed to know all about pointers and to have read Ritchie. Here in the UK computers like the Spectrum and Amiga were much more dominant. My own learning experience was dominated by BASIC, forth and Assembler. In Europe early programmer was dominated by sprite animation and screen scrolling, while the Americans seemed to have spent their time writing parsers and compilers. Is my impression accurate? What path did you take into computing, and how do you think it has molded your attitude?
Fri 23 May | Ron Porter | I got here from hobby computing with VIC-20 and Apple // while earning a living as a welder and truck driver. When I saw my first IBM-PC, I thought to myself 'If this thing catches on, I'm gonna make a killing!' Well, I haven't made a killing, but I have made a living. BTW, the reason I thought I would make a killing was simple. The Apple didn't care where you but the boot disk, it simply polled all drives until it found an OS. The IBM, on the other hand, had a hard-coded boot drive. At the time, I thought this was lunacy and felt that if something so basic was done 'wrong' then there were bound to be all kinds of things that people were going to need help with--way more than needed help with 'proper' computers like Apples :) I no longer carry any platform biases, but I was right about being able to find lots of PC users that needed help.
Fri 23 May | old-timer | Well, I predate all that. I had been a machinist back in the 60s and then got a degree in Industrial Eng. in the 70s. I was a product of the industrial revolution who converted to computer revolution in it's infancy. Started programming in the early 70s. I got a MSCS in 81 at the ripe old age of 33. My entry was via Fortran on old GE and Honeywell mainframes. 30+ years and I still do Fortran and C.
Fri 23 May | Rahoul Baruah | Computers: Vic20s, Spectrums and C64s (I spit on BBCs), Amigas and STs then boring old PCs and now Macs. Languages: BASIC (Vic20, C64, AMOS), Modula2, Turbo Pascal, C++, Delphi, Smalltalk, Java. It turned out I was quite good at the programming stuff, so I did a university course that was one third computing, the rest psychology and philosophy. Then, when my bands failed to make it big, I got a job as a programmer, got debts and mortgages and now I'm stuck with it!
Fri 23 May | Ged Byrne | Old Timer, Wow, you really are experienced. Is there stuff that you think we youngs uns really should be knowing?
Fri 23 May | victim, jr. | I was flipping burgers... philosophizing about how much debt I was in from school and what I was going to do about it when I decided to take a few 'computer' classes. I had programmed trash 80s in high school, and in university I had a few classes where we had to get on the mini & write some fortran, but this was VB3 on Windows 3.1 and I was hooked.
Fri 23 May | snotnose | Yep, I'd had my TRS-80 about 3 months when I decided to write the game of Life in Basic. Thought it was broken as the screen never updated, but couldn't find the problem. Went to pee one day, when I came back the screen had updated. So I learned Z-80 assembly. I was an electronic tech at the time, units at work were 8080 based. So I started writing test code to exercise hardware to help track down problems. Things like excersizing the data/address busses, etc. Engineering found out about this and said 'hey, get your ass on this side of the wall'. So I was an engineering tech, hacking out 8086 code. From there I leanred Unix on a PDP/11, C, Fortran, microcode, and a smattering of other languages. 20 years later I'm doing Linux device drivers, and computer telephony.
Fri 23 May | Ged Byrne | How do you find your background effects your thinking now? For example, I notice a few Z80 coders like myself. Do you also find yourself intolerant of software bloat and too many abstraction layers because deep down you just want to take full control over the machine and start poking to the screen rather than using Printf.
Fri 23 May | Sam Strachan | Started with the old Rubber Key 48k Spectrum at the age of 8. Then never touched a PC until about 10 years later. Started programming 3 years later still at 21. I didn't even mean to be a programmer - I just liked computers and happened to join a company that suggested I should write code. Started with plain HTML and a bit of JavaScript then used LotusScript in Notes and Domino, turned to VB5,6, then bizarrely C and C++. Got a good handle on COM with ATL and have latterly been doing a lot of C# / .NET. I've got here through enjoying what I do, even though I never had any real plan. I guess that's common in development.
Fri 23 May | Katie Lucas | I was always going to be some sort of engineer or scientist. I inherited engineering genes from my Dad (mech eng, jet turbine fuel systems designer) and maths genes from my Mum (mathematician/computer programmer). And then they made the mistake of buying me & Sara a home computer. Whups. Sara, by the way, inherited all the organisational skills of both parents and some of the maths genes. So she's an accountant now, and regularly rants about how inept most accountacy practices are... Entry path was mostly by 'doing a degree in computer science because I can do it in my sleep.' Which was fortunate, because that's mostly how I did it. And so now here I sit, in Dilbertesque Big Corporation Land wondering what happened to my enthusiasm...
Fri 23 May | Len Holgate | I started with a Sinclair ZX-80 doing Basic. They wouldn't let me do Computer Studies at school as I 'knew more than the teacher', admittedly it was the first year they were running the course. I got set of TSR-80 manuals from somewhere and lusted after the power. Then there was a ZX Spectrum that put me off programming for a bit as there were too many games for it… Dad got an ACT Sirius 1 for his accounts and I started playing with that, more Basic. Then an Apricot Xen I-386, a very early (read expensive) 386. A couple of years later I “borrowed” a copy of Turbo C and a copy of K&R and I was off… 8-10 years programming in the evenings and finishing my apprenticeship and working as a plumber with dad during the day. Time passed; various PCs, Windows 3.1, Borland C++, Petzold, Unix (SVR4), Linux (when it still came on 15 floppies)… etc. I decided that I didn’t fancy the idea of still being “on the tools” when I was dad’s age, so started to look for a programming job, got very lucky and the rest is history… Now I’m doing financial stuff in investment banks using C++, C# and Java and trying to build a client base of people who don't care where I do the work from...
Fri 23 May | Paulo Caetano | I started on a ZX Spectrum, with BASIC. Then, in high school I took on COBOL. Then, I had a pause, during which I took up guitar, but returned because I didn't go very far with it. By this time, I had my first PC (a 486), and was getting some stuff done in Clipper 5 (to this day, I'm grateful I didn't have to start with Summer 87). Then I tried C/C++ (Borland C++ 3), and my first contact with WinAPI. Ugh! I got my first job developing in FoxPro for Windows, and I learned to hate MS tools. Then I moved to MS Access, and my hate started turning to dislike. I took a look at VB, and came back running to Access as fast as I could :) Then, Delphi came along, and I found my dream dev tool. Unfortunately, very few people shared my opinion. After a few more years with Access, my company shifted me to web dev. My first language was Netscape's SSJS. Then, came ASPs. On my spare time, I took on C++ again (made a lot easier after the inclusion of STL), with C++ Builder. Went a lot better than the first times. And then... forget development. The line became 'we're not a software house, we're going to outsource'. At this time, I was taking a look at Java (not yet J2EE), and I got up to speed easily. So, now I'm a sort-of project manager, and all the developing I do is at home, when I find the time. ----- 'Suravye ninto manshima taishite (Peace favor your sword)' (Shienaran salute) 'Life is a dream from which we all must wake before we can dream again' (Amys, Aiel Wise One)
Fri 23 May | Nat Ersoz | Worked in an automated test group in the early 1980's, which used FORTRAN on micro PDP-11's. At the time, writing code was secondary to analog & RF circuit design and analysis regarding my role in that group. C Language became dominant as we swtiched to Apple MAC II based control. I learned C at the time. In 1989, I was offered a role in digital ASIC design, which was a great chance, so I took it. That was a great position for me, used the C language for design simulations and test harness for the ASIC. Again, C language was secondary to ASIC design. In 1992, the DirecTV project required additional software help. Since I had both hardware and software experience, I helped write device drivers for that project which lead to other digital video projects and DOCSIS cable modem (1998). Still mucking around in that space, C language almost exclusively, as it holds my interest. Writing an Linux ALSA driver for Geode as we speak.
Fri 23 May | Andrew Hurst | In high school I could barely use Word, I had a hell of a time formatting the documents. But I knew how to use ICQ. I was going to be a Chem or Physics major, but then tried out computers second quarter of college, and got hooked. By the end of the year I was running Linux (Redhat 5.2, I think) and writing a mod_perl application over the summer. Graduated with my B.S. in CSE last June, and now am working at a National Labratory and am working on my Masters in CSE. I still can't use Word very well, but I've found that I'm not interested in all at the formatting of data, but very interested in the processing and storing of it, databases, perl, etc. I find that MVC helps a lot, because I can dump the display parts off on someone else ;)
Fri 23 May | Justin | I Started with a Commodore Pet in about 1979. Built a ZX81 & learned Basic, then got ZX Spectrum in ’82 and learned Z80. 1st full time job was doing Real time Comms on custom hardware in z80/68000/C in 1987. Left for University, after which I got into applications development, mainly in Basic. Started with VB in about 1996.
Fri 23 May | Hector | I started with a Sinclair ZX-80 doing Basic when I was about in 7th grade (Puerto Rico). I was one of the few that had enough money to buy one of those things back then. One summer a hurricane destroyed our house and my father was in the hospital for a year. We lost everything, and on a chance moved to the main land (stateside) and started anew. I didn't touch another computer until the Apple II came out. I missed the early PC bubble in the 80's. I mostly worked in the food industry until I graduated from a junior college in 95. There was a recession then, and the only IT jobs available then were desktop support and help desk. I worked about 1 year doing desktop support, then moved up to Network Administration, mostly Netware networks. I didn't get into programming until I was able to leverage my support experience to get a job doing 25% support and 75% programming. There's no way I could repeat that if I had to start over in the current business and economic climate. I haven't seen any entry level jobs for several years now.
Fri 23 May | Ian Stallings | I didn't really take the traditional route. After doing various work in the contruction industry I actually got a break at a local ISP as a tech support desk jockey for 7.50/hr (w00t!). Got promoted to admin after a year or so and started programming to ease the pain of administration. I started with scripting, PERL and ASP and stayed in that area (Including VB) for most of the tech boom. Finally I got a break with my company coming on board for J2EE. It wasn't the first Java app I wrote but it was the first in production. I loved the simplicity of it and when C# was introduced I hoped on it in hopes that I could leverage my current skills to the win32 platform level. I now use C# most of the time and sometimes they force me at gun point to use VB.net. Over the last year I've been working with ANSI C in a *nix environment but that's mainly a learning experience to fill in my knowledge gaps. Being that I'm self taught and have no degree I have to work twice as hard as the next guy in terms of learning and work ethic. But let me qualify all of what I said above by saying that I'm no foreigner to computers. My first experience with computer technology was when I was wee high, my mom explaining everything I wanted to know about computers. She worked for Sperry Univac and showed me the in's and outs of Mainframes, mini computers, and tape racks for days. It sparked an interest in me. I didn't actually get my own computer until she bought me a 286 about 6 years later but before that I would hang around the local geeks and use theirs. We wrote command line games in BASIC that would make a sailor blush, lol. I never imagined I would be a programmer. And to think they actually pay me for this. What luck.
Fri 23 May | Steven C. | I played games on my 8086 and later computers when growing up, but never seriously considered CS as a goal until summer after my sophomore year of college when I had a CS research job. Was so much fun and so challenging, I decided to go ahead and major in CS. So for me: started with scheme in college, then java, then C/C++ -- which is what I code in at the moment. Mostly *nix development, although our tools are hosted on win32 in addition to solaris2, linux, and HPUX.
Fri 23 May | Li-fan Chen | I think your impression is pretty inaccurate.
Fri 23 May | ... | From early 70s - HP 9100, HP 9300, Mini computer with paper tape I/O (no disk), IBM 360, PDP 11-24, Commodore 64, APOLLO, PC. Languages: Basic, Assembler, FORTAN-IV, FORTRAN-77, PASCAL, CLIPPER, Visual Basic, C, C++, Script languages, C# I am amazed how fast the technology changed in a relatively short period of time.
Fri 23 May | old-timer | > Old Timer, > Wow, you really are experienced. Is there stuff that you > think we youngs uns really should be knowing? Yeah. Keep your powder dry.
Fri 23 May | Ian Stallings | [I think your impression is pretty inaccurate] And there you have it. Case closed.
Fri 23 May | Christopher Wells | I was doing quantum mechanics and astrophysics at university (Cambridge UK), wondered what kind of job I'd get afterwards, took a year off before finishing the degree, found a job at Nortel (Ottawa CANADA) where I did network performance modelling and estimation ('Queueing theory') and was happy when they told me to come back to work there permanently when I finished my degree. I finished my degree, and I started to learn programming there as a 'software maintenance engineer'. When after a year I fixed a difficult (I chased it into some microcode) but high-profile (it was preventing a sale) bug, they praised me and promoted me to 'software development engineer'; I spent a year doing that as the junior of a 2-man team (I did the design, he was learning to do management). After those first 2 years, I wanted a 3-month vacation (I'd never had 2-week-per-year vacations in all my life before); they said I could take a leave of absence, if I signed a paper saying they couldn't guarantee me a job when I got back. 2 weeks later at the beginning of my 3-month holiday (now in Oxford UK), I got a phonecall saying there was a new VP who wanted me to come back (to Canada) immediately or resign: I resigned. I looked for a programming job (sending out resumes), got a call from a headhunter (who I'd never written to) offering me a job as a technical writer in Slough (I guess he liked my English), so I did that. After a year in Sough I asked them to double my salary or to let me live in Wales instead; he said he couldn't afford doubling, so he let me work remotely from Wales instead. After that ended, I got a series of contracts as a technical writer for IBM (Rome, London, Toronto). When IBM went into recession they let go of their contractors first, and I was out of work. I had my own Compaq portable though (cost me £2K 2nd-hand) from my tech-writing days in Wales, with DOS and Basic and a WP and nothing else. I taught myself Intel assembler (wrote an assembler using Basic and debug.com, rewrote it in assembler, let the assembler assemble itself). A headhunter who couldn't place me as a tech writer advised me to 'learn C', so I did that by canvassing door-to-door for Greenpeace as a night job while writing some accounting s/w for them in C on a volunteer basis. I later had one more tech writing contract with IBM. Then I was unemployed for 8 months; I found an ad in the government employment center for someone to do tech support, and interviewed for that (- 'Can you talk on the phone?' - 'Yes, if I learn the product and have something to say.'). When I didn't hear back from him, I phoned and said 'I can *do* the job.' and he replied 'OK, come in then'. When I arrived, there was no software product and no customers; the previous programmer had quit, leaving behind a deliberately-mangled set of source code. The source was assembler, so I fixed the sabotage by comparing it with a disassembed copy of a working executable, and went on from there as their programmer. The 1st person I helped to hire did not have a university degree and was working in a warehouse: but he'd written not only an assembler in assembler, he'd also written an entire IDE complete with debugger and incremental assembler: so he was hired... and the company continued on its way over the next 12 years, from 2 programmers with a pair of DOS client/server TSRs to a 1 MLOC system and 20 developers, selling to telcos, the company sold for $26M to a multinational which withered in the dot com crash when