last updated:06 Aug 2003 14:19 UK time
|
 |
|
(Comments added for week ending Sun 29 Jun 2003) | View Other Weeks
|
|
| PHP 5 beta 1 | Sun 29 Jun | John K. |
| PHP 5 beta 1 appared.
It seems they dropped support of MySQL because of a license issue. MySQL support can still be installed easily, but it no longer comes bundled with PHP 5.
PHP uses one type of open source license, and MySQL uses another type of open source license, and the two licenses seem to be, somehow, incompatible, or something.
Maybe from a legal point of view this is correct, but this is certainly going to hurt a lot of users of PHP, because many admins wont bother to install the MySQL extension, and many PHP scripts are written specifically to work with MySQL.
PHP 5 now pushes SQLite, a database engine that is embedded into PHP 5, and is ANSI SQL 92-compatible.
This is the kind of thing that ruins the managers and users trust in open source software.
Im not saying that it doesnt happen in the commercial software world, too, but it certainly happens a lot less!
Im very disappointed by what happened. |
| Sun 29 Jun | Mike Swieton | The flip side of that is this: if the open source community stops respecting their licenses, they give up any hope of getting anyone else to. Licensing issues are of critical importance to OSS land because it's the only protection they have against everything they've released being shanghaid.
They are moving to a less restrictive license here, so that is not entirely the case this time, but in general I think the general attitude is as stated. |
| Sun 29 Jun | John K. | You are right in a way, but I thought that the main goal of a software product should be to help the users.
How naive of me! :) |
| Sun 29 Jun | Tom Davies | In my experience, the majority of the web hosts I have requested to have install additional PHP extensions were very receptive and helpful. For instance, I was looking to switch hosts recently and asked if the PEAR and Smarty modules (which are not standard in PHP) were included. Of the 5 hosts I queried, only one actually had the modules installed, but 3 of the 4 remaining were willing to install 'any' module I requested.
In addition, most of the shared hosts provide mySql database access. Therefore, I would imagine that they would be obligated to include this additional mySql access to maintain backwards compatibility while upgrading PHP.
---Tom |
| Sun 29 Jun | Rodger Donaldson | Your summary of the scenario is entirely incorrect. They have stopped shipping, by default, the MySQL support libraries with the PHP distro, which they used to. You can still build PHP 5 with MySQL support if you roll your own.
And commercial vendors deprecate products all the time. It's hardly unusual. The sky is not falling. |
| Sun 29 Jun | Diego | Via the php|architect weblog:
'Zak Greant, MySQL community advocate, was kind enough to leave a comment on my blog yesterday providing a great amount of information regarding the whole MySQL/PHP hoopla.'
http://blogs.phparch.com/mt/archives/000019.html |
| Sun 29 Jun | John K. | > Your summary of the scenario is entirely incorrect.
> They have stopped shipping, by default, the MySQL
> support libraries with the PHP distro, which they used
> to. You can still build PHP 5 with MySQL support if
> you roll your own.
Yes, that is right. And Johny B. Admin from my local ISP will probably not bother to install it.
I had very bad experiences with asking admins to install ANYTHING on their shared hosting servers.
They seem to think everything is a possible security problem, OR (in very few cases) they are a bit incompetent and are afraid to install the extension.
But again, this may be just my experience.
> And commercial vendors deprecate products all the
> time. It's hardly unusual. The sky is not falling.
Yes, but in my experience 95% of the commercial vendors will not drop support for something without an advance warning of at least one year (and usually a lot more). |
| Sun 29 Jun | Philo | 'Yes, that is right. And Johny B. Admin from my local ISP will probably not bother to install it.'
Then get a new ISP. My last ISP agreed to install ActiveReports for me - that's a major install. If you're at an ISP that supports PHP but won't install the MySQL extensions, you need to shop around.
As for 'dropping support' - there's a difference between dropping support and not bundling any more. While this may be a bit startling, I don't think it's the big problem you make it out to be.
HOWEVER, it seems like the real story here is the validation of Microsoft's fears regarding 'the viral nature of GPL licenses' - IMHO any license that presumes to burden other software like this needs to be examined carefully and preferably stomped out unless there's an overriding reason to keep it around.
Philo |
| Sun 29 Jun | John K. | It means that PHP and MySQL developers decided not to care about the users of their products. |
| Sun 29 Jun | someone trying not to call this FUD | Why are you laying this at the feet of free software when the problem is your lazy ISP? As you say, it can be 'still be installed easily.'
If I were you, I'd be annoyed at an ISP that can install the shiny new PHP 5 but refuses to install a little official extension.
Visit http://www.webhostingtalk.com/ |
| Sun 29 Jun | Mike | Are we going to have to coin a new term for LAMP?
Actually this reminds me of the Apache 2.0 fiasco. Apache 2.0 is a great thing. The problem is so many modules, mod_php etc weren't done at the same time.
I understand that the apache people don't make most of the modules. The problem I have is that because some of these modules are teamed with Apache 90+ percent of the time, to many users of this technology it is like they are one product. In the minds of a lot of people not having the important modules available for 2.0 would be analogous to IIS all of a sudden not supporting ASP.
Open source needs to coordinate release schedules better so they have complete products (solutions) when a new major version is available. Of cours I know that this is like hearding cats, but it does hurt the cause. |
|
| FastCGI or Apache Module | Sun 29 Jun | Alexander Chalucov (www.alexlechuck.com) |
| I have to develop a portable (Windows, Linux) application in C++ which will have browser/http interface. The application will cache large amounts of data in memory, so CGI does not seem to be a good choice. I see two ways to approach the problem - Apache Module or FastCGI. Here are a few thoughts about it:
- FastCGI is supported on multiple web servers (including IIS), which is nice. However, installing Apache on the machine where the application will run is an acceptable requirement.
- The API for creating an Apache module might change. For instance modules created for version 1.3 would not work with 2.0. On the other hand, after the major redesign in 2.0 its less likely to happen in the future.
- I do not expect lots of requests (small amount of requests - lots of processing, the application will be used by one user most of the time), so the better performance of an Apache module (running in the same process) does not matter.
- Most of the things related to FastCGI seem to be in an unfinished, or even worse – abandoned state. Binaries dated 2001 with version 0.6, websites that haven’t been updated for a while … I am not sure whether FastCGI will be developed or even supported well in future.
Have you used FastCGI or created Apache modules before? What are your impressions about the ease of development, debugging, reliability? What about the future of FastCGI? Can you recommend me some examples to start with? |
| Sun 29 Jun | Mike Swieton | I've no experience with what you're wondering about.
However, it seems to me you're going a step lower than really necessary. Is there a reason you're going so low-level? Or would it be, perhaps, more reasonable to use a web-programming platform like PHP?
If PHP is out because of the cache requirement, what about JSP, ASP, directly modifying an embeddable web server, etc.?
I only mean to illustrate that I think there are significantly more than your 'two ways to approach the problem'. I don't know what would work best, as I've done little web programming, but it doesn't sound like you've investigated many possibilities. |
| Sun 29 Jun | Wayne Venables | I have to agree with Mike.
It doesn't seem that any application with an browser/HTTP interface needs to be completely written in C++.
If your application absolutely needs to the power/performance of C++ then I recommend using a client/server design. Build a simple client front end in Java or PHP (I recommend PHP) that connects to your backend C++ server to do the processing. This has the added benefit of splitting up the browser/UI code from the server code. |
| Sun 29 Jun | Tom Vu | If you have to do it in C++ and need HTTP support look for a C++ API that allows you to run a simple standalone embedded http server within your app. |
|
| Does Java Suck? | Sun 29 Jun | IPreferToRemainAnonymous |
| I work for a company that builds web applications. Were currently in the process of moving from a scripting language that does everything we want to Java, simply because large numbers of clients will only consider solutions written in Java. Yes, this is stupid, but necessary for the company to survive. We have hired some experienced Java programmers to ease the transition. However, the Java code written by these programmers runs very slow and seems to take forever to change when clients ask for mods. This is a foreign world for the rest of us because if our previous code took over 1 second to do something we would be wondering what went wrong. Plus, unless a client request was really stupid (50% of them) then making substantial mods could be done pretty fast.
So my questions are: is Java slow and hard to modify and therefore unsuitable for a web apps?
Is the solutiuon to charge more to cover the increased development costs so the clients can get slower applications written in JAVA!
PS: our current script based apps are written in a very advanced manner to form an api-like interface that is very fast, robust and easy to modify. The heavy lifting is done with c++ modules. |
| Sun 29 Jun | John K. | Java is a large productivity and safety gain compared to C++ or C.
However, it is significantly less productive than Delphi, or Python.
Perhaps you can offer your clients 2 prices, one for using Java, one for using whatever scripting language you use. |
| Sun 29 Jun | Walter Rumsby | Well written Java is neither slow nor unmodifiable. |
| Sun 29 Jun | Matthew Lock | I'm always baffled by why clients care what language an application is written in. I don't care what brand of robot built by car.
I would be tempted to implement a small amount of the system in Java and leave the rest in your scripting language.
Which scripting language is it by the way? |
| Sun 29 Jun | John K. | > Well written Java is neither slow nor unmodifiable.
Compared to what? This is the important question. |
| Sun 29 Jun | IPreferToRemainAnonymous | The scripting language is Cold Fusion (yes, it can really suck, but it is possible to write good code in CFML if you know what you're doing). Actually CFMX is compiled to java servlets and then executed (only recompiled if they change). Perhaps that's the answer to my question - if they can run fast then there's no reason why other Java code can't run fast.
Maybe the design patterns used by your typical Java programmer result in slow code? Whereas the CFMX coders probably write really ugly code that is optimised for speed?
That still leaves the issue of development time. I'd say that Java takes 4-5 times longer to write - for the same result. |
| Sun 29 Jun | Philo | 'Actually CFMX is compiled to java servlets and then executed '
Uh, doesn't that mean you're already writing in Java? This seems like a complete no-brainer. If you're running Java bytecode, you're running Java bytecode. It's no business of the client what the source of the Java is...
How does the deployment compare? (Cost & TCO)
Philo |
| Sun 29 Jun | Walter Rumsby | Maybe it's the Java programmers you hired that suck. |
| Sun 29 Jun | Evgeny Goldin | [[ Maybe it's the Java programmers you hired that suck ]]
I wonder why this trivial option never occured to the original poster .. I'll ask another question 'Does people enjoy asking why Java is slow and suck so much without pointing to the developers first ?' |
| Sun 29 Jun | Dan Shappir | And here is an example of how a Java developer can suck:
for ( int i = 0 ; i < 100000 ; ++i ) {
char[] buffer = new char[10000];
... // do something with buffer
}
instead of
char[] buffer = new char[10000];
for ( int i = 0 ; i < 100000 ; ++i ) {
... // do something with buffer
}
QA won't catch it - after all, both work, but it's a bad bug.
Note: the first example is actually a direct translation of *good* C++ code:
for ( int i = 0 ; i < 100000 ; ++i ) {
char buffer[10000];
... // do something with buffer
}
This goes to the discussion previously held on this board about 'leaky abstractions'. The CF example is a justification of my assertion that working at higher levels of abstraction often results in more efficient code.
I assume that CF's developers did a lot of work to make sure that the generated Java code is efficient, work your Java developers must now 'duplicate'. Since they are apparently not as good as the Java developers working on CF, the result is not as good.
Also, it's quit obvious why an environment specifically created for Web applications is more flexible in that context than a general-purpose language such as Java. That is why system developers using high-level programming languages often like to create Domain Specific Languages (DSL) for a problem domain.
BTW, I agree with Philo - just give them the byte code and tell them it's Java. |
| Sun 29 Jun | IPreferToRemainAnonymous | I don't think that the developers suck. Admittedly when I look at their code, it seems overly complex for what it has to do. But I don't think that I'm really qualified to make the call. Perhaps as I start to code more in Java, I'll also have to make very complex inheritance heirachies, etc in order to achieve the same results that can be done in CFMX.
I'd really like to quiz them on why their code is written in the manner it is, but they have no time to spend on educating me because their projects are already running well over time.
They have impressive programming credentials, which is why I just assume that programming in Java is labour intensive and difficult to get right.
CFMX is around US$5000 - fairly expensive.
Java is about US$0 last time I checked. |
| Sun 29 Jun | Chi Lambda | >> 'If you're running Java bytecode, you're running Java bytecode. It's no business of the client what the source of the Java is...'
But the client may want to see webpages extentions with .jsp instead of .cfm. :) |
| Sun 29 Jun | Dan Shappir | >> Perhaps as I start to code more in Java,
>> I'll also have to make very complex inheritance
>> hierarchies, etc in order to achieve the same results
>> that can be done in CFMX.
Are you refactoring your entire framework in order to work with Java instead of CF or is this just a one-off for that customer? If the former than it's quit understandable why it's so hard and takes so long - your programmers are basically recreating CF. CF costs a lot because it was a lot of work to build.
If the later, their implementation should be very specific and thus shouldn't require complex inheritance hierarchies (unless that customer has very complex requirements).
Could be they are simply over-engineering, as programmers are wont to do.
I also have to ask: given your investment, is this project cost effective? |
| Sun 29 Jun | IPreferToRemainAnonymous | Dan - I think you're right.
CF gives us a lot of pre-built stuff right out of the box. In order to rebuild our applications using Java, we'll have to reproduce CF's existing functionality, including the optimisations to make it fast. No wonder it seems to suck to me.
I think that I'm under-estimating the effort required to move to Java. It's like moving into the countryside and trying to rebuild the city that you used to live in. |
| Sun 29 Jun | Sammy | You need to profile the code and attack bottlenecks.
The really sad thing about this is, you have a bunch of cold fusion guys who find java weird. Suppose you were buying a webapp that you wanted to modify. You'd want Cold Fusion over Java, wouldn't you? That's because you find Java ponderous, and your team is full of Cold Fusion ninjas.
If you think about it, CF already had a few Java optimization cycles, whereas in your case, the emphasis was probably on time-to-market and not efficiency. |
| Sun 29 Jun | Johnny Bravo | 'Admittedly when I look at their code, it seems overly complex for what it has to do.'
Perhaps you should judge the produced code by the following rules:
'Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it. (...)
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.'
Although written with Python in mind, I'd say they're valid for any higher level language. |
| Sun 29 Jun | Erik Lickerman | Assuming this post isn't just designed to get java lovers and java haters all fired up I would suggest the following. It is entirely possible that for a given application a JSP implementation would be slower than a ColdFusion implementation but there is really no exuse for it being ponderously slower.
What is the nature of your application? What is it running on? Does it do a lot of database interaction and if so are your developers failing to use connection pooling? Have they looked into all the prewritten tag libraries which are available (in fact, wasn't cold fusion supposed to be available as a JSP tag library by now?). Are they only using JSPs or are they using other aspects of J2EE such as EJBs? In many situations Message Driven Beans (or just your own JMS code) can make apparent performance improvements by decoupling operations.
The short answer to your question is no, Java doesn't suck. Like any other programming language it has strengths and weaknesses and requires good programming and code optimization to be at its best. Yes, I know a pure C++ implementation will usually be faster with less effort, but if you were to code in all the extras that Java gives you (no buffer overflows etc.) I'm certain you could slow it down quite a bit.
Also, switching languages because a customer wants you to is stupid. The proper response is to try to talk them out of it, but if they insist you need to decide if the cost of the new development is higher or lower than the money these customers will or will not pay. |
| Sun 29 Jun | Savage Planet | Back in 2000, I wrote a few dynamic web pages using Java servlets (I used Apache's Tomcat). They were the standard database driven stuff. A form post would write to a database and each page displayed information in a database.
The speed of a page fetch was fast. No noticeable delay at all.
Perhaps the programmers you are using aren't very good. In my time I've seen Java programmers do silly things. For example, database connections weren't being cached and so each page fetch would have to make a new database connection. Very sloppy and very slow. I've also seen some Java programmers forget to close (or better still return to the pool of cached database connections) the database connection after the database query was over. A few dozen page fetches and all the connections will be used up. |
| Sun 29 Jun | Clutch Cargo | Yes, Java does suck. |
| Sun 29 Jun | coresi | I can not help … Slow weekend, I have to enter the fray …
Dan Shapiro: I mean no offense, but everything is relative…
1. One may notice your example number one sucks in any language but some are more resilient due to fast memory allocations and a lack of GC.
2. How do you know how
“char[] buffer = new char[10000];”
compares to
“... // do something with buffer”
without profiling?
As far as the casual observer knows “char[] buffer = new char[10000];” can be completely insignificant in the grand scheme of things.
3. An experienced designer would point out even example number two sucks since creating a memory pool will avoid unnecessary heap fragmentation and memory allocations for you entire application.
I know… This solution sucks. |
| Sun 29 Jun | Dan Shappir | It's Shappir not Shapiro :-)
Anyway,
One may notice your example number one sucks in any language
Not so. I provided the C++ example to show that it need not always suck. Indeed, in C++ it's better to put such a buffer definition inside the loop for scoping reasons. I actually saw this error while reviewing code that was translated from C++ to Java.
be completely insignificant in the grand scheme of things.
Everything is insignificant in the grand scheme of things, but doing 100000 allocations of 10000 words when a single allocation would suffice is generally a Bad Thing.
And yes, I never optimize before using a profiler (well, almost never; sometimes I just can't resist ;-) |
| Sun 29 Jun | coresi | >>It's Shappir not Shapiro :-)
I apologize, my honest mistake.
>>Everything is insignificant in the grand
Exactly. No reason to bash one language or another…
>>but doing 100000 allocations of 10000 words when a single allocation would suffice is generally a Bad Thing.
My Electrical Engineering background says while allocating more than necessary is a waste, if it takes one order of magnitude less time than the “// do other things” line you can safely ignore it. |
| Sun 29 Jun | Andy | Not to be pedantic, but the C++ equivalent would have the same problem.
you could do:
for ( int i = 0 ; i < 100000 ; ++i ) {
char* buffer = new char[10000];
...
}
In which case you would also have an enormous memory leak!
I don't really see how this is an example of Java developers sucking. It just means when you translate from one language to another, you should:
1. be careful, I could see anyone doing this if they were rushed with a deadline
2. actually know both languages and know their differences |
| Sun 29 Jun | beaver | yes, java sucks. |
| Sun 29 Jun | Daniel Shchyokin | What app server are you running on?
is it tomcat/bea
or resin/orion
also are you using ejb's |
| Sun 29 Jun | | I'm curious that you say the Java programmers have good 'programming credentials.' What does that mean? They have little certificates? It doesn't sound like they are experienced i.e. good developers.
Java and especially J2EE can suck badly. Things like EJB's encourage developers to bloated overkill. Struts is a good way to make code dangerous.
As Walter Rumsby says, it is possible to write good code in Java, but it's common to see poor code, perhaps because J2EE has attracted all the little certificated trendoids. |
| Sun 29 Jun | Walter Rumsby | I'm still wondering what you're trying to do with your migration CF to Java. My understanding is that .cfm pages these days are alternatives to/implementations of JSP pages - basically CFML is not unlike Velocity, Struts, WebWork, etc as an alternative view technology.
So, all your view logic should/could still be in CFML tags. It's stuff like that shouldn't be being used - Java should be doing the 'heavy lifting', ie. anything that is not simply outputting, looping over for instance table rows, etc.
Is my understanding of CF MX correct? My impression is that basically the CF server is now JRun and .cfm pages get turned into .jsps and/or servlets? Do your Java guys know this or are they potentially recreating CFML without realising that it already exsists?
'Complicated inheritance hierarchies' also raises a red flag. Overuse of inheritance suggests a naieve understanding of OO. Using EJBs where they are not needed can also be problematic.
Finally your clients insistence that your applications be Java and not Cold Fusion based seems to reflect Allaire / Macromedia's thinking - larger scale applications should be written in Java with CF as the view technology. This seems to suggest that your clients simply want flexible applications. Given all of this you can give them CF-based applications that are also J2EE applications - maybe they need to know that.
(Aside, Ben Forta's JSP book is very very bad - he is/was the author of the most well regarded CF book when I was working with CFML in 1998, but the JSP book is riddled with syntactical and ideological errors). |
| Sun 29 Jun | Neil Bloh | 'Beautiful is better than ugly.
Explicit is better than implicit.'
etc.
This list is probably one of the most useful comments I've seen on the Joel on Software Forum. |
| Sun 29 Jun | Jim S. | No, Java does not suck. However, it can be argued that most Java programming teams suck (as do most C++ programming teams, and most LISP programming teams, and most Visual Anything programming teams, ad infinitum.)
Think about it this way: your team spent years finely crafting and honing a solution tailored to specific circumstances. The new Java guys came in and slapped something together. The question isn't 'Does the new stuff suck?' Of course it sucks. Nor is it 'Why does the new stuff suck?' The question is 'Do the new guys have the talent and management have the patience, savvy, and money for the new team to gell into a highly-productive team?'
Another way to think about it: were the Java guys told to optimize their solution for performance and flexibility or were they told to get something operational as fast as possible? Teams optimize what they are told to optimize and they do it at the expense of other things. This is commonly aphorized as 'cheap, fast, good: pick two.' For large values of cheap and fast, it ends up being 'pick one.' |
| Sun 29 Jun | Mike | Java can work for you. It requires more knowledge to build fast apps with java than many other languages. I base this on the fact that many believe java to be slow. Where did that impression come from. From witnessing slow java apps.
I do not mean to imply java cannot be fast, simply that it is apparently incredibly easy to write slow apps concluded by the fact that there are so many slow apps. Maybe there aren't enough smart java developers.
My opinion - write it in whatever you want, it is your product, not your customers. If you make it do what you clients want - that's it. |
|
| How much surveillance is too much? | Sun 29 Jun | John Wilson |
| http://www.thescotsman.co.uk/index.cfm?id=702632003
From the article:
EVERYONE does it. Millions of people use their office internet access to check out cheap flights, home shopping or celebrity gossip.
Sending e-mails and jokes to friends has become a common ritual in the working day, but now there’s a new term for personal use of the corporate web server - cyberslacking.
However, the fun could soon be coming to end thanks to a Glasgow technology firm.
Experts at Iomart have devised a new Big Brother software system, called NetIntelligence, which will show managers just how much time employees spend surfing the net rather than doing the job they are paid to do.
[...]
Mouse movements and keyboard strokes are all recorded, letting managers see what employees are watching on the net, who they are e-mailing and which sites they have logged on to.
What do you think about this? My first thought is that if the company feels they have to install something like this to get their employees to actually work then the software isnt going to fix the management problems that got them to where theyre currently at. Whereas if a company installs this because they feel robbed by an employee spending 5 minutes checking plane ticket prices for an upcoming vacation, then their corporate culture is already so dysfunctional and fear based that it would amaze me if anything gets done. |
| Sun 29 Jun | Philo | Go read all the 'can we measure productivity by counting lines of code' threads - the same concepts apply.
Employee productivity should be measured by tasks assigned and completed. This works at any level. If John works his butt off and produces 25 widgets a day, but Jane can produce 30 widgets a day while surfing the net for 30 minutes, should management really be chastising Jane for not being productive enough? [net result: Jane takes her efficiency to a competitor and makes 30 widgets a day for *them* and instead of 55 widgets a day you're getting 25]
Tasks assigned, tasks completed. HOW they're completed is none of your business.
BTW, there's also a really good Dilbert about this - the Boss is beating him up about spending ten minutes doing online banking. Dilbert agrees and says next time he'll take the hour and a half it takes to actually go to the bank.
Philo |
| Sun 29 Jun | Philo | One other thought to sum it up:
Are you paying your employees to accomplish tasks or are you paying them to sit in a chair?
Philo |
| Sun 29 Jun | multi_faceted_dev | Not only is it dysfunctional, but it's missing the point. Software development is not typing, it's creative thought. What you're essentially measuring is not 'slacking' with these tools, but time not spent typing emails or in an IDE.
I think this may work fine for certain environments where there is a cheeseburger-factory-style work process, and that's acceptable. For knowledge work, it's probably a great way to destroy productivity.
The furrowed-brow, 'work is not play' types may enter their myriad complaints now--I know what I'm saying doesn't jive with the boardroom politic. But even so, there's probably a basic inequity here, namely:
Who would be watching the managers? How about the CEO? Does this anti-'cyberslacking' initiaive reciprocate? Would we have 'Productivity Departments' to independently measure cyberslacking up and down the corporation? Who would measure them?
I maintain that people, at least in knowledge professions, should be judged based on their output, not on their process. If cyberslacking is so bad, surely it will show up in performance. And if the sole purpose of this is to incentivize people to work harder, then one wonders why a company hires 'slackers' to begin with... |
| Sun 29 Jun | Philo | By the way, I think it was Joel that pointed out - let your employees be happy in the office and they'll spend more time their. Make their lives oppressive and miserable and you will get exactly 480 minutes a day out of them and not a drop more.
Philo |
| Sun 29 Jun | Matthew Lock | That was Greenspun who said that if you make the office nicer than the home they will stay at work longer:
'Your business success will depend on the extent to which programmers essentially live at your office. For this to be a common choice, your office had better be nicer than the average programmer's home. There are two ways to achieve this result. One is to hire programmers who live in extremely shabby apartments. The other is to create a nice office. Microsoft understands this. In the early 1990s they did radio spots with John Cleese as a spokesman. One of the main points of the ad was to ridicule the cheap open-plan offices in which programmers were traditionally housed and promote the fact that at Microsoft each developer gets a plush personal office'
http://philip.greenspun.com/ancient-history/managing-software-engineers.html
(Great Article by the way) |
| Sun 29 Jun | Mister Fancypants | The flipside of Greenspun's advice though is that many managers tend to just grab on to fad ideas and not try to understand the logic behind them. This can result in situations where you have a nice office environment and many employees who stick around for 10-12 hour days (doing things like non-work web surfing and playing games mixed in with their work) and then people who just want to go in for their 8 hours and get home to their families, friends, or whatever else are seen as slackers, even if they are as productive or more so than the 12 hour workers.
In the end, what you really need more than any specific business idea fad is managers with some common sense, which (as I'm sure many of you are aware) is frightfully uncommon. |
| Sun 29 Jun | Phibian | Incidentally, there's another use for this kind of software...
I've done quite a lot of investigation of these over the years (the concept is not exactly new) because they can be very handy for
a) tracking what you are doing all day (so that timetracking stuff for billing, for example, becomes automatic)
or
b) keeping a testing record on a machine for debugging purposes. (Very handy for those intermittent and obscure bugs for which you have no idea what you did to cause it. If you have keylogging and screen capture software installed - you can go back and see.
I've never really come across software of this type that I like, however. It usually has one or more of the following drawbacks: a pain to use, has incomplete tracking, is hard to report on or impacts performance. |
| Sun 29 Jun | Ioao | Funny thing is what a friend of mine does. The first thing that he does when he gets to a place with net connection is to plug his notebook and check emails and news, etc. But, he owns a little business, that doesn't have net connection for his employees. Smart guy :-) |
|
| Software protection | Sat 28 Jun | Boris Yankov |
| I am thinking about how to protect my upcoming software.
I saw that SWREG.com - a popular web site for payment supports ASProtect, Sikandersoft Safeserial, and Armadillo.
So far so good.
But just a quck search on google with ASProtect crack and I found a tutorial how to crack ASProtect itself.
So I am wondering if these protection really work.
I know I can protect my software relatively well, because I have read a lot about this matter. But protecting it with a popular Protection System I may actually make it easier for the crackers.
Do you have any experience regarding this topic? |
| Sat 28 Jun | Jimmy Chonga | No software protection technique is going to be invulnerable to piracy, but that isn't really what you should strive for: The productive goal is to make it inconvenient enough for the majority of your potential customers that they just won't bother, and presuming that the cost of your product isn't too onerous, they'd just as well rather pay the honest price rather than hang around in IRC looking for cracks which might be loading their system full of trojans. |
| Sun 29 Jun | Boris Yankov | I will certainly make the app easy for the registered users to use.
But that doesen't mean I don't want a decent protection of my program.
Other opinions? |
| Sun 29 Jun | Troy King | Boris, I don't think anyone has the perfect solution to this problem. I've been reading about products and mechanisms to protect software for 15 years, and have never heard of one that couldn't be cracked. Even hardware protection (like dongles) can be cracked. The hackers disassemble the app and remove the checks. They are exceedingly good at this. |
| Sun 29 Jun | Johnny Bravo | Wait until TCPA/TPMs are incorporated inside MS Windows/Intel CPUs/Mainboards. If it yields true what I've read so far about the combination of the three components, you as a developer will be able to run your code in a protected environment where tampering your code will be prohibited at the lowest level, which is in hardware. |
| Sun 29 Jun | Andy | Hardware features may make something more difficult to crack, but it is still crackable. As long as your program resides on the disk as a pile of bytes accessible to anyone, it is possible to crack.
Just look at the XBox, Microsoft could have done anything they wanted and it still got cracked. Well I'm not sure it's the exact same thing, but now you can run any executables on XBox, not just Microsoft's signed executables. |
| Sun 29 Jun | Philo | Content management keeps honest people honest. *Nothing* has ever worked to keep programs from being stolen - they've only made it harder.
There's a digital rendering package that has a hardware dongle (Maya?). I've had it running on my PC.
The lesson - be careful how much effort you put into your software protection schemes. I think you quickly pass the point of diminishing returns, especially when you consider that protection schemes piss your users off.
Also - time spent implementing software protection is time better spent working on your code.
What makes me pull out the credit card:
a) Quality code with the features I need
b) Nag screens
c) 30-45 day expiration date
If it's a component for use in distribution packages, make sure to render 'EVALUATION USE ONLY' in the client UI if you can.
Philo |
| Sun 29 Jun | | Change protection schemes from time to time and keep up on what the hackers are doing so that old cracks, hacks, public serial numbers, etc. are no longer valid in the next version. Do small dot releases basically for this reason alone. Make your app large enough to dissuade anyone from posting it in it's entirety on a hack site. Once you become big enough it'll be unavoidable... everyone and their brother can get a copy of Potoshop.. |
|
| Link Colors observation | Sat 28 Jun | Philo |
|
Something of note - during the debate about the absolute necessity that links be a uniform color, nobody brought up that the darling of the JoS crowd, Google, doesnt follow this convention.
The links for Cached and Similar Pages are grey.
Also check out Google Groups - the links for the group name and View Thread are green. Anyone heard any complaints about users being lost on Google? Will one of those advocates of Blue/Purple uber alles please write to the good folks at Google and tell them they dont know anything about website design? [grin]
Philo |
| Sun 29 Jun | X. J. Scott | Dude!! Fantastic catch! There aren't too many people arguing that google is a poorly designed site confusing for visitors to use.
As for me, I've been using the internet since before the web existed and I still can't remember if it's blue or red or purple or whatever the default is supposed to be.
Here in Safari, it's bright blue and dark blue. Now I think that the brighter, more saturated colors mean unvisited -- that I can remember since it's sort of intuitive. But blue vs red vs green just doesn't make any sense to me and ten years from now after seeing it a million times more I probably still won't remember it. |
| Sun 29 Jun | Tom | Do you want a prize? But seriously -- if you look carefully, the links that _matter_ (i.e., point to the pages you are searching for) are the same colour as the default settings in windows. (Interestingly, if you have changed your settings, Google does not notice -- I suppose they have set the colours explicitly.)
I changed my IE colours earlier today, for black-on-white is proving too much for my poor mince pies. I changed my link colours while I was at it. This made a _big_ difference; I was lost for about an hour or so, just through having to look twice when visiting a new page through not being accustomed to the link colours.
But I'll not be annoyed at web designers ignoring me until they start asking me about C++.
(Incidentally I think that Google _is_ a bit tiresome to use, because it doesn't let you bookmark an advanced search (groups or web) page that is set to display 100 results per page sorted by your preferred criteria.) |
| Sun 29 Jun | John Topley (www.johntopley.com) | Tom,
This URL will go to the Google Groups advanced search page, set to display 100 results/page, in English and sorted by date:
http://groups.google.com/advanced_group_search?hl=en&num=100&as_scoring=d&lr=lang_en
You've just got to decode the URL parameters, which isn't hard. |
| Sun 29 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | This site overrides colors, too. It forces the white background and the black text (although it seems to be obeying the link colors properly). |
| Sun 29 Jun | FirstNameRequired | with the target audience of slashdot being computer geeks, I would be astonished if there _had_ been any complaints.
certainly doesn't change the core idea. good usability required consistency. |
| Sun 29 Jun | Philo | How did Slashdot come into this? I'm talking about Google.
'certainly doesn't change the core idea. good usability required consistency.'
The core idea is 'make users happy'. With Google being one of the top web sites in the world, I'm thinking they've done that. Now mind you, it's their content that's done that, but I don't recall *ever* hearing a single complaint about Google's interface - in fact generally I hear praise for how clean it is.
So that challenges the assertion that blue/purple is the only acceptable color for links.
Philo |
| Sun 29 Jun | mb | If you understand why the rules are there, you can break them.
they use standard link colors for standard links, standard text for the main data, bold for the stuff which is important to you (words matching the query), a second color for the link (the actual thing you which it found for you, but not the main 'human' data), and grey to indicate other things an advanced user can do which are not part of the core result set.
i wonder if they wrote up their thought process? the above is based on what i can see as a user. |
| Sun 29 Jun | FirstNameRequired | 'How did Slashdot come into this? I'm talking about Google.'
sorry...slashdot on the brain today for some reason.
'in fact generally I hear praise for how clean it is. '
not to argue that point but the most praise I hear about google is how it resists adding pointless images....IMO that fact by itself places it faaarrrr ahead of any other search engine.
but anyway...
'So that challenges the assertion that blue/purple is the only acceptable color for links.'
not really.
Google still uses the standard blue for the most important links (ie, the links that its most important the customers recognise)
On its home page for instance, nothing but blue links as far as the eyes can see.
If I perform a search ('importance of consistency in web design) I get every search result with its own, _blue_ link at the top. These are instantly recognizable as links and if this search result is a good one this is the link that 99% of users will care about.
Underneath each result is a link in grey, showing a rough hierarchy, not many people will need this and it makes sense that the link colour is slightly different to the more importance search result at the top.
Finally there is green text at the bottom giving the full url (is not a link however) and beside that a grey link to the cached page. Again, not many users at all will be interested so it makes a lot of sense to use a less 'in your face' colour.
A similar approach is used for groups and the other areas.
Overall Id call it a very good design by someone who understood both the importance of maintaining consistency _and_ where it was best to do so.
Certainly Id be willing to bet that if you emailed the google development team and asked them why they choose blue as the color for their main links, they would explain the importance of using that colour as an aid to usability. |
| Sun 29 Jun | FullNameRequired | oops...sorry, it looks as though Ive just repeated mb's points again.
....definitely not my day... |
|
| Aeron vs Mirra - Mortal Kombat | Sat 28 Jun | Tim Sullivan |
| My current chair, which has served me well for 4 years, and given me a place to uncomfortably perch for the last 1 is finally at that point in the lifecycle where you need to take it out back an pump a few bullets into its back support.
So, while I continue to sit on the soon-to-be carcass (and scrape my arms on the exposed metal), I needed to decide what chair Im going to replace it with. I went down the the nearest Herman Miller showroom to try out the infamous Aeron as well as the newer Mirra model.
Now, Im not a small guy. Im not fat, but Im 64 and weigh about 255. I sat on the Aeron for the first time and it felt great. Fantastic. I leaned back a little bit, and it felt smooth and then I leaned back all the way.
Goosed.
I totally was not expecting this at all. The sales guy (who was about 5 shorter and 20 pounds heavier) said that on his Aeron he uses the tilt limiter to avoid that problem. I tried it, and in order to ensure no ass-to-whatever contact, I was only able to lean back about 40% of the way that a smaller person would be able to. So while sitting up it was nice, leaning back was less enjoyable, especially for a chair that runs CDN$1500 once you factor in the taxes and delivery and so on.
Then, I sat in the Mirra. Before doing anythinge else, I leaned back to check for ass contact. There was none. The trip back was also smoother than the Aeron. The seat is a similar material as the Aeron, allowing for a cooler seat during long work periods. The back is made of a flexible plastic material that gives more than the Aerons frame does when I rotate my body (like, say, when my GF comes in to ask me a question!)
There is, of course, some ego to include here. I want the best chair I can, and money really isnt an object. The Aeron is the high end chair, and the Mirra is the mid-to high end chair. The Aeron is more expensive, and given that its from the same company, that usually means its better. However, I must say that after spending about 20 minutes in the Aeron and 30 or so in the Mirra, I way, way prefer the Mirra. I like the colour and design better, I like the fit better, I like the absence of ass contact better, everything. Even the price is better: $1150 fully loaded with tax and everything.
So, I ordered one, in a nice, light yellow (citron) colour. Now, I just need to suffer for 8 more weeks until it comes to my home. :-) |
| Sat 28 Jun | Mike Swieton | Not to be an asshole (or more of one than usual), but what is the point of this post?
You are not asking for advice, as you've already ordered it... I don't mean to be telling you not to post here, but it looks like an ad (not that I really think it is, but you see my point, don't you?).
Anyway, I also dislike the wierd ass-contact on the aeron. We have a few at work. I honestly find I work better on a cheap little $80 office chair. It works well for me, though wears out in a year.
Anyway... yeah. |
| Sat 28 Jun | Tim Sullivan | I'm not sure why I forgot to include the last paragraph:
I'm interested to hear other people's stories in the chair finding realm - good, bad, other. I'm especially interested to know if anyone else has used the Mirra for longer than 20 minutes, and can comment on how happy they are with it longer term. |
| Sat 28 Jun | Tom | Doesn't the Aeron come in three different sizes? Did you try the largest size? This might have alleviated your problem. |
| Sat 28 Jun | Ken Klose | I own the Aeron (in the largest size) for about two and a half years down. Never had any grab-ass problems, but I can tell you that the mesh that constitutes the seat and back stretches over time so that the chair is no longer as comfortable. It feels like you're sitting in a pit. For the price I wouldn't get another. |
| Sat 28 Jun | Konrad | I've sat in an Aeron for the last two or three years - what is this ass-contact of which you speak? I'm not sure I have experienced it, could someone describe it? |
| Sat 28 Jun | Philo | It happens right as you're writing the $800 check for a chair - it'll feel like a deep probing sensation in your hindquarters...
[g,d,r]
Philo |
| Sat 28 Jun | Chas | I discovered a 'mesh' office chair through the Staples online store that is bar-none the most comfortable chair I've ever sat/worked in, for $100: http://www.staples.com/Catalog/Browse/Sku.asp?PageType=1&Sku=456359
It has excellent back supports, both at the lumbar and shoulder blade levels, and the mesh material makes it very breathable and cool in warmer environments.
The oldest one I have is two years this summer, and has taken quite a beating (I'm 6'3', currently 235 lbs.). About the only thing the chair lacks is adjustable armrests, although they're at the perfect height for both me and a friend of mine who's 5'9'. |
| Sun 29 Jun | Tim Sullivan | For the record, it was the C chair I was sitting in. Basically, when I sat back, I was no longer resting my weight on the mesh, but on something hard below it.
As for the mesh stretching, it does seem to be covered by their 12-year warrantee that covers all aspects of the chair, so if yours has stretched, you probably want to call them and get it fixed.
It's funny - I never noticed how hot my seat got until I started looking for a better chair. :-) |
| Sun 29 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | +1 for being goosed. I'm not small, either, built similarly to you, and it happened to me in a C chair.
Also, let me warn you: sit fully on the seat. Sometime in the last decade I've gotten in the habit of 'half-sitting' on the front-half of the seat of my chair. Not even sure why it's become a habit (although I do move around a lot, so maybe that's why). The Aeron seat is absolutely not designed for this, because the entire support for the seat is in the back (unlike most chairs, which have support in the middle), so you'll snap the plastic in no-time flat. :( |
|
| developer doing design,testing,documentation | Sat 28 Jun | anon |
| I am a single programmer working on a reasonable size data mining project.In addition to design, research, finding appropriate algorithms, coding etc.. I am spending a whole lot of time in testing and documetation in the project,
how do other developers balance these aspects?
I am finding getting immersed in testing, I am neglecting other developmental activities.
I work in small company with no testers or tech. writers, how to balance out the responsibilities, given that I am primarily a dev. guy? |
| Sat 28 Jun | Giovanni Corriga | I think that testing _is_ a development activity. If I don't test your code, I can't be sure neither that I've build the right thing, nor that I've build the thing right.
That said, I think that you should try and automate your tests. This way, the time you spend on testing is just the time needed to code them.
As for the documentation, what kind of documentation are you talking about? User Manual? API reference? |
| Sat 28 Jun | Giovanni Corriga | Errata: It should have been 'if I don't test _my_ code...' |
| Sat 28 Jun | Pete | unit testing is one thing - UAT/system/regression testing - are not (IMO) developer activities - requires a different set of skills (and a completely different attitude). |
| Sat 28 Jun | DingBat | Actually, this doesn't sound so much like a 'what responsibilities belong to developers' question as it does a workload management question.
Your situation may not be ideal when it comes to a developer environment but you're stuck with it (unless you can convince the company to hire a tester). In that situation, I would say that the most important step is to try to get rid of the attitude that testing is somehow diverting you from 'more important' developer tasks. Since you are literally 'it' on this project, it's ALL important.
Do you create your own schedules as well? Or do you have a manager or someone who does this? Either way, you have to be more involved here and work to create sane schedules. Single threaded development teams are much more sensitive to disruption, etc, so you should be building more slack into the schedule.
One thing we've definitely learned in our group is that developers almost invariably underestimate the amount of 'noise' in their daily lives. I would recommend really trying to figure out what proportion of a normal 8 hour day you actually spend working on the project and what you have to spend on 'infrastructure' work. That can help you when you're scheduling.
Good luck. |
| Sat 28 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | I'd say, set milestones for yourself. Have a certain amount of functionality done every couple weeks, and devote, say, a full day or two at the end of those two weeks to test what you just wrote. |
| Sat 28 Jun | Daniel Shchyokin | find the eventual user and get them to do the testing on the UI
automate the API based tests |
| Sat 28 Jun | Mike Treit | My opinion: your company needs to hire some testers.
Unless your project is trivial, it is a mistake for testing to be done by the same people who wrote the code.
Ideally, you should have some dedicated test folks who are responsible for the end-to-end testing process, including component testing, integration testing, API tests, perf testing, scalability, customer scenarios, etc.
Your role, as the dev, should be to own unit testing (usually very basic component tests created around knowledge of the internal workings of the code), and take responsibility for executing automated tests (BVTs, acceptance tests, etc.) provided by the test team when you make changes to the code.
I think most people would also agree that having developers document a product is less than desireable.
Obviously saying 'hire some testers and writers' is easier said than done, but your product quality and schedule will suffer if everything is owned by the dev team. |
| Sat 28 Jun | | I always thought a developer did test, code design, documentation, and analysis. I guess it goes back to job titles mean different things at different places. |
| Sat 28 Jun | Barry Sperling | In my small company every developer does everything. Beyond the time I take personally for testing and documenting, I send continuing versions out to my actual client ( in the govt. ) who uses it in his work, then calls back with complaints and suggestions, leading to continuous bug fixes and additional features ( my boss, also, has a continuing flow of new feature suggestions ). Somehow, it all seems to work and the client gets his work done, too. |
| Sun 29 Jun | multi_faceted_dev | The answer is: you can't balance these aspects. Alchemists can't turn lead into gold, either.
Developers should unit test and do basic integration testing. They should communicate their technical decisions on a certain level. Beyond that, they're fish out of water. You don't have the unbiased perspective to do decent testing, so your customers are going to test the product. That's just a fact. It's not pretty, but it's likely true. And you are not a documentation person, and writing decent documentation is very time-consuming, so chances are your documentation is going to suck, unless you are an English savant. Again, a not-pretty fact.
And I don't agree that one can stretch the schedule in this case. A company that doesn't have the money to hire testing or documentation resources probably doesn't have the money to stretch release schedules, either. If they do have that kind of money, then they're probably managing it very poorly by not spending it on testers or documentation (since it's pretty well-established that both, especially testers, generally produce a good return for software projects).
So what you have is a conundrum, and it's one I know very well: you have three full-time jobs, and only one full-time. :) My suggestion is really quite simple: do what you know how to do, well, and do everything else to the best of your ability, and that may not be very well. Don't worry about 'balancing,' because you just can't be a jack of all trades and master of them all.
Anyway, this is a business problem, and so I hope your business has a great justification for contuing to impose it on you. |
| Sun 29 Jun | Bored Bystander | >> I work in small company with no testers or tech. writers
Everyone: This sentence in the original post says it all.
I've made my coin for years in software product development for small companies, as a consultant. What happens in the very smallest companies (including some quite successful ones in their respective realm) is that there is simply no money, time, willingness, or conceptual ability to deal with more players than one or two 'jack of all trades' person. Today I want to beat that last attribute, 'conceptual ability' into the ground...
Small companies exhibit both the best as well as the worst aspects of commercial life. The best aspect is that workers in that context tend to be extraordinarily motivated and self reliant. The worst aspect is that owners can be extraordinarily cheap, stupid and short sighted, and they can be very successful even though they do all the wrong things.
It's like an old slogan I saw in an underground comic: 'if I can't eat it or f*** it, then p*** on it.' Small company owners tend to have to see a direct physical relationship between an activity and an income producing product. They tend to be fairly incapable of the sort of abstract reasoning that allows them to understand that certain processes (such as test or documentation) complement direct tech work and result in higher quality for the user and thereby a competitive advantage. They just can't and won't believe, for instance, that test or docs aren't best done by the person that develops the code.
Note to anyone proposing to hold income producing business owners on a pedastal as a higher and Godlier form of life: absolutely don't. I work with a person in this context, a self made millionaire, who essentially lives and acts like a 5 year old and treats his employees and their own time like his personal possessions. I know a partnership of people that lucked into early success who are egotistical self centered jerks. Success spoils. |
| Sun 29 Jun | multi_faceted_dev | Bored:
You really said it all. If it won't offend your copyright-holdign status, I want to have that post framed and placed on my wall.
I have a personal saying, from my experiences in a small company:
'Wanting to work for a small company is like wanting to live in a third-world country.' |
| Sun 29 Jun | Bored Bystander | Multi-facet: trade yah... ;-) Sure.
>> 'Wanting to work for a small company is like wanting to live in a third-world country.'
LOL! How true. |
|
| Nitpicking Christopher's resume | Sat 28 Jun | Philo |
| Im bored and stuck on a coding issue, so I figured Id post some of *my* thoughts on Christopher Wells resume
http://members.rogers.com/xwells/resume2.doc
(which he posted in the number of pages in a resume thread)
Im doing this both to give Chris some feedback but also to talk some of the points out before I update my own resume.
So, starting at the top:
over ten years experience? If you started in 1981, you have over twenty years experience. I recognize that that statement brings forth visions of COBOL dinosaurs, but my first reaction to the discrepancy was math error? Im thinking twenty years experience with internetworking technologies and ten years of software development or words to that effect.
ASPs?
MS SQL Server & Oracle - put versions (Im guessing Oracle is 8i or 9i?)
Tools - drop Visual C++ (the ambiguity should work in your favor), add Rational in front of ClearCase.
Experience - from 1985-91 you were a tech writer? Or did you still have a hand in the doing part of things? Nothing wrong with being a tech writer, but if you did other stuff, get it in there.
Really need to fill out 87-91 a bit. Feels weak, especially if youre looking for a coding job.
Im not sure about the Projects page, but I do know when I went to read it my eyes kept slipping off the page. Then your second bullet in a whole page of accomplishments was read books. I really think that needs to go. At the very least move it *way* down the page.
The problem Im having with the Projects/Technology page is that the value of experience changes over time. For example, the SQL - makes a huge difference whether that was Sybase in 1991 or SQL Server 2k in 2002. Yeah, you can cross-reference, but we know how successful *that* would be.
I still think this info is more valuable placed in the mix with the chronological history. I know in every interview Ive been through, the interviewer seemed comfortable with simply regressing back through my experience, discussing projects listed, until it wasnt relevant any more.
Im curious to hear what others think of this style?
Philo |
| Sat 28 Jun | anon | The 4 years of SQL but 5 years of SQL Server caught my attention. |
| Sat 28 Jun | Jason | It's incredibly dense, in terms of the amount of text. If you've been working for 20 years, that amount of info is probably justified, but it's a lot to read.
I'd suggest creating 2 resumes. a) should be a thinned down executive summary that just lists hilights, not every single thing. Use that to get your foot in the door. When you actually land an interview, you can pull out b) and say 'here's a more in-depth version of my resume'.
I think a lot of HR guys would look at your current resume, say 'overqualified' without even reading all the way through it, and move on. |
| Sat 28 Jun | . | I agree that the resume looks packed, and information has obviously been squashed in. But that's not a big problem.
Overall, the resume describes a highly capable, very experienced developer with good business experience. If I was hiring, that's the sort of person I would be inclined to hire even without bothering about an interview.
After I read that resume, I agonised over what's gone wrong that such highly talented people are not getting jobs. |
| Sat 28 Jun | ymmv dude | Very nice!
Maybe one suggestion, which may or may not apply, ymmv, etc: save something for the interview.
I like to use the resume as a highlight and save the interview for the details.
Has Christopher been having trouble finding work? That would fit in with my theory that most employers don't need or want high caliber people. They just need a cheap code monkey.
If we had a union, we'd make everybody write everything in assembly! :) |
| Sun 29 Jun | . | No, do it like lawyers. Before you start any work for them, you get the deeds to their house. Then, on top of your fees, you charge $2 for each photocopy, $5 for each phone call, and so on. |
| Sun 29 Jun | Philo | Just wondering, ., if you smile and nod approvingly when people say that computer geeks are all antisocial jerks with no personality that live in their parents' basement.
Philo |
| Sun 29 Jun | Christopher Wells | Thanks for your comments.
Philo, that was interesting your saying, 'when I went to read it my eyes kept slipping off the page'. Perhaps that's due to the vertical lines in the table, and the way that the bullets line up. I reformatted as http://members.rogers.com/xwells/resume3.doc with section titles and body text instead of as a table ... perhaps it's more human now, less machine-like; but still full.
You also said 'I still think this info is more valuable placed in the mix with the chronological history'. As you know there is an example of the resume in that format at http://members.rogers.com/xwells/resume.doc ... it is a risk to stray from the standard format, but I'm not sure that it is more valuable placed in the mix. Given your next sentence, 'Sybase in 1991 or SQL Server 2k in 2002', in resume3.doc I did squeeze in an extra line at the top saying 1995 through 2003, and I changed the 'PROJECTS' title to 'RECENT PROJECTS', in case the only concern was that I was pulling in old experience from the 1980s.
What I really liked about the resume2.doc/resume3.doc format are the extra section titles. If I put these section titles inline the chronological history, then the document would have three or four levels of nesting/heading, instead of two.
The section titles are 'transferable skills'. I found myself explaining in cover letters how my experience matches skills like these that are listed in the job advertisement, and thought it could be convenient if this information were in the resume itself.
Note that in Emerick's case in http://cs-people.bu.edu/emerick/resume.doc there may be some connection between the two companies he's worked with (they seem to be both approximately email-enabled workflow products).
In my case I'm writing a 'functional' resume, partly for non-technical HR people, but even for people with development experience because it's likely that my next job won't be with people who are writing another Windows fax server.
http://www.quintcareers.com/functional_resume.html (Google's first hit for 'functional resume') agrees with the 'conventional wisdom' that I've read and heard elsewhere about 'functional resumes'. My resume2/resume3 would be what it calls a 'chrono-functional, hybrid, or combination format'.
('ASPs' are MS 'Active Server Pages', web pages written for the MS Web server, a combination of HTML, plus Basic which is executed on the server before the page is sent e.g. to get data from a database to populate the HTML, plus JavaScript which is executed in the user's browser).
=========
Jason, I started with an easy-to-read one-and-a-half page version, see http://members.rogers.com/xwells/resume0.doc ... various non-technical people liked it: few technical words, an 'executive summary' at the beginning, lots of white space... but, it wasn't getting me interviews, so no opportunity to pull out a more detailed version later. Apart from the fact that it contains few technical details (the whole of what is now page 2 is summarised in 3 lines), it describes a lead-of-a-small-company role which isn't likely to happen again (I'll more likely join an existing team than start a new one). Based on comments in http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=53244 I decided to add data (resume.doc), and then still try to have a presentable and chronological first page (resume2.doc/resume3.doc).
I'm not sure what you mean by 'just lists hilights, not every single thing'. I could drastically reduce the length of each sentence on page 2, and say for example ...
'Wrote a C++ library which wrapped the Win32 thread and synchronisation primitives.'
... instead of saying ...
'Wrote a C++ library which wrapped the Win32 thread and synchronisation primitives, to support the multi-reader / single-writer pattern, deadlock prediction and prevention, and thread performance monitoring.'
... but, well, it wouldn't be saying as much. Or I could have fewer items (sentences) per section, or fewer sections. I'm not sure what you're suggesting.
I thought about your saying that 'HR guys would look at your current resume, say 'overqualified' without even reading all the way through it', and cut a snippet from the top paragraph: it nows says ...
'Implemented much of the core, server-side, network, and database functionality (see page 2).'
... instead of saying ...
'Personally designed and implemented much of the core, server-side, network, and database functionality (see page 2) while other developers wrote client applications and server add-on features.'
... I think that's better for your suggestion. |
| Sun 29 Jun | Philo | 'ASPs' are MS 'Active Server Pages'
Then it's 'ASP', not 'ASPs' - thus my confusion. 'ASPs' is likely to be read as 'Application Service Providers'
Philo |
| Sun 29 Jun | Alex Rider | I am just wondering who is Emerick Rogul. |
| Sun 29 Jun | ymmv dude |
I don't think quality is equivalent to quantity, and it may be that there was something else wrong with your short version instead of length.
Maybe it was a problem of not enough buzzwords for the HR people, so your resume never made it into the hands of the technical, hiring people?
'Team lead and chief architect of a fax server product responsible for xxx in sales and a xxx return on investment' speaks for itself.
The technical hiring dude will understand that.
The HR person would think this is better:
Worked on a C++ blah blah Visual basic blah blah sql server blah blah.
That's why the hardest part will always be getting to the people that have the power to hire you. |
| Sun 29 Jun | Christopher Wells | Alex, Emerick Rogul posted his resume's URL in the earlier discussion, as an example of how you can fit a lot of useful information into a one-page resume.
===
Dude, it was funny your saying that the technical person would understand the marketing numbers, while the HR person would prefer the buzzwords; I hadn't thought of it that way.
Yes, I would like to think that 'Team lead and chief architect of a fax server product responsible for xxx in sales and a xxx return on investment' would speak for itself; but my experience with headhunters and Big companies has told me that:
* 'Team lead' can be misunderstood as project lead or director of development; with the first resume, I had people asking 'Do you want a coding role? When was the last time you did any coding?'
* 'Chief architect' can again be miunderstood as a non-coding role, responsible for specs and requirements but not even responsible for high-level physical/module design
* 'Fax server product' can be simply a bunch of scripts, driving prebuilt fax software components or driving intelligent fax devices which have the software on-board
I could condense the first 6 bullet items (18 lines) on page 1 of resume3.doc as follows:
* Self-starter, able to design as well as code, learns new technologies are required
* Works alone or with a team, keeps an eye on the business (deliverable software), knows about quality control as well as coding
* Experienced with the full software development lifecycle
* Suitable for roles that include customer-facing responsibilities
* Contributes to the system design and integration, has some experience with distributed systems
However, remembering back to the days when I was hiring, if I had read bullet items like the above in a resume I might have asked myself 'Where is there evidence of that? What if this is just copy-and-paste resume jardon, like 'Excellent communication skills, team player, able to multi-task'?'
I wish I could condense it further, but I don't see how to do that without losing data (I'd also like more white space, and perhaps a size 11 font).
One idea is to remove all items which aren't relevent to specific job applications; for example, remove the page 1 bullet items for junior/intermediate coding positions; remove the 'MFC and GUIs' section for server-only positions; remove the 'cross-platform development' section for Windows-only positions; remove the 'device drivers, and low-level programming' section for GUI positions.
Anyway, I've tried a highly-condensed version, and I'm not satisfied with its results; I'll try this more explicit version for a bit.
===
Philo, back to your '87-91 [...] feels weak, especially if you're looking for a coding job' comment. As it happened, I was doing tehnical writing: whatever the employer wants...
I had _some_ experience coding during those years; apart from writing a REXX script to convert from GML to HTML, I wrote a kind of program to write the _System Test Plan_ (because the test plan was subject to change, and I thought that the smaller program would be easier to edit and maintain than the expanded Test Plan); I taught myself Intel assembly on my home PC, in 1987; I taught myself C by writing a payroll program for Greenpeace.
I haven't mentioned those, partly to keep 'everything' on a single first page, partly because experience that is more than 10 years old 'doesn't count', and partly because non-commercial experience also 'doesn't count'.
If I were doing a three-page instead of a two-page resume, then I could mention those. And, in that case, I might very well put the 'Recent Projects' data inline with the chronlogical section. |
| Sun 29 Jun | Philo | Christopher, you might think of putting 'Technical Writer' in, to point up that that's what your job was. Just a thought.
Philo |
| Sun 29 Jun | ymmv dude - who wouldn't have it any other way | 'it was funny your saying that the technical person would understand the marketing numbers, while the HR person would prefer the buzzwords;'
Ha! :) Indeed, I've been working in unusual circumstances for too long I suspect, I didn't realize what I was saying! |
| Sun 29 Jun | . | Philo, fair comment ( about stereotyping ). I was just comparing different approaches to the way occupations are remunerated.
Christopher, all this agonising over the format of your resume is, I believe, missing the point. The resume is good. Maybe it's time to start your own product or business?
Secondly, in terms of addressing the core problem, your writing efforts might be better applied in writing to politicians and telling them to pull theirs fingers out. |
| Sun 29 Jun | save these instructions | Christopher, I think maybe . & ymmv are on to something. Maybe the problem isn't you or your resume, it's the companies you are targeting. I think Joel or Eric Sink (sourcegear, posts here sometimes) or somebody in that ilk would be much more impressed with 'Team lead of fax server product from cradle to grave, yada yada yada' than any list along the lines of 'c++, 4 years; vb, 6 years; sql server 2 years, etc...' I might be wrong though, maybe they'll chime in.
Now it may be a question that you would rather work for Fortune 500 BigCo rather than young scrappy LittleCo. I cast my lot with the small compaies though, and I get the impression that you do too. |
|
| Anyone tried C# Builder? | Fri 27 Jun | Philo |
| Im curious how it compares to VS.Net.
Philo |
| Fri 27 Jun | Cletus | Philo,
Didn't it just start shipping on 6/26? If so, it would be kind of hard to give an honest evaluation.
This may or may not help, but here's a link to a C#Builder site with some screen shots.
http://www.csharpbuilder.info/ |
| Fri 27 Jun | Philo | Oh really? I've had a flyer for it on my desk for two weeks - figured it had been out at least a month...
Philo |
| Sat 28 Jun | Rob Eickmann | Programers Paradise is listing the ship date as 7/26/03. (7/14/03 for the personal edition.) |
| Sat 28 Jun | Anon. Coward | Based on that link, I don't see the fuss. The IDE looks nearly identical to VS.NET, and the list of features doesn't appear to contain a single substantial feature that VS.NET doesn't already have. |
| Sat 28 Jun | Courage | 'Based on that link, I don't see the fuss. '
Coward,
I beg to differ. Since you haven't seen the product, your statement is not based on any facts. I think if you want more in-depth information on C# Builder you should go directly to the Borland website.
http://www.borland.com/csharpbuilder/ |
| Sun 29 Jun | Boris Yankov | In terms of features I really think that VS.net is better.
But well there can be a very important difference.
If it is a native app (the C# Builder), it is probably written in Delphi.
Or it can be written in C#. If it is, then it will be something like cross platform IDE once the Mono and eventually other implementations of .net for different platforms start working. |
| Sun 29 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | The one thing I use the VS.NET IDE for is Intellisense. If somebody came out with a C# editor (doesn't even need to be an IDE, as far as I'm concerned) that supported high quality Intellisense plus refactoring support, I'd switch in a heart-beat. |
| Sun 29 Jun | Chris Nahr | Automatic refactoring would be sweet. Add either makefile or NAnt support instead of those proprietary VS solutions, and I'll switch too. Intellisense is truly the one killer feature of VS.NET... the rest is just about passable. |
| Sun 29 Jun | Philo | The integration with SQL server is really nice too.
The WYSIWYG of ASP.Net pages is starting to fulfill the promises of FrontPhage, but it's still got issues.
But there's still room for improvement - it'll be interesting to see how C# Builder compares. My worst fear is that it will be a complement to VS.Net, so that it makes sense to do some things in one and other things in the other.
Philo |
|
| How do I get a job as an idiot? | Fri 27 Jun | Anon - in case YOU interview ME |
| Im serious. When I read all these posts on JOS about idiots whove gotten jobs as programmers, I have to think Im going about it wrong.
I got laid off recently and decided to go back and get a 2nd BS - this time in CS. Im not doing for the money - I truly like programming. But after seeing all the complaints on this forum about idiot co-workers, I thought, why get a BS in CS if I can just go into an interview and BS about CS.
Ive done a number of small projects using skills in C, VB, SQL, Javascript, and more Access than Id like to admit. But they were all small - not much to hang on a resume. Also, since I managed a department, I was my own customer.
But, I was always the type of manager who demanded credentials from those Id hire. Ive imposed the same set of standards upon myself, so I feel obligated to get a degree in CS. Maybe Im just being too tough on myself.
So, how are all these idiots landing jobs? Through contracting agencies, in-house promotions, regular job ads and interviews? What lets them slip through the cracks? |
| Fri 27 Jun | Phillip J. Eby | Interesting that you seem to think there's a correlation between formal education and skill. A lot of those 'idiots' have degrees, and lots of the competent people don't. |
| Fri 27 Jun | Philo | Yeah. I have a degree.
Oh, wait... dammit.
Philo |
| Fri 27 Jun | Mike Swieton | Phillip:
Devil's advocate here: A lot of skilled people *do* have degrees, and a lot of idiots don't, as well.
To the original poster:
Keep in mind the force of a negative: how many posts are there saying 'Wow, my bud Bob really is a great programmer! Aint I lucky?'? None; instead you get 'Dude, this guy is such an ass. What sort of evil plots ought I hatch?'. Why? Because good impressions haven't half the weight of a bad impression.
I doubt there's the overabundance of idiots that you suspect, especially if you know of them through posts here rather than through your coworkers. |
| Fri 27 Jun | Anon - in case YOU interview ME | 'Interesting that you seem to think there's a correlation between formal education and skill.'
I don't, and I don't know how you read that into it. People get jobs based on ...
1. Skills - i.e., experience
2. Credentials - e.g., a degree.
3. Networking - friends in low places
There seem to be a lot of people in this industry who've landed jobs without ANY of these three. How do they do it? |
| Fri 27 Jun | T. Norman | The idiots got hired during the boom when they were hiring anybody who knew what HTML stands for.
Or they were originally good when they entered the industry 20+ years ago, and got comfortable after a while doing the same thing year after year, and failed to update their skills or conceptual knowledge.
But idiots don't get hired anymore in this economy... with the exception of the places where idiots are doing the hiring. |
| Fri 27 Jun | Brent P. Newhall | T. Norman's right; idiots are hired because there are idiots in every industry, and some of them are hiring. We live in a fallen world.
Also note that 'all the complaints in this forum about idiot co-workers' are due to this forum's suitability for airing complaints. For every 'annoying co-worker' a person has, s/he probably has many more competent co-workers. |
| Fri 27 Jun | | But idiots don't get hired anymore in this economy... with the exception of the places where idiots are doing the hiring.
That's many places. I have hardly ever worked with people of the same skill level as posters on this board. Most of my coworkers treated programming as just a job and did not keep up with new technologies or even have an interest in them. In order to get a job you need to lower your asking price, work like a dog, and have a social disposition. |
| Fri 27 Jun | Just Wondering??? | 'When I read all these posts on JOS about idiots who've gotten jobs as programmers'
Anon,
What makes you so sure that someone out there from your past doesn't classify you as an 'Idiot'?
Just remeber that there will always be someone smarter than you and someone to let you know it |
| Fri 27 Jun | T. Norman | >'Most of my coworkers treated programming as just a job and did not keep up with new technologies or even have an interest in them.'
Lots of idiots have jobs already, but their chances of getting hired now are between slim and none. |
| Fri 27 Jun | everybody is an idiot but me | If we're honest with ourselves, the fact is we're all idiots from time to time. It all depends on your definition of 'idiot', one mans idiot could be anothers genius.
Common scenerio: Two programmers, one (A) technically hopeless and the other (B) a guru. A understands his real job is to make his boss feel special and important, so gets all the fringe benefits, raises and credit. B slaves his life away in a cubicle doing the work for which A gets paid.
Don't let wishful thinking fool you, all kinds of idiots get hired regardless of the economy. |
| Fri 27 Jun | S.C. | It is not that being idiotic is an edge. No boss intentionally hires idiots. It is just that how competent you are is not closely related to the chance of you being employed. So the number of employees not up to their jobs is higher than some people would expect.
And since the worst (and the best) people are usually easy to spot. So it gives an illusion of many people who get hired are incompetent. |
| Sat 28 Jun | Joey P | The amount of idiots hired for any given position is, on average, proportional to the amount of idiots available in the general population. |
| Sat 28 Jun | Not an idiot | You are all idiots. |
| Sat 28 Jun | Johnny Bravo | 'People get jobs based on ...'
Actually, in the company where I work, 10% of the workers got their jobs based on skills, 30% based on degrees, the rest based on friends.
Problem is: those 60% know that if they were fired right now they'd never get an equivalent job again, so they are trying very hard to hide their idiocy by lots of trickery a.k.a. politics, which is not only futile to hide from the non-idiots (i.e. the other 40%), but earns them wage increases every year. |
| Sat 28 Jun | | I think you should question the impression that there are lots of idiots. That sort of statement arises from business managements seeking scapegoats for poor project planning.
I also don't think it's an accurate representation of JOS discussion to say that concept figures prominently here. The opposite if anything. Almost all the programmers I've worked with have been excellent. |
| Sat 28 Jun | Barry Sperling | S.C.'s comment at the end of his post needs to be reiterated: if 20 programmers are in a project and only one is an 'idiot' then 19 can complain that they are working with an 'idiot', leading to 19 complaints on the net, but there is only one guy as the inspiration. And yes, I've felt like an idiot sometimes when an error of mine crops up... |
| Sun 29 Jun | | Based on this thread, I think we can safely assume that roughly 90% of the population are idiots. |
| Sun 29 Jun | sgf | 90% idiots?
You are an optimist. |
|
| Problem with colleague II | Fri 27 Jun | shiggins |
| Since everyone was giving such good advice, I thought Id post a problem that has been plaguing me for 7 mos.
An assistant was hired for me who thinks he is a programmer. He has not taken any programming classes ever, he has never written any production code, he once wrote an Access app at home. He is currently working through the Faster/Smarter series, Beginning Programming. I have no problem with helping newbies on their endeavor into the hell that is programming:) However, he has no desire to be/understand what programming is, IMO. He doesnt like problem solving, he wont/cant do thorough testing for me, etc. I believe he likes the idea of being a programmer. Hes one of those who, if programming didnt pay well, he wouldnt do it.
That being said, I find myself in discussions with him (we share an office) where he talks as if he were a veteran programmer. For example:
#1
Me: The client wants a search added
Him: That shouldnt be too hard to implement
Me Thinking: How the HELL would he know how hard it would be to implement?
Me: Ok, do you want to do it?
Him: Sure
Me Thinking: Over my cold lifeless body!
#2
Him: .NET is soooooooooo much better than Visual Studio. They have improved so many things.
Me: Oh, you used VS before?
Him: No but,.............more bs
#3
Boss: A new client would like A,B,C functionality
Him: That should be no problem
Me looking at my legs to make sure I havent disappeard.
Those three conversations happend in ONE day. It is getting to the point where management is calling him asking questions, which I answer and he gets back to them. In addition, there is that annoying Were programming buddies feeling that is about to drive me insane!
Ive developed this project for 3 years by myself. Hes been here 7 mos. Am I being petty? (Im pretty sure I am). How to I let this person subtly know that they are NOT a programmer, just as I am NOT a graphic designer, engineer, giraffe, whatever?
At the very least, thanks for letting me get this off my chest. |
| Fri 27 Jun | DingBat |
What exactly are the actual duties of this assistant? |
| Fri 27 Jun | shiggins | He was hired literally to help 'shiggins'. So his duties are very vague. We work for a manufacturing company. I'm supposed to give him stuff to do, like documentation, create this graphic for me, etc. |
| Fri 27 Jun | GiorgioG | So just be very diplomatic about it... Ask him to write a little asp.net web application that does something useful and make it so it isn't a trivial project. When he's knee deep in it, he'll ask for help and you can say 'Not as easy as you thought it was eh? Remember that.' |
| Fri 27 Jun | | Tell him to write a class for you that does this and that and give him a timeline that you think a new programmer could finish the work in. Also tell him that programming doesn't pay that well; if you want to make money be lawyer. |
| Fri 27 Jun | dmooney | Tell him next time somebody asks 'him' (meaning you) to do something, tell him that he must pass the question along to you and not to give off-the-cuff responses like 'that won't be too hard'. You're his boss. Tell him what to do. |
| Fri 27 Jun | Lee | I thought high paying jobs for inexperienced people left w/ the Dot-coms. Can you post a Part III where he gives job searching/interviewing tips? |
| Fri 27 Jun | shiggins | It's all about who you know. |
| Fri 27 Jun | Mike Swieton | It's interesting that a number of the suggestions here are very confrontational, along the lines of 'Give him a hard task, and tell him \'I told you so\' when he can't do it'.
Of course, he has to discover his skill level for himself: if you tell him he's incompetent (not that I'm saying he is, I can't really judge) he'll assume you're an ass. Not that I wouldn't, were I in his shoes... is there anyone here so gracious it'd be different?
Perhaps you need to talk to the person who hired him (it wasn't you, was it?). Tell them you're stuck having to find work for him, because what he does is unsatisfactory (it *is* unsatisfactory, isn't it? Or is he doing what you ask?). |
| Fri 27 Jun | Alyosha` | You need to find a project for him that is:
* long enough to keep him off your back and away from anything important
* short enough to keep his interest
* unimportant enough that the world will keep spinning if and when he fails at it.
* important enough so that he doesn't catch on to your plot.
Shunting the morons off to do the unimportant work is a time-honored tradition. |
| Fri 27 Jun | shiggins | Mike,
>>Give him a hard task, and tell him \'I told you so\' when he can't do it'.
I have no intention of doing this and I don't think that's what the posters are suggesting. I think the point is to give him some 'real' programming work so HE can see how he does and whether he really likes it.
Here's my only concern, that it would make the problem worse instead of better. Because he was given an actual project, regardless of whether he fails or succeeds, it would add fuel to his 'I'm a programmer' fire.
I can't talk to the person that hired him because they've been friends for years. See, it's all about who you know.
I like the suggestions though - keep 'em coming:) |
| Fri 27 Jun | njkayaker |
Are you supposed to be programming yourself?
Or are you supposed to manging programmers?
If you want a programmer, hire a _programmer_.
Definitely, don't give him answers for him to give to management.
Is he your 'full time' assistant? Do you really need a full time assistant? Maybe, you could share him with some other people. That way, he might have less time for 'programming? |
| Fri 27 Jun | Alyosha` | 'Regardless of whether he fails or succeeds, it would add fuel to his 'I'm a programmer' fire' ...
Don't knock it. If it weren't for this, someone of us would have never turned out to be decent programmers in the end ...
We were all in our larval stage once, right? |
| Fri 27 Jun | shiggins | >We were all in our larval stage once, right?
Absolutely. That's why I like your idea. I mean if he does well we're all better off right? |
| Fri 27 Jun | shiggins | >Are you supposed to be programming yourself?
>Or are you supposed to manging programmers?
I am supposed to be programming, not managing
>Is he your 'full time' assistant? Do you really need a full time assistant? Maybe, you could share him with some other people. That way, he might have less time for 'programming?
He is my 'full time' assistant, which I don't need. I do share him with other departments right now. He was actually asked to do other work because my immediate boss saw him 'playing programmer' knowing he is not one. I need another 3-5 exp. developer. I don't have time to 'train' someone who has never developed before. I have no say in the hiring. I've been asking for another developer for 1 year. This is what I got :( |
| Fri 27 Jun | Brent P. Newhall | It looks to me like this person simply doesn't know programming well enough to estimate programming tasks accurately. Is that correct, shiggins?
Okay, so he needs to learn programming. I say, give him a significant programming task. While I think you shouldn't come back and say 'I told you so,' I do think he needs enough practical experience to have a better grip on what's difficult.
Also, why is he answering the customer about features? Isn't he the junior developer? If so, he has no authority to answer the customer about features in a meeting like that. You need to tell him to stop.
What happened when he talked to the customer like that? Did you step in? |
| Fri 27 Jun | shiggins | Brent,
Actually, it was my boss, not a customer. I didn't say anything. I was wondering if I should talk to my boss. Just to see if there was a specific reason, I was not asked, even though I was sitting right there. It could be something as innocent as my boss knowing how swamped I am. In which case, it would have been up to my assistant to say 'I'm not qualified to answer that.' What do you think? |
| Fri 27 Jun | Danil | Sounds like an estimating exercise is in order. If assistant proposes an unreasonable schedule, ask him to break it down into pieces. Either there are individual estimates which are off base, there are pieces missing, or he's found a new way of doing things that is worth learning.
That this exercise is conducted on the spot, with no time for advanced prep, in front of an audience, may help accelerate the learning process. Especially if you have hard data on tap that challenges those assumptions. |
| Fri 27 Jun | e | This guy is just doing what most young graduates and other young employees do - trying to 'be sociable,' impress the boss and demonstrate a strong 'work ethic.'
He has not yet learnt the importance of saying: 'I don't know,' 'No, that can't be done,' or whatever.
You need to be very direct with him and tell him when he doesn't know something or when he's doing something that's foolish. This can be done in a non-criticising way.
You also need to be direct with the manager who hired him, and point out the current limits to his capability, and the effect of this on you. Perhaps you could identify some role thing that would be more apprpriate for him. |
| Fri 27 Jun | Pete J | Write the estimate yourself. When people see longer times and a smaller scope they will ask why. You will tell them.
You can do this without criticising or putting anyone down, you will simply let him dig his own hole. He can't refute your estimates, because he has no basis.
Give him simple tasks and tell him how to do them. Check his code, tell him what's wrong and make him correct it.
If he's smart he will start asking you for advice, he will learn and you will get a useful assistant. If he's not smart he will dig himself a huge hole and you will have no choice but to imform your boss.
Basically, you give the guy two choices, a good one and a bad one. Most people like the good choices. You should be able to do this without being harsh or nasty.
Finally, next time someone asks him a question that they should be asking you, simply interrupt. If that's not possible, correct him straight away, or say 'Actually we need more information before we can give a proper estimate. I wouldn't want to mislead you.' |
| Sat 28 Jun | Not an idiot | The true problem here is that you are threatened by your assistant.
Maybe the new guy could do it, even though he's only got 7mths experience.
I highly doubt it, but you're not sure about it and it's making you edgy.
Just because you think it's easy doesn't mean it is. |
| Sat 28 Jun | Jimmy Chonga | There are two alternate situations that I've seen in various workplaces:
-People give grossly bloated estimations that hint that either they're padding for months of Tetris playing, or they can't hack it and are building their own perpetual ignorance in. Furthermore, if anyone estimates a smaller number, or calls them on their estimate, they proclaim that it's their vast experience and Gandalf-like wisdom that leads them to their estimations, and anything less must be naive and misinformed. I've personally been in several situations where I've questioned estimates, and then provided my own (to be met by the poo-poos of 'oh, that's just naive crazy talk!'), and then I take on the project and come in under time, under budget, and with all of the features, functionality and quality expected (and I don't work overtime as a general rule, though my output far exceeds most coworkers who work tremendous overtime. I've come to believe that overtime is largely a ruse to deflect blame for gross incompetence when deadlines come and go...'Oh, but I worked so much overtime ineffectively getting nothing done'). i.e. The lesson here is that simply sitting back, scratching your beard and proclaiming that it's all going to take forever doesn't make you a master. I should not that when I question overestimations I only do so with the approach that I'll do it if necessary, if they truly don't believe my estimates.
-On the exact flip side, I've seen young bucks who grossly underestimate the scale or scope of a project: Hierarchical data warehouse for a enterprise with a vast range of implementation requirements and details -- No problem! That should take a week at most! Of course these statements are made in a situation where they themselves will never have to implement, so basically their comments do nothing but to undercut the entire project: If you work 24 hours/7 days a week and pull some genius inventions out of your ear, you still haven't met the grand standard set by the 'no problem' person. I suspect this is the problem that shiggins is having. I find this thread hilarious because an individual who did exactly what shiggins is describing (providing his opinion about the trivial, easy nature of everything) first name started with s, and last name was higgins.... Weird, no? |
| Sun 29 Jun | Sam Livingston-Gray | I dealt with something similar to this once... actually, now that I think about it, more than once. When I was working for a largish law firm, there were some people in the word processing department who wanted 'database analyst' as their title because they Knew Access (capitalization intentional). To their credit, they'd gone about as far as it's possible to go in Access while using only macros... ;>
What worked quite well, actually, was just offering some very basic direction. They wanted to know how to accomplish some task or another, so I told them (at a relatively high level) how I'd do it, showed them what F1 did in a code module (this was 97, when the online help was actually still helpful), mentioned that the Recordset object was what they wanted to play with, and told them to poke around with it and call me when they had something for me to review. Never heard back from 'em.
I'm always happy to help newbies get into programming (heck, in many ways, I'm still one myself, having only been doing it for five years), and would have been happy to play mentor, but it wasn't going to happen for them -- and this was a relatively gentle way of letting them discover that for themselves.
So I suppose I'm seconding the suggestion to stick him with a real programming project (real is in actually writing code, not real as in work product anyone will ever see), but with the difference that you allow him the possibility to succeed, and actually give him a hand when you have time.
If he's remotely clueful in other ways, you might email him a carefully-selected entry from the Jargon File... in fact, 'larval stage' might actually be appropriate. ;> But that's definitely a judgment call. |
|
| Compile Times | Fri 27 Jun | Andy |
| Someone recently wrote:
Even so, C++ is slow to compile. My C# projects can compile 10x -- sometimes even 50x -- as much code in the same time as the C++ compiler.
1. Is this true? How do you measure how much code there is. Lines, statements? Typically in a higher level language each statement will be compiled into more instructions, but the comparison between C++ and C# is hard because one compiles down to machine language while the other does not.
2. MOST C++ projects I would say have less than optimal physical designs (a term I would attribute to Lakos), i.e. the header structure is a f***ing mess. If you could get rid of the idea of translation units in C++, and maintain what I guess is a database of types and prototypes across files, would it speed up the compilation or not?
3. Is there anything else in the C++ langauge that would make it slower to compile than C# or Delphi or whatever.
4. Any comments about the effect of optimizations on compile time.
I am interested in this because it seems like compile times are a problem for rapid development. Its harder to get in the groove when you make a minor change a header, then have to recompile half the damn project before you continue.
It would be nice to hear from someone who has written a compiler, and not just wild speculation. |
| Fri 27 Jun | Len Holgate | I find that the compile times for some C++ projects are bad purely because of the physical design issue.
The coupling is often screwed and every file pulls in far more than it needs. Reducing the coupling quickly improves rebuild times and also means that an isolated change doesn't cause the whole world to rebuild.
I blame precompiled headers and the wizard way of 'include stdafx.h' everywhere. It may speed things up if done properly but the additional coupling isn't worth it IMHO.
I'm currently dealing with this kind of thing for a client. I've reduced the build time considerably by reducing unrequired coupling.
So, to answer your question ;) I think C++ allows more scope to screw up the project structure than C# does... |
| Fri 27 Jun | Mike Gamerland | This has the taste of urban legend. Before I believe any language can compile the same function/feature set 50x faster, I would like to see independent benchmark examples. This with real side by side comparisons of the code, functionality and compiler output.
Compile time is a developer issue. For non-trivial systems, inefficient compiler output is worse than making you wait. |
| Fri 27 Jun | K9 | I have worked a lot both in Visual C++ and Delphi, and I can tell you that the compile speed of C++ is much lower than that of Delphi.
The compile time is the main reason I want a very fast machine. |
| Fri 27 Jun | Ajit | True, the effect of pulling up far more code than required is one helluva problem. I found that just taking all those header & cpp files which are normally just helpers for all the other code & which change once in a millenium :) out & making a separate dll out of them improved build times a lot. |
| Fri 27 Jun | jedidjab | Does anyone have good links to sites that explain the best way to reduce coupling in header files? Examples would be really handy too... |
| Fri 27 Jun | Sebastian Wagner | While physical structure is a major point, there is one feature of C++ that can arbitrarily lengthen compile times which other languages just don't have: templates. Compile-time programming obviously can result in longer compile times =) |
| Fri 27 Jun | Frederik Slijkerman | Why exactly do templates increase compilation times? |
| Fri 27 Jun | - Roland | It turned out that C++ with templates constitute a full-blown 'meta programming language'. You can do type computations, conditional statements, loops, (type) list processing etc. These are all compile-time computations, i.e. you abuse the compiler to do such calculations, which costs time. For more info, see http://www.boost.org/libs/mpl/doc/paper/html/index.html
No linker can deal with templates properly; I once heard that templates in C++ were the first feature that was beyond the abilities of old C style linkers. Can't say much more about the deeper reason, however. |
| Fri 27 Jun | Mike Dimmick | I can tell you from experience: C++ is damned hard to parse, because the language is about 60% ambiguous. C# and Java are simpler and can be approximated with an LL(k) parser. To write an intelligible (hence maintainable) parser for C++, IMO, you really need to tackle it with a Generalised LR parser that can cope with the ambiguity by spitting out an ambiguous parse tree. The only other way is essentially to merge the tokenising, parsing and symbol lookup phases with feedback.
One reason the toolset for C++ is generally so poor when compared to other languages is simply due to the ambiguity. It's really hard to get useful information. As I've posted on another thread, part of VC6's Wizard problems, where the Wizards can get confused and trash your source code, comes from the fact that there are at least five parsers, each of which reads the code in a different way: ClassWizard, ClassView, IntelliSense, Browse Information. Oh, and the compiler itself, of course ;)
I still prefer it to anything else, though. Clearly humans (or at least, some humans) can cope with more ambiguity than our current parsing algorithms can. Of course we all get tripped up occasionally where a whole statement could be read in more than one way, and the disambiguating rule in the language standard works the other way to what we were expecting (example: if a statement can be read as an expression or as a declaration, the declaration wins - you can then get semantic errors if it wasn't intended as one).
Anyway, that's one reason C++ compile times are longer. Another reason is size of headers and templates. With metadata-exposed languages like VB, C# and Java, once a module is compiled, the compiler can read the exported declarations directly. The C++ compiler must read the header file completely, preprocess it to remove sections and comments, include contained header files, then parse the declarations and add them to the symbol table, even if few of the functions are used.
If you're compiling for Windows, you'll typically be including windows.h. This includes a whole load of other headers, which are huge - typically 13000+ lines.
If you have the option, use precompiled headers for anything you don't expect to change (the Windows headers are a good start). If you have a mixed C/C++ program, try to compile the whole lot as C++ if you can, or try two different precompiled headers, one for the C parts and one for the C++ parts. Alternatively build one or both parts as static libraries and get the linker to put it together. That way you can get precompiled header benefits on both parts of the program.
Other suggestions: use #pragma once with Visual C++, which will cause VC not to even try to read the header if it's already included. It's rare that you'll want to include a header more than once in the same translation unit. If you can't do this, another good trick is to surround your #includes with #ifdef commands. An example: say the file MyHeader.h uses a #ifdef guard of __MYHEADER_H__. In a file that includes it, do something like:
#ifndef __MYHEADER_H__
#include 'MyHeader.h'
#endif
This stops the compiler having to locate the file, open it, read the header guard #ifndef and then read the whole file to find the matching #endif. Compilation is largely I/O bound. |
| Fri 27 Jun | runtime | C# has fewer file dependencies than C++. If you change one C++ header file, then tons of .cpp files (that #include the header file) must be recompiled. Since Java and C# don't have header files, you just have recompile the on .cs file. |
| Fri 27 Jun | David | Funny this topic should come up. I spent a couple of days earlier this week trying to decouple headers in my project. After two days of this (remove, compile, fix errors, repeat), I had removed many #includes and made NO measurable improvement in compile time.
So, I quit trying to do that.
BTW, this is Visual Studio .NET with C++ code.
Anyone know of some quick tips or tools to make this effective? |
| Fri 27 Jun | Andy | Well, it seems to me that the simplest possible solution to improving compile times is just to split up your C++ files. I have seen files that are 7000-8000 lines long, which I think is ridiculous. I heard somewhere that 500-2000 lines is reasonable, I find this to be a good rule of thumb. I would like to have less than 20 functions per file.
When you split, of course you have to remove #includes that are no longer needed. If you find that the splits haven't resulted in removing #includes, then perhaps your logical design has too many dependencies, and you will actually have to change code to get your compile times to be faster.
The reasoning here is: If you change a type T, you have to recompile ALL THE CODE that #includes the header which contains T. That includes functions that just happen to be in the same file as a function which needs T, but which themselves do not need T. And that includes entire files that just need the header for type T2, and not T. So basically from that you can infer that statistically speaking, changing a header will require you to compile less code if your source files are on average smaller.
That said, I would say for many projects, there are simply unneeded #includes, or #includes that should be in the C file but occur in the .h file. Getting rid of these obviously comes first. Think about it: when you delete some code, do you always look at the #includes to see if there is anything you can delete? Probably not.
Do any compilers do any sort of caching that basically invalidates what I just said? |
| Fri 27 Jun | Andy | Also, to Mike Dimmick:
I have heard that C++ is very difficult to parse and I can easily imagine why. In fact I heard that many major compilers all use the same 'front end', the EDG one. If I am not mistaken, the front end for a compiler includes the parsing engine.
What do you mean by C++ being ambiguous? I mean it obviously isn't ambiguous in one sense because the standard AFAIK specifies what every statement is supposed to mean. But yes there seem to be a lot of hacks, like the typename keyword, and having to do > > to end nested templates because of ambiguity with >>.
What about VC7? I heard there is a source code model to programmatically access C++ source. Does this work well? Or does it not go down to the statement level? |
| Fri 27 Jun | Tom |
If your project is not specifically set up for precompiled headers, you will probably get a speed boost by turning them off. So that is one thing to try.
(The reason is, I believe, that VC++ precompiles headers for a specific sequence of #includes with a specific set of #defines, so with auto use it will rebuild them afresh for each file where a new sequence occurs.)
Add WIN32_LEAN_AND_MEAN to your predefined preprocessor symbols if you are including windows.h a lot.
If you want to try adding precompiled headers to the project, you can get a demonstration of how they should be set up[0] by setting up a new console application with precompiled headers using the new project wizard. All files have set 'use precompiled header' with the name of a .h file; a single .cpp file has 'create precompiled header' with that .h file; _all files_ #include that .h file as their first one.
Include your headers-that-don't-change-often from this .h file, and hopefully you will then have decreased increased compile time.
Whilst this can help compile speeds greatly (it's a real pain compiling others' projects when they don't use this!) it's obviously not always the easiest thing to retrofit to an existing project :(
[0] -- well, there may be some other ways! |
| Fri 27 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | It was me who made the claim. I have two comparably sized projects, when considering on-disk size. In order to test, I did two of each compile type, and used the second (faster) compile. I have 1GB of RAM, so all the files can easily fit in the disk cache (and on the second compile, the disk doesn't make a sound).
The machine is a P4-2.53GHz, 1GB of DDR333, 80GB ATA-133 drive with 8MB on-board cache, running Windows XP Professional and Visual Studio .NET 2002.
One is the current C# project I'm working on. It's made up of 2533 .cs files comprising 5.4 megabytes of source code. It draws from most of the major parts of .NET, including ASP.NET and ADO.NET (no Winforms).
The other is a C++ project I worked. It's made up of 434 .cpp files and 706 .h files comprising 5.9 megabytes of source code. It draws from ATL primarily, with no MFC support. It's properly using pre-compiled headers, and most of the code is relatively de-coupled.
C# (full recompile): 7 seconds
C# (incremental compile, nothing changed): < 1 second
C# (incremental compile, 1 file changed): < 1 second
C++ (full recompile): 2 minutes 46 seconds
C++ (incremental compile, nothing changed): 10 seconds
C++ (incremental compile, 1 file changed): 18 seconds
Just to verify that my pre-compiled headers were doing their job:
C++ (full recompile, PCH turned off): 10 minutes 5 seconds
Draw your own conclusions. |
| Fri 27 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'The comparison between C++ and C# is hard because one compiles down to machine language while the other does not.'
I disagree. MSIL is nothing more than a high level assembler. Emitting the appropriate assembler or byte-code is hardly the most expensive part of the process, unless you're doing EXTREME levels of optimization. The problem, as others have pointed out, is that C++ is hard to parse, has no standard meta-data, and has a poor architecture (header files). |
| Fri 27 Jun | Mike McNertney | Brad, you're right that it probably doesn't account for the majority of the difference, but the fact that C# compiles to IL is definitely significant. The compiler doesn't have to do things such as register allocation (I assume at least, I can't imagine it having to do this if the IL is in any way platform-independant). Since register allocation is an NP problem this could be a substantial time savings (though I have no idea how long it typically takes since obviously compilers don't implement perfect register allocation). I'm sure there are other examples of optimizations that can take a long time that C# doesn't do when compiling to IL.
However my guess is that you're right in that the majority of the difference is because of parsing and the poor architecture of C++.
Your example may also be extreme if it uses a lot of templates. Templates in my experience tend to slow down C++ compiles drastically. |
| Fri 27 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | You couldn't pay me enough to use C++ without templates. :)
You're right that registers are not an issue. I forgot about that. The .NET execution environment is stack based, not register based. |
| Fri 27 Jun | Phil Steinmeyer | FWIW, out project, 5.3MB of cpps (in ~300 .CPP files), 1.2 MBs of .hs (a game, using windows.h, but no templates, MFC, etc, and properly using PCHs and LEAN_AND_MEAN) takes about 2 minutes for a full rebuild, ~10 seconds for an incremental, and from 10 to 40 seconds to link depending on how balky the linker is.
So that conforms pretty closely to the other example. I'm really surprised C# can do a full compile on something of that magnititude in 7 seconds -I'd kill for 7 second full compiles. |
| Fri 27 Jun | Andy | Yes, I'm extremely impressed by 7 second full compile too, even if it were a much smaller project. Just changing one line in a C file takes about 7 seconds in my current project (a mess, as I already said).
What about Java? Can anyone post some similar results? What about other languages?
Speaking of compilation being I/O bound, the compiler is a separate executable in VS.NET (cl.exe), so I would guess that every time it runs it reloads the source files from disk. Is this true and does it matter at all? I mean, maybe one advantage of an IDE over command lines tools is that it would be possible to keep a lot of stuff around in memory between iterations.
Another idea I had is that it is if you're working on a team of 15 people, and one guy changes a header, the next time everyone else does a get, it will take say 3 minutes to recompile. That's 3 x 15 = 45 minutes of lost time. Over time this adds up, obviously. If you're not working on that section of the code, there is no reason for you to recompile it, the other guy's compile will be identical to yours. Since C++ has the idea of translation units, it should be possible to figure out which object files do not to be recompiled. Basically the idea would be to have some sort of system for distributing the object files compiled by the first person. I know a lot of compilers don't keep around separate .O files anymore, buut just checking in the O files to source control might sort of work, except I don't know about merges and all that.
I know there is a distributed build product for Visual C++, whose name escapes me at the moment, but it's not quite the same idea. |
| Sat 28 Jun | Chris Nahr | Re I/O: Visual Studio .NET requires all C# source files to be saved to disk before compilation can take place so I'd guess that they're read from disk, too. Also, the examples given in this thread were fairly big -- I doubt they have all those hundreds of source files loaded in the IDE!
For what it's worth, on my system VS.NET takes about 10 seconds for a complete rebuild of a solution with 4.6 MB of C# source code in 208 files. Partial builds are faster, of course. It's so fast that I've adopted a 'change a few lines, recompile, test' style of programming because there's hardly any time lost doing so. Truly a huge change from C++. |
| Sat 28 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | In VS.NET, there are internal parsers, obviously, used for the wizards and the while-you-type parsing errors/compile errors (depending on which language you're using), but actual compiling is done by the SDK command-line compilers, just as prior versions of VC++ have launched the external commands to do their work (cl, link, midl, etc.). |
| Sun 29 Jun | Andrew Reid | Java compile times are probably comparable to the C# ones (ie really, really fast).
I think a big part of the C++ problem is the header files (as had already been mentioned several times).
The advantage that Java has is that it's easy for the compiler to glean class definitions from compiled bytecode, whereas C++ has to parse source every single time. Moreover, the C++ compiler can't assume you haven't modified the meaning of a class definition with preprocessor tricks fromfile to file.
This is why precompiled headers are such a big win (a project I worked on managed to reduce full builds from 1 hour to 10 minutes by getting precompiled headers working) - they remove a lot of unnecessary repeat parsing. |
|
| Time for comic relief | Thu 26 Jun | Eric W. Sink |
|
The topic is very short quips about software. Long jokes are out of scope. Subtlety is encouraged, even if it means that only geeks get it.
Here are two of my favorites to get us started:
-- Remember, only two industries refer to their customers as users.
-- There are only 10 kinds of people, those who understand binary, and those who dont.
Anybody got any others like these? |
| Thu 26 Jun | Taka | I've just started reading 'Waltzing with Bears' by Tom de Marco & Timothy Lister:
'There is probably no job on earth for which an ability to believe six impossible things before breakfast is more of a requirement than software project management.' |
| Thu 26 Jun | mackinac | Here is one I found in someone's USENET sig. It's probably been posted on JOS before, but it's the best one that comes to mind right now:
'1,3,7 trimethylxanthine -- an essential ingredient of quality software' |
| Thu 26 Jun | RM | One more from an usernet.
UNIX Sex
{
look; find; talk; grep; touch; finger; find; flex; unzip; mount; workbone; fsck; yes; gasp; fsck; yes; eject; umount; makeclean; zip; split; done; exit
} |
| Thu 26 Jun | braid_ged | The Funniest Usenet post ever :
Subject: Re: Computing sizeof() during compilation
From: Dennis Ritchie
Newsgroups: comp.std.c
[Submitter's Note: look at the author...]
From: Dennis Ritchie
Newsgroups: comp.std.c
Subject: Re: Computing sizeof() during compilation
Organization: Bell Labs, Lucent Technologies
> You are right. It was nice back in the days when things like
>
> #if (sizeof(int) == 8)
>
> actually worked (on some compilers).
Must have been before my time.
Dennis |
| Thu 26 Jun | Darren Collins | 'The familiar dot (.) symbol from Internet addresses shall be used on this website to denote the end of a sentence.' - I'm not sure where I saw this one.
William Gibson: 'The future is already here, it just isn't evenly distributed.'
'When the customer demands the impossible, they will end up buying from the guy who offers them the impossible. And the results, though tragic, are sadly predictable.' (Robert A. Heinlien) |
| Thu 26 Jun | Troy King | Here are some I collected around town, including this forum the last time someone requested blurbs like this. All are copied as they were found:
'Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.' (Rich Cook)
All models are wrong; Some are useful.
For every complex problem, there exists a simple solution, which is wrong.
Corollary: It isn't rocket science. Well, unless of course you're NASA.
'The last 10% of any software project will take 90% of the budgeted time. The first 90% will take the other 90%'
Why did the programmer confuse Christmas and Halloween?
Because DEC 25 = OCT 31
On two occasions I have been asked [by members of Parliament], 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. - Charles Babbage
'The most successful method of programming is to begin a program as simply as possible, test it, and then add to the program until it performs the required job.'
-- The PDP-8/e Small Computer Handbook (DEC, 1972) - Chapter 9, Page 9-64
'A specification that cannot be fit on one 8.5 x 11 inch piece of paper cannot be understood.' -- Mark Andis
Computers are high-speed idiots, programmed by low-speed idiots
The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents. -- Nathaniel Borenstein
The primary purpose of the DATA statement is to give names to constants; instead of referring to pi as 3.141592653589793 at every appearance, the variable PI can be given that value with a DATA statement and used instead of the longer form of the constant. This also simplifies modifying the program, should the value of pi change. -- FORTRAN manual for Xerox Computers
'There are two ways of constructing a software design; one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.' -- C. A. R. Hoare
A complex system that works is invariably found to have evolved from a simple system that worked. (John Gall)
Working software is the primary measure of progress. (The Agile Manifesto)
In theory there is no difference between theory and practice, but in practice there is. (don't know where this is from)
'An unplanned project takes twice as long to complete, a well planned project takes three times as long.'
Computers let you make more mistakes than any other invention in history....with the possible exception of handguns and tequila.
Torture your data long enough and it will confess to anything. -- a statistician acquaintance of mine
'Two things have come out of Berkley, Unix and Acid, we do not belive this to be a coincidence'
My favorite is 'Programming is the process of converting caffeine into error messages' (not sure of the source, seen on Ward's Wiki)
Vim: it's like software that's 95% easter eggs
Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live.
If Java had true garbage collection, most programs would delete themselves upon execution.
Linux sucks twice as fast and 10 times more reliably, and since you have the source, it's your fault. -Ca1v1n |
| Thu 26 Jun | Mitch & Murray (from downtown) | 'I am Pentium of Borg. Division is futile - you will be approximated'. |
| Thu 26 Jun | Tom | Those who decry spam are cnuts. |
| Fri 27 Jun | realist | 'it's working as coded' - my managers sincere attempt to explain a bug in my code to his manager a few years ago. |
| Fri 27 Jun | Alyosha` | Q: How many people work around here? 'About half'. |
| Fri 27 Jun | Nick | 'The key to understanding recursion is to begin by understanding recursion. The rest is easy.'
-- Koenig/Moo, Accelerated C++
'Impossible error occurred'
-- Excel 95 error message. (A co-worker had a screen print of this error message box, and every time I saw it I'd crack up thinking the programmer was the 'Inconceivable!' guy from The Princess Bride.) |
| Fri 27 Jun | Christo Fogelberg | All from various sources:
Norvigs Law:
Any technology that surpasses 50% penetration will never double again (in any number of months).
Peter Norvig
(in respect to all the projections of massive, infinite, growth in awesome new technology XYZ)
Every program has at least one bug and can be shortened by at least one instruction - from which, by induction, one can deduce that every program can be reduced to one instruction which doesn't work.
In most Microsoft EULAs, it states you can't give the software to nations or individuals involved in making atomic, bacteriological, or chemical weapons.
Do they mean *besides* the US?
My boss, for instance, really believes that he is 'solving the problems when others don't understand the question.' In reality, he is often the problem that must be solved by his subordinates. He would never believe that he is not part of the 'engine of change.' He's really more like the 'wheel chocks of ignorance.'
Intelligence: Finding an error in a Knuth text.
Stupidity: Cashing that $2.56 check you got.
Quick, Cheap or Good. Choose Two.
It's possible to do that. If you've got a basket with 3 oranges in it and you take 5 out, then you have to put 2 oranges in again in order for it to be empty.
Peter Gutmann
You think because you understand _one_ you must understand _two_. Because one and one make two. But you must also understand _and_.
Sufi Sage
Information wants to be beer, or something like that.
Put to scale, the head of a disk drive is like a 747 jumbo jet flying at mach 4 at an altitude of 1/4' over the rocky mountains.
Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.
Greenspuns 10th Rule
mainframe n. An obsolete device still used by thousands of obsolete companies serving billions of obsolete customers and making huge obsolete profits for their obsolete shareholders. And this year's run twice as fast as last year's.
'The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.'
- Edsgar Dijkstra
OK, I'll stop now :-) |
| Fri 27 Jun | JD | 'There are no shortcuts in life unless you right-click.'
Above pointed by one school girl!
Regards,
JD |
| Fri 27 Jun | John Topley (www.johntopley.com) | Q. Why weren't the Romans good C programmers?
A. Because they had no way to return zero. |
| Fri 27 Jun | Michael Chansky | First, something relevant:
Dan: But you're not allowed to compile the classloader without the proper chant, lest your bytecodes be cursed!
Ted: And what praytell is the proper chant?
Dan: Damned if I know. I just deal with cursed bytecodes.
Second, I feel the need to nitpick Troy's post and note that it was Mark Ardis (with an 'r') who stated the one-page principal (which apparently appeared in the UNIX fortune file). Mark is also noted for the quote 'Okay, I give up. What is the significance of 1729?' and for posting a recipe for French Toast to the net.cooks newsgroup in 1982. |
| Fri 27 Jun | Gareth McCaughan | While we're nitpicking, I find it ... inconceivable
that anyone could post a version of the 'Unix
sex' thing that doesn't make use of the 'strip'
command. :-) |
| Fri 27 Jun | Mark Pearce | Software salesmen and used-car salesmen differ in that the latter know when they are lying.
The C language combines all the power of assembly language with all the ease-of-use of assembly language.
The determined programmer can write a Assembly program in any language.
Computers let you make more mistakes than any other invention in history. With the possible exception of handguns and tequila.
Diagnostic message from Apple's MPW C compiler: 'Too many errors on one line (make fewer)'. |
| Fri 27 Jun | S.C. | I wrote an 6809 assembler. One instruction is called 'SEX' which takes no argument(operand). There should be a warning for the redundant argument. I was tempted to use the following error message:
'Sex? No argument!'
(Later I decided not to and I got an A+ for the project. ) |
| Fri 27 Jun | Bernard Vander Beken | Some more:
You should use iterative development only on projects that you want to succeed - Martin Fowler
Any sufficiently advanced bug is indistinguishable from a feature - Rick Kulawiec
Beware of bugs in the above code; I have only proved it correct, not tried it. - Donald Knuth
Experience is that marvelous thing that enables you recognize a mistake when you make it again. - F. P. Jones
Management dictated that no bugs should ever make it to production. We no longer put code in production.
If the quantum view of the world is correct, does it mean that testers create bugs by observing them?
If no one had reinvented the wheel, we would still be stuck with those impractical wooden wheels... - Willem van den Ende on the refactoring list
There can't be a crisis today, my schedule is already full.
You know you're on the right track with code changes when you spend the majority of your time deleting code.
It's not about size. It's about smells. - Ron Jeffries
If it stinks, change it. - Grandma Beck, discussing child-rearing philosophy
If it's less than six pages, I'll read it. If it's more than six inches thick, I can use it as a doorstop. Anything in between is useless.
Remember that there is no code faster than no code. - Taligent's Guide to Designing Programs
Honey, I just need to debug this program and be home in 5 minutes.
How does a project get to be a year late? - One day at a time. -Fred Brooks, The Mythical Man-Month
A computer programmer is a device for turning coffee into bugs. - Bram Moolenaar
A computer programmer is a device for turning requirements into undocumented features. It runs on cola, pizza and Dilbert cartoons. - Bram Moolenaar
Life is like a box of checkins. You never know what you're gonna get.
Quality means that the customer keeps coming back, not the product.
Shipping is a feature but shipping quality is an even better feature. |
| Fri 27 Jun | Chris Winters | I feel obliged to add some Larry Wall quotes here:
There's often more than one correct thing.
There's often more than one right thing.
There's often more than one obvious thing.
Unix is like a toll road on which you have to stop every 50 feet to pay another nickel. But hey! You only feel 5 cents poorer each time.
We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise.
Optimizations always bust things, because all optimizations are, in the long haul, a form of cheating, and cheaters eventually get caught.
I think you'll find that, while we all know what it should have been, we all know it should have been something different from what everybody else thinks it should have been.
I do quarrel with logic that says, 'Stupid people are associated with X, therefore X is stupid.' Stupid people are associated with everything. |
| Fri 27 Jun | Ken E | Windows messagebox:
'Abort child? YES NO CANCEL' |
| Fri 27 Jun | Devil's Advocate | Read somewhere on the net:
'Unix makes easy things hard and hard things possible. Windows makes easy things easy and hard things $19.95' |
| Fri 27 Jun | mackinac | 'THIS IS MAD' -- The MAD compiler.
As I recall that message only occurred in some error situations where it couldn't figure out what else to say. Other errors could cause it to dump a full page text picture of Alfred E. Newman to the line printer. |
| Fri 27 Jun | Sammy | 'Java's a drug you rub on venture capitalists to make them crazy.' -- John Doerr, (JavaOne 1996)
'Where choice begins, Paradise ends' -- Arthur Miller (playwright & usability expert?)
C programmers know the cost of everything and the value of nothing. / Lisp programmers know the value of everything and the cost of nothing.
Symbols are for the symbol-minded.
'It's a good idea, but it's a new idea; therefore, I fear it and must reject it.' -- Homer Simpson
Lots o' chestnuts here -- http://www.bitmover.com/lm/quotes.html |
| Fri 27 Jun | Tom | Consistency is required in some cases but not in others. |
| Fri 27 Jun | Arcterex | Christo - thankyou, absolutely fantastic! Several of those are going onto my wall ASAP!
I have a few of my own collection over at http://arcterex.net/sig.txt (.sigs, quotes, etc from various newsgroups and websites over the years) |
| Fri 27 Jun | Phil | 'Anybody got a problem looking for a solution?' |
| Fri 27 Jun | Jim Rankin | Vanity plate on a programmer's new Volkswagen Beetle reads 'FEATURE'. |
| Fri 27 Jun | Michael Hanscom | My computer's so stupid, it thinks that 1 + 1 = 10.
(Source unkown) |
| Fri 27 Jun | Albert D. Kallal | A French teacher was explaining to her class that in French, unlike English, nouns are designated as either masculine or feminine.
'House' is feminine - 'la maison.'
'Pencil' is masculine - 'le crayon.'
A student asked, 'What gender is 'computer'?'
Instead of giving the answer, the teacher split the class into two groups, male and female - and asked them to decide for themselves whether 'computer'
should be a masculine or a feminine noun.
Each group was asked to give four reasons for their recommendation.
*****************************
The men's group decided that 'computer' should definitely be of the feminine gender ('la computer'), because:
1. No one but their creator understands their intern al logic
2. The native language they use to communicate with other computers, is incomprehensible to everyone else
3. Even the smallest mistakes are stored in long term memory for possible later review
4. As soon as you make a commitment to one, you find yourself spending half your salary on accessories for it.
*****************************
The women's group, however, concluded that computers should be masculine ('le computer') because:
1. In order to do anything with them, you first have to turn them on
2. They have a lot of data but still can't think for themselves
3. They are supposed to help you solve problems, but half the time they ARE the problem
4. As soon as you commit to one, you realize that if you had waited a little longer, you could have gotten a better model.
The women won. |
| Fri 27 Jun | sammy (is seeing these quips everywhere now) | Python: executable pseudocode. Perl: executable line noise.
I'd just like to take this moment to point out that C has all the expressive power of two dixie cups and a string. -- Jamie Zawinski, in the source code for xkeycaps
C++ : an octopus made by nailing extra legs onto a dog.
Programming in C++ is premature optimization.
Your superior intellect is no match for our puny weapons.
Will write code that writes code that writes code for food. -- Martin Rodgers |
| Fri 27 Jun | Mike Swieton | Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance - Jim Horning
Anyone who attempts to generate random numbers by deterministic means is, of course, living in a state of sin. - John Von Neumann
Computers are useless. They can only give you answers. - Picasso
In case you haven't realized it, building computer systems is hard. - Martin Fowler |
| Fri 27 Jun | Marc | “If at first you don't succeed, call it version 1.0“ - Forget where I saw this.
“I have two programming speeds. The other one is slower” - A post in one of the Linux dev forums.
'Extreme Programming is a only hit with the MTV generation because most have attention span of a humming bird on methamphetamines.' |
| Fri 27 Jun | Pat Rice | The significance of 1729?
It's the smallest positive integer that can be expressed as two different sums of cubes:
1^3 + 12^3 = 9^3 + 10^3 = 1729 |
| Fri 27 Jun | Timmy | Somewhat offtopic, but the 1729 bit comes from an anecdote about the Indian mathematician Srinivasa Ramanujan. Some acquaintance (Hardy?) of his came to see him, and happened to be in a cab numbered 1729. His acquintance made some offhand joke about how uninteresting the number was, and Ramanujan pointed out the above fact on the spot.
As for the bit about 'programmers turning caffeine into code' - this is a reworking of a joke Paul Erdos first made about mathematicians 'being machines for turning caffeine into theorems'. This coming from Erdos, a lifelong meth addict and general nutball. |
| Sat 28 Jun | tapiwa | Problem exists between keyboard and chair! |
| Sat 28 Jun | RichB | The odds on a compression claim turning out to be true are always identical to the compression ratio claimed.
- Bruce Schneier, 2002 |
| Sun 29 Jun | Roland Weigelt | God is real - unless declared integer.
More than 10 years ago I read this somewhere, thought it was kinda funny but didn't really understand it. Years later, at university, I took a Fortran introductory course, which was absolutely useless, except for one thing: understanding this line. |
|
| Court: MSFT not required to carry Sun's Java | Thu 26 Jun | Nat Ersoz |
| http://www.infoworld.com/article/03/06/26/HNjavacarry_1.html
Well, there ya go. Hate the company, love the stock. Bought a huge load as it hit resistance at 24. Actually, I had to chase it, as my order was for 23.0, and it never made it. Since then, Ive been wondering if it will make it through resistance at 26.
Tomorrow, I think it will.
MSFT is evil. So am I. |
| Thu 26 Jun | Noname | Microsoft buys another judge. |
| Thu 26 Jun | Lucas Goodwin | '... baught another judge'
Hardly. Just another frivolous lawsuit being shoved through the courts. If Sun can't stand on it's own 2 feet why should the government force their competition to hold 'em up. |
| Thu 26 Jun | John K. | I am actually very happy that MS is NOT forced to distribute the Java virtual machine.
Why is that?
I am a competent Visual C++ and Delphi programmer.
About one year ago, I started learning Java, but for some reason, it doesn't stick on me.
I understand the language and the libraries, and can write programs, but for some reason the entire Java thing (language + app) feels extremely weird and unconfortable.
I simply don't like it.
As a developer, I value things such as fast program execution, powerful RAD environment, easy access to any API (especially including Windows API and COM objects), the possibility of building highly functional and rich interfaces, high productivity (judged by Delphi standards, not by C + some weird library standards), etc.
Java is none of these (ok, there is Borland JBuilder, but it's a weird tool).
Also, to someone used to C++ and Delphi, the Java language feels like a small, unconfortable car.
So, I have many (personal and objective) reasons I don't like the Java language.
I certainly don't want to work in Java. It is plain weird, unproductive (compared to Delphi), not really suited to building excellent GUI apps, it has low performance, etc.
For me, any bad news about Java is very good news.
Any bad news about Java means that in the future, there is a smaller chance to be forced to work in Java. |
| Thu 26 Jun | T. Norman | >'If Sun can't stand on it's own 2 feet why should the government force their competition to hold 'em up.'
If Microsoft still refuses to fulfill their original contract with Sun to ship a genuine JVM with Windows, why should the government allow them to get away with it? |
| Thu 26 Jun | JavaK | Java suxx badly. It is the new COBOL - yet another boring, very low performing programming language for business apps.
I hope they fail and C# wins. At least it's a decent language with decent components.
Also, Visual Studio .NET surpasses everything I seen in the Javra world.
Death to Java! |
| Thu 26 Jun | dinkus | I concur with the java haters. Anything that hastens java's demise is cool with me. |
| Fri 27 Jun | Nick | It's becoming a moot point.
Dell and HP recently announced that they will start shipping their desktop PC's with Sun's JRE loaded. I doubt Sony, Gateway, et al. will be far behind.
http://www.idg.net/ic_1321559_9675_1-5124.html |
| Fri 27 Jun | fw | I have an even better chant, death to all proprietary languages. |
| Fri 27 Jun | John Topley (www.johntopley.com) | What is your definition of a non-proprietary language? |
| Fri 27 Jun | T. Norman | I would classify Java as a semi-proprietary language. Sun controls the spec, but they publish it and others can write JVMs and compilers. If Sun goes out of business or abandons it, other companies like IBM will ensure that it lasts.
Whereas with fully proprietary languages like VB or Delphi, nobody else is allowed to write compilers, and if Microsoft or Borland abandons it, that's the end of it. |
| Fri 27 Jun | K9 | > would classify Java as a semi-proprietary language.
> Sun controls the spec, but they publish it and others
> can write JVMs and compilers. If Sun goes out of
> business or abandons it, other companies like IBM will
> ensure that it lasts.
> Whereas with fully proprietary languages like VB or
> Delphi, nobody else is allowed to write compilers, and
> if Microsoft or Borland abandons it, that's the end of
> it.
Yes, this is true. But the chance of MS abandoing VB, or Borland abandoning Delphi is very slim.
Also, personally I would rather take that risk and work with something I really enjoy, than with an 'open', 'semiproprietary' language that I don't like.
Maybe I'm old school about this, but I prefer C, C++ and Python to Java.
Java feels to me like a crippled language. Ok, you can do anything in Java, but so you can in Modula-2, or some other bondage-and-discipline language. |
| Fri 27 Jun | BC | Nat Ersoz: 'Since then, I've been wondering if it will make it through resistance at 26.'
Don't forget to check if the stars are aligned as well... |
| Fri 27 Jun | Nice | > Whereas with fully proprietary languages like VB or
> Delphi, nobody else is allowed to write compilers, and
> if Microsoft or Borland abandons it, that's the end of
> it.
The free pascal compiler can compile delphi's object pascal. There is even a vcl thingy in the works apparently. http://www.freepascal.org/
As for the Java bashers: *yawn* |
| Fri 27 Jun | Mehndi (it's just a word, I'm a 'mericun) | '...bondage and discipline lanaguge...'
*snort* I love that... and whoever said that after using C++, Java feels like a small and uncomfortable car, sure hit the nail on the head. Don't get me wrong, I love Java - but I'm glad I don't have to use it.
For me, the Swing UI is emblematic of the whole Java thing. Swing is brialliantly designed, a true joy to develop with, much better than the MS controls and MFC wrappers - but it's completely frustrating to fight with as an end user (as well as slow as a dead dog)... |
| Fri 27 Jun | Mike Dimmick | > I would classify Java as a semi-proprietary language.
> Sun controls the spec, but they publish it and others
> can write JVMs and compilers.
Unless your name is Microsoft, apparently.
You still need to license Java source from Sun to write a JVM, and you need to stick to Sun's rules. Of course MS would say that they /did/ stick to Sun's rules, but that appears to be a matter of interpretation.
Ah well, there's always J#. |
| Fri 27 Jun | Mike S. | I thought the whole irony of this case was that Sun was claiming that not having Java on the Windows client would harm them, yet Java's big success has been on servers. And I don't think anything Microsoft does with C# and .NET is really going to change that significantly ... |
| Fri 27 Jun | Dr Nimble Cheese | Hey friends,
C++ and Delphi are the right tool for some applications. You've got yourself a nice hammer (C++ delphi) there but not all of us are driving nails.
Java is a good language for building integration points in large enterprise applications. Need an application that integrates SQL and XML based data sources and responds in HTML? Try Java and the rich feast of related standards that have grown up around it. In this world of enterprise apps, the write once run anywhere promise of java is true. It's also true that the open standards related to java, like java servlets, have created a highly competent and competitive environment with several options for a developer to choose from. Don't underestimate the value of platform and vendor independence to a large enterprise app or a dot com app.
Good day. |
| Fri 27 Jun | S. Tanna | I don't really understand why this is a practical (as opposed to legal) issue
Why don't Sun or somebody make the right Java components install as required (i.e. you download a bit over time as your PC needs it, and it gradually builds up a complete working set).
Also my experience of web pages with Java applets in em (which is what I thought this was about), doesn't make me particularly care if Java's on my PC or not. |
| Fri 27 Jun | | Java's like a bus. Lots of noise and smoke, rumble, rumble, can't park anywhere useful, needs lots of fuel. Carries 40. Truly, the new Cobol. |
| Fri 27 Jun | Mike Dimmick | JVMs tend to be written in quite a monolithic fashion - as indeed is the current execution engine for .NET. Besides, would you want to wait ten minutes or so while it downloads the UI library?
One of my complaints about .NET Compact Framework is that MS have omitted a lot of stuff from the desktop (advanced P/Invokes, COM Interop) which would be useful, with no way to get it back. |
| Fri 27 Jun | S. Tanna | > JVMs tend to be written in quite a monolithic fashion - as indeed is the current execution engine for .NET.
That's Sun fault (JVM = monolithic) not Microsoft's. I can't believe it's impossible to break that down.
> Besides, would you want to wait ten minutes or so while it downloads the UI library?
Definitely yes if it was divided up into 5 seconds over several hours or days
And probably yes, if I wanted the app, even if it was in one go. |
| Fri 27 Jun | Just me (Sir to you) | What is the big deal? Surely there was some foul taste from the moral injustice of having the Sun lot getting away with so much perversions, but does it make any difference in the marketplace?
I have never heard of anyone making a Java go/no-go descision based on the fact of wether or not it would be a 'must carry' in Windows. |
| Fri 27 Jun | Java NitPick | -- You still need to license Java source from Sun to write a JVM, and you need to stick to Sun's rules. Of course MS would say that they /did/ stick to Sun's rules, but that appears to be a matter of interpretation.
--
I believe that MS added some proprietary features to their versions of the core classes of the Java API. This meant that developers could write code for the MS JVM that would not run on non-MS JVMs. Hello incompatibility???
Anyone but MS would say MS /did NOT/ stick to Sun's rules. |
| Fri 27 Jun | T. Norman | >'You still need to license Java source from Sun to write a JVM, and you need to stick to Sun's rules.'
You only need a license if you want to include Sun's code for the core classes in your JVM, and want the official 'Java' labeling. Commercial distributors of JVMs license it from Sun as it is often cheaper and more reliable (in terms of compatibility) for them to include's Sun code than to rewrite the core themselves, but there are open source projects working on 'clean room' JVMs that don't include any of Sun's code. See http://www.kaffe.org . Should Sun go out of business or abandon Java, IBM and other JVM creators will write their own.
>'Of course MS would say that they /did/ stick to Sun's rules, but that appears to be a matter of interpretation.'
Sure, if you want to interpret 2+2 as being equal to 5. Their compiler produced code that would malfunction in non-Windows environments, their JVM failed to run code that ran perfectly with other JVMs, and it was found in a court of law that they distributed an incompatible fork of Java in violation of the license terms. |
| Fri 27 Jun | Richard Ponton | From a contract POV, let the lawyers fight it out.
From an anti-trust POV, Microsoft, as a convicted monopoly, should be forbidden from forbidding any of the OEMs from shipping anything they like along with Windows. This should include discounts for not including competing technologies.
my $0.02 |
| Fri 27 Jun | | > I believe that MS added some proprietary features to their versions of the core classes of the Java API.
Microsoft's java compiler always generated cross platform code if that's what the programmer wanted.
The issue with the extensions is that Microsoft's engineers felt Sun's work, especially in the GUI, was not good enough for Windows. They then added their AFC classes to provide better UI's. They also added COM support, which is reasonable. Developers were not obliged to use those.
Sun then made a Dumb Mistake of taking on the Microsoft engineers ( we can do that too!) by developing their JFC and then Swing classes - the better UI that they should have done in the first place. Unfortunately this broke compatibility just as all the popular browsers supported Java. |
| Sun 29 Jun | Philo | Richard, for the record, when you say 'as a convicted monopoly' you might as well say 'I hate Microsoft, and can't stand their products, but here's my opinion'
Because 'convicted monopoly' is meaningless from a legal point of view. Well, it *does* mean something. It means you don't know what you're talking about.
Philo |
|
| How would you find a really good MFC programmer? | Thu 26 Jun | Mehndi (it's just a word, I'm a 'mericun) |
| Our company is looking for a really good MFC programmer. Not the heir to Blaszczak, or anything, just someone that knows it really, really well. Were going through recruiters now, and getting tons of former web and wireless developers. Talented people, Im sure, but not what we need.
I would have thought with prosperity being just around the corner and all, MFC people would be hanging from the trees. Did *everyone* go out and learn Javascript, or what? Why is this so difficult?
Anyway, mostly I just want to complain, but if anyone has any brilliant ideas for how to (secretly - the home office would *freak* if they found out) find a great MFC programmer, lemme have it.
Or, if you just want to complain about recruiters, Id love to see that too! |
| Thu 26 Jun | Chris Tavares | My experience has been that the better you know MFC, the less you want to use it. So those really good people you want aren't applying because they don't want yet another MFC job. |
| Thu 26 Jun | Vince | Honestly, I think any great programmer can master MFC very quickly. So I would concentrate on finding great programmers who can learn new things quickly, instead of finding someone who has a particular skill. Because if a few years from now you need to do something else, a great programmer can always adapt to that, whereas someone who strictly is MFC may have trouble. |
| Thu 26 Jun | Savage Planet | I'm not a good MFC programmer, but I have used it to produce a couple of small applications (see http://freespace.virgin.net/martin.mamo/ffun.html - one of them can even be run directly from a webpage as I wrapped it as an ActiveX control).
I'm of the opinion companies should really look for good programmers that can learn new things.
You can learn enough MFC to be useful within a few weeks (I did!) assuming of course you know something about user interface programming in general and of course C++. |
| Thu 26 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'The better you know MFC, the less you want to use it.'
Hilarious, and true! I'm an MFC refugee, too. ;) |
| Thu 26 Jun | Unicode Guy | Well really good MFC developers generally also have solid win32 Skills to back them up! There's no quick way around this simple fact.
Recruiters are generally not well equiped to properly assess the level of skills needed to be considered competent within the MFC/Win32 development domain. In effect you're wasting your time with recruiters, once you go beyond scripting languages.
One potential recommendation would be to require that the candidates pool be brainbench certified in the respective technology areas, before they can be submitted.
If you'd like more details send me a private email. |
| Thu 26 Jun | Mehndi (it's just a word, I'm a 'mericun) | Vince said: 'Honestly, I think any great programmer can master MFC very quickly.'
We must be using different meanings for the word 'master'. No one can 'master' MFC 'very quickly'. The idea that one could explains a lot of the code I've seen.
The person we're looking for has years of MFC experience; someone, who, for example, can do MI *correctly* with MFC (any idiot can do it incorrectly).
I wonder what 'brainbench certification' is? Well, I'll google it - probably I'll be able to 'master it very quickly'! ;) |
| Thu 26 Jun | T. Norman | Do you already have a system built on MFC? Otherwise, for new development why would you want to develop with MFC? It is a clunky, convoluted, and outdated API, and almost anybody smart enough to master it would also be smart enough to get away from it by now. |
| Thu 26 Jun | . | Chris Tavares has hit it. I consider MFC to be the non-optimal solution, selected by people new to Windows programming. Win32 yes, MFC no.
It's actually an interesting issue. Sometimes people need deep expertise but have only a narrow view of the development environment, so they specify they want an 'expert in MFC' or an 'expert in Director' or something, when that expertise will be found under a different designation.
For example, does the original poster have some particular technical task they want performed? |
| Thu 26 Jun | Crimson | Many people seem to think MFC is Very Bad, but no one has given the alternative. I'm not a Windows UI guy, so I don't know. So what is the alternative to MFC (ie, what other tech lets you do the same thing as MFC)? |
| Thu 26 Jun | somebody | Are you guys kidding? Yeah, Win32 is great if you want to spend 10x as long developing an application as you would with MFC.
With the exception of the full blown DocView stuff, MFC is not much more than a thin wrapper on top of Win32. I don't see how anyone with a little experience with both could possibly chose Win32 over MFC given that they aren't that much different, other than MFC takes care of many of the tedious details for you. There is nothing you can do in Win32 that can't be done in MFC (and usually get done much quicker). If MFC doesn't come with a prefab class to accomplish what you need, it's trivial deriving a new one.
I'd stake my Win32 and MFC expertise up against anyone. 'The better you know MFC, the less you want to use it' should be rephrased as 'The more you try to learn MFC and fail, the less you want to use it.' Don't project your inadequacies on me, please. |
| Thu 26 Jun | Brian R. | I am starting to think if something is that hard to get working, then it probably does suck compared to an alternative. I have never programmed MFC, but if it's easy to not be good at, then it also explains why a great many co.'s would avoid it. It's technocentric, to some degree, to think otherwise.
Just my 2 cents, and wanted to put it out there. |
| Thu 26 Jun | shabob | Respectfully disagree Brian. This doesn't pertain specifically to MFC, but to any tech. To really be so proficient in an API does initially have to do with how fast you can learn, but in the long run, it's the experience that counts.
After 6-7 years of doing nothing but MFC programming (well, one or two years of Java total time thrown in there concurrently), I can safely say that I've mastered it. It may have only taken me 2-3 weeks to get up to speed, but nothing can replace the experience of dealing with the API day in day out.
It's as if I wanted to learn WTL, wxWindows, QT or another GUI API. Sure I can pick it up in 2-3 weeks, but there's no way I'll be up to the same level of familiarity without putting in the years. That goes for anything, not just MFC. |
| Thu 26 Jun | . | Since 1995, Visual Studio has tipped new Windows programmers into MFC. Most of them have never done Win32 and are scared of it.
I just find that MFC provides nothing I need. I can do everything directly in Win32. It has no dependencies, never crashes, does everything, is smaller, has zero memory leaks and resource leaks. |
| Thu 26 Jun | Bored Bystander | MFC is a lousy development platform because it provides a thin, non-abstract, 'leakily abstract' boundary between the API and the application. What I find in work I've done using it is that MFC's tools are low level, bare bones and primitive.
I agree with the comments stating that heavy MFC experience implies some mastery of the Win32 API. I'd be VERY surprised to run into a heavy MFC developer lacking equally deep insight into the API way of doing things. For one major thing, MFC development is still trapped in the dialog editor-resource-source code menage a trois. You have to understand dialog and other resources and what they are and what they do in order for UI development in MFC to be comprehensible at all.
MFC adds a few general things of value: it does wrap the window and window class creation mechanisms to an extent, and it has some good tools for transferring data between data variables and the UI controls. But it's about 20% of the tool that it could and should have been for its time. |
| Thu 26 Jun | Tom |
Go girlfriend. I'm sure you know both very well. Probably better than me, at any rate. (I'm something of a Win32 part-timer.) But you are denying people any kind of subjective response to things they use. I have used MFC, because it provided that pretty handy doc-view thingy, which was a big advantage over my own Win32 classes and WTL, but... gods, it was ugly.
I can rant on for a while about how it was ugly, but I'll be brief and summarise the experiences of the month or two I had to use it for: the string class, the container classes, the bletcherous misuse of #define to overload new, the bletcherous use of proper overloaded new inside the library but no corresponding delete (rendering your own allocators useless without hackery -- hackery that renders them useless in a different way!), non-typed messages-to-your-doc (int+void *? Sorry, did I load my _assembler_ by mistake?), lack of control sizing or layout, everything beginning with a 'C' (am I weird, or does noone else confuse their classes with other things?) and general nastiness forcing you to use class wizard and new project wizard to get anything done.
Compare and contrast with Win32 API, which in a large project is sharp stabbing pains through the eyeballs compared to MFC's dull abdominal ache, or wxWindows, which is MFCish but manages to be better-thought-out and vaguely pleasant to use, or WTL, which didn't suit my purposes (and was a bit wierd :) but managed to have MFC-style message handlers without needing the bastard class wizard. There are probably plenty more examples, but these are the ones I've used (suffered?) with C++.
I will freely admit that MFC is better than nothing, and it's already written, and lots of people know how to use it. It does not follow that it is not crap :)
P.S. I hope I didn't get (m?)any technical details wrong; I have some more complaints up my sleeve if any of the above should prove unacceptable. |
| Thu 26 Jun | Tom | The above post is presented with apologies for some hubris that was not obvious until the message appeared all on screen at once. |
| Fri 27 Jun | S. Tanna | I know MFC for several years and still use it. I know the Win API pretty well having spent several years prior doing it direct. Pretty much the only areas that I've never touched is MFC's database and IIS server classes.
50% of the 'problems' in code I see with MFC, are because the developer doesn't understand how the Win API works. The other 50% is because they use the Wizard to do everything.
MFC is mostly a thin wrapper (except for the bits where they went off on a side-track, most of which aren't that great).
Advantages of MFC
- it's a thin wrapper. Doesn't hide what WinAPI is doing (much) and you can read the source
- pCombo->AddString (for example) is way better, easier to read/debug, more type-safe, than the equivalent SendMessage in WinAPI
- sub-classing controls is way easier in MFC than Win API
- you can mix MFC easily with native Win32, even for handling the same window or something
- lots of people know it, many web sites with samples/tutorials etc.
- the results can run on pretty much any Win32 machine (NT 3.51 might be a problem - not sure - but does anyone still care), and with minor work you can make it work with correct UI on each.
Disadvantages of MFC
- it's a thin wrapper. You need to understand WinAPI to get most from it, (except in some areas it doesn't add that much)
- it's a thin wrapper. Some classes, if not used correctly, will leak.
- some classes are not so good IMHO, esp legacy classes
- lots of areas of Windows not covered at all
- the COM support is, er, confusing |
| Fri 27 Jun | smkr4 | 'What I find in work I've done using it is that MFC's tools are low level, bare bones and primitive.'
And they reinvent the wheel incessantly and unnecessarily. There's nary a design pattern to be found in the wrapper (Document/View? What? Why not just a standard Model/View/Controller?) and there are lots of kludgy, half-done 'general purpose' classes (like CString).
Nevertheless, I tentatively agree with SomeBody and Tom on the issue of actually using the damned thing. MFC is faster development than the Win32 itself, and with proper insulation from business logic (ie, so your core functionality isn't tainted with its nastiness), it can save a lot of time. In some ways, MFC is a valuable exercise for many programmers--it teaches in a very illustrative way the need for abstraction. Because God knows, MFC is the arch-enemy of portability. :)
That being said, it's really just a matter of settling. MFC is what's supported by Visual Studio--a tool which is indisputably the best IDE for Windows development. It has the support and the widespread entrenchment. And from a business perspective, that often translates into a lot of encouragement from on high for its use.
Just as long as we're all aware that MFC, with its compiler-integrated macros (I'm no anti-macro Nazi, but MFC's are just egregious), is not a prime example of what well-engineered OOP should be...:) |
| Fri 27 Jun | Mr Jack | I doubt you need one. I develop MFC, COM and ATL these days. And let me tell you, they are the easy part of my job. MFC is good an knocking stuff up, but bad at doing anything past that, most of the time you need to build on top of it to get round bugs and limitations anyway. And therein lies the problem, MFC is badly designed, badly hacked together, macro-ridden and buggy. Worse since you normally put it together with Wizards you effectively lose half your source code anyway.
Win32 is an ugly API; MFC is whole ugly way of working.
Coming back to the point. If you're continuing developing an existing MFC app, then a competent C++ background is more important than specific MFC knowledge and Win32 knowledge is almost as useful as MFC knowledge. If you're developing a new app, don't use C++ for the UI. |
| Fri 27 Jun | Phibian | 'The better you know MFC, the less you want to use it' should be rephrased as 'The more you try to learn MFC and fail, the less you want to use it.'
I don't know about that. Our developers used MFC extensively for a number of years, but disliked the bugginess of many of the classes (IIRC, the Date functions were a particular pain).
We eventually developed our own equivalents of each of the MCF classes we use - providing us with the ability to have control over the source, the advantages of MFC without (we like to think) many of the disadvantages, and a single code base that runs on Windows and Linux. And our code is faster...
I think it comes back to Joel's comment about the importance of determining the best tools for the job.
-----------------------
http://www.joelonsoftware.com/articles/fog0000000026.html
'When I sit down to architect a system, I have to decide which tools to use. And a good architect only uses tools that can either be trusted, or that can be fixed.'
-----------------------
In our case, MFC really didn't pass that test. |
| Fri 27 Jun | Mehndi (it's just a word, I'm a 'mericun) | Interesting... the one thing I didn't anticipate what that the discussion would be about the merits of MFC... I actually expected someone to ask me what city I'm in...
Anyway, yes, we have a huge existing application written in MFC - rewriting it is NOT an option.
But let me ask this, to all the people who apparently hate MFC: let's say you have a big app to write (say, half a million lines of code in all). It makes no sense to make it a thin-client app (for reasons JoS readers will readily understand), and needs to run only on Windows. Also, the language used needs to be fast, and needs to make it easy to do COM and low-level stuff.
Am I nuts, or can that set of requirements only be met by C++/MFC? Am I incorrect in ruling out:
- Java: too slow for a thick client app
- direct Win32 programming: way too labor-intensive
- VB: too unwieldy, and too slow
And what about C#/.NET? Well, this app makes no sense as a web app, so what does C#/.NET offer me over C++/MFC? I suppose I could do in VB.NET, which (I read) has theoretically the same power as C++.NET...
These are not sarcastic questions; seriously, am I just woefully underinformed, or would MFC still be way to write this app, even today? |
| Fri 27 Jun | 19th floor | The fact that Microsoft didn't use MFC for any of their major applications speaks volumes about this issue. |
| Fri 27 Jun | Ken E | How about ATL+WTL, which gives you just about everything MFC does, but without the annoying Document/View paradigm. |
| Fri 27 Jun | S. Tanna | > The fact that Microsoft didn't use MFC for any of their major applications speaks volumes about this issue.
Word, PowerPoint etc. predate MFC, so you would hardly expect them to throw it away and be written with MFC!
Lots of MS apps are written in MFC. There was a list somewhere in something like the MFC FAQ. I can't remember them all, but did include WordArt, the Visual Studio GUI, chunks of IE, and quite a few others
If you don't like Doc-View in MFC, you don't have to use it. If anybody things that it is required, I think that I'd say they are letting the wizard do their thinking for them. |
| Fri 27 Jun | S. Tanna | > Am I nuts, or can that set of requirements only be met by C++/MFC? Am I incorrect in ruling out:
I don't think you're nuts. I think MFC is a reasonable, but not perfect starting point for many apps
> - Java: too slow for a thick client app
Too slow, and what if you want to take advantage of many native Windows features. MFC mixes very happily with WinAPI
> - direct Win32 programming: way too labor-intensive
I consider many of the MFC classes to be a much faster and more type safe way to direct Win32 programming. It is not fundamentally different. The other classes where they try to invent functionality not in WinAPI, you can take them or leaving them.
The big advantage of MFC for me is (a) you don't have to use it for everything (mixes win WinAPI), and (b) you don't have to follow the default way that most people set apps up - for example you aren't forced to use Doc-View or whatever, just take the bits you want.
> - VB: too unwieldy, and too slow
It is definitely too slow for me, plus I want to go to the metal
> And what about C#/.NET
If you don't mind the huge framework requirement (what about older Windows systems?), and it's not native machine code, so it's bound to be slower
I guess there is Delphi and C++ Builder and so on too, but then you tend to end up in a specialist Ghetto. |
| Fri 27 Jun | Mike Dimmick | I'm a regular MFC programmer on Pocket PCs. On that platform, yes, MFC does take up memory that you might use for other things. But I think ultimately it's the right tool for our job.
We write custom vertical market data capture applications, typically with barcode scanning, typically locked down (i.e. restricting access to the Start Menu and other Pocket PC UI widgets, so the user can't switch to Solitaire). We don't currently use Document/View (although some areas would be simplified if we used CFormView-derived classes contained within a frame window rather than a stack of dialog boxes). I'm our team's library builder as well as an application designer and implementer - I'm also the hardcore debugger.
Part of the trick is to know what the wizards are going to do for you, and when to use them. The version 6 IDE (also used in eVC 3.0 and 4.0) has a major problem with extending the Wizards, mainly because it doesn't know enough about your code, or rather it knows different amounts in different places (e.g. browser information, ClassView, IntelliSense). If you don't know what the Wizard is going to do for you, it tends to end up being what the Wizard does _to_ you...
It's much easier to extend the behaviour of a control in MFC than it is using the raw API calls. We often end up doing this - the customer (or my boss) says things like 'Can we have it do _this_ when we press Enter in this field, rather than simulating the OK button'. Or we need to get a list control containing multiple lines of text for each item.
Finally, it's actually easier to teach MFC programming to someone familiar with VB than to teach them raw Win32 or, heaven forbid, ATL. Even C++ geeks struggle with ATL.
That's not to say I won't use anything else: simple launchers or setup DLLs tend to be written with the Win32 API, controls with ATL. We have a library for porting Symbol Series 3000 terminal applications, which is written using a combination of raw Win32, ATL windowing and MFC string and collection classes. I wasn't going to include MFC until I remembered that our scanner handling code relies on CString and CWnd.
CWnd isn't exactly free: MFC does maintain temporary and permanent maps of CWnds to HWNDs, which pulls in a whole load of other MFC initialisation code, which creates a great deal of other stuff. The message map implementation is table-driven and this code is in the library as well. ATL's implementation is more efficient but less intelligible.
I'd say, if you need great efficiency, use ATL with WTL. If you need reasonable efficiency and slightly faster development, use MFC. If you're writing something extremely small, use Win32. Otherwise, start looking at .NET. |
| Fri 27 Jun | Mike Dimmick | From what I remember, IE is mostly written in ATL, but I could be wrong about that.
As far as .NET goes, I'm quite glad that a lot of Windows Forms has ended up being quite configurable (e.g. Application.Run) rather than going down the old VB6 route of 'this far, but no further'.
Since the compiled code is JITted with .NET, you should only see a slight delay while the code is compiled from MSIL to the target machine language when a routine is first run. It's not quite as optimal as you might get if you'd written it in C++ and run it through that optimiser, and at present, C# and VB.NET don't attempt to produce optimal IL code, so there's often some dead code or unnecessary operations performed (e.g. reloading something just stored), but on the whole it's pretty good.
However, I don't currently have a lot of experience with .NET, since Compact Framework has only just come out. |
| Fri 27 Jun | S. Tanna | > From what I remember, IE is mostly written in ATL, but I could be wrong about that.
It's componentized (sp?) which is part of it's brilliant. I doubt it's all written the same way. Delete the MFC DLL, and see if it runs :-) |
| Fri 27 Jun | 19th floor | S. Tanna: I neither like nor dislike MFC. I consider it a useful step in the OOD evolution.
MFC dates from ~1991, I don’t think MS Office predates it by much.
As for what applications make use of MFC there is no reason to delete any dll. Use this http://www.codeguru.com/system/TaskManagerEx.html utility, in case you don’t have it already (very useful debugging tool, by the way) and check the loaded modules.
Strangely enough VS6 uses MFC, VS7 does not, nor IE6 or the Office applications. Let me know what you find. |
| Fri 27 Jun | Chris Nahr | 'Strangely enough VS6 uses MFC, VS7 does not, nor IE6 or the Office applications. Let me know what you find.'
There was a post some while back indicating that VS7 (= VS.NET) is actually a relabelled Java IDE rather than a new revision of the VS6 code base. Haven't seen any confirmation for this, though. |
| Fri 27 Jun | Chris Tavares | VS.NET is the next version of the Visual J#/Interdev IDE rather than VC 6. Originally, this was supposed to be the codebase used by VC 6 and VB 6, but the VB 6 team bailed and went on with their own IDE. Then the VC 6 team did the same thing. |
| Fri 27 Jun | Jim Howard | 'MFC-style message handlers without needing the bastard class wizard. '
One way to tell if a programmer has MFC experience might be to ask him to write message handlers without using the class wizzard.
Once you use and understand MFC you will understand what the class wizzard does, and you can probably type the boilerplate code almost as quickly as calling up the Wizard and fillling in the blanks.
If you haven't tried MFC 7.0, it's got a good start on some excellent HTML GUI classes. They are about 85% done, but very useable as is and of course you can expand them.
It's great to be able to get an artys fartsy type to describe the GUI with HTML and then use good 'ole MFC to do the behind the scenes work. |
| Sat 28 Jun | Michael Moser | really good MFC programmer
well, yeah, that's me
(among other things as well) |
| Sun 29 Jun | AnMFCAndJavaProgrammer | You know, I'm reading these posts and what strikes me is that many posters have no solid foundation for saying that MFC sucks, and why, or that Java sucks, and why.
Both are great and suck at the same time.
Both are great because you can use them to produce real-world applications. Both suck because they have blemishes and flaws which perhaps could have been recognized and prevented.
MFC is good in some respects, and Java is good in some respects. MFC might not be good in the same things that Java is. Both can be used to produce real world applications, but not necessarily the same types of applications.
MFC has the advantage of being a mature and well understood technology, running on top of a mature and well understood platform (Win32).
Notice that I don't claim that either MFC or Win32 is perfect. If you have any significant experience in programming for them, you know that. But you can use them to successfully produce real world applications. Besides, I suspect that you could make the same claims about X/Motif and whatever the Macintosh equivalent is called. Imperfect, occasionally deeply flawed, but workable, and with experience, capable of handling complex, real-world applications.
What about Java. Its approaching the same real-world problems from a different perspective. If you're looking for a modern replacement for MFC/Win32, you may be in for a big disappointment. But, if you're looking for a technology for producing platform independent, web-based apps, perhaps Java is for you.
If your core business is directed toward supporting clients on Windows, perhaps MFC is better, and maybe .NET better yet. Maybe even Visual BASIC (gasp!). Probably using Java and SWING in these circumstances will result in a less than optimal solution -- its doable, but why?
If you have an immediate and direct need to be concerned about multi-platform issues, then again you may need to put up with the blemishes and imperfections of Java and SWING.
The debate should be based on what is required in the real world. Let that dictate the choice, rather than time-wasting arguments over the theoretical merits of one over the other.
If you have lots of legacy code that could potentially be reused, and its in MFC, where's the question?
If you are starting from scratch, thats a different matter.
Sorry for the rant, but I'm relaxing after a continuous one month push to get a combined MFC and Java app suite out the door. |
|
| Any thoughts on generic data models | Thu 26 Jun | will s |
| After reading the discussion at the below URL, I thought Id ask the JoS community. What do you think of generic data models, i.e. using database tables objects, attributes, and object_attributes to represent almost anything? Do you think the flexibility gained offsets the complexity of the queries/scalability issues for certain applications? Any alternative models that are both flexible and scalable?
http://asktom.oracle.com/pls/ask/f?p=4950:8:1474402::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:10678084117056, |
| Thu 26 Jun | Mike Gamerland | Unless you have a really pressing need for a generic data model, avoid them. To me it boils down to the 80/20 rule. 80% of the time will be spent in maintenance and debugging. Generic models make application support more difficult because everything is dynamic. You cannot assume anything as the code flies.
Add to this the overall impact to resource time/cpu/memory and you begin to have a difficult time justifying the ease of expansion across the entire domain of support.
Some places it can work very well. Most I have seen overuse it to their detriment. |
| Thu 26 Jun | Peter McKenzie | Its a well known bad idea. You are replicating functionality already provided by the RDMS, and in doing so you just add a layer of inefficiency.
cheers,
Peter |
| Thu 26 Jun | Ron Porter | I actually started down that road once. I eventually got to the point where I was building screens to help me manage things. That's when I realized that all I was doing was rewriting Access in Access. So much for that brainstorm, but it was fun while it lasted. I also learned a great deal (keeping in mind that we learn the most from our mistakes ). |
| Fri 27 Jun | HeWhoMustBeConfused | Generic data models, specifically those which convert everything into attribute-value representations, are a bad idea.
Their worst feature is that they obscure the semantics of the database. In the absence of suitable documentation, unless you can inspect the data you have no idea what attributes are stored, nor of their aggregations and relationships.
Further, this type of data structure makes it difficult to work with sets of attributes. For example, a query to 'show me the orders where the estimated delivery date is greater than 90 days from the date of order placement' is damned difficult with this type of data structure, but trivial with a correctly normalised design.
Finally, the performance of applications with this type of design is atrocious.
Schemas with sparse data requirements, such as star schemas for data warehouses were not all dimension values apply to all other dimension values, are one of the few suitable candidates for this type of model. Otherwise, don't bother! |
| Fri 27 Jun | Better than being unemployed... | The only time I've used a generic 'other attributes' field is when it's used to mean 'miscellaneous data we didn't know we needed but last minute feature creep meant we had to shoehorn it in here for this release because it was the least risk to retrofit it'. Oh, also we're using a ten year old bespoke database engine where adding fields on the fly as part of an upgrade is a major programming effort.
A proper database design planned upfront with sensibly designed tables and relationships is the way to go. Don't make things too abstract 'just in case', you'll probably end confusing yourself. |
| Sun 29 Jun | S. Tanna | Any thoughts? IMHO, they suck
If you have more than a few records, a generic model as described in the original question will probably be unusably slow. It also means you can't write simple queries or use standard tools such as report generators, or set up constraints and so on the server (which is one thing normal databases excel at)
Lots of vertical applications however require user (or user's admin) configurable fields, relationships, tables. For this I would suggest using the database as intended (avoiding the problems mentioned previously), and then some kind of meta data which your app queries to understand the fields/tables/relationships.
Most modern databases do have some meta data built-in, but chances are this will be insufficient to the task, as it will simply give you table, field names/types/etc. So therefore you need additional (or alternative) meta data describing relationships, application-specific information (e.g. name of field on the screen or what your app uses a particular field for, etc.). |
|
| Non OOP Java Experiences | Thu 26 Jun | GenX'er |
| I am a little scared. The company I work for is mostly a COBOL mainframe shop. Over the years they developed some pretty horrible VB6 client server application. The object modeling is horrible being that the VB devs were converted COBOL progs that are only capable think in structured programming terms. All of the code is designed poorly and encapsulization and good programming techniques are ignored all over the place (no option explicit, many variants, many many undeclared variables, huge arrays of user defined types as properties of classes that are never set to nothing and are globals, business and database code sometimes right in the forms, other times in a class, global collections that can hold 5 different types of classes at once instead of using custom collections, etc etc etc)
I have inherited this mess while these Senior Programmes are writing new versions of the applications in J2EE Intranet. I have a feeling that the code is going to be just as bad with little or no correct OOP techniques used. One day I will probably have to inherit this as well.
My question is: Has anyone else had experience with developers writing bad Java code that does not correctly use simple OOP techniques????? (considering evertyhing in Java is an Object) |
| Thu 26 Jun | Joe Grossberg | Read Martin Fowler's 'Refactoring'. It has advice on how change code to give it more of an OOP flavor.
There are also several design patterns that would help you deal in an OOP manner with an underlying layer not made of objects. |
| Thu 26 Jun | Tom Vu | My question is: Has anyone else had experience with developers writing bad Java code that does not correctly use simple OOP techniques????? (considering evertyhing in Java is an Object)
Yes, it's called real world code. |
| Thu 26 Jun | Peter Ibbotson | That depends, viewed naively the same thing could be said of lots of the code base I currently deal with.
Actually in our case lot's of this is for three reasons:
a) We're compatible with our existing dos code base, this means we do things in a stupid non-oop fashion so the two can co-exist (i.e. some users in DOS some in Windows)
If your VB code can talk to the same database this may be why.
b) We have code that is nearly identical to the DOS version (See joels good software takes ten years article for why) complete with ugly gotos and all the rest. For some of the more complicated routines, which may need to restart on exceptions or jump out to other routines the code is then very similar which helps considerably when debugging.
c) Some of it was written by programmers moving from being non-oop to oop, often in a hurry so the non-oop way was less likely to create obscure bugs while they were learning.
Item a I can't do much about.
Item b We've tried the other way, and when you get a bug of 'the dos version is fine, but the windows version is broken' variety it's a complete nightmare
Item c If it ain't broke, why fix it
Some of this is down to inexperience on our part 4-5 years ago. Our new version written in C# doesn't have these problems as we're starting from ground zero with a nice object model first, rather than trying 'clone' an existing system. At this point our rewrite and restructure could in theory be done by refactoring, however we're also taking the opportunity of moving programming environment to redesign the way the system works (Moving from 2 tier to a 3 tier model) thus breaking most of Joels rules. However we're not planning on adding huge amounts of functionality at the same time and the move from 2 tier to 3 needs to be done at some point so I don't feel too worried. i.e. we should have the what does the previous version do as a reference model.
However back to your question. You say you have a 'feeling', have you actually wondered over and had a look to see quite how bad the mess is? Certainly if I employed a new developer and never let them look at our next version they could have just the feeling you're getting. I don't know just how feasible it is cockup a J2EE application by attempting to write COBOL, perhaps you can go and have a quick peek and report back. |
| Thu 26 Jun | Mike Swieton | I think it's largely a question of the programmers.
Some environments (the Java language, some frameworks I've used) try fairly hard to push you to use their recomended style. I've found that while the correct methods are not obvious, the incorrect ones often are.
That is, Java wants you to program in an OO manner, at it's pretty clear that your code doesn't 'fit' when you look at it in the context of the Java APIs and language features (why do I need this 'catch' here?).
It comes down to, if they are willing to learn, they should notice their own most egregiously bad code. If they're really good, they'll fix it.
It comes down to them, though: good programmers will learn J2EE by going through tutorials and absorbing the style used therein. Bad programmers will memorize 5 to 10 line blocks of code for doing specific tasks and then cut and paste them together.
Of course, even if their good, it's fairly likely that their first OO app will be disgusting (I know mine were, until I reached enlightenment). |
| Thu 26 Jun | Walter Rumsby | I would be scared. |
| Thu 26 Jun | Noname | I wasn't involved in one, but I have witnessed it.
The company took a bunch of COBOL and database programmers, trained them for a couple weeks in Java, and BOOM! put them straight onto a big Java project with EJBs and all the J2EE bells and whistles.
Widespread cut-and-paste instead of inheritance. The JSPs were a mangled mess of HMTL intertwined with Java code. They overused EJBs in the design (actually there wasn't much of a 'design'), killing the performance to the extent that each of the big expensive servers couldn't handle more than 15 concurrent users. The project ran for 3 years instead of the planned 2 years.
The one guy who knew what he was doing built a code generator to automate the creation of dozens of classes that followed certain patterns. Some of them would require manual customization, so guess how they did it? Direct editing instead of inheriting from the generated class. Then whenever they had to regenerate one of those classes, they had to go and cut-and-paste the customized pieces back into it. That guy resigned within the first year.
They created a legacy system in an object-oriented language. |
| Thu 26 Jun | | > no option explicit, many variants, many many undeclared variables
Yes, that's complete junk. If they did that in VB, I shudder to think what they'll do in J2EE. |
| Fri 27 Jun | Astarte | I have worked on a project were the original code was written in C (and it wasn't too bad, just huge .c files with huge .h files, lots of side-effects but not too much spaghetti) and later compiled using a C++ compiler. This code was then 'translated' to Java (i.e. just make it compile) and then some parts were 'fixed' to use objects instead of public static classes. It has taken around 4 years to gradually migrate the code to proper OO design by a team of knowledgable OO developers and we are still fixing big threading bugs. The big carrot in this project has been maintainability and extensibility. The old code had a well-deserved reputation for being a nightmare to fix (you can't even find the function where stuff is done, never mind figure out its side-effects, despite it being extensively commented) and a nightmare to add new features to.
Good luck. Read the refactoring book. Really! Also, I can't emphasize enough how important regression (black box) test cases are. They have saved our butts time and again... |
| Fri 27 Jun | GenX'er | Yes, it's called real world code.
Tom Vu
Thursday, June 26, 2003
-------------------------------------------------------------------------
I guess your code sux too then huh Tom?????????
Bob is that really you? |
| Fri 27 Jun | Thomas | I think you're right to be concerned. Unfortunately, since you're a junior guy, your voice doesn't carry much weight. However, if I were in your shoes I would try talking to my boss about getting these senior developers some training and mentoring on this project. Something like this:
'Hey, Boss, you got a minute?... Okay, well I figure at some point I'm going to be transferring to this new J2EE project, and I've been doing a little reading to sort of start preparing, and one of the things that I've noticed mentioned a few times is that since J2EE is so large and complicated, a lot of teams really struggle on their first project to deliver on schedule and on budget. I'm not saying our team aren't smart or don't know what they're doing, but they don't have much experience with J2EE. And from what I've read it doesn't matter how smart or experienced you are with other languages or tools, when you transfer to J2EE it's a whole new world. Anyway, the reason I'm mentioning this is because I think it would make sense to look into giving our developers J2EE training or hiring a couple of J2EE experts who can keep us from going down the wrong path. What do you think?'
Notice the way this is worded: you're not talking about your expertise or knowledge, you're just referring to 'the experts', which bumps up your credibility, and you're not telling your boss what to do, just asking him if it would make sense to 'look into' a couple things.
Now, you may have a PHB manager who will tell you that when he wants you to have an opinion he'll give you one :). But if you have a good manager, he'll be appreciative that you're pointing this out and might look into it. And you'll be showing some initiative -- which in the right environment will get you recognized in a positive way.
Another tack, if you know the above won't work, is to approach one of the developers on the project with this information and let him deal with it. Especially if you can talk to someone with whom you have a good relationship and/or a senior developer or team lead. Because it's going to be his ass that's hanging out if the project goes over-schedule and over-budget, and if he can do something to mitigate that he will.
Finally, worst case, if you can't get any traction, then just let it go. And when the time comes for you to start maintaining the code, you'll learn a lot about refactoring. :)
-Thomas |
| Sun 29 Jun | Neil Bloh | Judging by your post, I think you have your head in the sand. A lot. |
|
| PBS program, NOW with Bill Moyers | Wed 25 Jun | Ron Hira, Ph.D., P.E. |
| I was contacted by a Producer for the PBS television program, NOW with Bill Moyers.
She wanted to interview individuals who have lost their jobs because they were offshore outsourced. Does anyone have the name of someone who can demonstrate that they have downsized because of outsourcing?
Ron Hira, Ph.D., P.E.
Columbia University
Center for Science, Policy, and Outcomes
E-mail: rh2107@columbia.edu Web site: http://www.cspo.org
1 Thomas Circle, NW Suite 1075
Washington, DC 20005
tel: 202-776-0370
fax: 202-776-0375 |
| Wed 25 Jun | one programmer's opinion | Hi Ron,
Ron wrote, 'She wanted to interview individuals who have lost their jobs because they were offshore outsourced. Does anyone have the name of someone who can demonstrate that they have downsized because of outsourcing?'
No, I can't. However, I can provide you with several online articles regarding computer workers who have lost their jobs to outsourcing such as this one, 'BofA cutting 900 tech jobs, 232 in Bay Area'. Also, you might want to send an email to Dr. Norman Matloff.
Below, are two of his relevant web pages:
Norman Matloff's Immigration Forum http://heather.cs.ucdavis.edu/pub/Immigration/Index.html
Norman Matloff, Debunking the Myth of a Desperate Software Labor Shortage, Testimony to the U.S. House Judiciary Committee, presented 1998 April 21, updated 2002 July 12
http://heather.cs.ucdavis.edu/itaa.real.html
Below, are a few web sites where you might want to re-post your question:
* http://groups.yahoo.com/group/AmericanWorkersCoalition
* http://www.programmersguild.org
* TechsUnite.org - run by the AFL-CIO -http://www.techsunite.org/index.cfm
* Washington Alliance of Technology Workers, Communications Workers of America, Local 37083, AFL-CIO http://www.washtech.org/
* http://groups.google.com/groups?hl=en&group=alt.computer.consultants
* http://www.zazona.com
In my opinion, the producer of 'NOW with Bill Moyers' tv show should really give serious consideration on doing a segment about American technical workers who have lost their jobs to H-1B visa workers instead of or in addition to the outsourcing segment she plans on producing. Why? I don't think the outsourcing of work can be stopped, however, Congress does have the ability to repeal the H-1B/L-1 visa laws or at least amend them. |
| Wed 25 Jun | Philo | ...spefically concentrating on abuses of the H-1B program (domestic employees available to do the work, treating the H-1B's as indentured servants, paying well below market rate)
Given the current state of the IT industry, it's impossible to justify the H-1B program with some narrow exceptions.
Philo |
| Wed 25 Jun | somebody | Anyone want to guess what the likelihood is of a show on PBS mentioning Hillary Clinton and Tata? |
| Wed 25 Jun | www.marktaw.com | I don't know if I directly lost my job due to offshore outsourcing, but it's pretty close. I can ask around my old workplace and see if anyone was directly laid off because of this. |
| Thu 26 Jun | Jim Rankin | Interestingly, Norman Matloff argues that the misuse of H-1Bs and L1s is much more to blame for restraining U.S. programmer wages than off-shore outsourcing.
From: http://heather.cs.ucdavis.edu/itaa.html
'Offshoring only comprises about 1% of U.S. software development work.'
...
'Savings are not nearly as large as perceived. A recent WALL STREET JOURNAL article cited a cost
savings of 22%—far less than one would expect from the fact that salaries in India are about 1/10
of those in the U.S., and certainly not enough to offset the major problems which offshoring tend to
cause.' |
| Thu 26 Jun | Michael T. Emmons | Many already know our story. I passed it on to PBS, hopefully they air it.
I am one of 20+ Americans that were mandated to train our foreign replacement workers; in Lake Mary, FL. Those workers are Tata Consulting(TCS) India employees. TCS India transfers their employees from TCS India to TCS USA using the congressional H-1b and L-1 'intra-company transfer' work visas. Their goal, the jobs we did. Once the training was completed the Americans were laid off.
Our management brought the Americans into a room and told them they would be laid off. But first they said, 'we want you to train your replacements'. They held out a carrot for the Americans, a severance; 'stay on and we'll give you this severance when you leave.'
Now, Is this fair to American citizens? Believe me, it is happening all over the country and our congressional leaders will not help us. To name a few, JP Morgan Tampa, Siemens Energy & Automotive Atlanta, American Express, Siemens Shared Services Orlando. In fact Siemens Shared Services used the 'L-1' visa to replace their Accounts Payable staff with Indians from India. It's not just the Information Technology industry that is targeted.
Over 9 months of begging and pleading for help from the likes of FL Senator Bob Graham(D), FL Senator Bill Nelson(D) and FL Representative John L. Mica(R) have gotten us nowhere.
Tata Consulting India has done this so many times they have become complacent. They put their entire replacement project documentation( 500MB/800 documents) on the shared drive at Siemens. Among those documents are the 'infamous' knowledge transition documents.
That would be knowledge transfer from AMERICANS to Indians; right here in Lake Mary, FL. Those documents were provided to the DOJ, DOL, INS, Senators and Representatives. Did they do anything? Not a chance in hell.
This was the most demoralizing time of my life. The worst part was not Siemens nor TCS, nor the Indians. The worst part was the lack of support from our political leaders.
Hillary and TCS
http://www.hannatroup.com:81/USA/tata/HillaryTCS.html
http://www.hannatroup.com:81/USA/tata/TCSFears.html
Widespread support of outsourcing jobs from America
support by YOUR Congress!
About 140 Congressional members that belong to the IndiaPAC
http://www.OutsourceCongress.org:81/rep/indiapac/
http://www.OutsourceCongress.org:81/
Argh! My representative FL District 7 John L. Mica
http://www.OutsourceCongress.org:81/mica/
http://www.OutsourceCongress.org:81/mica/Mica_L1.html/
http://www.hannatroup.com:81/USA/tata/Mica_Contributions.html
The scum of WA, Rep Jay Inslee
http://www.OutsourceCongress.org:81/rep/inslee/
IL Rep Philip Crane
http://www.OutsourceCongress.org:81/rep/crane/
NY Senator Hillary support Tata Consulting, the same company that is replacing American workers at Siemens FL, Eaton, Ohio, Cutler-Hammer Pittsburgh, JP Morgan Tampa and who knows where else
http://www.hannatroup.com:81/USA/tata/HillaryTCS.html
http://www.hannatroup.com:81/USA/tata/TCSFears.html
IL Rep Mark Kirk
http://www.OutsourceCongress.org:81/rep/kirk/
NY Rep Joseph Crowley
http://www.OutsourceCongress.org:81/rep/crowley/
The DOJ letters that basically said we don't care about American workers; we got cheaper foreign ones
http://www.OutsourceCongress.org:81/doj/ |
| Thu 26 Jun | Barb Fleeter | There is a group of us at Lucent Technologies that have
been outsourced (or insourced) to Lucent employees in
China -- supposedly at 1/3 or 1/4 the cost of having the
development stay in the U.S. So, I'd be willing to talk to this
producers, and I'm sure there are others here that would be
too.
More of this is scheduled to happen over the next 6 months.
Thanks
Barb |
| Thu 26 Jun | Nick | If this is Bill Moyers - there is noooo waaaaay he is going to show a link between Hilary or any Democrat and Tata.
People who play partisan politics are idiots because inevitably they will support a person or a position that they shouldn't - simply to stay on the righht side of the divider. It's even worse when the person who does this is a 'journalist' - and that decribes Moyers to a T. |
| Fri 27 Jun | Ron Hira | I didn't realize that this topic was posted to this website.
If you have a story to tell, please email me directly at
rh2107@columbia.edu so that I can forward your
contact info on directly.
Thanks,
Ron Hira |
| Sun 29 Jun | somebody | There are so many outsourcing jobs in India now, so that Tata and some other Indian companies are outsourcing jobs to places in other countries to fulfill the shortage of workforce. (Anybody in India who can spell COMPUTER is considered a 'very good programmer') |
|
| XSLT book | Fri 27 Jun | me_in_the_corner |
| Can you guys recommend a good XSLT reference? Thanks |
| Fri 27 Jun | Philip Dickerson | My short list of recommended books for XSL/XML is shown below. Note that there are many available books on both XML and XSL; the books listed below are more specifically oriented towards usage such as using a web server to transform relatively straightforward XML structures and files to complex HTML output and transforming XML structures into different XML structures. If you are specifically looking for technical details for using Microsoft's MSXML parser, I think the current best source of this information is Microsoft web sites, such as http://msdn.microsoft.com/xml/default.asp . (Note: This list is based on my own experience and reviews of books from about a year and a half ago - there may be more recent books that are better.)
I would categorize the 3 books below as:
Tutorial - XSLT: Working with XML and HTML
Introduction - The XSL Companion
Reference - XSLT Programmer's Reference
although each book contains some aspects of each category. Also, since people learn in different ways, other people may categorize the books differently. These books assume, to some extent, that the reader already has some elementary understanding of the basic structure of XML and of HTML presentation. Note that there are occasional minor errors in some of the code examples in the books, but this doesn't interfere with the concepts being demonstrated by the examples.
(1) XSLT: Working with XML and HTML by Khun Yee Fung
Price: $39.95
Paperback - 441 pages 1st edition (December 20, 2000) Addison-Wesley Pub Co; ISBN: 0201711036
http://www.amazon.com/exec/obidos/ASIN/0201711036
This book is about XSLT, or XSL Transformations (XSL stands for Extensible Stylesheet Language), which is a language developed by W3C that can be used to transform XML documents. XSLT is so versatile that it can transform one kind of XML document to another kind of XML document, to an HTML document, or to a text document.
This book is for anybody who wants to use XSLT to transform XML documents to HTML documents. We will look at what XSLT is all about, how it is used for transformation to HTML, and especially how to write the XSLT documents for the transformation. Although XML to HTML is the focus of this book, the principles of transformation do not change whether you want to transform XML documents to HTML, XML, or text. Once you know how to produce HTML documents, you will possess the knowledge to produce the other two types as well.
(2) XSL Companion, The by Neil Bradley
Price: $27.96
Paperback - 336 pages 1 edition (September 7, 2000) Addison-Wesley Pub Co; ISBN: 0201674874
http://www.amazon.com/exec/obidos/ASIN/0201674874
This book focuses on the details of how XSLT in particular can be used to mold information on the fly. The author breaks the standard apart into digestible chapters that cover, say, 'contextual formatting' and 'sorting.' The content is fast moving and demands a technical reader who is comfortable with complexity. Those who are new to XML technologies should pick up a general tutorial prior to tackling this book.
Along with text explanations of all of the magic that XSLT and XSL can do, the author uses code snippets and numerous graphical diagrams to illustrate information processing, layout, and tree navigation. These visual elements add much to the explanation of what otherwise would be abstract concepts indeed.
The author addresses head-on the fact that much of XSLT's job today is to turn XML data into HTML-formatted documents that are compatible with the current batch of browsers. There is plenty of focus in this book on how that is done, but the chief purpose remains the exploration of the powerful transformation and formatting features that the XSL standards provide.
(3) XSLT Programmer's Reference 2nd Edition by Michael Kay
Price: $27.99
[Note: Don't get a used copy of the 1st edition.]
Paperback - 800 pages 2nd edition (April 2001) Wrox Press Inc; ISBN: 1861005067
http://www.amazon.com/exec/obidos/ASIN/1861005067
Kay calls XSLT the 'SQL of the Web'--a phrase that is sure to perk up the ears of many readers expecting a simple documentation of just another Web-language standard. Like other Wrox Programmer's Reference series titles, this book starts off with chapters that rapidly introduce the concepts and set the context for the core of the book, which is a complete documentation of the XSLT standard. The book uses this space well to explore the transformation process and the tree structure that is used for both input and output of style sheet documents. By the time the reader gets to the reference section of the book, he or she will be convinced of the power of XSLT.
Each element of XSLT is covered with concise examples that include both the source XML code and style sheet code. XSLT style sheets can be used in a variety of ways and across a wide spectrum of complexity. The book helps the reader grasp this concept by presenting four style-sheet design patterns that comprise the vast majority of implementations. The text looks at each, demonstrating how to identify the design pattern by its content and apply it to appropriate circumstances. |
| Fri 27 Jun | anon | I really like the tutorials on http://www.zvon.org
I would start out learning about XPath, which is used withing XSLT. |
| Sat 28 Jun | Tony E | There is some pretty good material in the MSXML4 SDK, enough to get me started anyway.
It really isn't a very big subject, most of the books dedicated to it seem to be full of fluff rather than useful info. |
| Sat 28 Jun | Chas | I'll second http://www.zvon.org -- it's an excellent reference site for all sorts of technologies, including xslt, xsl-fo, schema, etc. |
|
| Problem with colleague | Fri 27 Jun | Mike G |
| Ive been working with one of my colleagues for nearly four years. Weve always had a good working relationship and had a good laugh. Recently things seem to have soured.
We work on an outsourced project and we are the only two based in our office. I run the project and he is the test manager, so we have to work closely together.
I had noticed a few months ago that he had started to get a little off with me. We had a disagreement about specifications and I overruled him. Hes had a lot of input and Ive often listened to his point of view and changed my mind, but on this occasion I didnt feel that he was right.
I think he was also a little upset that I seem to cruise through my job with little effort. I meet deadlines and sometimes end up waiting on others, so I might surf the net for half an hour every few days - usually doing research as it happens. He seems overworked so I offer a hand and he declines.
We talked this out recently and seemed to patch things up. However, it is obvious that he has a problem with me. This is the sort of thing that is happening...
If I need to discuss something I get not right now. Hell be running test plans that take no more than 5 minutes, but he cant talk for the next two hours. Its never a friendly give me a couple of minutes and Ill be with you its always abrupt. If someone else, strikes up a conversation in that time, he will talk to them for fifteen minutes, without once mentioning the fact that they have disturbed him.
We used to have discussions where we could make suggestions, come up with ideas and sort the good from the bad. Now, if we dont agree on the original suggestion (whoever made it) he gets in a huff and the rest of the conversation is wasted.
Ill ask how his weekend was. He used to ask me as well, now he doesnt bother.
Ill offer him a drink, when I make one. Hell refuse then get up five minutes later to make himself one.
Yesterday he left early. He said goodbye to everyone else in the office then turned away from me and walked away without saying anything.
We used to have conversations. I would start some, he would start others. Now I start a few, he gives one word answers and looks like hes not interested and I give up.
We are in testing now and I have some spare time in my schedule, before I start doing some other tasks. We have a months testing scheduled and two weeks remediation after that. I would rather be doing testing and delay other less important tasks (like doing screenshots for the manual or producing CD labels), but he wont let me have access to the test systems to run the test plans he wrote, so I can only do ad-hoc testing.
Were a small company who have recently been through a management buyout. We have no hierachy in our company, no-one (except the CEO) is more senior than anyone else. This is supposed to make it fairer and make people take greater responsibility/pride in the company. Effectively, although I have the overall responsibility, I have no authority over him.
I like the project and I like the company, even if it is a little misguided ins ome of its ideals - at least it has ideals. However, I cant see how we can keep going like this. It can only get worse. Weve talked about it before and I thought it was resolved, things improved for a few weeks.
Ive been friendly, Im not really a very confrontational person. Ive been fair, If I dont agree with something, I make him explain it to me further and sometimes change my mind as a result. When talking to others I give credit where it is due. A couple of times Ive said I have to take an executive decision and I know he doesnt like it, but I believe Im acting in the best interests of the project. As it happens, Ive mostly been proven right.
I really cant see what else I can do. The nature of the reaction doesnt seem in proportion to anything I may have done to upset him. The only thing that I can think, is that we were good friends when someone else was in charge of the project and we were united in hating the guy. Now its my project, I seem to be the object of contempt.
Any ideas? |
| Fri 27 Jun | Yanwoo | I think you know the anwser. You're going to have to confront him and resolve whatever issue he has with you. It's just going to get worse. If that doesn't work you're going to need to escalate it. |
| Fri 27 Jun | easy | How do you handle the loss of private communication? |
| Fri 27 Jun | Mike G | Yanwoo, you are probably right. I guess it's just that I've talked it over once, it was all fine and then got worse again. If I do it this time, I think we're just going to end up at the same point two months later.
It doesn't seem particularly fair that I ge ttreated like **** and I'm the one who has to be big and sort it out. I know if I have to acknowledge criticism I either have to keep my mouth shut about his behaviour (which makes me look the villain of the piece and hands him all the power) or tell him exactly what I think about his behaviour and risk making the situation even worse.
And yes, I'm just making excuses, but there has to be another way. |
| Fri 27 Jun | | Give him space. Don't 'confront' him. What a foolish idea. |
| Fri 27 Jun | Konrad | Maybe there's someone that both of you get on with who can try to elicit information out of him and yourself and explain what's going on, and what could make it right? |
| Fri 27 Jun | Joe Grossberg | 'Give him space. Don't 'confront' him. What a foolish idea.'
I think you're both wrong and both right.
I'd propose this:
Tell him you've noticed he's upset with you lately. And then ask if he'd like to let you know what's on his mind or if he's just like some space. |
| Fri 27 Jun | Matt H. |
All the advice above is correct. If I was in your shoes, I would add two more things:
1) Watch your six.
Go to the CEO and tell him something like this:
'Lately I've been having trouble working with (person X). I'm afraid the working relationship has deteriorated to the point that it's beginning to effect productivity. I want to handle this without involving you, but it's gotten to the point that I think you at least need to know about it. If things continue to spiral, I would just like to ask for my day in court.'
Let him ask questions if he wants. Odds are, he won't - he'll just dismiss. But, should the other guy start complaining about you later, he now knows to 'take it with a grain of salt' and to ask for your side of the story. This is CRITICAL.
2) Think long and hard about what you could have done to peeve him off. It sounds like it was something far more than you realize. Perhaps you made a joke that was insulting that he took seriously? Perhaps you realized that his time was valuable, and excluded him from some meetings to save him time? (Perhaps he didn't know you were trying to save his time, and just felt excluded?) Perhaps you made some comment to someone else that he overhead, or heard through the grape vine, that wasn't flattering?
I've run into cases before where developers complained they were overworked, so, when a Problem arose, they were specifically excluded from it so they could work on something else. Guess what? At least one of them felt excluded and was offended.
I'm telling ya. You probably did a series of things to annoy this guy that you aren't even aware of. Try to figure out why. If you have to, say something like this (nicely) in private:
'Ok bob, I stink. Could you please help me stink less?'
Or something to that effect.
I hope that helps, |
| Fri 27 Jun | Sammy | You have an interesting work culture, but I suspect you don't have any practices in place for conflict resolution. I could try to put you in touch with someone I trust who gives businesses presentations about different systems (like when it's appropriate to do consensus-based decisionmaking, or when assigning authority is needed). I don't think it's expensive; he once mentioned he'd do it for free+travel expenses, except businesses tend not to respect things they don't pay for.
You can email if interested... I just mention this because it seems broken if you feel you must turn to strangers to resolve this. |
| Fri 27 Jun | Sammy | Maybe he feels inadequate everyone's supposed to be an equal in your company, but he thinks his role is subordinate to you and you're technically better. That can lead to him protecting his turf.
Just a guess... |
| Fri 27 Jun | DingBat |
Oy, beware the 'responsibility without authority' thing.
It's too late for your situation but bear this in mind in the future. If you ever find yourself in a situation where you are going to give responsibility to someone, then make it clear to everyone else that this is being done.
How much of the attitude would you attribute to a 'you're not the boss of me' thing? |
| Fri 27 Jun | BigRoy | You said... 'and I overruled him'
This is not a colleague or you could not 'overrule' him. It is a supervisor/subordinate role. If you are not his supervisor, or senior then how did you 'overrule' him?
You are either in charge or not. If you are and you took a stand, welcome to leadership. It ain't always popular or friendly. If you are not in charge, you have stepped into the street. It can lead you somewhere or get you run down.
And remember a person will tell 10 people when you did them wrong and one when you did them right. Your colleague is not your only issue. |
| Fri 27 Jun | NathanJ | -- If I don't agree with something, I make him explain it to me further and sometimes change my mind as a result. A couple of times I've said I have to take an executive decision and I know he doesn't like it, but I believe I'm acting in the best interests of the project. As it happens, I've mostly been proven right.
--
How often do you explain your side and get him to change his mind? How many times do you compromise between your idea and his? Do you think you are right until proven otherwise? He might just be upset because whenever there is a disagreement he has to explain himself until you agree, but if you still don't agree then you make the call without getting his buy-in.
I don't know what your working relationship is like, but if you are the 'boss' and can always override his opinions I think that would get kind of grating. Especially if the two of you are supposed to be equals in the company. He might be protecting his test system because he's afraid you'll take that over too once you start to work on it.
Again, I don't know the reality of your situation. I'm just offering a viewpoint that the other guy might have. |
| Fri 27 Jun | easy | WHich of his decisions you have admired?. Start with that.. |
| Fri 27 Jun | | I think the problem is with you, actually. You have power over the other person and have exercised it in an insensitive way.
You should learn to listen to people and how to manage professional people. |
| Fri 27 Jun | Mike G | Thanks for all the feedback. Gives me some food for thought.
One of the issues is clearly the lack of structure. With regard to the design of the product, it is my responsibility. I involve this guy, firstly because he is responsible for testing, therefore has a different perspective and secondly so that I can validate my ideas.
I make him explain ideas I don't agree with, because I don't want to assume that he is wrong just because I think he is wrong. I'm giving him a chance to get his opinion across, rather than dismissing it, which is something we hated about the previous Product Manager.
Testing is his responsibility. When I offer help, I ask him what test plans I should run. I don't want to take over the system.
Looking back I think the problem is:
I offered help, but I implied that we were likely to overrun the test phase. I also suggested that we should get a run through all the test plans at the earliest possible opportunity (by doubling the number of people testing), so that the developers could start fixing bugs as soon as possible. 5 developers, 1 tester - the maths doesn't work, he needs help, he just doesn't want to admit it.
I have overall responsibility for the project, therefore I have responsibility for the testing on the project. He only tests on this project, therefore, whether I am his line manager or not (and I'm not), I am responsible for ALL his work. That means, everytime I make a decision on the project I am stepping on a colleagues toes.
I've also realised that he is unwilling to do anything beyond testing - leaving me to be the jack of all trades, dealing with sales, marketing, tech writing, even graphic design. Any non-testing task I ask him to do is seen as me being lazy rather than him being the best person to do the job and is seen as me being bossy.
The roles and responsibilities thing will get sorted, because we have a bew Chief Operations Officer and it's something we have already discussed. I'm thinking now, that part of the solution is to make sure that my colleague is involved in modelling the new environment. I try to represent his views as well as mine, but maybe he still feels left out.
Hopefully that will help the friendship and ease the tension.
BTW, I ask strangers because they are unbiased and talking to someone at work could undermine myself or my colleague, neither of which I want to do.
Thanks. |
| Sat 28 Jun | Not an idiot | Increase your self esteem.
Tell the truth to the CEO, the wanker you are working with is being 'difficult'.
Don't be so piss weak. |
| Sat 28 Jun | rm -R / | I could be the person you describe.
In my last project, I worked very closely with someone and we really had a good time. We went out for lunch, we went out in the evening a lot, we discussed our work together. It has been long ago that I developed such an intense
relationship with some co worker.
However, I realized that I wanted to go for lunch also with other people working in this project and that I didn't agree with everything he said. He got sort of jealous, if I dare say that. He started to use phrases like 'you don't want to go fur lunch with poor me'. I started to feel like a mother that had to take care of his son/daughter. And that's why I began to give short answers. And didn't have coffee with him anymore. |
| Sat 28 Jun | Contrary Mary | Ugh. The herding cats problem of having to get work out of co-workers who can tell you to just piss off.
My solution has been to always make things transparent and memoed. After a meeting where people have agreed to stuff, I jot it all down in an email and send it around, cc-ing the boss.
I also make a scheduling spreadsheet, and keep the weekly update printed and up on my wall. Thus, when every task I am being asked about has 'waiting for tests from Jack Hass' as the next step, people know it.
Of course, I am also nice about things, and willing to quietly help folk out of deadline crunches, but make sure this is documented as well.
The downside of all this is having no room to screw up yourself. |
|
| "Social skills" in the workplace | Fri 27 Jun | necessarily anon |
| I am curious, what do people mean by social skills? I realize one might answer, If you dont know, you dont have it. Well, the thing is that a smart friend of mine who read Peopleware hated it because it seemed very antisocial -- it was all about being elite and better than others. So being social is a relative concept. Heres what come to mind:
- friendly but not obnoxiously so
- not rocking the boat much (until youre politically unbeatable)
- making people feel interesting
- in the same reality as everyone else
- eye contact
- good speaker
- changing clothes/shaving, unlike college during exams
What do you think on this subject? |
| Fri 27 Jun | ThunderZone | You also have to blend in, talk to various people, get to know them, and get them to tell you what they are planning behind your back.
Then, it's payback time! |
| Fri 27 Jun | Better than being unemployed... | It's difficult to describe. People socialise better with some people than others.
You have to listen to ideas but not design by committee. You have to be helpful but not patronising. You have to be enthusiastic but not so much everyone hates you for being a soulless 'yes' person.
I get on with most people, but then again there are some people I just get on with because it's professional to do so, otherwise I wouldn't touch them with a barge pole. |
| Fri 27 Jun | DingBat |
Personally, I like co-workers who:
1) Aren't afraid to admit mistakes (collective or otherwise) and try to make sure they don't happen again.
2) Aren't afraid to challenge 'conventional wisdom' and can do it in a polite way.
3) Won't hold a grudge if their technical solution isn't acted on.
4) Don't have to be constantly goaded into participating in group discussions, brainstorming, etc.
How's that for a start? |
| Fri 27 Jun | mackinac | The friend of necessarily anon who didn't like Peopleware should have said it was antisocialist or antiegalitarian, not that it was antisocial. (Although, some people might equate them).
I don't think there is any need to make a list of details. Mostly it is being able to communicate with people. This is useful when trying to work out requirements. It is also good to follow a few social conventions, like taking a shower once in a while. |
| Fri 27 Jun | necessarily anon | Mackinac, not that I want to get too offtopic, but we had a long, fun argument about it, and he really did mean 'antisocial.' Peopleware believes you should feel like you're ahead on the bell curve, smarter than people not in your group. I countered by saying that most workplaces are dehumanizing, and Peopleware is an attempt to counter this, even if it does preach elitism. But for the community he lives in, he's absolutely right, Peopleware has less value than in mine.
These different senses of 'social' is what prompted me to try to peg what it means to people here. |
| Fri 27 Jun | Mrs. Robinson | Wear lycra and scratch your private parts. |
| Fri 27 Jun | Bill Carlson | Social skill: Determining what people really want and giving it to them. This varies quite a bit from person to person. Some wants:
- Acceptance
- Need for control
- Wanting to be perceived as interesting
- Wanting to be perceived as a decent human
- Wanting to be perceived as an overachiever
- Wanting to be perceived as fundamentally superior to others
- Wanting 'social status' within a group
- Wanting to perceive themselves as any of the above
- Respect for ones ideas
- Public recognition in front of peers
- To be left alone
- A 'warm' communication style
- A 'cold' communication style
- Micro-management
- Freedom from supervision
People can seldom identify their 'wants' specifically. If you can identify their wants and fill them, you can ask quite a bit in return. Other than fear, this is really the only way to motivate and influence people.
People without social skills are always asking 'why does Joe do such-and-such'. Those with social skills know why and how to cope/influence/etc. |
| Fri 27 Jun | | Social skills are a bit of a furphy. Sometimes the alleged need for them reflects something else entirely, such as managers resenting programmers knowing more than them ,and sometimes being arrogant about it.
Sometimes it reflects the fact that programmers perform concentrated work in environments where others will interupt them randomly. In such circumstances, programmers may not be inclined to enter into the idle chit chat that others expect. |
| Sat 28 Jun | Mr Curiousity | That is an interesting question!
First of all, what is the goal of having these 'social skills' in the first place? Is it to make it easier for others to deal with you, or is it about *you* getting from others what you want and what you need without making them feel used?
Overall, trying to please everybody else out there is a loser game. Some might claim then that you lack social skills but so what? There is too much cr#p out there, and if you put up with all of that for too long you'll degrade yourself. Unless you like being a politician, and then you can make a career out of that.
Alternatively, if it is *you* that is the focus of the 'social skills', then the rules change. It might be actually quite 'socially acceptable' for you to say 'no' to your boss and your coworkers. Creating a good working environment for yourself by using your skills is a great social skill. |
| Sat 28 Jun | . | There's an interesting corollary of someone having good 'social skills' too. It means they're more likely to be hired over someone more capable at the specific task, but not as skilled at communicating.
This is reminiscent of a theme popular in business magazines in the 90's - about dressing well.
If nice suits and dressing well were likely to give you an advantage in landing a job, then the corollary was that better dressed people were less capable than others.
Hey ... |
|
| Phone interviews | Thu 26 Jun | Vince |
| I recently re-read Joels article on interviewing: http://www.joelonsoftware.com/articles/fog0000000073.html
While Im always amazed at how much it focuses my approach to interviews, one thing that Im curious about is how people adapt this to phone interviews.
For out-of-town candidates, we usually do a phone interview before bringing them in for a face to face interview. The one thing I hate about a phone interview is its very difficult to do meaningful code questions - you cant put them up on the whiteboard and have them write a function.
I dont even try to do a lot of detailed code questions in a phone interview, because in the past it hasnt given me useful information - Ive had candidates who gave impressive answers on the phone not be able to write simple functions on the whiteboard.
Then if they come in for a face-to-face I generally give them a couple code questions similar to the ones Joel lists (Im only one of many people who will see that candidate in the day).
What do you do on phone interviews? |
| Thu 26 Jun | DingBat |
Call me a heretic but I'm usually less interested in a prospective employee's technical skills than their social skills.
Don't get me wrong, I want to make sure they can do the job. However, I want to get the sense that I'm hiring a problem solver rather than a 'programmer' and I can do that without asking specific, code related questions. I can also do this over the phone if need be.
Finally, a person with poor technical skills can often be trained. Hell, most of the time they can be trained. Most developers want to improve their skills.
On the other hand, someone who is a poor fit for the team's 'philosophy' (bad term, but let it go) is going to do a lot of damage and is unlikely to change. I'd rather avoid this if at all possible.
Just my $0.02 |
| Thu 26 Jun | Joel Spolsky | For phone interviews I tend to ask higher level algorithm/design questions that can be discussed in English without getting down to code. |
| Thu 26 Jun | Andrewm | The purpose of a phone interview, as I have done them, is not the same as face to face interview. Face to face, the question is: 'Hire or not?'. On the phone, the question is, 'Worth bringing in for a face to face interview?'.
The questions on the phone are more like, is this person bright? Are the skills he/she talked about on the resume for real? The way to do that is, rather than asking 'audition' type coding questions, ask technical details about the things they say they can do. You'll quickly discover their true understanding, and in the process you'll find out if they seem like they might be a good fit, in terms of attitude. |
| Thu 26 Jun | John Rosenberg | Why not follow this Microsoft interviewers example:
http://www.sellsbrothers.com/fun/msiview/default.aspx?content=phone.htm
=) |
| Thu 26 Jun | somebody | After reading this forum, I'm thinking of not showering for a few days before an interview just so I don't accidently end up working at a company that's less concerned about employees' technical skills than their social skills. |
| Thu 26 Jun | DingBat | [After reading this forum, I'm thinking of not showering for a few days before an interview just so I don't accidently end up working at a company that's less concerned about employees' technical skills than their social skills. ]
Somehow, I doubt that's a problem. |
| Fri 27 Jun | And the horse you rode in on | The degree of social skills required is going to vary on the role.
If you're working alone on a highly technical project, social skills don't matter. You'd be a fool to hire anyone but the best technical person for such a role.
Where as if someone is more of a team leader/customer liason sort of person, then they can get away with not having great technical skills, so long as they have social skills. They probably do need some level of technical knowledge, but it need not be indepth (so long as they know what they dont know and defer to those more knowledgable).
People advocating one focus over the other are probably thinking with different roles in mind. Hiring someone with no programming aptitude to write a compiler is not going to work, not matter how good their social skills. Likewise, you'd be a moron to hire Richard Stallman to be VP of marketting. ;) |
| Fri 27 Jun | one programmer's opinion | 'The degree of social skills required is going to vary on the role...'
Great response!
This is one reason why great coders (i.e. very good technical skills but not much else) don't always receive a job offer everytime they go through the interview process. |
| Fri 27 Jun | Katie Lucas | I've found a worrying number of places care neither for the social skills NOR the technical skills.
I hate phone interviews. I communicate by sketching, waving my hands around and smiling a lot. None of those things work over the phone.
I usually don't get second interviews after phone interviews, but first-time face-to-face interviews turn into eventual job offers >50% of the time.
Don't know what use that datapoint is, mind you. |
| Fri 27 Jun | Foolish Jordan | Why not give them a small project to code up and have them e-mail you the result? |
| Fri 27 Jun | richard | I personally hate phone interviews, and I have been on both sides of them. Naturally the ones where I have been a candidate were the worst.
Ultimately the purpose of a phone interview is screening. Is it worth investing several people's time in this interview? Does their resume match up with what they are saying? You get asked a lot of simple straight questions.
My boss quizzed an otherwise promising candidate on his Linux experience, the guy couldn't even name a distribution. They poke at areas where the resume could be faked. They also want to get a feel for you.
Personally I find the fact that you can't see the person, judge their facial expressions, a real barrier to effective communication.
I just try to survive the damn things. And always use a proper phone, I have used cell phones before, and swore I would never use them again - *twice*. I would even spring for a headset as a candidate (would double for roger wilco/counterstrike afterwards). If you are conducting them in a conference room, bear in mind how poor the sound quality will be to your candidate. |
| Sat 28 Jun | Employed Russian | >> My boss quizzed an otherwise promising candidate on his Linux experience, the guy couldn't even name a distribution
Playing devil's advocate: this may have been a good thing.
I used to *build* everything I ran on my Linux box (until I got lazy in about 1995 :-) |
| Sat 28 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | I remember when building everything was the only way to do it, and then the first Slackware distro came out. But hey, even I can name Red Hat. :) |
|
| Thrill of the day... | Thu 26 Jun | Philo |
| I just went and looked at the website for a company I worked at in 2000 - they have an online demo of their web offerings.
Looking through the demo, I can still see code I wrote in place, which means theyre still using my database schema.
Made my day!
Philo |
| Thu 26 Jun | John Topley (www.johntopley.com) | That's always a nice feeling! |
| Thu 26 Jun | Leonardo Herrera |
Mine's still up, and my bet it will be for at least four years :-) |
| Thu 26 Jun | The Real PC | Our code could out-live us. |
| Thu 26 Jun | He-who-would-not-be-named | Some code I wrote in 1990 is still in use in new shrink wrap products being put out by the company I worked for (and the still call to ask a question once in two years or so!).
It's a gzip-like compressor, slightly less capable. But it works very well, and they've got tons of data in that format.
It isn't broke, so no one's fixing it. |
| Thu 26 Jun | mackinac | Some code does get used for quite some time. My current project is developing a system which will replace code that I developed about 10 years ago and was in use up to the time of the replacement.
A couple of years ago I got a phone call from someone asking about the build procedure for some software I had written about 15 years previously and which was still in use. |
| Thu 26 Jun | Nate Silva | One of the first big programs I wrote, almost 15 years go, was a DOS-based construction estimating system. The company no longer exists but apparently some old-timers got so attached to it that they have taken it with them to their new jobs! I wonder how the sysadmins are dealing with a program that only prints to locally-attached Epson dot-matrix printers? :0) |
| Fri 27 Jun | J.P. Rhea | I worked for an environmental engineering company as a contracter about 2 years ago.
The project manager had me write a customized project management app and soil sample tracking program. As it turned out, management wasn't actually on board and nixed implementation of most of the app because 'they could do it on spreadsheets'. I had to fight to get 50% of what I was owed. I was young and wrote off the experience as 'stupid tax', but it was quite humbling at the time.
Got a call from them a week ago for me to come out and help implement the rest of the application. Their business grown to the point where the spreadsheets were too big and too numerous. They finally agreed that it was the right thing for the business.
Vindication is like fine wine: it gets better with age!
J.P.
P.S. They even agreed to pay up for what they owed me! |
| Sat 28 Jun | Our team of programmer | J.P.
You're going to work for the crooks a second time? I may be too synical but NFW would I get involved. |
|
| Study on Open Source and Closed Source Dev. | Thu 26 Jun | Raist3d |
| http://www.nature.com/nsu/030623/030623-6.html
They found open source seems to converge to less bugs quicker, but also they explain why. It makes sense (to me anyway).
Enjoy & Discuss! |
| Thu 26 Jun | Eric Debois | Yes, make your code public and thousands of besserwissers will show up pointing out every flaw. For better or for worse. |
| Thu 26 Jun | Stephen Jones | We'd need to read the whole article, not just the abstract.
One thing is that Open Source software is generally free whilst closed source is generally proprietory. In fact the Open Source/Closed Source and Public/Proprietory choices are completely independent.
So it is possible that in fact Open Source software is actually getting more reports and help because people feel they are contributing to the community.
I do suspect however that the main reason is that closed source alllows a cult of secrecy and hierarch to grow. I once pointed out in a meeting that it would take less formal steps for me to get to a meeting with King Fahd or Koffi Annan than it would to get to the Managing Director if I followed official guidelines.
We might all be only six steps away from Kevin Bacon but you can count on Management to add a couple of zeros to the figure! |
| Thu 26 Jun | Michael Moser | He wouldn't mention a slight difference in design approaches -
open source projects wouldn't go for features that
1) are not cool.
2) pose too much work, and too little job satisfaction (like documentation, or help files, or install packages).
The research doesn't mention thats a reson why GUI's are not often the strong point of open source projects (that's just the place where most of the bugs live ;-)
An open source project would just not invest into a fancy GUI,
problem solved. |
| Thu 26 Jun | Michael Moser | there is just this order of magnitude difference between hobby projects and comercial systems
- some of this difference is made up of things like documentation, support for multiple languages, etc. etc (things that are not part of the core product, but you do actually need them)
- a lot of technical work goes into maybe 10% of functionality that makes up those 'missing features' that a comercial system would have to provide |
| Thu 26 Jun | . | A study of amateur (home) movies found fewer edits were needed than for movies by large movie studios. Clearly, this proves open movies are a superior method for producting movies. |
| Thu 26 Jun | Knight | You know what?
I want to eat, too. I want to go to the movies. I want to have a nice vacation in some cool, relaxing location.
And if I program all day long, at least I'll do it for money and live a decent life.
What is the alternative? Write open source and live with my parents, as a poor person?
Nope. I need a decent life, so I shall only write commercial software. |
| Thu 26 Jun | Just me (Sir to you) | Iwould always assume that the 'many eyes' hypotisis would actually favor big companies that apply dogfooding, since there are far more knowledgable eyes inside a company like Microsoft than most Open Source projects can ever dream of attracting.
Even so, I would refute the validity of a purely quantitative counting of 'source viewers' since we all know it is the quality of the eyes that counts, not the quantity. |
| Thu 26 Jun | Johnny Bravo | Michael,
I don't know how you backup your statement that it's in the GUI where most bugs were present. For me, another reason why some, but not all OSS provides a poor GUI, which makes more sense, is that the authors do not really want their software to be that professional-looking so that any crook could sell it as COTS.
Stephen,
I do not get the link between the licensing of software and it's management scheme. Actually, I do happen to know a bunch of OSS which is managed in quite a hierarchical way - e.g. Mozilla, which does have about 5 people, 'product evangelists', which you cannot bypass by any means, and whose past decisions proved to be questionable -, and OTOH, I do happen to work for a company, working on closed-source projects solemnly, where you can talk to the CEO at any time and throw your 2 cents in. |
| Thu 26 Jun | Mike Gamerland | Interesting...
Michael Moser - I disagree with the features argument. In open source, they tend to be necessary features first, then interesting features, and then minority features (those needed by a small group who build them.) GUIs fall into this category. Not because they are easy or hard, but because they were not originally necessary to getting the job done.
Not all OSS is equal, some could do better and some like OpenOffice are examples were it is being done at the commercial level.
You then mention documentation and languages. Compare the language support of most commercial versus OSS and you will find OSS can do better. Microsoft must see commercial value in supporting a language (build time versus ROI), OSS need only someone willing to build the language interface.
If you have specific features, I would be interested in hearing them as there is always room for improvement.
Knight - Being unable to see how to make money under OSS is not the same as being unable to. Did you write XP, or Unix? VB or C++ or JAVA? You can make money even though you did not create these with value add. OSS is no different. |
| Thu 26 Jun | Ricardo Suarez | 'the authors do not really want their software to be that professional-looking so that any crook could sell it as COTS'
Absolutely! Any competant developer would do the same. That's why I make my own software as buggy as possibly -- so that crooks won't want to steal it. |
| Thu 26 Jun | Urby | Not intended to be a flaimbait....
How many IIS-worms/virii can you name?
How many Apache-worms/virii? |
| Thu 26 Jun | . | Not intended to be a flaimbait....
How well does Windows work?
How well does J My Number 1 Project work ? ( get in from sourceforge. ) |
| Fri 27 Jun | Urby | .
Um. I think Apache vs. IIS is a fair comparison. The primary difference between the two is how they are developed. I think apaches strengh is due to the development model.
Comparing Windows to someones first project is not fair. Try Windows vs. Red Hat or something. |
| Sat 28 Jun | . | Urby, open source pushers always fall back on a relatively small number of well-known and good products as arguments for the merit of a development methodology, yet that methodology produces tens of thousands of pieces of junk.
An accurate evaluation would compare all professionally developed products against all OSS products, then draw conclusions. That, by the way, is only one part of the total set of issues. |
|
| UI Suggestions | Thu 26 Jun | Chris |
| I have just developed this picklist ( http://www.aws.com.au/ddd.jpg ).
The way it works is a sort of categorised picklist, so the item you select in pickbox 1 affects the options available in pickbox 2 and so-on down the chain.
2 Questions:
1. Is the UI I have chosen for this ideal ? (i.e. can you all understand how it works just by looking at the screenshot and reading my short description) Any suggestions for improvements?
2. I am completely stumped as to how I might have the UI for what should come up when they click Click Here to edit the items without confusing the heck out of them. Any ideas? |
| Thu 26 Jun | Steve Jones (UK) | It looks like you're trying to model a hierarchy, so perhaps an expanding tree would be useful here (c.f. Explorer).
I know some people don't like tree controls, but I think Users do understand them, especially if they're used in an appropriate context, i.e. representing a hierarchy.
On the other hand, there's nothing particularly wrong with the design you have. Only problem would occur if you had cases where there were more than four levels of selection. Less than four might be bad too, as you'd have to disable the last control somehow, which might be confusing.
One final note. What happens when you click that link at the bottom on the dialog ? It's not at all clear to me, but maybe I'm just being stupid. |
| Thu 26 Jun | Alyosha` | Yeah, I don't think it's ideal ...
The first problem is that this won't extend to situations where the heirarchy is less than or greater than four levels deep ...
Treeviews are a bit confusing, but they are also are more common.
I'd try an inductive user interface (i.e., a wizard). On the first page, the user would choose the overall category, on the second they would get more specific (or would have the option to go back), and so on to the end ...
Not sure if this is ideal, but it's a thought. |
| Thu 26 Jun | Christopher Wells | > Any suggestions for improvements?
One way is to have a treeview (where you can see all top-level nodes, and expand any node to see its sub-nodes). Another way is to have a 'Wizard', where you pick the top-level item on screen 1, and then click 'Next' to see the corresponding level 2 items on screen 2. Another way is a popup menu (like a right-mouse context menu or the Windows 'Start' menu) when you click on text in the edit box.
Your way is clear to me and concise.
In earlier stages, do you perhaps you hide (make invisible) the selection boxes for levels 3 and 4, if the user hasn't yet made a selection for level 2?
> click 'Click Here' to edit the items without confusing the heck out of them. Any ideas?
Can you just make the text in 'pickboxes' editable as well as selectable ('dropdown' instead of 'droplist')? |
| Thu 26 Jun | JD | I don't find it all that intutive to use.
Tree structure is the best thing provided user can select item at any level. [Say they don't ALWAYS have to go to 4th level and pick an item!]
Regards,
JD |
| Thu 26 Jun | Chris | Thanks for the input.
1. The reason it isn't a treeview is because we felt that might confuse the user because a treeview only shows one 'selection' (thing in blue) where this control is really mimicking 4 seperate fields (i.e. they can run reports on the items at each level.) so it needs to show all 4 items selected at once.
2. This one at the moment does support less than 4 items by just having the last picklist blank. At this stage it will never have to support more than 4 items due to government requirements (it doesn't normally hold animals - it will actually be used to categorise 'Critical Clinical Incidents') but the way it is coded it is trivial to add a further level should requirements change.
3. I really don't want to make it a wizard because it is something the users will be doing 100's of times a month and qill qet quite annoying after a while if it is a wizard.
4. The link at the bottom is supposed to bring up some sort of UI that will allow them to edit the lists. This is the point I am having the most issues thinking of how to do.
But thanks all for the comments. I suppose I should reconsider it though |
| Thu 26 Jun | Chris | But maybe we do need to reconsider and possibly make it a treeview?
Another option I wanted in the future is to possibly make it to type in directly on the initial form and not require the blow up screen. This could be using some sort of intellisense.
So user types 'A' and the list of a items pop up. User chooses 'Animal' and types '>' and the next intellisense pops up with a list. |
| Thu 26 Jun | David Basil Wildgoose | Sorry, I don't like it. I agree with the other comments here that a TreeView may be more appropriate.
What happens if the user returns to an earlier combo and selects something different?
Does this automatically clear the 'lower' options (in the hierarchy), and if not, why not?
What if, on the surface at least, a lower option may be valid but has just been cleared. Won't this frustrate the user? |
| Thu 26 Jun | Chris | The other issue that make it a more difficult choice to use a treeview is that we have 2 products (a web version and a dekstop version) and both need to look and work the same because users use both of them and are easily confused.
And yes if you make your 4 selections and then change the level1 selection, the other 3 are cleared |
| Thu 26 Jun | Steve Jones (UK) | You can easily get a treeview behaviour to work on a web page, just like a control on a form. I use them all the time for my web development. There are loads of examples on the Internet, if you don't want to code it yourself (it is easy though).
In an ideal world, we could probably say that tree controls are not easy to use for non-techie Users. However, the fact that they are used in Explorer, etc means that people do know how to use them.
Also bear in mind that you don't have to show it collapsed when you open the screen, it could be all expanded, assuming the number of items is not enormous.
The Click here to change the lists option really shouldn't be on this popup screen. It's just confusing. I don't know if it'll close the popup (losing my selections) or pop up yet another screen. Also, if it pops up another screen and I make changes in there, but elect to cancel my first screen, what happens to my changes, are they saved or not ? All too confusing. |
| Thu 26 Jun | Duncan Smart | Do it as a treeview. To edit the values add a couple of toolbar buttons to add/delete the nodes. |
| Thu 26 Jun | Pete | 'In an ideal world, we could probably say that tree controls are not easy to use for non-techie Users. However, the fact that they are used in Explorer, etc means that people do know how to use them.'
Its interesting that a number of people have said something similar to this - in Windows would a non-techie user actually see the treeview in Explorer? Most users probably just navigate via 'My Computer' (yuck) - to get to Explorer you need to right click 'My Computer', run it from the start menu, windows-e (or whatever).
What other apps might they see a treeview in? - only ones I can think of are MMC, some preferences dialogs (ie. mozilla)..., mmm, haven't got windows on this box so I can't look for more...
Pete |
| Thu 26 Jun | Frederik Slijkerman | Create prototypes of both a treeview UI and your existing UI, and do usability testing. |
| Thu 26 Jun | Stephen Jones | I find the tree view irritating so I turn it off. I think the average user is more likely to see a tree view on a web page than elsewhere now; not true in the Windows 3.1 days. You will see it on Outlook Express by default I think.
Most people like them when they know how. Whenever I am configuring Outlook on somebody's machine I suggest they turn off that hideous Outllook bar and have the folder view showing. Most people never go back. |
| Thu 26 Jun | Matt Foley | >I really don't want to make it a
>wizard because it is something
>the users will be doing 100's of
>times a month and qill qet quite
>annoying after a while
If the users will be doing it hundreds of times per month then a picklist will be equally as annoying. Use mnemonics instead because, after hundreds of times per month, your users will quickly become very familiar with the codes.
Be sure to employ some type of lookup facility for novices, but don't force experienced users to navigate a GUI widget. My rule for data entry screens is 'Accommodate the novices without hindering the experts'.
My 0.02 halallas. |
| Thu 26 Jun | Rahoul Baruah | I'm fully of the opinion that people fall into 'love treeviews' and 'don't understand treeviews' camps. There is little inbetween.
Anecdotally, I find that developers, people in accounts and philosophers tend to like treeviews. Everyone else hates them. (I think it's something to do with maths). |
| Thu 26 Jun | Stephen Jones | --'My 0.02 halallas. '---
Hey Matt, you're in Saudi too? |
| Thu 26 Jun | Philo | 'At this stage it will never have to support more than 4 items due to government requirements (it doesn't normally hold animals - it will actually be used to categorise 'Critical Clinical Incidents')'
LOL!
Murphy says that you'll be asked for a fifth level the day after you deploy it.
If the last field is 'Critical Clinical Incidents' - do these have codes? I'd provide an option for the users to simply type in the code (which automatically defines the other three categories). The picklist should only be for looking up a code.
Your data entry box should be:
[Code Textbox] [Label lookup]
User types the code into the textbox, then when they tab out it populates the label.
Also, it looks like the link at the bottom populates the next drop down after they've made a selection? If so, that's evil - make it automatic in an onchange event.
Finally, I've taught dozens of lay users to use treeviews on various applications. They've never had a problem with it.
I've done some mindreading - apologies if I'm off the mark.
Philo |
| Thu 26 Jun | Sammy | You could keep this general style, as long as you emphasize the 'Make a selection...' part so the user's eyes are drawn towards it.
If people are using this thing 100X a month, you likely want to optimize for data entry speed. I'd have 'Make a selection...' be a list of some sort if possible; this would remove the pointless click to open the dropdown box, and call attention to itself. |
| Thu 26 Jun | Pete J | Sorry, but I have to disagree with everyone. The method you have chosen is fine.
A treeview works in Explorer, because it represents folders within folders. If you are searching for a file this is intuitive because it has a real life parallel.
People can handle using a treeview to search for something, because they are familiar with the concept from Explorer. However, you are not searching in this instance.
The combos workfine, because they have a noice little arrow that encourages the user to click on it and select an item from the list. The interface tells you how it works, whereas a treeview does not.
If you want to make it fast to use, then make sure that it auto-populates, e.g. as you type one letter, two letters, etc. the correct word is selected. Codes are no good. People learn codes out of necessity not becuase that is easier than remembering the actual word. Not to mention, a code could mean one thing in one application and something else in another. It encourages mistakes.
Don't show or enable the other text boxes until the prior one is complete. Again this will tell the user how to use it. Blanking the other three when you change the first also tells the user how the hierarchy works, so that is fine.
As for adding to the lists, either put an 'Edit List' link next to each combo (which not only tells you what it does, but also tells you what the combo does), or allow the user to type anything in and when you exit the combo, ask if the user wants to permanently add the item to the list.
By the way, the OK and Cancel buttons are the wrong way round. People get use to the position of a button and every other app has them the other way round, so they will end up clicking the wrong one by mistake. |
| Thu 26 Jun | Philo | 'Codes are no good. People learn codes out of necessity not becuase that is easier than remembering the actual word. Not to mention, a code could mean one thing in one application and something else in another. It encourages mistakes'
You need to get out among the users more.
Police use codes. Firefighters use codes. Warehouse guys use bin numbers. Admin types use form numbers.
When's the last time you said 'hypertext markup language'?
Now I'm only talking about using codes if they're already there, not creating new ones.
You provide a way to type the code directly in, or to look up the code if they need to.
This is all *very* situational, mind you - I'm just pointing out that it's not an absolute either way.
Philo |
| Thu 26 Jun | Tom | You may want to check out the UI in Microsoft Money for handling the budget category of a transaction. I'd never seen anything like it before. It looks like a basic drop down box, but it has a tree in it...
For example, your category could be food:groceries. You can either start typing 'foo', autocomplete the word food by pressing ':' the begin typing 'gro' and press enter when it autocompletes 'groceries'. Alternatively, you can press 'f' and pick from the drop down box, which looks something like this:
food:
groceries
dining out
bills:
rent
etc.
It is a little hard to describe and I wasn't able to find a good screenshot of it, but you can d/l a MS Money trial from their website if you want to check it out. Not sure how well it would work for 4 deep. I agree with someone else here who said that if your users are entering these 100x a day, they will soon start to remember most possible/frequent combinations. Text entry with autocomplete might be very fast. I also agree that only usability testing will give you a confident answer. |
| Thu 26 Jun | UI Designer | You could try emulating the cascading list shown here:
http://time-tripper.com/uipatterns/cascading-lists.html |
| Thu 26 Jun | S. Tanna | Shouldn't the OK and Cancel buttons be the other way round? This is Windows, right? |
| Thu 26 Jun | Alyosha` | If a treeview is too complicated, why not try using a menu with submenus (such as you would find on the top bar of most apps)? |
| Thu 26 Jun | Chris | Oh my good. All the responses. Thank you all.
Yes the buttons are the wrong way around. Thanks for pointing this out, When I was making this I completely forgot about that little detail. Thank you.
And Tom, yes I use Microsoft Money 2002 ALOT and I started of trying to emulate that listbox because I absolutely love it, sadly in the timeframes I have it isn't possible. That is what I was aluding to when I described the 'intelisense' version of a textbox I would like to use in the future. And the Money listbox also answers the issue of how to have the user enter new list items, you simply type an item after the ':' and if it isn't in the list, a message says 'do you want to add it?'. That would be perfect (anybody seen a ActiveX control to do this?).
Philo, the link at the bottom is where I propose a 'List Editing' dialog to be launched from, but as others have pointed out this can cause confusion 'What happens with my current selections if I click that?', so as others have suggested, I think an 'Edit' link after each combo is more ideal. - and yes the lists do autopopulate in an onchange event.
Well this thread has certainly forced me to rethink this. I am definately reconsidering a treeview. |
| Sat 28 Jun | Matt Foley | >Hey Matt, you're in Saudi too?
Yup, I work for a rather large-ish oil company. You may have heard of them :-) |
| Sat 28 Jun | Matt Foley | >Codes are no good. People learn codes out of
>necessity not becuase that is easier than
>remembering the actual word.
Sorry, gotta disagree with that one. Imagine if travel agents had their codes taken away and were forced to use full names when booking flights.
BAH-AMS-IAH is easier than Bahrain-Amsterdam-Houston. What about cities like London with multiple airports? Or cities in different countries that share names? London, Ontario and Paris, Ontario? And how many cities in the US are named 'Springfield'?
>Don't show or enable the other text boxes
>until the prior one is complete
I disagree for two reasons. Firstly this gives the app a linear feel. He's developing for Windows, not for a mainframe. Secondly, unless there is field-by-field validation there's no sense in doing it. What's to stop a user from putting 'x' in a field simply to display/enable the next text box? |
|
| Jakob Neilsen Hyperlink Fixation | Wed 25 Jun | Geoff Bennett |
| Im rereading Designing Web Usabiliy by the afformentioned and am having trouble accepting his hyperlinks should always be blue for unvisited and purple for visited mantra.
As a perpetual student of design and usability, Im finding it a little difficult to accept. It basically constrains the range of colours and presentation you can use to ensure that the links dont look out of place on a page design.
I would assume, for the sake of pleasing everyone and aiding usability, that it would be better to us an clear/faded metaphor.
For example, on a black background, you may choose white as your unvisited link colour, with grey as your visited link colour. The white would stand out more so than the grey, making the white the obvious unvisited link.
On a lighter background, a more contrasting colour and s similarly faded version of the same would act as the unvisited and visited links.
This would give the designed free range with colour scheme etc, while maintaining the high navigation usability associated with coloured link states.
Anyone? |
| Wed 25 Jun | FullNameRequired | Hi Geoff,
lets say that you decio make your 'visited links' color yellow, and another developer on a previous site had made their _normal_ link color yellow.
Lets further say that Im not a geek and have no idea how easy it is to change said colors.
How do I know what I am looking at? |
| Wed 25 Jun | Rob Mayoff | Why should unvisited links stand out more? Do you believe that your readers should visit every page you link to, and preferably visit each of them only once?
Perhaps the reader will find one of the linked pages particularly useful, and want to visit it again. There's no reason to make that link harder to spot.
There are also good reasons not to use custom text and background colors at all. |
| Wed 25 Jun | Daniel Searson | Its not a question of 'what are the best colors for hyperlinks?' but more a question of 'is this consistent with all the other web sites on the internet?'.
Consistency is a good thing in user interfaces. |
| Wed 25 Jun | UI Designer | Don't forget that much of Jacob Neilson's comments about such things were made in 1996 - right where they belong. |
| Wed 25 Jun | Joel Goodwin | Sometimes the same links occur against different words, and it can be annoying to click on a link for further information when it just brings up an earlier page you'd already read through. On sites I visit once, or for the first time, I often get confused as to what web references are new when the link colours are changed, end up looking at the same page X times.
Still, I made my own web site with a different link colour scheme, so what do I know??? |
| Thu 26 Jun | Geoff Bennett | There is no such thing as consistency between sites these days. There are elements that are similar, but with divergence of design trends, one should not aim for consistency, rather than investing in usability on a per site basis.
The days of Times New Roman and slate gray backgrounds are gone. You may be able to point to one or two obscure references, but from a mainstream perspective, they have gone the way of the dodo.
You cannot expect to constrain design for the sake of a foolish consistency.
Web design has moved on from a static page containing information, to dynamic content with a lot of fluff. I posit that forced hyperlink colour consistency is irrelevant.
What should matter most is, regardless of design, a user arriving at a site for the first time is able to navigate the site without having to think to hard about it. |
| Thu 26 Jun | FullNameRequired | ' one should not aim for consistency, rather than investing in usability on a per site basis.'
??? consistency _aids_ usability. In fact, the case could be made that 'usability _is_ familarity' in which case consistency is not a separate entity.
'The days of Times New Roman and slate gray backgrounds are gone'
and no one AFAIK wants to bring them back consistency and usability have _nothing_ to do with times new roman and slate gray backgrounds.
'You cannot expect to constrain design for the sake of a foolish consistency.'
usability = consistency
obviously I dont mean that literally, and this approach can be carried to extremes, but totally refusing to link the two is genuinely stupid IMO
'Web design has moved on from a static page containing information, to dynamic content with a lot of fluff'
no, it hasn't.
this website we are using at the moment, for instance, is composed of static pages (created dynamically) containing information ( or at least opinions)
There are dynamic sites as well of course, but just because a webpage contains javascript, java applets, flash thingies, or uses css creatively does not mean that the basic rules of usability do not apply.
and consistency _is _a basic rule of usability.
'I posit that forced hyperlink colour consistency is irrelevant.'
I posit that you have no idea what you are talking about :)
Jakob Nielson, for instance, has twice carried out actual research into the importance of hyperlink colour consistency.
both times it showed that it _is_ of importance, personally this feels like a case of science proving the blindingly obvious to me, and it always astounds me that the occasional misguided soul argues the opposite.
Once you have carried out similar research I will be very interested in listening to your findings.
'What should matter most is, regardless of design, a user arriving at a site for the first time is able to navigate the site without having to think to hard about it. '
thats exactly the point, and is exactly what being consistent is about.
Achieving this requires _good_ design.
Its rather like anything, breaking the rules is fine so long as you know exactly why the rules were put there in the first place, and understand their importance. |
| Thu 26 Jun | www.marktaw.com | There's nothing I hate more than a site with orange unvisited links and fuscia visited links (substitute any two random colors there). I have no clue which pages I've been on and which I haven't, and I'm pretty comfortable on the Internet.
Personally, I like gray for visited links, or a muted version of the same color... but that's not the MOST usable choice. You also have to take into account your audience.
AARP, Yahoo, Google, eBay, Amazon and any site that has a wide or specifically non-internet-savvy audience would do best to stick with blue/purple.
Any site that caters to savvy 'net users can get a little funky, but within limits. |
| Thu 26 Jun | www.marktaw.com | Oh yeah, read Steve Krug's 'Don't Make Me Think.' My review is on Amazon. |
| Thu 26 Jun | Chi Lambda | Ideally, the UI standard would've been:
- Red, for unvisited links ('hot spot')
- Purple, for visited links ('cold spot')
But I agree that not everybody is well-versed these kinds of matters, and to stick to convention is usually best. |
| Thu 26 Jun | Geoff Bennett | I'm not talking about throwing away consistency. I'm talking about throwing away blue and purple (in the instances where it doesn't work with the design you are using).
That, to me, is a foolish consistency.
If my company colours are orange and grey, should the links be blue and purple? They would be nigh on unreadable using those colours.
Be consistent in what you do as far as your site is concerned, but for crying out loud, who honestly cares if it's blue and purple, or a set of complementary colours?
This is not consistency for usabilities sake, this is a foolish consistency. There's nothing wrong with those colours if they suit the design you're using, but if they don't what's the point? You're only *harming* usability!
Forcing your site to use the same colours as every other site will require you to use a similar scheme as every other site so the links will be readable. This is what I mean about forgoing web wide consistency over per site usability.
The blue/purple combination came from the days of Times New Roman and slate grey backgrounds, hence the comment.
'usability = consistency', more correctly written as 'consistency = usability' is a perfectly valid comment. I am not advocating throwing away the consistency of links identifying whether they have been visited, merely how they are identified. I never implied the two should not be linked.
As for these forums, the design Joel has run with suites blue/purple. I don't have a problem with people who decide to go that way, and it works fine here. It looks ok in the context of the site.
Example 1:
http://www.verniernetworks.com/
They use a white background, so the blue/purple combination would be readable, but it won't go with the overarching green scheme of the site. It would look terrible.
Example 2:
http://www.convergentnet.com/
How would a blue/purple combination look on this site?
Example 3:
http://www.idsoftware.com/
Or this one?
I'm not saying that it should be banned, but saying that it should be the only standard by which linking should be identified is living with your head in the sand. |
| Thu 26 Jun | FullNameRequired | Hi Geoff,
'That, to me, is a foolish consistency.'
Im going to take a leap of faith here and assume that you have not yet carried out research that proves one way or another whether usability is enhanced by sticking to a standard set of colors for hyperlinks.
Jakob Nielson has....argue that his methods are bad if you wish but _please_ dont arbitarily ignore research and argue that his conclusions are wrong just because you 'believe' (as in have faith) that the opposite is true.
'If my company colours are orange and grey, should the links be blue and purple? '
just because the colors of your company are orange and grey does _not_ mean that its website will be composed of those colors....the logo is the place for representing that stuff....company colors should not be used as an excuse for using bad design.
'who honestly cares if it's blue and purple, or a set of complementary colours?'
in turns of arbitary color, no one. _but_ in terms of maintaining consistency, anyone who is interested in usability over flash.
'This is what I mean about forgoing web wide consistency over per site usability'
but its web wide consistency that is important to aid the usability of each site.
The example I used above remains an excellent one, a inexperienced user comes from a site that uses yellow for 'fresh' links and arrives at your website where you use yellow for 'used' links.
How long does it take them to work this out?
example 1.
mm, nice site. I wonder who their target audience is.
example 2.
blech. you use this as an example of what?
on the righthand side, down the bottom,
'Convergent networks Advances...'
thats a link.
I didn't even notice until I scrubbed across it.
They use 4 different ways of indicating a link, and there are 2 other links that dont even like as if they are.
(and Im an experienced browser.....a newbie would have a lot more trouble identifying them)
example 3.
over designed, busy, aimed at techie users, as such its about what you expect.
Im not sure what you want to hear. the general rule is that breaking consistency arbitarily is just stupid, 9 in 10 times Ive been asked to do this its been for bad reasons and we've found another approach that works just as well and doesn't confuse newbies (as much). the other times Ive agreed and done it.
hyperlink colour is _not_ irrelevant, maintaining consistency is a basic rule of usability for _good reasons_ and breaking that rule is mostly a mistake.
if/when you decide to break that rule be sure you understand the consequences and do not try to fool yourself that ther eare none. |
| Thu 26 Jun | Geoff Bennett | Hi FNR,
No, I haven't carried out 'extensive' research. Neither do I consider 'extensive' research carried out more than 5 years ago current.
The web has come a long way in the last 5 years. Rigid opinions need to be reconsidered.
The logo isn't the only place company colours should, or have to, be displayed - and I agree, it does not *mean* the website has to be those colours. My point is that should not be governed by the implied standard of blue/purple.
Many companies spend hundreds and thousands of dollars branding their organisation based around the colours they have selected. They undoubtably spent tens of thousands having websites designed. All to be spoiled by the blue/purple dogma.
There is a balance between usability and flash. Many people miss it, many don't.
The examples given are of colour schemes that don't suit the blue/purple idea, not necessarily bastions of usability in and of themselves. I most definately wouldn't hold up id's site as the usability pinnacle.
Consistency for consistency's sake is why there are hundreds of apps that use the Outlook bar when there's no reason to. There are many apps that have a toolbar, without having a reason to!
Consistency *is* a good thing. Consistency for consistency's sake is foolish.
Knowing when to break with consistency is a fine line to walk, I agree, but the internet has come a long way, as has internet usability.
You might say that blue/purple helps newbies with usability, but (as Joel has said himself) newbies aren't newbies forever. People with genuine disabilities like colour blindness/low vision are going to suffer if people *don't* make links different to blue/purple in the instances where the site design doesn't suit. To change the entire site against the company branding is ridiculous.
It the case of low vision, contrast is the key. Light vs Dark. Neilsen says that hyperlinks should be underlined, as this helps them to stand out from the rest of the body text. This is a good idea which is not hampered by site design. Blue/purple isn't. If you have complementary colours that use a contrast to differentiate between visited and unvisited, you can still achieve a high level of usability without sacrificing design. |
| Thu 26 Jun | Stephen Jones | Dear Geoff,
Why is it that so many of the questions asked here are rhetorical? People could prove that changing from blue and purple causes 50% of pregnant users to abort from the shock and you would still dismiss that as 'foolish sentimentality'.
Changing from the blue/purple combination will confuse users. If you think that is offset by the aesthetic effects of using the company's color scheme then fair enough. It's a trade off. Faded in my opinion is not a good idea; grayed out is normally used for links or information that one does not have to click on.
If you're using text links then put them on a white or off-white background wherever possible (which is probably always). You can keep the company branding as borders.
Finally remember that many companies don't really care a shit if anybody uses their web site; it's just there to impress, like the trophy secretary. Just make sure you collect payment in advance. |
| Thu 26 Jun | Brad | Rather than specify blue or purple link colours in your stylesheet, leave the link colours unspecified. That way if a colourblind person (or someone who just can't stand blue and purple) has set their browser to use other colours by default, it will work correctly.
It's true that there's no standardization on the Web, but it's also true that there's no ambiguity whatsoever about what a blue underlined link means and what a purple underlined link means. Nobody has to spend time figuring it out. |
| Thu 26 Jun | Philo | I think it's not about consistency across the web, it's about consistency across your site.
What's critical is:
a) a link looks like a link
b) nothing else looks like a link
c) visited links are distinctive from unvisited links
d) link colors are consistent throughout your website
Note that achieving a-d can take a lot of time and usability testing, so blue/purple shortcut the decision process.
But the only link complaints I've ever heard are:
a) 'Can't tell what is a link and what isn't'
b) 'Can't tell which links I've visited'
I have never, ever heard 'how come visited links aren't purple? That's confusing'
Philo |
| Thu 26 Jun | Geoff Bennett | Stephen,
'People could prove that changing from blue and purple causes 50% of pregnant users to abort from the shock and you would still dismiss that as 'foolish sentimentality'.'
No I wouldn't. I know this is a contrived example, but it is wrong. I don't accept that his case is 100% valid. I'm not entirely disagreeing with it, but I don't agree that *all* links should be the same colour regardless of anything else.
I don't like the fact that he (Neilsen) takes an overbearing stance that links should *always* be blue/purple because he did a study (about which I can find no information, mind you) that tells him so. What was the demographic targeted in the study? In what timeframe was the study conducted? The closest thing I can locate is a link to a now nonexistant study conducted by Neilsen at Sun in 1994 while he was redesigning the Sun intranet.
I have not done a study, I just don't accept everything at face value.
Brad,
'It's true that there's no standardization on the Web, but it's also true that there's no ambiguity whatsoever about what a blue underlined link means and what a purple underlined link means. Nobody has to spend time figuring it out. '
There is more than flat out colour that makes a link a link. Here is perhaps a better example of where I'm coming from.
A white page, with black text.
In one instance, the unvisited links are underlined words coloured blue. They change to red when you mouse over them, and the mouse pointer changes to a pointing hand. It is extremely obvious that this is a hyperlink. You click the link and eventually come back to the page. The underlined text is now purple, but the mouse pointer still changes to a pointing hand.
In another instance, the unvisited links are underlined words that are coloured green. (I'm trying not to chose asthetically pleasing colours on purpose). They change to yellow when you mouse over them, and the mouse pointer changes to a pointing hand.
Imagine you've never used a web browser before? Which of these two is the more obvious hyperlink? They carry the *same* level of usability at this point.
Now you click on the link, and eventually you make it back to the page. The underlined text is now dark green, but the mouse pointer still changes to a pointing hand when you mouse over.
If the other links on the page are green, and this link is dark green, what would you think that means?
A hyperlink, visited or otherwise, is defined by more than colour. For a user to be aware that a section of text is a hyperlink, there are three cues available. Text colour, text format and mouse pointer feedback.
With any two out of three of those points met, anyone - of any skill level, will be able to figure that it is a hyperlink. If the colour is then altered to be of noticably darker contrast than originally, anyone will be able to recognise the difference between a visited and unvisited link.
If you take someone who has never used a browser before, the blue/purple combination will mean as much as green/dark green.
If you revisit that person after they have been browsing for an hour, I would be willing to wager that the underlining and mouse pointer feedback means more to them than the fact that not all the hyperlinks use blue/purple. |
| Thu 26 Jun | Geoff Bennett | Philo my old friend, you have hit the nail on the head. |
| Thu 26 Jun | Brad | Okay, here's an example:
Check out Edward Tufte's forum:
http://www.edwardtufte.com/154480738/bboard/q-and-a?topic_id=1
I check out this forum about once a week or two, and EVERY time I have to reorient myself to his link conventions: red underlined means I haven't been there yet, black underline (he used to use a different colour, a darker shade of red) means I've been there. To me, it's not intuitive, and I have to look arond the page to see some links that I know I've never used in order to be sure.
That said, I always take Nielsen's pronouncements with a grain of salt and have safely ignored many of his rules. On my own site I do use the blue and purple convention but use bold instead of underlining (underline appears only when you mouse over a link), and the links are perfectly obvious and clear.
My pet peeve is links that are some colour that doesn't contrast much with the surrounding text, with no underlining or bold. It's way too easy to miss those on the page. |
| Thu 26 Jun | mark | Yeah Philo, that's about right on. In fact, I think if you plucked 100 people off the street that have never been online before, set them doen in front of a computer, and gave em a brief lesson on how to click a hyperlink, maybe two or three of them would be able to figure out that the purple means it was visited. |
| Thu 26 Jun | Geoff Bennett | Brad,
Re: Edward Tufte.
Not to nitpick, but it's red and dark red. :) It didn't bother me a bit, either. But, that's just you and me.
But I do agree with you about poor choice of colour not allowing links to stand out from the body text. |
| Thu 26 Jun | Leonardo Herrera |
The issue here is not if a site becomes completely unusable when a designer changes the default hiperlink colors. A golden rule is to choose what colors seems more appropiate to your site, and to choose colors that helps the user to figure out if some piece of text is a hyperlink or not.
Now, when a user is visiting a page for first time, there is a small amount of time employed to figure out things. It's some sort of discovery process: your mind get used to the type of font used, to the background and foreground colors, and figures what stuff are hyperlinks and what not.
Now, for every single change made in this parameters (fonts, colors, text-decoration), there is a small amount of thinking involved. If a page maintains the default colors, this 'period' approaches zero. This is why Nielsen says 'don't change colors': because it's easy for your users to adapt their thinking to your site. If a page changes the default colors, but a good set of colors are chosen (for example, green, dark green) and are consistent across the site, this adjusting period is still small, and can be justified because the overall experience for the user is better.
(I think I'll better stop. Hope my english is not that unreadable) |
| Thu 26 Jun | Philo | Okay, I'm going out on a guessing limb here...
I *think* the psychology of links is:
Bright color = interesting, should go look
Dull color = been there, done that, visited
Blue/purple meets this criteria, as does Tufte's bright red/dark red. I've seen other variations, and in general don't have a problem figuring it out.
One caveat for all of this - whatever color scheme you use, always run accessibility tests on it to see what happens to the sight when a colorblind person sets their own colors. (This in and of itself argues for accepting the default blue/purple)
Philo |
| Thu 26 Jun | Brad | 'Not to nitpick, but it's red and dark red. :) It didn't bother me a bit, either. But, that's just you and me.'
Eeks, I must be more colourblind than I thought. It looks black to me! I'm pretty sure he did adjust the visited link colour, as the two shades were much closer before. |
| Thu 26 Jun | Brian | I'm surprised that nobody has pointed out the fact that the convention of using color as the exclusive way to convey a piece of information itself goes against the common rules of usability. The question, I think, shouldn't be 'Is it ok to break with the arbitrary convention of blue/purple for new/visited?', but rather 'why are we still using blue/purple for new/visited, and how did we get here in the first place?'. It seems to me that you should at least have a bold/normal or underlined/plain distinction. |
| Thu 26 Jun | Jim Rankin | 'Many companies spend hundreds and thousands of dollars branding their organisation based around the colours they have selected.'
And will they ever be able to show that spending that money has enhanced profitability? Or that they're just investing in making their web sites less useful?
Never underestimate the pointy-hairedness of management. |
| Thu 26 Jun | Tony Chang | 'I do use the blue and purple convention but use bold instead of underlining (underline appears only when you mouse over a link)'
Oh gawd I hate that.
Check out how your page works on an old machine -- bold text is wider than standard and so mousing over your links freezes the browser while the entire page rerenders in order to reflow your paragraph with the link.
On the web, bold means emphasized and underlined means link. That's a standard far more people are familiar with than blue/purple, which was an arbitrary and wrong choice made over a decade ago. |
| Thu 26 Jun | Brad | 'On the web, bold means emphasized and underlined means link.'
If the bold text is the same colour as the body text then, yes, it means 'emphasized.' But if it's a different colour, most people would interpret it at a link. See http://www.zeldman.com for an example. It's obvious that those bolded-and-colored bits are links. |
| Thu 26 Jun | Pete J | A lot of sites keep the same colour link whether the link is visited or unvisited. I don't find these sites any less usable. So my question would be, why is it so important to identify a visited link?
I had thought that a forum would be a good example - e.g. easier to search for topics that you are interested in (hence visited). However, if you've visited more than half the links, it becomes confusing. It is also actually harder to scan the text, because the eye has to re-adjust every time the colour changes. The forum I visit, where the links don't change colour is actually easier to scan read. |
| Thu 26 Jun | Mike McNertney | Personally Geoff, I think you hurt your own case with those three examples. Let me go down the list:
1) This one is not so bad. But if I didn't already know that the page had strange colored links, it would take me a moment to figure out. Also the 'visited' color being orange is bad, IMO.
2) This one is horrible. I have no idea looking at the page what text is links. I had to pass my mouse all over the enitre screen just to see what I could click on.
3) This is not particularly good either. While the links are clearly identified, the 'visited' color is almost identical to the 'unvisited' color.
I am an experienced computer/web user, and I had trouble with those three pages. What do you think a novice would do? |
| Thu 26 Jun | Mike McNertney | One more comment on the three examples. On the iD site, not only are the visited and unvisited link colors very similar, they are both very difficult to read. Brown links on a black background does not provide a good amount of contrast. |
| Thu 26 Jun | richard | Jacob Nielsen is 100% right on this issue. It is not about presentation but consistency. Any changes that a designer does to make his links look different break consistency.
With 100% consistency a user can ALWAYS identify the hyperlinks, that is the issue. Users can also override the page settgins and define their own colours.
I personally find it quite annoying when link behaviour is changed or restyled, I then have to mouseover everywhere to identify the links, as they could be just emphasised text.
There are many other serious usability mistakes done by graphic designers striving for presentation quality (narrow audience presentation quality BTW). Fixed font sizes for one, internal scrollbars ... lots and lots.
Consistency is *good* - the user doesn't have to undertake a learning process to use your site. |
| Thu 26 Jun | richard | Chi Lambda:
'.. Ideally, the UI standard would've been:
- Red, for unvisited links ('hot spot')
- Purple, for visited links ('cold spot')
But I agree that not everybody is well-versed these kinds of matters, and to stick to convention is usually best. ..'
Except for the fact that red & purple/magenta are optically quite close, and many people with poorer eyesight or old monitors won't tell them apart easily. |
| Sat 28 Jun | Geoff Bennett | Leonardo:
If you read back to my last large post, you will see I actually take some time to point out that it is more than colour that defines a link, and more often than not, users associate the pointed hand with a hyperlink moreso than colour.
Philo:
This site, http://www.designmatrix.com/pl/cyberpl/www/clc.html , dives into the colourblindness/hyperlink colour thing from a design point of view. They basically make my exact argument, but put forward infinitely better than I have been able to.
Citing their conclusion: 'Choose hyperlink (anchor) colors that contrast against the normal text color, with unvisited links brighter (hotter) than visited links. Within a set of related hypertext documents, use these link colors consistently. For Web sites this generally means the entire site.'
Jim:
'And will they ever be able to show that spending that money has enhanced profitability?'
More often than not, it is about identification, not profitability. Coke = red, Pepsi = blue. Are you going to tell Pepsi they should change their corporate colour scheme because it clashes with unvisited hyperlinks? Or Coke that theirs clashes with active hyperlinks?
Mike:
'Personally Geoff, I think you hurt your own case with those three examples.'
Yes. I should've been more clear in my purpose for presenting them. I was using them to demonstrate sites where the blue/purple selection would *not* look good in the context of the colours they chose for their site, not that the sites necessarily demonstrated good usability. My bad. Like I mentioned previously in this thread, iD would *not* be a site I would hold up as a model for usability. :)
Thank you everyone for offering your opinions, differing and otherwise. That is what I asked for, and it is what I got. I wanted to find out if anyone else felt the way I did about the issue, and I sure found out. :)
Don't stop on my account though, and I'll still be reading if anything new pops up before this drops off the end of the list. |
|
| Sending Thank you's | Wed 25 Jun | x=5;x==1?x*=2:x-=3;c=5;b=2;d=1;x=!d;x+=c*b; |
| Does anyone here send thank you notes after an interview? A lot of websites recommend it. I have only been inclined to send one, didnt get the position, but I thought the interview went well. Is it even necessary? |
| Wed 25 Jun | www.marktaw.com | I interviewed with an awefully cute girl once, I was tempted to send her a thank you note and do a little flirting. |
| Wed 25 Jun | J. D. Trollinger | I strongly recommend it. I know that a thank-you note (or the lack thereof) influences me when I interview high school students who are applying to an alma mater of mine. |
| Wed 25 Jun | Ken Klose | It makes a strong impression. As an interviewer, I've never received one. As an interviewee, I always send one. You will definitely stand out if you do it. |
| Wed 25 Jun | Tim Lara | I would agree that putting forth the effort to do a little something extra often does make a difference.
I actually would never have been hired by my current employer had I not written a brief 'follow up' letter expressing my interest in working for the company and inquiring whether any positions were still available. (I hadn't heard back in several weeks after submitting my resume.) It turns out that the president of the company had automatically put my resume in the 'no' pile because I had put down a friend as a reference who had worked for him in the past, and unbeknownst to me, that friend had been a lousy worker with a terrible attitude. I was presumed guilty by association.
Anyway, my letter was just enough to get the owner to second look at my resume, and I was hired soon afterward. I have now been here several years... |
| Wed 25 Jun | www.marktaw.com | I've been hired because I made a follow up trip after an interview. The owner of the company noticed that I'd been down there twice and hired me on the spot. |
| Wed 25 Jun | Spam | Ditto the 'yes' answers. Not a scientific study, but I got my last two jobs because I wrote a note 24-hours after the interview. |
| Wed 25 Jun | Joel Goodwin | For my current job, I sent a thank you e-mail shortly after the interview. After I joined, I was told by one of my interviewers that they thought it was a bit false and didn't like that kind of thing. (didn't hurt my application too much thought it seems!)
According to www.asktheheadhunter.com, straightforward 'thank you for your time' e-mails really don't cut it, because it is essentially without meaning (except possibly for 'please please give me the job'). A mail which comes back following up on points of discussion in the interview suggest a lot more. |
| Wed 25 Jun | David | All those tips on sprucing up your cover letter and resume can't make you stand out anywhere near as much as a Thank You letter. In almost 10 years of interviewing, I think I've received 2. Two!!
Amazing, because until I became an interviewer instead of interviewee, I thought everyone sent them. I always did.
I guess it went out the window around the same time as the courtesy No Thank you letter from employers. No seems to send those either (or even acknowledgement emails that they received something). |
| Thu 26 Jun | mb | I sent a thank you note to a company.
They thought I had accepted the job! (The offer & thank you's crossed in the mail.)
BTW, I hand-wrote thank you notes... would probably still do so today. Makes an impression, though it is fodder for the graphology crowd. |
| Thu 26 Jun | Tim Sullivan | I recieved one thank-you note from the last batch of people that I interviewed, two 'wait, I've changed my answer to the code/design/impossible question' emails, and two 'please hire me, I'll work for free the first month' emails.
Of these, the thank-you stood out. Unfortunately, the person who sent it was a no-hire halfway through the interview. It did draw my attention back to them, however.
Never send an email or leave a phone message begging for the job. That was truly the worst feeling I've ever experienced. |
| Thu 26 Jun | Steve Jones (UK) | Things must be different across the pond.
Over here (UK) I've never heard of this practice. I've been doing recruitment and interviews for my clients for almost 20 years and nobody ever sent me a note afterwards.
Perhaps I'm too harsh and they just think 'phew, glad to be out of there, he asked some really tricky questions'.
Everything is done through job agencies here though (pretty much), so maybe the agents get the notes. |
| Thu 26 Jun | Stephen Jones | Dear namesake and compatriot,
It does appear to be an American thing. I've only ever sent 'no thankyou letters'. I probably receive thank you mails after the interview but because we still hire anybody who has 'passed' the interview, I don't really pay any attention to them.
Incidentally I always send out acknowledgements when we refuse somebody, the first five times they apply. After that I set Outlook to delete their incoming mails; you would be amazed at the number of people who don't even notice you've already refused them two or three times! |
| Thu 26 Jun | Fernanda Stickpot | I have to wonder if, contrary to stereotypes, US-ians tend to be a bit more formal than UK-ians, at least in business dealings; although I can't prove it, I get the feeling that that's indeed the case.
Also, I get the impression that thank-you notes are more prominent in the US-ian collective consciousness than over here. I've never interviewed anyone, but thank-you notes of any kind are relatively rare in the UK; I write loads more than I receive. The ratio of *actually writing* notes to just *feeling guilty about not* writing them in each culture is clearly a subject for further study.
But I digress. Should you write a note in this situation? Let's see. Is it good manners? Yes. Is it common practice? No, so it'll raise your profile with them. Will it increase your chances of getting the job? Who can say.
Now, for me, all those considerations add up to a 'yes'; YMMV. Some people will want to do 'good manners' for good manners' sake; others will not want to take any trouble unless it will guarantee them success.
What should be in it? Probably open with 'It was a pleasure to meet you today. I really appreciated your taking the time to blah blah blah' followed by a brief summarization of the main points of your discussion. Try to weight it in favour of the 'thank you' at least as much as the 'I subtly hint that these are good reasons for giving me the job'.
Woodpulp or e-mail? Most thank-you notes are a woodpulp thing, and this is a formal situation, so definitely woodpulp.
Handwriting or printing? Well, social thank-you notes are supposed to be handwritten (personal, y'know) but this is a business letter, so printed. It's not that handwriting would be a mistake, more that it leans towards 'being outrageous', insofar as it's possible to be outrageous in a thank-you note.
Finally, will there be companies that hold 'good manners' against you? Probably. Whether or not you would want to work for them, depends on whether you yourself approve or disapprove of 'good manners'; YMMV. |
| Thu 26 Jun | Evgeny Goldin | Guys, I'm really sorry bit all those American things with 'cover letters' and 'thank you' notes seems a bit like ass-kissing to me.
First, people expect to like their place in some special way and write in cover letter about it.
Then, they expect candidates to like an interview process (for some reason) and write a 'thank you' note about it. Why should candidates be thankfull to you ? You didn't receive any single note after interviewing for ten years ? Well, may be nobody liked the way you did it ?
Yes, I understand that doing it will mark the person. But lying always did it in general life. If you lie in a smart way - it always helps.
So, to the original poster - I would answer - write such a note if you feel that way. Otherwise, you're just kissing their asses trying to make an extra impression. |
| Thu 26 Jun | Evgeny Goldin | If you're going to thank them for the time spent - you've spent this time as well. |
| Thu 26 Jun | Scot | Yes, and that's the reason I've thanked candidates in the past for taking the time to come out for the interview!
A thankyou note is a good way to express appreciation or respectfulness. Ink and paper are a further way, as they require some effort.
I'd rather work with someone who was capable of these feelings. And yes I realize that not sending a note does not mean one is not capable. And yes I realize that the note could be insincere, but it is another data point. The more communication that occurs, the more of a feel I get for a person :-) |
| Thu 26 Jun | Evgeny Goldin | [[ A thankyou note is a good way to express appreciation or respectfulness ]]
That's the problem .. It seems to me that most people usually expect others to appreciate the position they're offering, the interview they've just took the person through, the you-name-it, etc and etc. As I said, the reason for this is unknown to me. Why do you think people leave the interview appreciating your efforts and being respectfull to you ? Yes, *in case they are* - good note is a good way to show it off. But we're talking about common cases, like 'should I always send the thank you note'. Sure you should if you feel respectfull, but making this *a rule* - that's what I call ass-kissing. I guess, most people enjoy when their asses are kissed :)
Please, I'm not trying to hurt somebody's feeling, just telling that those things should be individual and rare, like it usually happens in the life. In no way should this be a common practice. There's no surprise people don't get those 'thank you' notes - think, why should you ? |
| Thu 26 Jun | Christopher Wells | After a software design meeting, you might often follow-up with a written summary of what you discussed and decided, and a list of things to do next: for example to ensure that everyone is 'on the same page', to put it into long-term memory, and because trust is earned (you can earn trust by following through, with actions that match your statements).
By extrapolation, you might do this after an intervew too.
Inserting 'thank you' in a note like this is just courtesy. Having spent a lot of time online I realise that written messages which just 'stick to the facts' can come accross as abrupt, or even rude or angry, presuming too much.
If it happens that you have no respect for the person with whom you've interviewed then perhaps you shouldn't write; but I can't say that (feeling no respect) has ever happened to me. |
| Thu 26 Jun | Tony Chang | If the interview resulted in you wanting the job, then it follows you must be grateful you had the interview. That's when you send the note.
if you hated the interview and don't want to work there, then don't send the note.
It works both ways too -- I never accept a job unless I recieve a thank you note from the interviewer since I don't want to work for rude, thankless people.
Polite businesses succeed and then there's more of the pie to go around.
Viva la common courtesy! |
| Thu 26 Jun | Evgeny Goldin | Honestly, it only happened to me once when I really enjoyed the interview - the questions were those that made me actually think instead of shooting the right answer almost right away.
I couldn't stop myself from telling the guy that I really enjoyed talking to him this evening. He said he felt the same way. This is my way of sending the 'thank you ' note - tell it to the guy right away. So that he'll feel you really mean it.
Like I said, it only happened to me once in the last 4-5 years. |
| Thu 26 Jun | J. D. Trollinger | Christopher Wells wrote: 'Having spent a lot of time online I realise that written messages which just 'stick to the facts' can come accross as abrupt, or even rude or angry...'
Thank you for that observation. I'm glad that I'm not the only one who feels that way. I'm always taken aback when I receive a one-sentence-long e-mail message that contains no salution, no signature, and no polite words or phrases (like, 'Thanks for considering my request', or, 'I hope everything is going well', or some such thing). |
| Thu 26 Jun | J. D. Trollinger | 'no salution'
Er, that should be 'salutation'. |
| Thu 26 Jun | Evgeny Goldin | Are we starting to talk about different things ?
What recent posters mention is that one-sentence letters without any 'Thank you' or 'Best regards' look not so good. I really can't agree more on this point - I'm personally always trying to add 'Hello' and 'Best regards' in my letters.
But what original poster started from is that the whole point of sending the letter was just saying 'Thank you'. Without being truly thankful. Out of courtesy. Just because 'a lot of websites recommend it'.
I think you'll agree that doing this is absolutely different from inserting 'thank you' in a note out of courtesy .. |
| Thu 26 Jun | Evgeny Goldin | [[ Without being truly thankful. Out of courtesy ]]
Should be 'Without being truly thankful. Nothing about courtesy' |
| Fri 27 Jun | Fernanda Stickpot | Evgeny, I see your point, I'm just looking at it from a different perspective.
Take the analogy of receiving a gift. If I came home and found a BMW parked outside my house, tied up with a big bow, you can bet that I'll be so thrilled that I'll be shrieking my thanks by phone, letter, e-mail, smoke signals, SMS, carrier pigeon, and telegram, all within 30 seconds of realizing it's for me.
Conversely, if I receive a dog-turd or a letter bomb, I probably won't send a thank-you letter.
What about the inbetween cases? Someone sends me a nice book, for example, that I quite like; or a street-map of the suburbs of Melbourne, which doesn't offend me, but for which I can't really imagine a use?
In cases like that, I just defer to the idea that someone sent me a gift that I wasn't there to thank them for in person, so I'll write them a letter.
Am I doing it because I'm 'supposed' to write a letter in this situation? Well, sure. I don't see a need to scrutinize my psyche to make sure I really, really feel gratitude in the depths of my soul. Nor to ponder the motives of the sender, and ask myself whether they sent the gift out of a deep and abiding love for me or whether I was simply another datapoint on their Xmas list. These are important questions, but somewhat independent of the fact that someone *did* send a gift, the fact that it is considered courteous to write a note in response, and the fact that there is no particular reason *not* to be courteous in this situation. It's just a note, after all - it's not like I'm donating a kidney to them or something.
Likewise, I'd send a thank-you letter after an interview because as far as I'm concerned it is one of the things for which a letter would be courteous. If the interview leaves me manic with enthusiasm, my enthusiasm is going to shine through even though I would have written a letter anyway. |
| Fri 27 Jun | SC | Incidentally, what should I be 'thanking' them for?
The opportunity to be interviewed(Sounds escher'esque to me)?
A particular interview technique perspective?
The new outlook on the company they gave me?
A good day out/pleasant chat?
Unfortunately (and without any intent to sound like a troll), I find it hard to imagine a thank you note that doesn't sound like blatant arse-licking... |
| Fri 27 Jun | Fernanda Stickpot | For interviewing you.
Precisely how you word it depends on what happened during the interview.
I admit that, as a Brit, I know where you're coming from when you say you're afraid of seeming smarmy. It was hard to force myself to write my first thank-you for an interview, precisely because of this.
The secret is to be ultra-careful to sound businesslike as opposed to smarmy all the way through. That is a bit of an art, but it can be done.
But then, I was also nervous about sending thank-you letters to friends who had entertained me, for precisely the same reasons. I was afraid that doing so would expose me to ridicule and place me in a lower position.
Well, it did - but only with those 'friends' that I'd suspected were pretty nasty all along. The ones who weren't interested in put-downs and power struggles started thanking me for stuff, and the number of reasons for us to thank each other began to escalate. The result is that I now have better friends.
By the same token, if an interviewer reads your letter and thinks 'what is the smarmy git trying to pull', he is either a snotty bastard or has just read an inappropriately smarmy letter.
However, the fact of writing the letter is not in itself smarmy. |
| Fri 27 Jun | Julian | Instead of viewing thank-you notes as 'ass kissing', I'd view them as helping to sell yourself, which is the objective of any interview. It makes sense for an interviewee to do things that they don't normally do: dress nicely, act cheerful and upbeat, brag about their accomplishments, and send thank-you notes. The better the impression that you make, the more likely that you'll receive a job offer. |
| Fri 27 Jun | Eric Lippert | When I interview people the hire/no hire decision has been made long before anyone could conceivably get a thank-you note to me. Even if by some miracle the candidate could get me a note before I typed up my interview feedback, a thank you note tells me absolutely nothing about
* smart
* gets stuff done
* can write code
which are the only things that I deeply care about.
That said, OF COURSE YOU SHOULD SEND A THANK-YOU NOTE! Not because it will help you land the job, but because it is the right thing to do! It's like holding elevators or not cutting people off on the freeway -- in a civilized society we do things for each other out of a sense of politeness and common decency.
But if you want a 'selfish' reason, here's one: what if you get the job? Isn't it a good idea to make as positive a first impression on your future co-workers as possible?
Eric |
| Sat 28 Jun | X. J. Scott | You can be the best coder in the world and be a negative asset to a team if you have the wrong attitude.
You can be a mediocre programmer and be the one contributing the most to a project's success if you bring people together, smooth out differences, and facilitate lines of communication.
On large projects, facilitating communication is far more valuable in terms of creating project success than having top coding skills.
Dressing cleanly for interviews is a sign that suggests the candidate understands social contracts. Maybe he wears sandals and shorts normally, but the tie at the interview suggests he knows enough to dress up when meeting with clients.
Sending a thank you note suggests the candidate is smart enough to understand the importance of team building, tact and diplomacy, and he acts on those smarts to get things done such as promptly send a nicely formatted thank you note.
Odds are that the candidate sending the note will contribute more to project success than the superstar coder who doesn't. |
|
| ee or cs? | Wed 25 Jun | Joemcyntier |
| im currently a sophmore at cu, in the school of business, and im gonna transfer to the school of engineering. Im considering either cs or ee. Can u guys tell me the differnce between the 2, like the ciricculum(mispelled)
, and the type of jobs u get with each degree.
THANKS!
joe |
| Wed 25 Jun | Joe Grossberg | Your most urgent need is to take some English classes.
Your spelling, grammar and punctuation are atrocious and, no matter how smart a fellow you are, they make you sound like a moron.
I'm not saying you are one, just that it's the impression you'll give.
Joe
http://www.joegrossberg.com |
| Wed 25 Jun | *Sigh* | For the record, please use: 'you' and 'curriculum'. We're professionals here. If you know a word is mispelled, dictionary.com is a click away.
Secondly, if you're not even going to bother checking out any universities' EE or CS web sites for program information, what makes you think you'll keep up with the fast-changing industry you choose? |
| Wed 25 Jun | Philo | They're not fast-changing. EE has been using transistors and resistors for decades, and binary's been around since what, Babylonian times?
'Fast changing' geez.
Philo |
| Wed 25 Jun | Tim Lara | What is CU? |
| Wed 25 Jun | www.marktaw.com | can't be cooper union, they don't have business.
what's with the snooty grammer and spelling police? this isn't an official document, it's a forum. |
| Wed 25 Jun | flamebait sr. | Because there's a minimum standard for spelling, punctuation, and grammar that everybody online in an english-speaking forum is held to. Beneath that limit, most folks get a headache trying to parse the text, so nobody's going to want to read it. |
| Wed 25 Jun | Christopher Wells | Programmers often like consistency (if they didn't, they'd talk with people instead of computers). I can read 'im' or 'Im' or 'I'm' but to read all three in one post is remarkable. |
| Wed 25 Jun | Herbert Sitz | MarkTAW -- Regarding the spelling mistakes, for me there's also an issue of care and importance: if the poster doesn't care enough about his request or think it's important enough to take the time to phrase it properly and review for mistakes, then why would I think it's important enough for me to respond to?
In addition to the previous errors or sloppy writing pointed out, He leaves out the apostrophe in his first 'I'm', and misspells 'difference' and 'sophomore'. All within the space of a few sentences.
Joe -- Someone else can give you a better answer than I can, but with an EE degree you'd be much more likely to end up as an engineer, designing equipment or 'hardware' that isn't even necessarily computer related and which probably won't even require any programming knowledge. Calculus will be a commonly used tool. There is a core set of knowledge that's typically taught to any sort of engineer, so the first couple of years in an engineering program will be much the same regardless of whether you're aiming to be an EE, mechanical engineer, civil engineer, etc.
With a CS degree you'd be more likely to end up writing or designing software. Your focus will be on programming and the systems and tools that are associated with it. You won't depend as heavily on calculus or mathematics. You'll experience some of the same career problems and benefits that are talked about on the many posts in this forum. In fact, one good idea would be to review lots of old posts here to find some of the many that discuss the good and bad aspects of being a software developer. (The posts are mostly regarding the bad aspects, but that doesn't mean there aren't good aspects.) |
| Wed 25 Jun | www.marktaw.com | I'll give you the Im im i'm thing - consistency within the same post isn't a good sign, but a lot of people on the internet are used to shorthanding things. 'u' is a common replacement for 'you' simply because it saves time. The same with not capping the first letter in a sentance or proper word, and I would also with leaving punctuation off of words like I'm.
Forums are interesting in that they occasionally cross over into an almost chat-like feel, and I figure they're susceptible to the chat-like conveniences I just mentioned.
Has anyone here been in a chat where you can see what the other person is typing as they're typing it? It borders on a completely new form of communication. |
| Wed 25 Jun | Alyosha` | Hahah ... until this post came up, I didn't notice that, without exception, the regulars on this forum use immaculate spelling and grammar.
Anyways, to answer the question ...
EE is focused on circuits, a subset of which is computer hardware or ASIC design -- but also includes things like three-phase power and analog circuit design. CS is primarily about software.
CE is usually a cross between the two, in which you take courses from both disciplines ... but it depends on the college you attend. I graduated in CE, and I believe that it is less gruelling than CS (in that I didn't have to take stay-up-all-night-coding courses like Compilers or Operating Systems) -- while the working world recognizes it as functionally equivalent to a CS degree. |
| Wed 25 Jun | Alyosha` | Give him a break, guys, he's from the business school [g,d,r] ...
As far as 'u' being a quick way to write 'you' ... maybe it depends on your typing skills, but I've never found that typing the two extra keys an onerous burden. It takes me almost the same time to type. I can understand shortening 'through' to 'thru', but 'you' to 'u' is just ... lazy ... |
| Wed 25 Jun | www.marktaw.com | Don't most colleges and universities have their curricula online by now? |
| Wed 25 Jun | Joemcyntier | um, ok tkxs for da advice,
that is coo,
im a gonna do a ee. BTW, i know lots of ee majors, and they do program, but in hdls.
bye bye |
| Wed 25 Jun | Boy oh boy... | Should have known not to feed the /. troll |
| Wed 25 Jun | one programmer's opinion | Joemcyntier wrote, '...the type of jobs u get with each degree.'
Well, you can get a programming job with either degree if that is what you want to do for a living. Personally, I feel a software engineering degree is the most appropriate degree to obtain (if available) for people who want to program computers for a living. Many moronic HR types currently require job candidates to have a computer science degree for open programming positions within the company they work for simply because they don't know the difference between a computer scientist and a software engineer. |
| Wed 25 Jun | Passater | That's funny how everyone bashes the original poster for poor grammar punctuation and how they didn't want to respond because of that, yet created the whole thread.
Wouldn't it be easier just to ignore? :) |
| Wed 25 Jun | Ged Byrne | It like the episode of the Simpsons where the scientist shouts 'PI is exactly 3' to get everybody's attention :-) |
| Wed 25 Jun | Joemcyntier | no, cause i want an answer genius |
| Wed 25 Jun | www.marktaw.com | Passater, maybe that's something to keep in mind when writing cover letters and sending resume's.
Not that anyone would do either with bad grammar, but if you shorthand too much, it becomes transparent. |
| Wed 25 Jun | English Jenyus | 'no, cause i want an answer genius'
Sorry, the answer genius isn't here today. Try again tomorrow, please. |
| Wed 25 Jun | David | Not to sound to snotty, but the correct answer is 'neither'. EE and CS majors drop out and become business majors. I've never heard of it happening the other way.
EE and CS are tough (EE more so, IMHO, and yes, I did both). For one thing, if you are switching now, you're gonna be in college for another four years; the classes you've already taken are going to be pretty much irrelevant. For another thing, if you didn't have enough interest to enroll in engineering and start taking EE or CS off the bat, odds are you don't have enough interest to tough it out.
Sounds snotty, but it's true. |
| Wed 25 Jun | Joemcyntier | fu,
i can tough it out u idiot.
U dont even know me fuckface.
Go fuck urself u computer nerd |
| Wed 25 Jun | David | Fine. Prove it to us snotty 'computer nerds' by going out there and earning yourself a CS or EE degree. While you're at it, pick up some clues on how to properly use the English language. The real world doesn't take kindly to pager-speak.
Go get 'em, tiger. |
| Thu 26 Jun | radius | Thought I'd chime in as another computer engineering grad. As was said earliler, we straddle EE and CS so I think I've got a pretty good idea of the differences and similarities between the fields.
For EE, you can get work in analog things like power generation/transmission, amplifiers, radio and wireless, telecommunications (at the physical level). The hot field is wireless of course. The main tools here are simulators like SPICE and Monte Carlo analysis etc.
You can also do digital things like build hardware using microcontrollers to control things like televisions, cable boxes, telephone switch exchanges, Teddy Ruxpin dolls and anything with circuits inside. You might also design chips used inside of cuircuits instead of hooking them up (often ASICs or FPGAs). You will use digital simulations instead of analog and maybe a hardware description language like Verilog or VHDL. I don't know many EEs who have to draft their own circuits any more.
Finally some EEs drift into software, especially low level or real time things that touch hardware. Embedded software or firmware are possibilities.
In engineering you will learn things that you might think are peripherally related to your job. For example, first year is usually a solid grounding in math and physical sciences. Second year will be more math, more science and basic, general engineering skills (like reading plans and drawings, basic electrical circuits, basic mechanics and motion, system analysis, numerical computation, maybe thermodynamics and fuild mechanics or power depending on your school). Third year is often very tough and specific to your discipline. For EEs it might include more electronics (including semiconductor theory and more transistor circuits etc), digital logic, more math (more calculus, Fourier and Laplace transforms etc.), electro-magnetics, signal analysis, basic communication and information theory etc. Fourth year you might specialize more in a particular area, like communication, radio, amplifiers etc.
CS doesn't have quite as straightforward a list of job possibilities and educational path because it is much wider and more varied.
You will probably take some object oriented programming, math (comlexity of algorithms, graph theory, automata, formal methods etc), data structures, operating systems, compiler construction, databases, software engineering, networks, algorithms, distributed and parallel computing.
But CS can vary so much, it's hard to decide what might be a good foundation so you will have to see what your school specifically offers.
I haven't met very many CS students writing low level software, that seems to be dominated by engineers for some reason. If you read Joel's software forum you can get an idea of what CS people might do; there was a thread about this a little while back.
A lot of CS grads seem to go into database stuff, either administration or accessing DBs for middleware, web services and so on. Some write desktop software, but that seems to be a smaller part of the job market now. Some people write business process software. There's networking and computer security too. The range is fairly wide.
In general, I tend to think of the difference between CS and engineering as being CS grads tend to write software that talks to other software, engineers tend to write software that talks to physical things.
Hope this helps a bit. |
| Thu 26 Jun | radius | I thought it might also be worthwhile to mention that if you have a choice, it might be better to sign up for EE. People often drop from EE to CS but it seems extremely rare to have it happen in the reverse. Whether this is from the prejudice of faculties, supply/demand to study those disciplines or the quality of the students, I don't know. |
| Thu 26 Jun | Philo | Radius - it's the difficulty of the discipline. EE requires more math and physics than any other degree outside Math and Physics. The concepts are extremely ephemeral and difficult for many to grasp.
CS, on the other hand, is often a 'plug n' play' discipline - you can directly understand what you're doing (especially if you can duck or weasel through pointers and recursion).
Philo |
| Thu 26 Jun | indian programmer | Philo,
I don't think cs is a 'plug-n-play' discipline . Remember Joel and his law of leaky Abstraction ? |
| Thu 26 Jun | Peter Ibbotson | Hmm my CS course required more maths than the EE courses, but then we did a lot of formal proofs of program correctness (see the http://www.dcs.qmul.ac.uk/research/theory/ pages for the kind of stuff we did)
It does help that head of department was Peter Landin who was involved with Tony Hoare on Program verification and semantics. (I learned to loath the phrase 'Introduction to' and 'Elementary' on book covers at university)
While browsing around I found the following paper http://www.odl.qmul.ac.uk/dynamic/stud/R_Bornat.htm which is the CS101 lecturers advice to new computer science students (well worth reading) |
| Thu 26 Jun | Joemcyntier | HMMMMM,
well, thanks for your answers, very helpful.
I do like programming but I don't like it enough that i would enjoy being a cs major. So, im going to go for EE. IT will be a challenge, but it can't be much harder than business. I mean business is like almost impossible. WoW! I had to take business stat, and i almost died. I mean, how do u find the mean of a set of numbers???? way to technical for me. :-)
Thanks,
JOE! |
| Thu 26 Jun | grover | That was sarcasm in your last post right? Please tell me it was, otherwise your dead. |
| Thu 26 Jun | Joemcyntier | no, it really is hard!
jk
i own business stat!!!!
how many of u people can say that????
Joe |
| Thu 26 Jun | English Jenyus | We could all say it, provided we forgot how to speak English. |
| Thu 26 Jun | Joemcyntier | not sure if that was a snobby response or not.
If (snobby response)
FU!!
else
end 1 |
| Thu 26 Jun | English Genyus | If that's how you code, go for the EE degree. |
| Thu 26 Jun | Joemcyntier | was that supposed to be funny? |
| Fri 27 Jun | Troll feeder | Joe,
Have you ever wondered whether your whole purpose in life is simply to serve as a warning to others? |
| Fri 27 Jun | Joemcyntier | fu |
| Fri 27 Jun | English Jenyus | This must be what the Algonquin Roundtable was like, don't you think? |
| Sat 28 Jun | Dave | Joe:
What attracts you to electrical and/or computer engineering? Fast-forwarding a few years, what do you picture as your ideal job?
As a graduate from an electrical and computer engineering curriculum, I cannot stress enough the dedication it will require. If you are not 100% committed, it is likely you will fail.
What is your high-school and college background? Did you take chemistry, physics, and calculus in high school? Have you taken these courses in college?
One thing to keep in mind is that switching to an engineering major now will require a lot of catch-up. At a minimum starting out, you'll likely need to take Calculus I and II, Physics I and II, Chemistry, and one or more higher math courses such as Differential Equations (unless, of course, you AP'd out of one or more of these).
These are all courses I took as a first-year student, and although I didn't know it at the time, these were the EASY ones!
I just wanted to give you a word of warning before you went off and spent your valuable time and money going down the engineering path. You will certainly find a stark contrast between the level of difficulty of a business degree and that of an engineering degree. |
|
| Ideal nummber of pages in a resume | Tue 24 Jun | anon |
| What do you guys think is the ideal number pages should be in a resume? I know it depends on your years of experience and the type of job you are appying for. But what is the general standard? and what is too long and too short? Is 3 pages too long for a software engineer with 3 years of exeprience and a Masters in CS? |
| Tue 24 Jun | anon | Never go over 1 page. Ever. Ever. That's what the interview is for. |
| Tue 24 Jun | | >> 'Is 3 pages too long for a software engineer with 3 years of exeprience and a Masters in CS'
Yes, unless you've held a million jobs over 3 years and even then it's too long. What exactly are you saying on the resume besides I've worked here, here and here and I have a masters in CS? Must be a lot of extraneous BS. |
| Tue 24 Jun | jcm | What I did was a 'two pages'-'two parts' resume: all that I want conveyed in the resume (experience, education, qualities, goals, miscellanous) are on the first page. Then on the second page, I added a part called 'detailled experience' where I specifies more clearly what I did, what was my thesis about...
It works like a charm. |
| Tue 24 Jun | www.marktaw.com | http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=53248&ixReplies=1
See, i told you there are only al imited number of topics here. |
| Tue 24 Jun | Marc | Anything more than 1 page is too much. If I get 400 resumes, I don't need 800 pages to read!
The one exception to this is when the second page is nothing by a skills assessment (C++ 1 Year, C# 10 years, etc.). Lots of HR types like that because it helps them sort you faster. Otherwise they need to actually *read* it, oh my. |
| Tue 24 Jun | anon | I have 3 pages becuase I have listed the projects I worked on with 3 line description and technologies used. I try to list only the relavant projects for the job I am appying for and take out all the others but it still goes for 2.5 pages. I work for a non-IT firm as the in-house software developer. There are so many small projects I have worked on over the period of 3 years.
MarkTAW- I never saw any discussion regarding the number of pages in a resume. I apologize if it is a already discussed subject.
Thank you. |
| Tue 24 Jun | www.marktaw.com | Anon - I was kidding, the previous post was about getting rid of the bull and I was referencing that, not your post. |
| Tue 24 Jun | Christopher Wells | A 'career transition' person advised me to reduce my 20-year resume to a page and a half. On the 1st page I have 3 thirds: a 'profile' (sentences describing my last roles, my 'selling points'); a 'skills' summary (list of languages, APIs, types of application); and a summary of responibilities and achievements in my last job (which lasted 12 years, so this section is broad and shallow). The 2nd half-page lists my previous jobs and companies, and my academic and other awards.
I've been sending this resume, with few replies. Yesterday however I had feedback from 2 interviewers.
The first was a headhunter who found my resume on Monster and wanted to put me forward to a company, which he did. When he asked if I had questions I asked about my resume, saying that I had been advised to keep it short. He replied 'Maybe that was true 3 years ago. Recently I've been submitting resumes that are 4 and 10 pages long.'
The 2nd was a company hirer, whose first comment was 'another typically uninformative resume'.
I had wanted to keep my resume short, for three reasons: I was advised to; to spare the time of people reading 400 resumes; to avoid the trap of saying what product I worked on in the past, which could discriminate against me working on other products in the future.
Based on this feedback however I wonder whether one and a half pages is TOO short; and in a tight job market I may be hired only to do something very similar to what I did in the past, so better to state that experience than gloss over it.
I'm now thinking of doing it as a 3-page resume. 1st half page: 'profile' (especially experienced at C++ on Windows, with the following specialties and other goodies); 2nd half page 'skills' (list of languages and APIs, with number of years per each, like on Monster); bottom of 1st page: academic and other awards. 2nd page: table of specific technologies or skills (e.g. multi-threading, networking, GUIs) with a list of the experiences I have had in each area. 3rd page: chronological employment record, summarising things delivered.
The items on 2nd page would be customised to whatever the job advertisement is asking for. |
| Tue 24 Jun | And the horse you rode in on | Ask a dozen people about how to write a resume, and you'll get a dozen answers.
Whatever you do you're relying on the luck of the draw - that your way matches the person receiving the resume's idea of what a good resume looks like.
My advice is use your own judgement on what works best for your specific skillset and experience. |
| Tue 24 Jun | Philo | The one-page resume was the rule twenty years ago. Of course, twenty years ago just about everyone who actually had a resume (as opposed to simply filling in job applications) only worked at 2-3 jobs tops in their entire lives.
We're more mobile now, especially in this industry, and I think the one-page resume is a dinosaur (and for employers who don't care enough about their workforce to read more than that). Even attorney resumes, long the last bastion of the uber conservative, are now allowed to broach the second page if they have reason to.
Venture secondpagewards when you simply don't feel like a one-page resume can possibly be accurate. I wouldn't go past two pages, tho. Nobody will read farther. Figure the really important stuff is on the first page - the second page is there if the first page makes them want more. ;-)
As my career progresses, I take bullets and text out of my earlier employment history. Soon some of the jobs will be 1-2 liners. I think of it just like perspective - as the work recedes in the distance, my description of it gets smaller...
Philo |
| Tue 24 Jun | www.marktaw.com | Here's an idea:
The unofficial 'post your resume for critique' thread. Either a link to the .doc or the hotjobs/monster page, or just paste it in. |
| Tue 24 Jun | coresi | Marc: It looks like we will never hire each other :)
The one page resumes I see are all spaghetti coders. Not somebody I wish to join my team. After a few years of enterprise development only the list of technologies can fill half a page (ever seen a network architect resume?). Even more, I want to see the spark, the way one combines the technologies and designs the applications not just a list of companies and jobs one had sailed through. Spaghetti coders are 100 a dime these days.
As a bonus, the employer will know why you ask for that load of money at the end of the interview.
In conclusion, go light if you have a light experience and go heavy (2 pages, maybe 3) if you have things to say.
I don’t know anybody in my company who will even consider calling you to an interview with a one page resume. |
| Tue 24 Jun | Marc | Coresi,
I wasn't very clear before (shocking I know) but I was talking about this person specifically. If you are filling 3 pages with only 2-3 years of experience than you are stretching it. If you are talking 10 years than that is a different story.
It also depends on the position in question. If it is an entry level or somewhat junior position then shorter might be advised. For a senior level position it makes more sense to have a longer resume.
Personally, my resume is easily 2 pages long and I'd bet I could hit 3 if I wrote it today. But I've not had to send out a resume in years, so I'm not really sure. |
| Wed 25 Jun | www.marktaw.com | What about a 159 page resume?
http://www.amazon.com/exec/obidos/ASIN/1893115941 |
| Wed 25 Jun | And the horse you rode in on | If a good coder is an order of magnitude better than the average coder (which most here seem to agree with), then surely a good coder after 1 year will have as much to say on their resume as an average coder after 10?
I think it's hard to say ... you can have a job for a year and do the same thing every day, or you could be working on lots of different projects and technologies. |
| Wed 25 Jun | matt | I don't know guys, most multi-page resume's I've seen go into way too much detail, and almost all of the details are totally irrelevant to the position I am trying to fill.
By page two I am usually reading about the dozenth arcane x-bean-mookfalata thing they learned back in `94 and I start to scan the rest of the page(s) for something interesting.
And that's bad, because once the reader starts to scan you lose your personal voice. Your story becomes an incohesive laundry list instead of a focused story of an upwardly mobile genius who just couldn't stop getting promoted or tackling one organizational clusterf--k after another and saying 'COME ON! IS THAT ALL YOU GOT!'
Besides, there's somthing classy about one page.
Throw down. |
| Wed 25 Jun | www.marktaw.com | OTOH, some resume are designed to turn up in as many searches as possible so you want to list that you learned C64 Basic in kinderdergarten. |
| Wed 25 Jun | ko | In fact, it depends on where you live as well. I'm in australia, and my resume at the end of uni was four pages. I've been working for five years now and it's still four pages, albeit with very different content.
At the end of uni, they held a couple of workshops on resume writing etc. and four pages was the recommended length. |
| Wed 25 Jun | Jordan Lev | I am surprised there aren't more analogies drawn between a resume and the code we write.
Just because you have 20 years of experience doesn't necessarily mean you need a longer resume. It's like the topic that comes up from time to time on measuring one's productivity in Lines of Code. Usually, the more lines of code, the WORSE a programmer is. Now I don't mean that having a long resume corresponds to your LOC, but rather that you don't always need to *say* more to *mean* more (or *do* more in the case of computer code). It reminds me of a great quote by someone here a couple weeks ago: If it's EASY to read, it was HARD to write.
From what I have learned, a resume is NOT a legal/archival/statistical document that is supposed to tally up every thing you've done over time. Rather, it is a *marketing* document whose ONLY purpose is to get you to the interview. You have a message you want to get across, and usually a simpler, more concise message has more impact than a lengthy one.
[Now if I could only practice what I preach and write a shorter reply...] |
| Wed 25 Jun | Alyosha` | I've worked at two jobs in three years. My resume is two pages long.
I tried it on one page but it looked much too thin that way. If I were a recruiter, I would think that someone who could describe themselves all in one page must be lacking experience.
I don't know if I am correct or not -- I am only saying what I believe. |
| Wed 25 Jun | Philo | Jordan - agreed that the longer your career the more efficiently you should write your resume. When I had one year of experience, my resume was a page long. Now that I've been working for 14 years, my resume is two pages long. 1 year/page -> 7 years/page.... ;-)
'From what I have learned, a resume is NOT a legal/archival/statistical document that is supposed to tally up every thing you've done over time'
Absolutely WRONG. If you have *any* significant gaps in employment, you *will* be asked about them. (I don't know why - never made any sense to me)
Philo |
| Wed 25 Jun | Jordan Lev | 'If you have *any* significant gaps in employment, you *will* be asked about them.'
Well, yes you will be asked about them, but that implies that you actually made it to the interview (or do you mean that you have been asked such questions prior to an interview?).
One would hope that you would be given the chance to explain any gaps -- although on the flip side it seems like a lot of people here are saying that it doesn't matter what your excuse/explanation is because employers are looking for ANY abnormality that will help them speed along the 'narrow-down-my-stack-of-800-resumes' process. Hmm... |
| Wed 25 Jun | Zahid | I prefer the one-page resume. Tell me what's interesting about you, not everything there is to know about you, a la, 'it all started when I was seven.' That doesn't mean I don't want to know where you've worked ... but it's sufficient to give me brief paragraphs on the last few positions, and just the interesting stuff from before that.
> 'If you have *any* significant gaps in employment, you *will* be asked about them.'
Not exactly. You will only be asked about them if your resume is otherwise interesting. If your resume is tedious, they won't ask you a dang thing. |
| Wed 25 Jun | Mr Jack | Two pages.
Well spaced out, containing all relevant information and enough space to put some eye-catching nuggets in, and explain some about yourself.
Seems to have worked for me. |
| Wed 25 Jun | Stephen Jones | There's no agreement on this, but the one page resume is often completely unreadable because people simply make the font smaller to fit everything in.
The other tendency is for the lenght of the resume to be in inverse proportion to the amount of experience. I often get five to ten page resumes from people who have just left college in which the leadership skills they learnt cutting their neigghbour's lawn at the age of 13 are meticoulsy stated with bullet points and all, whilst those with 30 years teaching experience often just stick in half-a-dozen lines. I think it's a case of the effort going into the resume reflecting how likely you are to get the job anyway.
The rule can't be stated too often; tailor the resume to the job. |
| Wed 25 Jun | anon | Thank you all for your inputs so far. I will reduce my resume to 2 pages from 3.
Here is what I think:
1 page resume is good for some body just fresh out of college, for entry level jobs. Just highlight your education and interships, part time jobs.
And
1 page resume is good for somebody with over 10 year of exeprience, applying for upper management jobs or for somebody who is well known in the industry. For example Joel :). If he was looking for a job today, do you think he really needs a resume more than 1 page long?
2-3 pages long if you have 3-10 years of experience. If you have worked for 3 years, you have to have stuff to say more than 1 page, unless you have worked only on 1 product at 1 company for the last 3 years.
Put all the important stuff on the 1st page and put all the supporting stuff on the 2nd page.
What do you guys think? |
| Wed 25 Jun | Emerick Rogul | I think a 1- or 2-page resume is perfect for most needs. In some exceptional circumstances, you may need to go slightly beyond a 2-page resume, but I honestly don't think that most cases warrant it.
I've managed to keep my resume at 1 page and I've worked in the industry for about 10 years now (granted, I'm a bit unusual in that I've only been with two different employers in 10 years, which made this a little easier).
I've posted my resume as an example of how you can fit a lot of useful information into a 1-page format. If anyone has any constructive comments on it, I'm always interested in hearing them.
http://cs-people.bu.edu/emerick/resume.doc |
| Wed 25 Jun | igor | Do not go over 2 pages! Recently I've been doing a lot of interviewing and I've quit reading past page 2 in 99% of cases. If you have 3 years of experience doing small projects pick a few that would interest the target company and describe them as one-liners. Lump the rest into a generic bullet.
Put a list of skills/languages/technologies/buzzwords upfront so that it's the first thing they see. This will make it easier for HR people to match you to an opening. |
| Wed 25 Jun | valraven | Make sure everything someone needs route/evaluate
you by is on the first page. After that the number of pages
doesn't matter because 99% of the people will
only read the first page anyway. Minie is 5 pages or
so. The info is there if you want it.
If someone can scan your skills in 15 seconds you've
done a good job. That's all you got.
On the first page make sure you are completely
buzz word compliant. Make sure your value add
is clear. Don't say useless stuff like team player,
fast learner, etc. |
| Wed 25 Jun | Mister Fancypants | The Answer is 1-3 pages, depending upon length of experience, and preferably custom tailored to the job you are submitting for.
If the HR person or hiring manager can't be bothered to at least skim over your 2 1/2 page resume to do first cuts, screw 'em.
The Long Term Answer is we should use more interactive resume formats. A resume that displays in short form with links to more information (and, in some cases, even demo code snippets) that is indexable and searchable would be nice. Obviously HTML could be used for this, though a custom XML schema might be the best answer. Just don't let it be designed by a committee of companies and/or industry experts or it will take 5 years to be specified and will be bloated past the point of being usable.
The hard part would be getting people on both sides using this new format. If Microsoft Word supported it, that prospect would be... a little less hard. |
| Wed 25 Jun | Phillip J. Eby | One of the most impressive resumes I ever read was probably close to 10 pages long. The only reason I didn't interview the guy was that his asking price was outside my budget.
Raw size isn't much of a factor to me; content's much more important. Nearly every candidate I've interviewed for any position has had a multi-page resume, because that's the only way to fit the information I need to evaluate someone. That is, meat about what they did.
Of course, my team generally looks for 'well-rounded' candidates who've done more than just programming, so that tends to skew in favor of longer and more complex resumes that have more details about accomplishments. |
| Wed 25 Jun | Philo | 'The rule can't be stated too often; tailor the resume to the job. '
Stephen, do you have resume format criteria on your website too?
Philo |
| Wed 25 Jun | programmer | I think a 159 page resume is fine, if you have a lot to offer -- but I think that resume is even better when it's in FULL COLOR!!! |
| Wed 25 Jun | richard | Christopher Wells:
I have been advising a mate of mine on this, he got bumped recently, but he is shit hot. Everyone has been telling him to keep the resume short, nobody likes to read lots, yadda, yadda. It is coming across as dogma.
As someone who has spent a lot of time out of work (2x redundancies) I learned the hard way how to write a resume. And yes the climate changed. A badly-typed fully-buzzword-compliant resume got you interviews 3 years ago. Nowadays people take their hiring much more seriously so they read them in 2 steps.
For the first step, they screen. Just about anything can get your CV filed in the trashcan at this stage, especially if the resume pile is large. What they are looking for is the buzzwords & maybe key experience. Your key skills should then be on the first page. If your CV was half a page long it still might be too long here.
Now that they have removed 90% of the pile they go through the rest of it more seriously i.e. it gets read properly, first by a HR type, and then maybe reviewed by a techie type.
These people want details! They want to cross examine your skills against your experience, figure out your design/QA/coding ability and team size experience. You can get screened here too. They will then start doing screening interviews (possibly over the phone), and may use your resume to construct interview questions.
My resume is 4 pages long and a bit wordy. All the screening stuff is on teh front, the rest is work history & projects. Until I expanded it up to this size I wasn't getting any interest whatsoever. |
| Wed 25 Jun | . | I think there might have been a change in the optimum length for a resume, arising from the preponderance of online applications.
1 or 2 page resumes have always been the mark of a good communicator, able to capture key points, and prepared to put in the work to summarise, and to thus show respect to his or her reader. There's no doubt that was the style.
However a friend of mine looked for a job last year, and found little interest using his normal resume, which had always worked well in the past. At the suggestion of a recruiter ( they're not all bad ), he added descriptions of important achievements, taking the length out to five pages. That resume immediately got interviews and job offers.
I think online reading hides the number of pages, and reduces the usefuless of keeping the resume short.
However I also think there is a lot of variation. I've seen a resume from a lawyer that just had a paragraph stating his current position with a very prestigious law firm, and his degree from a prestigious school. Said it all, really.
The other extreme are resumes from ambitious academics, where they list every single publication they've ever done, extending to 20 pages or so.
My advice would be 3 pages. |
| Wed 25 Jun | Philo | Incidentally, one thing I *am* sure about is that the ideal number of 'm's in 'number' is one.
Philo |
| Wed 25 Jun | anon | :) Thanks Philo. I will make sure I run the spell checker on my 1/2/3 page(s) resume! |
| Wed 25 Jun | Philo | Sorry about that - too cute/snotty by far.
I've got serial comms on the brain and it's making me twitchy.
Philo |
| Thu 26 Jun | Christopher Wells | Emerick: thanks for posting your resume - it *IS* one page, and looks clear to me. The only two things I don't see are where you used Visual Studio .NET, and whether you were really using Win32 in May 1993 (before NT 3.1 was released). I rewrote my resume using your format and posted it at http://members.rogers.com/xwells/resume.doc
Richard: I now have Overview and Skills on the first quarter of the first page. There's room to expand the Overview for specific applications, if I remove irrelevent projects (such as device drivers for an MFC job). I *THINK* I've touched on all the details you mentioned (design/QA/coding/team size). Do you have any hints on what an HR person might be looking for in a resume, especially on the second pass?
. (dot): do you know what is meant by 'descriptions of important achievements' ... can you quote or reference an example or two, from a programmer?
Philo: I once thought I knew everything there was to know about serial comms, at least on PCs - I didn't know people still thought about that kind of low-level stuff! |
| Thu 26 Jun | Duncan Smart | Christopher -- change the Document > Properties before you send this out! |
| Thu 26 Jun | Tekumse | Christopher - synchroniZation. |
| Thu 26 Jun | Better than being unemployed... | My tuppenceworth...
As mentioned above, the _only_ purpose a resume serves is to get you an interview. Nothing more. Keep it simple and make it easy for people to find things that will make you stand out.
I used to be able to cram my resume onto one page.
Key skills at the top in a bulleted list (ie: Visual C++ 6.0, Visual Basic 6.0, yada yada plus a few general things like 'team management' and 'GUI design').
For most recruiters, this seems to be all they'll ever bother reading ... until last year I had 'VMS' near the bottom (having done a major porting project on it 1997/98 but avoided it ever since) until some headhunter bork phoned me up about a VMS maintance programmer job. Whoop de doo.
For the rest of the page, a summary of recent work containing a bulleted list of things I achieved and various responsibilities I took on.
And at the end, a couple of lines on non-computer interests, to show that I try and have a life outside of the techy world I live in during the day.
This got expanded to two pages when it wouldn't fit, but I'm continually trimming things, as I imagine most people aren't too interested about some Borland ObjectPAL work I did nine years ago anymore.
So - my vote is no more than two, and only then if it's all content, no padding. |
| Thu 26 Jun | Philo | When I get some free time (which right now looks like 2007), I'm going to try something different for my resume - I'm going to have a one page cover, then two pages of screenshots with URL's.
'I did this, and this, and this...'
If I ever get around to doing it, I'll post the results (if any)
Philo |
| Fri 27 Jun | Christopher Wells | Duncan - thanks ... I had tried (late at night), unsuccessfully when the Properties dialog didn't display the 'Summary' property sheet: which was due to the document's being already open in winword.
tekumse - thanks ... winword makes spelling mistakes obvious. I'm using 'S' instead of 'Z' because that is Canadian/English spelling (like 'colour' instead of 'color', and centre' instead of 'center').
Mister Fancypants - word documents can contain hyperlinks ... though they lose their hyper when they're printed.
Anyway I reformatted and reposted at http://members.rogers.com/xwells/resume2.doc ... now projects are on the 2nd page, and sorted by 'tecnology' ... I think this makes it all easier to skim, and makes it possible for a non-technical HR person to tick buzzwords and to get some insight into technical details. |
| Sat 28 Jun | . | Christopher - re achievements, this actually referred things the guy had done that made him look interesting to talk to. Some of them were only tangentially relevant to software.
What interesting things have you done in your life, sort of thing. |
|
| How Much Tuition is Wasted on Anti-MS Univesities | Mon 23 Jun | anon |
| In another thread, Marc writes this:
>> My cynical opinion is that every computer science department in the US has only one agenda; hate Microsoft.
This is also my experience. A bunch of developers from my company are in undergrad or grad CS programs at various universities (all first or second tier universities in the United States). For each course any of us takes, we keep track of the first lecture that the anti-Microsoft talk takes place. It usually happens within the first three weeks.
Since our company pays 100% of our tuition (for Bs or better - or Cs for undergrad) weve estimated that the company has spent well over two thousand dollars in the past three years for us to hear anti-Microsoft propaganda.
When does your first anti-MS lecture usually take place? How much tuition money have you wasted? |
| Mon 23 Jun | Mike | Week 2 at my database class |
| Mon 23 Jun | flamebait sr. | One of my profs while I was in college gave it on the first day and defended his anti-MS slant because he maintained that we are going to be seeing a pro-MS slant in the working world and even on campus. Same prof handed out the text of the findings of fact in the anti-trust case in celebration when that came out.
I mean, with all of the MS give-a-ways and various efforts by MS to counteract the anti-MS slant at my campus, he does have a point. ;) |
| Mon 23 Jun | Mr Curiousity | To get MS skills you take a few courses, and you're done. At most, you spend few months in a technical school to achieve this.
On the other hand, people don't go to colleges to study CS just so that they can learn MS tools. They go there to develop skills *independent of any particular technology*. Something that 10 years from now would still have significant value. In fact, if they were to learn MS tools for a significant period of time in college they should be rightfully pissed! |
| Mon 23 Jun | anon | >> 'They go there to develop skills *independent of any particular technology*. '
Wrong dude. They go to school and get force fed a steady diet of 1970's Unix crap. And that's that. Nothing more. From the second you take your first class, to the second you graduate: Unix, Unix, Unix. That's a pretty damn strange definition of 'independent', dude. |
| Mon 23 Jun | Philo | Mr C - agreed, but the problem is professors who use class time to denigrate MS instead of simply teaching.
Can you imagine the /. outrage if someone was teaching a database class and spent an hour or so bitching about what a waste of code MySQL was, because it was open-source? Or in an OS course calling Linux 'that misbegotten ball of mud run by sophomoric hackers who only wish they could do 1/10th of what Redmond has accomplished in just ten years'?
Philo |
| Mon 23 Jun | Mr Curiousity | 'the problem is professors who use class time to denigrate MS instead of simply teaching'
true ...
but have you ever seen a professor who would not have a few strong opinions and would not be willing to use the class time to force feed those upon the students?
I am willing to bet there is no such beast! |
| Mon 23 Jun | Mike | On a positive note, my instructor also ran down mysql as the fast but not terribly featurful or concerned about data integrity database that it is. |
| Mon 23 Jun | S. Tanna | I think MS need to get some professors to write books about dot Net, or whatever.
Rationale: Call me a cynic, but some professors like to promote topics they've written a book about. They have spent time researching the topic, and if it helps their book sales, that's just a happy coincidence! |
| Mon 23 Jun | Philo | No, the anti-MS comes from plain old politics. For whatever reason, academia tends to be liberal-leaning. And it seems that in general MS~conservative, Linux~liberal.
Add in that until recently, universities were unix-based because their (ancient, established, no reason to change them) mainframes are unix boxen.
Therefore, academia will, in general, be anti-MS despite the merits of either plaform.
Philo |
| Mon 23 Jun | And the horse you rode in on | Where I went to University, it was predominantly Unix (mostly for historical reasons), but there was also Windows in use.
Some lecturers has an anti-Microsoft axe to grind, others lent the other way. I'd say the majority didn't express leanings for any particular camp.
At the other major University in the city (read: only other place you'd want to go), it was all Microsoft, from what I understand. I'm not sure if they even got to touch Unix unless they did a subject that required it.
Maybe it's different in the US, but in Australia it seems pretty different to what people are describing in this thread. |
| Mon 23 Jun | Andy | I got a BS and a masters, and I maybe once in that entire time heard a single professor mention Microsoft, or any specific vendor. Weird.
We also used mostly windows machines in all the labs, even some Macs. It was harder to find Unix. This was at Cornell.
I can't imagine why a professor would take valuable time out of a class to talk about any specific vendor, which is largely irrelevant to computer science. |
| Mon 23 Jun | Daniel Searson | I'm at Uni right now using IE under Windows XP Professional. |
| Mon 23 Jun | Mike Gamerland | I have to agree with Andy. I got my BS in Computer Science and Mathematics without any comment on vendors. Yes, IBM and Microsoft were out there, but they were of little consequence to the topic at hand, except as business cases.
I wonder how much occurs, how much is just listened for, by the over sensitive and how much is just urban legend. |
| Tue 24 Jun | Stephen Jones | An opinion is only a waste of time and money if you agree with it wholeheartedly. |
| Tue 24 Jun | Just me (Sir to you) | The CS curriculum I keep up with is extreme anti-MS. For some classes you could be forgiven mistaking the lecture for a Scott Mcnealy rant. |
| Tue 24 Jun | Patrik | >When does your first anti-MS lecture usually take place?
>How much tuition money have you wasted?
The thing with universities is that they should not be either pro- nor against any vendor. The whole idea should be to teach concepts rather than using specific products.
Who cares if you use MS-SQL or Oracle or PostgreSQL, conceptually they are all RDBMS. Same goes for programming languages, they can use whatever language serves the purpose of showing the different kinds of programming (procedural, object oriented or whatever) conceptually, not necisarily what is currently in popular demand. |
| Tue 24 Jun | Evgeny Goldin | Guys, that's a piece of high education you have, I must tell !
I see people coming out with CS degree know that:
1) they didn't study anything useful, hence all those 'what's degree for' threads
2) their professors talk about MS instead of teaching
Well the place I got my degree from had none of above. May be you go to the wrong universities ? |
| Tue 24 Jun | old_timer | OK, another back-in-the-day comment. I got my CS degree before MS even existed and back then the Profs spent the occaisional lecture bashing IBM. In another couple decades it'll be someone else. Whoever is the front-runner is going to take some flack. Just because. |
| Tue 24 Jun | shabob | How odd, in my undergrad we were just taught theory, there were no practical applications, all problems were written using pseudo code. There was no pro-this or anti-that (this, that, being corporations, products), since we never used any products. Sure we had old NeXT boxes and ran slackware, but those were just the anonymous tools, they could have been anything. |
| Tue 24 Jun | Nat Ersoz | Shabob,
You're clearly an anit-MSFT biggot. Get with the program. If you don't use VisualStudio you must be a communist. Doesn't 'shabob' mean 'witch' in some vernacular? We'll see...
Hmmm. Kinda makes me wonder... Is there any correlation between those who despise the classical CS cirricula and those who are whining about being displaced by overseas competition and H1B's?
In other words, if you we're taught to the tool, and not to the concept, should it be any wonder that when some 'technology' (or worse an _API_) becomes obsolete, that you do also? |
| Tue 24 Jun | agnost | I got my degree at one of the top tier engineering colleges. never heard a word spoken about MS one way or the other. In the embedded systems classes we used an Intel architecture, in one of the OS classes, we used Suns with Motorola chips. In music classes, there were a few mainframes, mostly NeXTs, and towards the end a few SGIs. All the engineering labs had monochrome terminals and most people used vi, though I preferred emacs. In the computer labs for general consumption, all the computers were Macs, except in the central library where they were 1/3 Macs 1/3 PCs and 1/3 terminals. |
| Tue 24 Jun | Prakash S | Most Profs I know crack jokes about MS, it is a kind of bonding for them.... |
| Tue 24 Jun | shabob | Nat: Good theory.
I've always felt that practical education should be left for the trade schools, community colleges, IT schools etc... Let's face it, you'll learn more about programming in 4 years of work than 4 years of University. |
| Tue 24 Jun | Johnny Bravo | I suppose it depends on the work you do. In some companies it could be just the opposite. |
| Tue 24 Jun | Jim Rankin | 'Wrong dude. They go to school and get force fed a steady diet of 1970's Unix crap.'
Name another computer technology that's still thriving after 30+ years. Also, you can freely show students source code from several different open source Unix implementations. Which you can't do with proprietary OS's.
And maybe the attempts to influence curricula through strategic grants by proprietary vendors rubs some professors the wrong way, and rightly so.
I think you could make a good case for using the most open technologies for teaching CS. I agree, though, that 'ranting' to a captive student audience is a bit unprofessional. |
| Tue 24 Jun | SG | $0. (Of course, I was on a 100% paid scholarship to my university.)
My university was Unix orientated. I had a computer graphics class where I did a bit of MS-Windows programming.
Anyhow, I work as a developer for a company that produces security hardware that requires lots of kernel/network programming. I'm well paid, have a nice cubicle, was recently given a huge raise, and pretty much free to work on whatever task to improve the product. The flat-screen LCD they gave me was nice too.
So I suspect my university education was quite worth it. :p (Even though I was pretty sharp going into the university...) |
| Tue 24 Jun | Marc | A few things that I wish to clear up:
My gripe is with the anti-MS attitude. Not the 'no vendor' attitude. I *expect* to have most of the classes be about theory rather than tool experience.
My other gripe is with the holes in the theory. For example, how can anyone graduate with a CS and have never even HEARD of Extreme Programming, Agile Development, SSC, Life Cycle, etc. This is the stuff I think students need to have some sort of exposer to. I'm not talking about trade school level, but something more than there is today (which is nothing).
I would however like to see more schools add some 'Real World 101' to their curriculum. Something you would take in your senior year that gives you an idea of what tools, practices, and standards you will face after school.
But hey, I'm just the one trying to hire the graduate. So what do I matter? ;-) |
| Wed 25 Jun | Patrik | Marc,
>never even HEARD of Extreme Programming...
Students will hear about all this, in 5 years time. Schools are for the most part behind their times. |
| Wed 25 Jun | Stephen Jones | --' need to have some sort of exposer to'----
'Exposer' refers to the person.
The abstract noun is 'exposure'.
This seems a very common mistake on this forum. |
| Wed 25 Jun | Rick Tang | >>never even HEARD of Extreme Programming, Agile Development, SSC, Life Cycle
I would seperate 'Extreme Programming' 'Agile Develement' from 'SSC' and 'Life Cycle'
The latter are established practice.
The former are ... experimental ideas. I would say now Agile Development is valid idea to be talked about in software engineering course, but not sure about Extreme Programming. |
| Wed 25 Jun | Tekumse | Second Rick's post. Life Cycle has to be one of the most used expressions. If I remember correctly I've had at least 4 required classes where it was a cornerstone concept and probably half a dozen other where it was used sporadicly.
Things like XP get mentioned by profesors more or less as research topics. |
| Thu 26 Jun | Stephen Jones | Schools are often behind their times for good reason.
Would you really want those coming out of the Masters courses now to have had a solid undergraduate basis in push technology and web portals? |
| Sat 28 Jun | Julian | What's SSC? You can't mean the superconducting supercollider, the particle accelerator that was cancelled over a decade ago. |
|
| Dart vs. IP*Works? | Mon 16 Jun | Joel Spolsky |
| Weve been using Dart for email processing in FogBUGZ, but there seem to be some really subtle timing related bugs in one of the components that we cant reproduce reliably enough to get them to fix it. Now were considering switching to IP*Works to make this whole problem go away. Does anyone have any experience with the quality of the IP*Works components? I wouldnt want to trade one set of bugs for another. As usual, were suffering for not rolling our own, but at this point creating a complete MIME email parser from scratch would be an awful lot of work compared to the price of these commercial components... |
| Mon 23 Jun | Christian Mogensen | The QuikSoft objects http://www.quiksoft.com/objects
are ok, but there are some impedance mismatches between the IMAP component and the underlying protocol. You don't get a lot of fine control over performance parameters.
The SMTP component is good, and it does i18n character encodings on the fly if you ask it (for most of the fields in the message, not all). |
| Tue 24 Jun | Mladen Jablanovic | Have you considered using Microsoft's Collaboration Data Objects (http://www.microsoft.com/exchange/techinfo/development/55/CDO%20Intro.doc)? I used it to create Web Archive files (.mht; in fact, nothing but MIME-encoded HTML pages along with images it contained), insert them into mail messages as attachments and send them out. CDO supports message parsing, too. And it's a COM object. |
| Tue 24 Jun | Howard Dunlavy | We are using IP*Works when we found the Indy components that come with Delphi could not handle our needs for SSL security. Our application (we are an ISV) requires client-side authenitication for SSL in certain situations, and Indy apparently does not support this. We spent many weeks trying to get it to work. We then tried the IP*Works component for SSL and it worked within a few hours. We have been happy with them, but have not had much interaction. |
| Tue 24 Jun | M. Schumann | Let me chime in too. I've used IP*Works for a few little projects over the years and it has worked great, as documented, no problems. I've used the ActiveX version with my applications which are typically written in (the cool but rather obscure) CA-Visual Objects. |
| Thu 26 Jun | Gent Hito | Answer to 'coresi' (regarding source and TBI) comments.
/n software has *never* sold IP*Works! source, so you must be talking about something else.
Gent Hito
CEO, Founder - /n software |
| Thu 26 Jun | Alex | Speaking of Indy, IP*Works and Delphi - try Clever Internet Suite v 3.0 - it blows both away then it comes to features, performance and most important stability
Here's the link
http://clevercomponents.com/products/inetsuite/suitev3release.asp
And so far it is the only library which uses 'out-of-sync downloading combined with splitting the resource being downloaded into sections and loading all the sections simultaneously' |
| Sat 28 Jun | Morten Krog | I've tried their SSL component on behalf of a customer. It has some subtle problems with thread safty in relation to the way the windows message pump works. Even when we realised this was the problem in their code we could not seem to find a workaround that worked all the time an on all the OS platforms we support.
IP*Works support staff were friendly and responded quickly, but did not come up with a solution we could use. It is somewhat discourageing to get a response like: 'You have multiple threads in your program? That seems like an unusually complicated setup'. |
|
| Corrupted Jet Database File | Fri 27 Jun | Tim Lara |
| Is anybody out there really good at repairing corrupted jet databases?
One of the users at our stores accidentally pulled the plug on their PC while working with local ordering data in Access 97 and now the MDB is very unhappy. Lo and behold, the repair utility in Access wont touch it.
No problem, I thought, Ill just go to the tape backup and salvage a file from last night. Of course, the backup hasnt been running at that location for the last several weeks. (No, Im not the Sys Admin, hes on vacation! :)
Any clever tricks would be greatly appreciated by the poor guy who has to work overtime this weekend re-entering his order data.... |
| Fri 27 Jun | Eric Budd | You can use the JetComp utility provided by Microsoft to attempt a repair outside of MS Access. It will sometimes fix a file which Access can't.
Go to MSDN.Microsoft.com and serach for 'jetcomp'.
Best of luck. If this doesn't work you may be hosed.
You do have a backup, right? :') |
| Fri 27 Jun | DJ | Try the JetComp utility with the Jet 3.5 SP
http://support.microsoft.com/default.aspx?scid=kb;EN-US;172733
For general help:
http://support.microsoft.com/default.aspx?scid=kb;en-us;279334
Good luck - if that doesn't work you are screwed... |
| Fri 27 Jun | Albert D. Kallal | An excellent resource on corruption can be found at:
http://www.granite.ab.ca/access/corruptmdbs.htm
In the above, just skip all the first stuff until you get to :
To retrieve your data
If nothing else, you can always contact Peter Miller. He will repair the database for you at a reasonable cost. There is also a list of other access repair services in the above link.
Check out:
http://www.pksolutions.com/services.htm
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn |
| Fri 27 Jun | Tim Lara | Thanks for all the help, everyone. I haven't had any luck so far, but if something works, I'll post what it was.
Albert: Thanks for the data recovery referral. In this case, the amount of data that was lost is fairly small, so the cost of recapturing it is probably less than or equal to that of paying the recovery fee, but such a service might come in REAL handy down the road! |
| Fri 27 Jun | Nick | In had this happen several times with fairly large datasets. I do recall one time when the fix-it utility didn't work. I created another database and was able to import the old tables into the new one. Another time, that trick didn't work, so I wrote a small module to read the primary data table row-by-row and write it to a new table. That worked up to the point where a row was corrupted, and I was able to recover the majority of it. Other times - nothing worked and I had to resort to the 1 or 2-day old backup copy. |
|
| Private Communication | Fri 27 Jun | easy |
| Online chat-forums have made it easy and filled life with communication in public via online mechanism. That helps you to build the communicative IMAGE of your self.
For personal growth, private communication is extermely necessary, How would you build your communicative image with private communications, Let it be Online or offline ? |
| Fri 27 Jun | Joe AA. |
I always thought communication was to convey information... not determine or build an 'image'. Maybe you should just get back to basics. |
| Fri 27 Jun | Brent P. Newhall | Agreed. It's unhealthy to communicate for the purpose of building up an image of yourself in other people's minds. That's narcissism. |
| Fri 27 Jun | Phillip J. Eby | Really? I thought it was called 'networking'. ;) |
|
| Web-based personal contact + calendar app? | Fri 27 Jun | Frederic Faure |
| Ive been searching the web, freshmeat etc. for a simple, single-user (or very small group), PHP or Perl-based app to handle contacts + calendering.
Either they were e-mail-oriented (Hord, Phorecast, etc.) or too big for what I need (Phprojekt, PHPGroupWare, etc.)
Any idea? Thx |
| Fri 27 Jun | easy | calendar.yahoo.com |
| Fri 27 Jun | Frederic Faure | Thx, but I forgot to add: would rather use an in-house web server :-)
For those interested, I just tried out WebOrganizer. Seems pretty good:
http://sourceforge.net/projects/weborganizer/
Thx again |
| Fri 27 Jun | Norbert Burger | Frederic,
I've also been looking for an easy-to-use web calendaring app.
So far, I'm leaning toward Chronos:
http://chronoss.sourceforge.net |
| Fri 27 Jun | Steve H | I use mozilla for my calendar and use PHP iCalendar to display the iCal files on the web.
http://mozilla.org/projects/calendar
http://phpicalendar.sourceforge.net/nuke/
mozilla also has an addressbook. |
| Fri 27 Jun | FullNameRequired | iCalendar :) |
|
| summer slowdown | Fri 27 Jun | John K. |
| The sales of our software product have slowed significantly, like they do every summer.
One solution to this would be to run promotions - like temporary price cuts, or something like that.
They seem to be pretty effective for increasing sales.
I have also noticed that a lot of companies do promotions in the summer.
However, what I wonder, and have always wondered, is:
Is it worth it to make the promotions in the summer, and increase sales, or it is more efficient (from an earnings point of view) to make the same promotions in the autumn and winter, when people are already buying, and get them to buy even more? |
| Fri 27 Jun | Scott Stonehouse | I would expect the answer depends very much on your situation. What is the product? Is there significant competition? Who are the customers? |
|
| one project leading to another? | Thu 26 Jun | Ed |
| About 10 months ago I started a new job. The job is with a research lab, and the idea was I would do this boring project that needed to be done, and then id get to work on one of the cooler research projects.
My 12 month contract is going to be up at the end of the summer, and the employer wants to keep me on ... working on the boring project. I dont want to work on the boring project anymore, so I am going to say Im fine renewing my contract, but I really dont want to work on the boring project anymore.
I doubt the lab will want to renew my contract unless im working on the boring thing. So, Ive hedged by taking up some other contract work part time, that will lead to another job that is boring, but not _as_ boring, and much better paying than the research lab.
My question is, has anyone ever successfully been hired under the pretense of we are hiring you to do boring X, but if you do a good job, youll get to work on exciting Y and actually moved on to the exciting project? |
| Thu 26 Jun | Anonymous Coward | Fell for that one, eh?
That is how every maintenance programmer on the planet gets hired. |
| Thu 26 Jun | Ed | Yeah, I was a sucker. Even worse was that about 3 months in I realized that the boring project is a 4-year ongoing trainwreck. |
| Thu 26 Jun | realist | Yes, there's actually a name for it which I've forgotten. If anybody knows it I would be grateful. |
| Thu 26 Jun | Andy | bait and switch? |
| Thu 26 Jun | eclectic_echidna | ed, I am just curious. What makes the project so boring?
--
ee |
| Thu 26 Jun | Ed | the project is boring because it mostly involves dealing with an enormous number of web based forms. there are new forms that need to be created all the time, and old forms that need to be changed. the other part of the project involves dealing with integrating a large number of data feeds, all in different formats. |
| Fri 27 Jun | realist | Bait and Switch. That's it!
Thank you Andy. |
| Fri 27 Jun | one programmer's opinion | This is not a bait and switch situation because your job duties didn't suddenly change (from the way they were described to you in the interview) once you accepted the position that was offered to you.
It may very well be that your boss told you a white lie when he/she interviewed you and never had any intention of allowing you to eventually work on the 'cool stuff'. Even so, this isn't a bait and switch situation.
Your mistake was that you didn't get the promise your boss made to you in writing during the negotiation process. |
| Fri 27 Jun | Justin | Ed that actually sounds like quite exciting work!
You could be throwing away a great opportunuity to learn new skills.
How much time do spend manually amending these forms?
How much (%age) of the amending is changing text?
How many forms contain the same data?
Upsell: Tell your boss that you can eliminate most of the maintenance work (read unnecessary cost), make the system more maintainable and improve the turnround time for change requests - They need a new system that allows web forms to be generated from a repository (possibly a DB).
To do this you need actual metrics - how much does it cost do do things they way they are currently being done - and a cost estimation for the new system. Of course you won't yet have the latter; you need permission to go and investigate a solution based on your (1 page) simple statement of requirements.
Ditto the data feeds. Are you playing with Biztalk or similar? That will look great on your resume for the next contract. |
| Fri 27 Jun | Both Sides | I was hired at a company to do programming, with the stipulation that I do testing for the first year since they needed a highly technical tester. After 1 year, we shipped the product that I was testing on, and they were not able to find a replacement for me so that I could move 'up'. However, as soon as I gave my resignation with the stipulation that I really wanted to stay, but only if I was programming, they found another tester within a week.
Then I saw the other side of the coin. I was managing a dev team for a company that got VC funding. I hired programmers for testing, and moved up the good ones. Towards the end, I got a really talented guy out of college, and made him the promise of moving him up in 1-2 years with full confidence that it was possible. Then came the (inevitable?) hiring freeze, budget cuts, etc., and there was nothing I could do for the guy. He would have eventually left, but the company crashed before he got a chance.
Sometimes, 'bait and switch' isn't what's really happening. I don't know if that's the case here, but maybe the manager just doesn't have any choice. Of course, you have to get what you want, but one of the best ways is to think about the manager's position. CAN he help you? And if so, is there some way you can help him help you?
My advice? Don't hit him over the head with 'I get what I want or I'm leaving', talk to him about the situation and your desires to better yourself, etc. If you don't get what you want, leave with regret, and make the changeover as painless as possible for the manager. Make sure he stays in your 'network' and stays as a good reference no matter how things turn out.
Just my 2 cents... |
| Fri 27 Jun | Ed | Justin, the reason they selected me for the work is because I have tons of experience with 'enterprise' systems. Thus, I'm not really learning anything new. I'm not sure what planet you are living on: 'possibly a DB.' The whole system is database driven. Is there somewhere on earth web forms are not connected to a DB? At least I'm not working at that job. The issue with any sort of enterprise workflow system is that there is still a huge bunch of tedious work that isn't amenable to automation.
Also, it wasn't 'bait and switch' it was more like 'bait' and then I never got switched over to another project.
'Both Sides' gives pretty good advice. I'm probably just going to wait until abou ta month before I want to quit, and then help my boss find someone else. |
| Fri 27 Jun | Just me (Sir to you) | Hey, I even fooled myself with that one. |
| Fri 27 Jun | Daniel Shchyokin | 'Is there somewhere on earth web forms are not connected to a DB'
Yes. I am working on an LDAP server |
|
| Desk Decoration | Thu 26 Jun | easy |
| How do you decorate your desk
Typical items:
1. Monitor,Mouse,keyboard (speakers)
2. Hub, Computers
3. Telphone, Clock,
4. Books
5. Pictures of Family Members
6. Air-Freshners, Dilbert Calanders
7. In-bin/ Out-bin. |
| Thu 26 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | With absolutely no more than required to get my work done. I hate cluttered work spaces.
Desk right now: 2 monitors (dev PC), keyboard, mouse. PC is on the floor. Laptop, printer, lamp, mouse. Wireless peripherals for less cable clutter. |
| Thu 26 Jun | Huh | Five empty Timmies cups XL
Kleenex
1 pepsi
sunglasses
100 blank cds
phone
2 - 19' monitors
3 boxes (not a cover in sight)
kvm
speakers
smokes (hidden behind monitor, shhh!)
200 kids related items (fathers day cards, pics, cards, poems, etc) mostly on the walls
Mummy hat (kids say it looks like me - sniff)
piles of books and papers |
| Thu 26 Jun | Brent P. Newhall | Lots of plants scattered about, for color
A wooden fish puzzle, very pretty
A row of iron 'tavern' puzzles
My laptop, which I use as an MP3 player
Sweater for when the A/C is too high
Phone
Kleenex
Monitor, keyboard, etc. |
| Thu 26 Jun | shiggins | Heater
C# for Experienced Programmers
Water Bottle
Enough 'stickies' on my monitor to make is resemble a flower
Picture of hubby
Dilbert comics
Phone
Stuffed purple aardvark that has been bound and gagged (don't ask:) |
| Thu 26 Jun | w.h. | 2 computers
Pictures
A few random posters for things that amuse me
A few random toys
A sculpture or two
Astonishingly little paper -- 2-3 post-its and a bin unsorted paper. |
| Thu 26 Jun | shiggins | Oops.
Two IBM Servers |
| Thu 26 Jun | Philo | two monitors
laptop
printer
scanner
Grier's Serial Communications
Wrox's Professional C#
Much hair (as the result of the previous two volumes)
Two phones and a bunch of telco wire
two keyboards
speakers
KVM
batman
various mugs and pencil holders
small bookshelf
hamster cage
emails, EDI guides, various other printouts
Sony Clie
is that enough?
Philo |
| Thu 26 Jun | GersonK | Books
Stapler
Two coffee mugs
Giant talking green hands
Master Shake air freshener
bottle of ibuprofen
scattered papers
Two KVM switched computers
pictures of my nieces |
| Thu 26 Jun | Anonymous Coward | 21' monitor
keyboard
mouse
colour ink-jet printer
laptop
mouse
photos of wife (x2)
wedding photo
porcelain dragons (x3)
broken wine glass
anti-histamines (Reactin, Allertin, Cromolyn, Semprex, Spersallerg, ...)
tea (1/2 liter, hot, Darjeeling, lemon)
Mountain Equipment Co-Op catalog (spring/summer 2003)
calculator
pen (Parker: gold and onyx)
roll of duct tape
philips screwdriver
roll electrical tape
tape measure
english-latin/latin-english dictionary
pliers (x2) |
| Thu 26 Jun | The Real PC | books (Perl, Java, XML, Unix)
computer
phone
note pads
pen
the organization's calendar |
| Fri 27 Jun | realist | Just enough so that if security ever tap me on the shoulder and say 'pack your things', I can just walk out. |
| Fri 27 Jun | Katie Lucas | I don't have very much stuff at work at all. We're moving office soon and they've had these massive crates delivered for people to pack their stuff in: I'm looking at this going 'I was just going to carry my pad and two pens to the new office myself...'
On my desk I have:
A coffee cup, because I'd have to get up to go to the recycle bin. A sketch plan of a bit of the system architecture which I can throw away.
An A4 lined pad and my favourite chewing pen[1]. Which, frankly, I can leave behind if necessary.
My bag, a biography of Alan Turing (that goes in the bag) and my jacket.
Given this massive lack of clutter around me (compared to, for example, John's desk, which is surrounded by piles of monitors, half assembled machines and stacks of folders) people passing by **STILL** manage to knock over my crutch which is lent on the desk.
Even inside my desk I only have two spare pens, a spare A4 pad, a bag of crisps and a couple of cans.
There should be a bottle of hand moisturiser around somewhere as well, but I haven't seen that lately. It might well be in the car.
I'm the only person in the office who conforms to the clear desk policy..
[1] Actually, I tend to suck them rather than chew. Certainly they do actually run out of ink before they need throwing away. Duncan chews pens. And I mean TO DESTRUCTION. The bins at home in the office are full of these bitten-in-half remnants of biros. There's something disturbing about that. |
| Fri 27 Jun | Len Holgate | My office, like this: http://www.lenholgate.com/archives/000067.html
Client sites, as little as possible. Generally what I'm carrying. I currently have a bottle of water, a couple of magazines, some apples, pda, pc, monitor, door card, notes scribbled on a4 sheets, Waltzing with Bears, CVS pocket reference and my bag. Hmm, sounds more than it looks... |
| Fri 27 Jun | Peter Ibbotson | Currently working around the desk left to right
SonyEricsson P800 in cradle
Office Phone
Casio Fx-7000G (Wow thats old now.... around 20 years old)
Monitor cleaning spray (good for eyeglasses too)
Perpetual calender LCD clock thing sitting on a small stack of CDs
21' Monitor
Proper IBM clacky keyboard from UniComp (No F**** windows key for me) 15' LCD monitor
Car Keys
MSDN / Microsoft Certified partner CD pile
MSDN Platform archive disks (16 & 32 bit versions)
Desk tidy containing pens, lighter,screwdriver, pair of pliers
Spindle containing 15 blank CD roms
Pile of paper including a project someone would like us to invest in.
Copy of Gunnerson 'a programmers introduction to C#'
Win2003 180 day eval software pack (Like AOL CDs round here)
Mobile pedestal with drawers full of crap from the last office move :) |
| Fri 27 Jun | Nice | >MSDN Platform archive disks (16 & 32 bit versions)
>...
>Spindle containing 15 blank CD roms
put two and two together.. |
| Fri 27 Jun | jedidjab | - Tower case
- 2 19' Monitors
- Keyboard / Mouse
- Bottle of water
- Laptop (with pizza box on it)
- Slinky
- Little sand garden with rocks and rake :)
- iMac
- Phone
- Cell Phone
- COM and ATL 3.0 book |
| Fri 27 Jun | Yaniv | Pro-star desktop replacement laptop
Compaq IPaq
Palm m505
Pam m500
Sharp Zaurus
All the pdas are dev. purposes.
Thats it. |
| Fri 27 Jun | Joe AA. |
One rather useless person used to have another rather useless but female person sitting on his desk most of the day.
We started calling her 'paperweight'. |
| Fri 27 Jun | Martha | Oh boy. What *don't* I have on my desk? Going left to right:
Access 97 developer's handbook
Bunch of stackable in/out boxes
Random papers and stuff in said in/out boxes
A candy bowl with no candy in it
Unopened pack of 10 CD-RWs
About two dozen origami cranes folded out of candy wrappers
A few origami cranes folded out of post-it notes
Candy wrappers that have not yet been folded into cranes
Cereal bowl (tucked into one of the stackable in/out boxes)
Phone
Backscratcher ($1 at Pier One. Best Investment Ever.)
Document holder/stand
Water bottle, empty
Left-hand mouse
Speakers
Monitor (big and black. I forgive the latter because of the former)
On top of monitor: name plackard, a Lego Tusken Raider, a cockroach made out of half a pumpkin seed shell and some wire, a tiny little mug with my name on it, another origami crane, and an R2-D2 action figure which beeps if you press the right spot.
Around monitor: paper with often-used Alt-Num shortcuts, some pretty flower stickers which don't really stick all that well anymore, and random post-its.
Keyboard
Right-hand mouse
Hand lotion
Collection of Star Wars Pepsi cans (18 of them)
Signature pad
Paper clip holder
Alcohol dispenser
Origami Chinese vase which holds rubber bands
Box of push pins
Stereo
Stack of music CDs
CD holder with software CDs
R2-D2 which used to hold candy, now contains blue push pins
Box of kleenex
Graveyard Stack (this is where all my papers, folders, books, pads, etc. end up when I have to clean my desk. It's not quite falling over. Yet.) |
| Fri 27 Jun | Bryan Shaw | I guess I am too lazy to clean my desk. Going left to right:
phone
speakers
2 19' monitors
CD (Jimmy Page, Robert Plant - No Quarter)
Best Solutions
Dilbert Calendar (a week behind)
highlighters, pens, pencils
T-Mobile Pocket PC Phone
glasses and case
stapler
facial tissue
magazines
spiral notebook
various papers
Happy Friday :) |
| Fri 27 Jun | Mark Newman | Aside from the PC junk, some items:
A 1965 Honeywell thermometer
A Romulan Warbid sitting atop my monitor
A Borg perched upon the whiteboard
Pictures of Presidents Nixon and Reagan on the cube wall
A He111 coming straight at me (on my big aviation calendar)
A Jesse Ventura action figure
Nude lady ('Hold it Devious!' 'The Bishop!') |
|
| Are Big Corporations Funding Piracy? | Thu 26 Jun | Pablo |
| Big corporations use auto-software-piracy as an effective method to penetrate certain markets and to create product dependency and conditioning. This is a well-known fact. As more and more countries align to and enforce international copyright treaties, and as more people are aware of the piracy problem and the ethics involved, the number of people using pirated goods in actual business production is decreasing, almost dramatically. This is good news for small software companies as they can be seriously hurt by software piracy. To conform to the new times, we see now pirated versions become fully functional “leaked” versions, or at least beta versions with no expiration date, along with a dramatic price drop for the original product in certain markets and almost free academic versions.
Small companies, garage ventures and illuminated individuals are the engine of innovation and paradigm shifting. It is more likely that revolutionary, interesting, useful technology comes from a small or micro company than from a big corporation. As we have seen repeatedly, a single innovation can change the tech and economic landscape forever.
“Treat the competition as the enemy” is the primary motto in business. Certainly corporations do not foster or promote innovation by helping small business when governments hardly do it. A strategic (or not so) buyout is what happens in most cases, when the small business owner, or micro CEO does not have the vision regarding the impact of the technology that he/she has created and developed. What follows in most cases is the failure to integrate or to further promote the new technology, this on purpose or due to internal wars and egos.
New software that “may” have a notable impact is almost instantly pirated, properly packaged (digitally and physically) and signed by one or more groups in several locations around the globe. You may know this very well. You may know also that you software might be promptly associated with the word “shareware” that in the mind of end users equals free or almost free, shady and acceptable but low quality software. By today standards all digital goods are commercialized as try-before-you-buy. 30-day trials are the industry standard and we have corporations offering 60, 90 and even 6 months of full trial.
Piracy affects small companies in a radically different way. In this case piracy helps to promote the product but hurts the sales in a far more dramatic way. This is not free advertisement. And you cannot probably sustain the progressive damage. Your big brother competition knows this. So, piracy is an effective tool used by “bigger than yours” companies to crush your salient and newborn business. Piracy groups are then a consulting service, handsomely paid by those who can afford it. |
| Fri 27 Jun | one programmer's opinion | Sorry Pablo but I ain't buying what you are trying to sell.
Just look at the music industry and the effect piracy is having on corporate sales.
Software piracy is not a new issue, however, it has become a VERY big problem in recent years. Here are a few reasons why piracy has exploded:
* The opening up of the Internet to the general public
* The voluntary removal of various copy protection schemes in software by software companies
* The low cost of PC related hardware
* Easy to use P2P software applications |
| Fri 27 Jun | Chris Tavares | The alleged link between internet piracy and declining record sales has in no way been proven.
Record sales went UP after Napster went on line, not down.
Record sales DROPPED after the RIAA shut Napster down.
I personally think that the record industry's problems have more to do with the recession and the constant production of recycled crap instead of good music, rather than piracy. |
| Fri 27 Jun | Andy | Also I heard DVDs have eaten into the CD market. People haven't changed their entertainment budget much, but in recent years, consumers have decided that DVDs are a much better value. Would you rather pay $18 for a CD with 3 good singles on it, or $20 for a DVD with a 2 hour movie and extras. Bargain bin DVDs are as cheap or cheaper than bargain bin CDs.
Somebody smart in the movie business figured out where to set the price point for DVDs to make them an impulse buy. They are much cheaper than VHS tapes were. And supposedly the DVD extras have been very attractive for many movie fans. It's all a matter of giving consumers what they want. The record industry has not changed with the times. |
|
| What's Your Best Programming Experience? | Thu 26 Jun | anon |
| My best programming experience was when I built this little app that saved my entire company from having to work all weekend. It was a very simple app to design & implement, but it was a really clever way to save everyone a lot of time. On the Monday after, I got a standing ovation in the cafeteria, and a 10% raise. Even though this was just a little two month project I did seven years ago, its still the highlight of my career.
Whats your best programming experience? |
| Thu 26 Jun | Dustin Alexander | I was hard up for cash last year (aka eating popcorn for dinner), and I went in to a large corporate as a data entry person (this was after running my own consulting company for three years). I ended up doing programming work after an hour of data entry. It took me a week, but I wrote some code that saved the company I was brought in for $50k and 6 months of work. I also completely automated my job. So I went home :(
A day later another division of the same company called me and offered me a consulting contract for five times the amount they were paying me previously. Rumor has it that one of the VPs of this multi-billion dollar affair recommended me personally. Now, that was a good feeling. |
| Thu 26 Jun | Our team of programmer | This morning I got up, poured my coffee and stumbled 20 feet (6 metres) to my office and started coding. Yippeeee! Remove the stress and I couldn't ask for more. |
| Thu 26 Jun | MattOffSoftware | Two heart warming anecdotes:) Recognition from ahigh and saving the day. Two themes that make any good story!
The ultimate form of networking and getting to know the boss - save their company. Happened to me twice in the past (but on a much lower scale than you two!) - both times it saved my job when redundancies hit. Its not long remembered though. The problem with saving the day is that in the future, when you 'mention it in passing', it reminds them more of the fact that someone screwed up in the first place. If that is the MD in the first place, then .... |
| Thu 26 Jun | Anonymous Coward | It was when I learned how to program at night school, then got a job in a bank and wrote a program to transfer all odd cents into my account.
No, wait, that was a Superman movie... |
| Thu 26 Jun | . | I brought in a big new product on deadline and on spec and everything, in a process I would never go through again.
On the launch night, before she went to the launch, the marketing VP was in development going over all the functions - checking one last time - and went sort of hysterical with joy. She told the development director to buy me a car. ( Next day the development director conveniently forgot about this.) |
| Fri 27 Jun | Entreprenuer | When I deciced to change careers from telecom engineering to software engineering, started writing programs for my wife (a speech therapist) to use with patients.
After several years, I started a company ( StrokeSoftware.com ) to produce, market and sell the programs.
'Our results with your programs are miraculous. We are seeing great results with clients who are using the
software with care givers and volunteers as well as with certified speech
pathologists. '
We get a lot of email and calls like that. It's wonderfully validating.
However, dealing with the public isn't all fun. I once had a customer complain about the price 'because I know it only costs you a $1 to copy your software to a CD'. and 'I hate to see you profitting from my husband's stroke'.
Sighhh.... I should have offered them a free copy of Atlas Shrugged ;-) My wife said I should have asked 'why do you hate to seem us feeding our family by helping your husband?' |
| Fri 27 Jun | realist | I've been thinking for about 3 minutes for the answer to this question, and given that after 20 years of successful commercial software development I can't answer it I'm starting to get worried. |
| Fri 27 Jun | And the horse you rode in on | I don't see why you can't both be right.
The woman is correct - you are profiting from her husband's misfortune.
You're also correct - without the incentive of profit, the software that would aim her husband probably wouldn't have been written.
Which one weighs more heavily depends on your world view, I don't see how either are wrong in any sort of absolute sense. |
| Fri 27 Jun | Nick | About 10 years ago - before I'd ever heard of traveling salesman algorithms - I wrote a program to minimize the path of an adhesive dispenser. I didn't like the path that the manufacturer's software was spitting out, and I knew a better solution could be had.
I wasn't a programmer at the time, so it took me 4-5 days to write in C, which I barely knew. My boss didn't want me 'wasting' time on it, but I knew I was onto something and in the end I improved the throughput for the adhesive dispensing operation by 11%.
By itself, it doesn't sound like much of a feat. But overall it was huge! The adhesive dispensing was the process bottleneck for a product that we were shipping as fast as we could build. I kicked Herbie's ass. We were able to ship an additional $1M in product (~ $300K in profit) that year with no other changes to the process.
The downside is that I got no great recognition for it, but it did turn me on to programming. |
| Fri 27 Jun | Katie Lucas | I co-wrote a video game that I still come across people playing. Theyre obviously having fun. I watched one couple play it for a couple of hours.
That both cheers me up - the thought that I've lightened people's lives, and depresses me because at the moment I work for a bank that's being extremely rude to me. |
| Fri 27 Jun | Justin | Which game was that, Katie? |
| Fri 27 Jun | Andrew Hurst | Right now I'm working on moving my clients over to an Oracle system from an old broken 4D system. Part of that is automating all of the reporting that they had to do by hand. The best that the old program could do was dump the data in tab-delimited format, and they'd have to load it into excel and format. Not to mention the much dancing around the broken 4D implementation.
Now I have much of the reports done up in Excel VB using ADO to get the data from the Oracle database. I figure I've saved them over 2 weeks a year of secretary time so far. I've still got another 10 or so reports to build as well.
Ignoring the fact that writing these reports is about as fun as poking myself in the eye (I have all the libraries I need written, its just copy/paste/change column names now), its rather rewarding having someone go 'Oh my god, you just saved me about a day of work'. |
| Fri 27 Jun | John Topley (www.johntopley.com) | At my last employer I wasn't in a programming position but they needed a replacement for some DOS software that managed about three hundred students. We looked at the Windows version of the same software but it wouldn't even install correctly. Since I was administering the student programme I resolved to write my own software on a part-time basis whilst continuing with my day job.
I used Access 2.0 (it was a few years ago) and after ten months and about 20 KLOC, it was done. I got them to buy the Access Developer's Toolkit so that it could be installed on machines without Access and I even wrote a proper Windows help file for it. I had been using it myself as I was developing it; there's nothing like eating your own dog food to focus the mind!
They were still using it some three years later when I left :-) |
| Fri 27 Jun | Brent P. Newhall | I was helping a friend build a website that had a fairly complicated PHP codebase that interfaced with a database.
We decided to try pair programming. It was a blast. We really enjoyed our time, the code was robust as a result of both of us looking at it, and the website ended up being fabulous. |
|
| early retirement question | Thu 26 Jun | ... |
| I am a contract programmer with two clients. Both are happy with me,and I think want me to continue working forever. For various reasons, I am planning on leaving programming as a profession and am trying to do so before I turn 30, which occurs in two years. My plan is to continue working until next July, in order to save up a bunch of money before I exit.
My question is: when do I tell the clients I am going to quit? 6 months ahead of time? or 6 days ahead of time? I have a good rapport with them, so I dont want them to freak out. However, I dont want them to drop me any earlier than I want to leave. :) Any suggestions? |
| Thu 26 Jun | GiorgioG | 1 month is plenty of time unless you are their entire programming staff ;-) |
| Thu 26 Jun | ... | I am the entire programming staff. At least for the projects I am working on for them. |
| Thu 26 Jun | Mark Bessey | If you really are their only staff, it wouldn't hurt to give them more than the usual 30 days notice.
I had a somewhat similar situation, when I left a job where I was very happy, and where my employer was very happy with my work. I needed to move to another city for personal reasons, so I told my boss - 'you need to start training a replacement for me - I'm moving in three months'.
Over the next 6 months (I ended up being delayed for other reasons), I got to train a replacement, and clean up all those annoying little bugs that I hadn't gotten to yet. When I left, the code was rock-solid, and my replacement was able to take over with no problems.
On the other hand, if your relationship with the people you're contracting for is anything but stellar, be careful.
-Mark |
| Thu 26 Jun | eclectic_echidna | Since you are contracting for them. You could find a replacement for yourself.
Tell them, I am leaving in x months, but don't worry here is eclectic_echidna, he is great and will be able to meet your needs as I have.
--
ee |
| Thu 26 Jun | snotnose | The problem with giving 30 day notice is that once said notice has been given you develop short timer's syndrom. A few years ago I was in a similar position. I figured it would take me 30 days to finish what I was doing, and had other plans. So I turned in my notice. But then I had a hell of a time continuing on the project. In my mind I'd already moved on, and what I was doing suddenly wasn't important to me. |
| Thu 26 Jun | anonymous | How are you managing to retire by age 30?
By my calculations, you can afford to withdraw 3%-4% of your principal per year, and still be protected against inflation. Do you have savings equal to 25x-30x your annual living expenses? |
| Thu 26 Jun | ... | I'm retiring from programming. I'm moving into a different line of work. |
| Fri 27 Jun | Entrepreneur | OK, now you've piqued my curiosity:
What are you moving onto?
Why? |
| Fri 27 Jun | ... | I'm going on a round the world trip for a year , to visit family and see the world. Then I'm going to take a non technical position at a management consulting firm run by a family member. |
| Fri 27 Jun | ... | Why? I'm just not into computer programming like I was when I was 20. I will still do some hacking now and then, as I like certain aspects of programming, but I like it more when I don't have to do it for money. |
| Fri 27 Jun | | '...but I like it more when I don't have to do it for money. '
Amen.
After spending several years working hard to improve my software development skills, I find it extremely frustrating to be told that I won't be interviewed for a open position that I am interested in because I don't have extensive experience with software product Y or programming language Z. |
|
| Mapping components? | Thu 26 Jun | Philo |
| Can anyone recommend any mapping components that can identify location either by address or lat/long, and render a map to a specified scale with one or more locations identified with a custom graphic?
Something that will work with a web application, preferably.
Basically, all the online webservice mapping stuff is too expensive, and Im more interested in a self-contained solution anyway.
Thanks,
Philo |
| Thu 26 Jun | Philip Dickerson | I don't know what the pricing is like, but have you looked at Microsoft's MapPoint software (application and/or web service):
http://www.microsoft.com/mappoint/ |
| Thu 26 Jun | Richard Lawrence | I've used Autodesk MapGuide in an ASP web application with good results. I did use a web service (Centrus) for geocoding (resolving addresses to lat/lon) and then fed the lat/lon results to MapGuide. This proved to be cheaper in our case than doing geocoding in-house. |
| Thu 26 Jun | Philo | MapPoint software is not authorized for server use.
MapPoint services start at $10,000/year.
That was the first place I looked. :)
Philo |
| Thu 26 Jun | ... | i just got through with this. basically, everything is too expensive. |
| Thu 26 Jun | ... | erf. that previous post was truncated.
what I did was wrap an XML RPC interface around Map point. this is unauthorized use of map point, but there truly is no solution between $220 map point and $10,000 map point web services (or $20,000 ESRI product.) |
| Thu 26 Jun | ... | also: the issue is mostly geocoding. if you have geocoded addresses, there are tons of free mapping products. |
| Thu 26 Jun | Heston Holtmann | Check this out.. now supports web servers
http://www.pepperwhite.com/ |
| Thu 26 Jun | Justin | I did a load of work on this last year and have all the reference material. I even created a website with it on which I haven't yet done anything with.
All my stuff was for UK based http://www.thelocalchannel.co.uk (which has subsequently been 'maintained', but that's another story); it was a geolocator and rapid addressing system.
Have a look for MapInfo and And International as a good starting point while I dig around for stuff.
No, you can't have the code; I don't have it and don't own it anyway, but I can give you the websites I used for research. Some of the stuff (e.g. the find addresses within radius algorithm) is public domain, which I can also give you. |
| Thu 26 Jun | Justin | That double conjunction *was* deliberate. The company is called 'And International' and its a bugger to find their website. |
| Thu 26 Jun | Andrew Reid | Have a look at MapInfo's offerings http://www.mapinfo.com. They have a Java servlet mapping engine that you can build a web-app around.
What tends to be expensive in mapping applications is the license for the data rather than the mapping software.
There is some free stuff about, though it tends to be low resolution. For example http://www.ga.gov.au/download/nmd_download/#geodata |
| Fri 27 Jun | Li-fan Chen | MapPoint is going head to head with MapQuest
I don't think there are too many resellers who sell (in smaller pieces) what MapPoint and MapQuest is selling..
If you guys know of any please let me know.
I think many people are interested in using the Microsoft api--they just want to pay less. |
| Fri 27 Jun | Li-fan Chen | Do you guys think that the MapPoint 2002/2003 desktop software is less accurate than the .Net webservices?
I don't think their pricing system is feasible, because there are many companies that do real time geocoding and needs to hit the server quite a bit. Over a year, those hits will add up well beyond tens of millions of shits. |
|
| Data warehousing resources | Thu 26 Jun | JD |
| Hi All,
Its me once again seeking help to spot resources
I dont know whether I have gone too dumb or Google is acting funny, I am simply not able to find good online resources/tutorials which can explain me BASICS of data warehousing. Whatever search results I got are just crap.
But then I thought the better way to ask JOS users who will _directly_ point me to some good resources on the web + recommend books for the same?
Thanks for your time!
Regards,
JD |
| Thu 26 Jun | Philo | Step 1:
Define what the goal is. 'Data warehousing' is not a goal.
Sample goals:
- Executive Analysis
- Trend Analysis
- Archiving
etc.
Philo |
| Thu 26 Jun | Konrad | And once you've got your goals, then check out the chapter on data warehousing by Greenspun:
http://philip.greenspun.com/sql/data-warehousing.html
It's quite down and dirty but it sounds like what you need - it goes into detail about how physically you'd achieve creating a dimensional model on an oracle database. Check out the books by Ralph Kimball - business-wise there's 'The Data Warehouse Lifecycle Toolkit', and his first one had a simpler title. I may not be remembering the title properly, but amazon should help. |
| Thu 26 Jun | | search google for star schema , olap, oltp. |
| Fri 27 Jun | JD | Philo,
I am looking for resources which teaches me Data warehousing basics.
I want to know what is 'FACT'? What is a dimension? How you decide upon dimensions? What are measures?
What is data-mart and why do we need it? etc. etc.
Preferably, I would like a resource which explains these terms by means of EXAMPLE. It makes things very clear to me!
and Konrad, Thanks for the link, I shall check it out!
Regards,
JD |
| Fri 27 Jun | Phillip J. Eby | Also check out:
http://www.ralphkimball.com/html/articlesfolder/DWarchitecture.html
Lots of interesting articles there. |
|
| Trickery | Thu 26 Jun | Tricked |
| Is it illegal for companies to post the same ad every couple of months? To collect resumes and take advantage of the unemployed technical people? I know a couple companies around my neck of the woods who have posted the same ad in the local paper and on the internet about every 3 months for the past year and half to two years. One of these is city government. They literally return your resume to you and tell you that it is no good. They only accept an application filled out by you. I think the HR people there are playing games with all of the unemployed technical folks. Isnt this illegal? Should I contact the DA about it? The evidence is all of the ads they put in the paper and the fact that they never seem to hire anyone. They are also very rude on the phone and actually laughed at me when I tried to talk to them about the position. As if they want to hold it over everyones head that they have a job and you dont. Its frustrating enough just trying to get a job without having companies play games like this. Oh and when I apply for normal work the managers look at me like I cant do anything besides sit at a desk and program computers. What a bad stereotype. |
| Thu 26 Jun | Joe AA. |
I don't understand what would be illegal. This happens on the jobboards all the time and it is usually pretty easy to spot. It is a form of trickery. |
| Thu 26 Jun | MattOffSoftware | An IT baby of the .COM baby boom era, Im now starting to realise the control that recruitment agencies and recruiters in general have over our industry. I (like many thousands in the Thames Valley, UK) am looking for work, and have relied on Sites like Jobserve, etc as a way of reaching companies that are recruiting. Every day its the same companies, and worse, the same names within the companies, posting positions that on further inspection are either old, taken or non-existant. With the current surplass of developers, the balance of power is firmly in their court, and as they themselves admit, their clients are the employer and not the employee. Frustrated and yet another week out of work, I am making one last attempt to stay in IT before taking my transferably skills elsewhere. In 4 weeks of hard work, I am planning on going from MCP*1 to full MSCD.Net. If this doesn't work, Im force feeding on MSCE for 9 weeks to become further certified. If this doesnt work, then I will be convinced enough that this really is an unprofessional profession where the rats run the ship, and Im either becoming a hair-dresser or a fat cat. |
| Thu 26 Jun | jedidjab | MattOffSoftware: my wife who's back home in Dublin now was saying the exact same thing, and she's not even looking for work in the IT field. Apparently companies there have no interest in hiring or doing interviews themselves. Everything goes through recruitment agencies who decide if your resume meets some arbitrary set of criteria.
I'm not sure, but it seems like it would be better to stay being a contractor and try to align yourself with a few agencies/companies rather than hoping to find a full-time employee position? Btw have you tried smaller contracts from places like rent-a-coder.com to build up a portfolio? |
| Thu 26 Jun | BullFighter | False Advertising. Happens all the time. Hi we have a position open for a programmer/analyst. Next month same thing. Next month same thing. Falsely stating that they have an open position is against the law. If this were cracked down on then maybe companies would think twice about doing it and fire the irresponsible people that do it. Of course the job boards would be empty then. Imagine that. They would actually reflect the true state of the market. What's funny is school's do sorta the same thing. Take ITT Technical Institute. Now struggling to get students for it's computer networking program because they can't find work when they graduate. In fact their advertisements make me want to puke. In fine print at the bottom of the screen, they say that the students pictured in the advertisement graduated in 1998/1999. Talk about a bunch of bull. At least they are honest in a round about way. |
| Thu 26 Jun | echidna | It is actually illegal to post ads for jobs that don't exist, in Australia at least. However the regulatory authorities don't investigate or prosecute. |
| Thu 26 Jun | MattOffSoftware | Its interesting that someone outside of IT made those comments - Jedidjb, whats your wifes involvement in software?
My anger at IT at the moment is mainly because I look at myself and am embarassed at what I do. Technically Im fine - but how can your respect yourself when the profession you are in is laughed at? Im fed up with being marched into interviews, ordered to take an hours test and then frog-marched off Site to await news to hear if 'Im any good'. Surely my degree says that? Or maybe my references? No, in which case, at what point in my career will I be able to actually prove Im any good? Im sure my involvement in open source development could, or maybe my WebSite or community work? But the problem with all these is that they force you to continually subscribe to the 'Im love to code, man, I even code at home' type mentallity that isn't really professional in the first place. Im sure my (professionally qualifies) plumber did his own bath installation, but he sure doesnt outfit the Red Cross for free to qualify his Yellow Pages advert.
Anyways, your advice of getting close to a company/recruiter is great. Im a big new fan of 'trust' and 'networking' - probably the only way to get a job right now. The hero of the film always has the most dialog. |
| Thu 26 Jun | Joel Spolsky | I don't understand.
If they're not going to hire anyone, why would they spend money to advertise jobs? Just to collect resumes? What exactly do they do with these resumes if they don't have jobs available? |
| Thu 26 Jun | Konrad | This is what I've always wanted to know. I think the answer is that with a larger collection of resumes, they potentially have better resources at hand to find the best people. Not sure about this though. |
| Thu 26 Jun | jedidjab | Matt: When she was over in Canada she did a two year Computer Systems Technician diploma at a college in Ottawa (network admin, ColdFusion/ASP, etc..). Obviously the market in Ottawa dried up pretty rapidly and she's been applying for jobs in different fields back in Dublin. However, it seems that regardless of what the position is (data entry, web design, tech support), you're required to go through one of the big agencies in the city.
What confuses me is that the agents working in these jobs have absolutely no (or very little) qualification in assessing if a candidate is right for an IT-related position. I actually talked with a few of them a year ago about some coding jobs (full-time and contract), and the questions they used to decide if you got to speak to the actual company were unimpressive at best. |
| Thu 26 Jun | jedidjab | Oops - I forgot to mention that the other jobs she's been applying for (hotel desk clerk, restaurant hostess, etc.) all ended going through agencies as well. Very odd from my perspective anyway. Perhaps that's the business to get into - becoming a recruitment agency :) |
| Thu 26 Jun | Matt H. | >'Im love to code, man, I even code at
>home' type mentallity that isn't really
>professional in the first place.
I agree.
The thing is:
hacking != software engineering
I do things to grow professionally on my own time; probably < 10% of that is write code. Things like:
1) Leadership in a professional organization,
2) Joining another professional organization,
3) Preparing presentations/lectures for organizations, schools, and my work
4) Comissioned Officer in the Civil Air Patrol (US Air Force Auxillary)
5) Going to school at night: taking courses in Software Engineering, distributed computing, and info sys management. MAYBE 30% of that are classes where I write code.
6) Reading books / JOS. Books like 'peopleware', 'Code Complete', 'The Deadline', etc. Sure, some of these books involve writing code: 'Code Complete' by McGuire, etc - but it's not hacking.
---> After I'm done, I have shown a dedication to my profession _WITHOUT_ hacking 24/7.
good luck! |
| Thu 26 Jun | Tom Vu | ---> After I'm done, I have shown a dedication to my profession _WITHOUT_ hacking 24/7.
You have shown a dedication but have you shown a finished project.
What exactly do they do with these resumes if they don't have jobs available?
I know some recruitors in the financial industry collect resumes and if they get a good one they send it to their client who is always looking for talent. |
| Thu 26 Jun | | >> 'If they're not going to hire anyone, why would they spend money to advertise jobs? Just to collect resumes? What exactly do they do with these resumes if they don't have jobs available?'
The companies probably want to make themselves look good so they advertise positions they don't have or might have had but have filled. Recruiters want names to fill their databases so they advertise positions they don't have. Both of them are probably gleaning useless data like average out of work programmer age 30, single, with a dog. Then they sell your information without you knowing it. Any way you look at it, it is false advertising.
I once applied for a job titled 'VB Programmer/Analyst'. That's what the ad said anyway. That afternoon I got a call and went in for an interview. I asked if the gentleman could describe the position. He said I would be correcting errors in their access database. I explained that I thought this was a VB Programming Position. He said it wasn't. I showed him the advertisement and caught him in a lie and he said, 'Well, you'll find that a lot in this industry.' Yea. I walked out. |
| Thu 26 Jun | Joe AA. |
I really love the ones that offer an interesting position and when you take the bait, the 'apply' function takes you to another website wanting you to register with them.
It takes all kinds. |
| Thu 26 Jun | Nice | what's with the 'hacking isn't professional' tangent? And is that what people think? |
| Thu 26 Jun | Joe AA. |
Actually I think he said that hacking wasn't software engineering.
I agree...
That's why I am a hacker... after all, I have to get a workable deliverable out. |
| Thu 26 Jun | Matt H. | >what's with the 'hacking isn't professional'
>tangent? And is that what people think?
It's more: When you say 'This is more like playing; I can't believe I get paid to do this' -- It kinda implies that you shouldn't be paid. The more often you say this, ***In the eyes of certain people*** the less professional you look.
>You have shown a dedication but have you shown a >finished project.
That's what the day job is for, buddy. :-)
Besides that, it is possible to show finished projects in those positions: I've been serving as project officer for cadet competitions in my state for some time, for example.
If you are vice president of the Charlotte, NC C++ user's group, and your web-site is impressive, and you get Brian Kernighan to speak at meetings ... that's success on some level.
Again, it's about 'Smart' + 'Gets things done'
regards, |
| Thu 26 Jun | Bill | Pretty much any job I see posted by an employment agency these days is fake. Some are more realistic than others, some post jobs that are too good to be true to get you to take the bait, i.e. '$200,000 year, major company great benefits'
I think they try to use the shotgun approach, get as many bodies into interviews as possible, to see if they get a hit. |
| Thu 26 Jun | Matt H. | >That's why I am a hacker... after all,
>I have to get a workable deliverable out.
haha joe.
Writing code is part of software engineering, just not all of it.
After, after you reach a certain proficiency, it's very common to find that the 'low hanging fruit' switches from getting better at writing code getting better at figuring out what the heck the customer really needs.
JMHO. |
| Thu 26 Jun | Yaniv | Joel,
They won't be spending any extra money. They might already have an yearly contract or something with these job sites and can post as many positions as they want. Recruiters post these made up positions all the time. They want to be ready and have as many resumes as possible in hand when a real position do open up. So they make up these positions with the current 'HOT' skills or as many tech words as they know :). They are also competing with other recruiters. Companies do hire more than one recruiting agency for filling the same position.
It happened to me couple of years ago. My resume was sent to the same position twice by two different recruiters :)
Also, in this economy how do you think a recruiter keeps his job safe? He has to look busy and show that he is doing some work, to his boss :) |
| Thu 26 Jun | .... | 'If they're not going to hire anyone, why would they spend money to advertise jobs?'
To 'advertise' they are growing. It is not for you but for their competition. |
| Thu 26 Jun | mb | 'If they're not going to hire anyone, why would they spend money to advertise jobs?'
They may also be doing it for obscure legal reasons. For example, some visas (H1B?) are only for positions where no other qualified people exist, and you must advertise in such and such a way. Apparently they'll use tricks along the lines of 'must have exactly 37 months of experience with technology X' to filter out candidates. |
| Thu 26 Jun | Better than being unemployed... | From my experience with job hunting last year, I can come to the following conclusions :
1) The best way _by far_ to get a job is by networking.
2) All recruiters are, to one extent or another, blood sucking leeches.
Getting a job through somebody you know provides you with a clear advantage. There's no competition. If you're good enough to hire, you won't get tossed on the scrapheap because another 20 people were and they 'didn't hire unlucky people'.
Even the ones that appear to provide good services are rubbish for jobseekers, I've got a big list of 'CV sent to company,no further response, phone calls not returned' scenarios from one agency of notably good reputation. ('No thanks' would be nice.)
Wadvertised a position late last year with two job agencies. (250 CVs came in, of which maybe 5 were good enough to interview and one or two good enough to hire. I don't understand why people put 'C/C++' on their CV and then can't answer a simple pointer arithmetic question. Anyway, I'm going off topic...)
At the same time, we got telephone spammed by recruitment agencies offering to advertise our position too. We said no. They put the job ad up anyway, and I saw adverts for it on Jobserve more than a month after the position was filled!
I even got one agency, who we definitely didn't advertise with, spamming _me_ with the very same job offer! What a chump. (IIRC our HR woman gave them a severe telling off...)
MattOffSoftware - I can probably guess at the companies you're thinking of. They're the sort of people who started up in the .com boom and are finding it difficult to get the commission now there's less jobs to go round. |
| Thu 26 Jun | Just me (Sir to you) | I do not know about different regions, but at least in some parts of Europe it might not be the companies fault. I know examples form the realestate sector where magazines/websites continue to list properties already of the market. The sole purpose of this is that the publisher of these things do not want to keep up their volume and not look 'empty' to the buyers/visitors. |
| Thu 26 Jun | Johnny Bravo | Joel,
as I posted in another thread: job advertisements are still cheaper than regular advertisements. In German IT-related magazines you can even publish job offers for free, so companies (who even had the money to pay for ads) use that as an opportunity for 'cheap' marketing.
Also, the problem with that attitude goes even deeper: I've been working for a company (network-security-related) which even wanted to employ just to show some potential customers that 'we are growing'. Then, of course, they wanted to fire that one after customers had entered the boat, due to some 'unforeseen macro-economical events'. |
| Thu 26 Jun | mp | Employment agencies and contract shops may
leave ads running even when they don't
have an actual opening -- this way they
build up their base during slow times.
Later on, when they have a lot of demand,
they will have more contacts to call.
But (to the OP) you can be sure the city government
is NOT using this shabby tactic.
When they say 'fill out the application',
that's exactly what they mean. Go
fill out the application. If they let you,
you can also attach your resume to it. But
that's really how many of them operate!
Paperwork, channels, all that stuff.
It's nothing to do with false advertising
or trickery, just sop. |
| Thu 26 Jun | MattOffSoftware | Boy - I just had a moment of enlightenment reading the list of activities Matt H persues in his free time. Up to the second I read the list, I proud of the my bookshelf crammed with assorted IT books (all read!), and my diary crammed full of MS certification test dates. I kind of feel Im wasting my time now with this unbalanced approach to becoming more professional in IT. From now on, I am going to commit to finding more cross-discipline acitivities - I have been banging my head against a wall trying to figure out how to 'network in IT' when I dont hang around in IT circles. It looks like I really need to take the IT constraint out of the issue! Funnily enough though, the writer of the Wrox XSLT book that I very much respect states that he supports the Wokingham choral society. I was planning on giving up the XBOX for singing - all in the name of networking :) |
| Thu 26 Jun | Contrary Mary | I think some of it comes down to budget. A certain amount is budgeted for recruiting and HR. This appears in most companies to be completely separate from the decision of how many people to hire. Thus HR runs ads/does recruiting when there are no actual jobs to fill. This keeps them busy and saves their jobs.
Of course, slimy employment agencies are another thing. There really should be a law requiring that a job they have a contract to fill be attached to every advertisement. But... The same thing happens with apartments (at least in Boston.) |
| Thu 26 Jun | Karl Perry | Go get a copy of 'What Color is Your Parachute?' It describes how to find a job without going through the rigamarole you're all discussing here. |
| Thu 26 Jun | Richard Ponton | Recruiting agency modus operandi:
1) Collect as many resumes as possible
2) SPAM employers with your entire database of resumes.
3) When eventually somebody gets hired, try to extort money out of the employer because you sent them the resume first.
4) ???
5) Go bankgrupt anyways. The dot-com boom is over you blood-sucking parasites! |
| Thu 26 Jun | echidna | Joel, the assets of a recruiting business are its database of people. The bigger the database, the more chance it has of placing a person into a role.
Recruiters gather resumes for the same reason spammers send out messages; any yield is better than none. With lots of resumes, recruiters can match candidates against openings the recruiters discover at companies, or just them along on spec.
What more IT people, and most workers, don't understand is that recruiters are actually in competition against them to find jobs, and to then control access to those jobs.
The more that workers send resumes to job sites hoping to find jobs, the more power they give their competition. |
| Thu 26 Jun | anonymous | One of the reasons why big companies outsource recruiting is elimination of liability. In the US, there is a lot of CYA paperwork that a large corporation must do to show they don't discriminate when hiring. By outsourcing, the liability is shifted to another company. If it's a small recruiting company, the headhunters can just declare bankruptcy and form a new agency, if there is a lawsuit.
Another reason is that companies don't want to be the ones doing the rejecting. This way, all bad feelings are directed toward the recruiter and not the company doing the hiring. |
| Fri 27 Jun | | There are three reasons for the growth of the recruiting industry, and its strength in the IT industry:
1. As mentioned by anonymous, it provides a convenient way for employers to avoid their social and legal responsibilities as employers.
2. It's a lucrative business wide open to middlemen. You ring companies to find jobs, place ads to attract suckers - IT workers - place them while hiding the prices on each side, and get rich
3. Unlike other high investment professional roles, those in IT have none of the barriers to entry constructed by older professional groups. This makes it easy for recruiters to find cheap new recruits all the time, undercutting the income of established professionals. |
|
| Being funny in specs | Thu 26 Jun | Better than being unemployed... |
| Some time back, Joel mentioned that the number one way to make your specs interesting was to make them funny.
I dont really agree with this. Now, dont get me wrong, all my favourite computing books have got a large dose of humour in them, but I cant see this applying to specs.
For one thing, one mans sense of humour is another mans irritation. I am sick and tired of coming across stupid in-jokes in code and documentation that some ex-developer made three years ago and isnt funny when Im trying to nail down a bugfix, or trying to find out how a particular feature actually works. I dont think most developers have got the ability to be funny across a wide audience of readers and a long period of time.
I dont think a lack of humour applies to books because I read those more at my leisure, not to find out some vital piece of information so I can make progress.
My alternative method for making specs interesting is to not waffle, keep sentences short and understandable, put in plenty of whitespace around paragraphs, and to put pictures around the text wherever appropriate. (Actually, thats one of my favourite bits of this site, where articles are broken up with almost random pictures thrown in).
What do you lot think? Has anybody tried fitting large doses of humour into their specs? What are the results? |
| Thu 26 Jun | Patrik | I once tried a somewhat foolish joke as a footnote in some documentation involving an accounting system. I wrote the text along the lines of:
You need to define the euro currency* in the system....
*Preferrably EUR, but you could set it to another value on
April fools day.
Noone noticed this.
So, I guess specs and documentation does not get read :) |
| Thu 26 Jun | Justin | I always look funny in specs. |
| Thu 26 Jun | Steve Jones (UK) | Specs suit some people, but others are better off with contacts. |
| Thu 26 Jun | Chris L | I don't know that 'being funny' was to be taken so literally. If I'm writing a spec, I don't think I'd go so far as putting jokes in the actual spec:
e.g. This pointer should be set to NULL before calling this function. All who break this rule will be found and killed.
I think a more subtle form of humor (the kind I remember seeing when I read the article a while ago) is to use the examples as an outlet. This can be very effective to help the reader understand your (potentially mundane) examples.
An example I saw yesterday while doing some Carbon programming can be found here:
http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/index.html
Using the Simpsons as sample data adds levity to the situation, I believe.
Like Mary Poppins sang: 'Just a spoon full of sugar makes the medicine go down.' It seems to apply here too, and I agree that using a bag of sugar would probably upset someone down the road.
Cheers,
Chris |
| Thu 26 Jun | Chris L | It appears my link did not work effectively. Try clicking 'Creating Property Lists' near the end of that page.
Sorry for that,
Chris |
| Thu 26 Jun | Philo | [nod] Examples are the best place to use humor.
'Tony Soprano wants to use Mapquest to keep track of where all the bodies are buried...'
Philo |
| Thu 26 Jun | Joe AA. |
Most specs read like 'and then a miracle occurs' anyway, and I always find that funny. |
| Thu 26 Jun | Leonardo Herrera | I like the word 'automagically.' |
| Thu 26 Jun | clam | the deeper issue is that most people who write specs do not have a very good sense of humor. so 'being funny' in the spec is bound to fail. |
| Thu 26 Jun | Rob | I've seen a lot of humour in specifications.
The problem is, it was unintentional.
On a related note - does anywhere know a software development workplace in North America where people have an actual sense of humour? Are you hiring?!
Most of the people I work with are terribly, terribly serious. It's depressing. Not to take credit away from the very small handful of others there who do have a sense of humour - great people, all of them; I'm talking about the workplace culture in general.
I'll give you a recent example:
One of the guys in our open-plan office (yes I hate them too - that's a whole 'nother thread) happened to move to a desk close to mine. This gentleman had an unusually large collection of office supplies which he took great care to arrange on his shelf, line up very precisely for passers-by to see.
So I decided to help.
I printed up a large and very official looking sign the read: 'National Museum of Office Supplies', complete with a federal government logo that I found on a web site. I also created little placecards for each item in the display. For example:
'This stapler was used to staple the declaration
of independence on August 2, 1776.'
and
'This box of staples was recovered from the
wreck of the Titanic, which sank on April 15, 1912
with a tragic loss of office supplies.'
And so on.
Some of the guys absolutely cracked up laughing. The others? They didn't even crack a smile. The guy who's desk it was didn't even acknowledge that the 'display' existed. Which to me was bizzare, because I would have expected some retaliation at least!
I'm fairly sure this has to do with ethnic/cultural issues. I'm an Aussie. I won't say what ethnicity the ones who don't laugh are - but suffice to say, it's clear that humour is not part of their culture. It's quite depressing being in a work place like that. |
| Thu 26 Jun | Joel Spolsky | Some people just don't have a sense of humor, and the sad thing is that they don't KNOW that they don't have a sense of humor. They're always muttering, 'grr, why can't people be PROFESSIONAL around here.' |
| Thu 26 Jun | Rob H | I've been at this company for 9.5 years and have seen it change from a place where humor was common (filling the cab of a salesguy's pickup truck full of packing peanuts was always popular) to a far more 'serious' environment. Very sad.
I attribute it to the company going from privately held to a public company. Once that change happened it was like a lightswitch. It got even worse once there were layoffs.
Like an earlier post in this thread pointed out, some people don't appreciate or can misinterpret attempts at humor. I'm less likely to crack a joke in a crowd, just keeping my head down and trying to not give anyone any reason to single me out if there are ever more layoffs. (This probably says more about my own insecurities than intended).
I miss the days when we would suspend a fully decorated Christmas tree upside-down from the ceiling.
And I wish I worked with Aussie Rob who set up the muesum on his neighbor's desk. (BTW, I do think it is a cultural thing... you Aussies are cracked! [grin]) |
| Thu 26 Jun | Better than being unemployed... | Well, having dissed humour in specs earlier, I've just been reviewing one I did about six months ago, which includes a mockup dialog for Mr Terrence Q Testward of Foo Suppliers, Foohampton, Fooshire.
I laughed - your mileage may vary. |
| Thu 26 Jun | clam | 'I've just been reviewing one I did about six months ago, which includes a mockup dialog for Mr Terrence Q Testward of Foo Suppliers, Foohampton, Fooshire.'
Yeah, this is what I meant. 'Foo' is not humor. |
| Thu 26 Jun | Philo | ...and clam's the guy Joel was referring to. [grin]
I think 'Foohampton, Fooshire' is pretty funny.
Philo |
| Thu 26 Jun | Our team of programmer | A boss wouldn't allow On Error Goto HELL. After several private meetings I finally talked it into her, er, talked her into it. |
| Thu 26 Jun | flamebait sr. | Hmmm.. I work for a smaller, public company where there is still a good sense of humor. The official, unofficial, policy is that we are to play hard but not expose the company to any liability.
I think that humor is often dependent on how close and gelled the team is. If a team can jokingly have a scapegoat for problems (where the scapegoating is clearly teasing and not malicious), that's funny for everybody. If somebody you don't have much of a working relationship with is trying to be funny, there's less context to your humor and it isn't as amusing. Then you can put in-jokes in the spec and everybody will find it amusing.
This gets into the science of humor, but the gift of a comedian is not that he is funny. It is that he is funny to a large group of people. Put your average person on the stage and he'll be funny to his friends and boring to everybody else. |
| Thu 26 Jun | richard | Yeah, the examples are where its at in specs. The humour is there to bribe people to read it, but you need to be clear about the real points.
As for cultural differences in the workplace pertaining to humour appreciation ... well people have to fit in to the workplace first, to find out how permissive it is with respect to it. If you have a lot of staff turnover, you will end up with a lot of people who don't know each other well and don't fit in enough to express their humour. A lot can come down to the personality of the people they report to, or whether there is an upstairs-downstairs mentality (management & the serfs).
But yeah, some people just don't see the humour in things anymore ... |
| Fri 27 Jun | Rob Too | Rob H,
I agree about the shift from private to public ownership. My fun/productive workplace was purchased by GE several years ago. It was horrible. Fortunately, it spurred me to quit and find a job in another industry where I work banker's hours and make 3x as much.
BUT, I work for a very large corp. now, and there are pockets of fun here and there. I'm in a 10-person group (only 2 of us are programmers, the rest are financial people) with an awesome dynamic. No quarter given, and none asked as far as practical jokes, good-natured put downs, etc. are concerned. |
| Fri 27 Jun | Marc | I want an office full of 'Rob' types. I just love the museum notation cards. Perfect.
People are right when they say it requires chemistry for humor to work. And if you have been together for a while, you tend to have some shared experience to play off that can make this even easier.
But it isn't just humor. You need the chemistry to be there in order to be productive as well. Without it, you don't get people who want to come to work or do much work while they are there.
And for the record, most things in comments are just not funny. The one exception I've seen was someone randomly inserted '/* rosebud */' in the middle of a program. I don't know why, but it just cracked me up. |
| Fri 27 Jun | Gustavo W. | Specs should be written entirely in rhyming couplets.
At sporadic intervals, to hilight an important point, the rhyme should be a terribly forced off-rhyme.
Now that's good fun. |
| Fri 27 Jun | Alyosha` | Specs are like the Tao,
To flow, they must be complete
While being concise
And for this reason
The haiku is the perfect
Form for writing specs |
|
| internet addiction | Wed 25 Jun | addict |
| I think I am addicted to the internet. How do I overcome this, esp. when my job is being a software developer? I stopped having a computer at home, which seems to help. But I still seem to be wasting an inordinate amount of time randomly surfing.
This is a semi-serious post. |
| Thu 26 Jun | Geoff Bennett | You obviously don't have enough to do... :) |
| Thu 26 Jun | Andrew Burton | Get more sleep. I really, really find I am more productive, and don't lounge around reading blogs and such, when I get enough sleep. |
| Thu 26 Jun | Almost Anonymous | I feel for ya.
I have a really hard time getting any work done when my Internet connection is down. I use the internet alot while working (look something up on google, newsgroups, email, etc). When it's offline I obviously can't do those things but then have trouble doing anything else.
Does anyone else feel this way or am I just nuts? |
| Thu 26 Jun | www.marktaw.com | http://www.joelonsoftware.com/articles/fog0000000339.html
=) It is his forum after all.
I have a few thoughts.
1. Could you be surfing the internet as a way of avoiding the work that you have to do?
2. Maybe you're lonely and you're surfing the web because it's a subtitute for human contact. |
| Thu 26 Jun | Better than being unemployed... | Maybe it's because you aren't enthusiastic about your work, and aren't motivated, so you'd rather hunt around the net instead. I think that 'surfing the net' at work is okay in moderation, and as long as what you're surfing is job related. Then again, I would say that having spent entire days reading archives like on here, or Ask Tog, or paulgraham.com, etc etc
A good team that talks well, and has general fun conversations as well as those about work, will help.
What sort of size of organisation are you in? If you're a lone developer in a sea of businessmen, life can get pretty lonely sometimes. |
| Thu 26 Jun | Stephen Jones (who's flying out on holiday in a few hours!) | Try going on holiday.
But don't do what I do and end up choosing your holiday location according to ease of internet access! |
| Thu 26 Jun | Sammy | This is a problem. I mean, whoah, all this information! I remember before the internet, and it was about trusting whatever books they had at the bookstore, or busting ass at the best university libs you can find.
The internet is even in a primitive state. Two years ago, it was really dull.
I dunno what to say. This addiction is a precursor to the fact that people will start living with the net ingrained into their lives. It's a generalization of many forms of communication, plus connected to machines, it also opens up one's sphere of control. I mean, it's so hard to concentrate on the rest of your life, when what you've always wanted is there.
In other words I'm an addict too. ;) I thought about it this morning when I went to the machine, but plunged right back in. |
| Thu 26 Jun | addict | >1. Could you be surfing the internet as a way of avoiding the work that you have to do?
Yes.
> 2. Maybe you're lonely and you're surfing the web because it's a subtitute for human contact.
Yes.
>If you're a lone developer in a sea of businessmen, life can get pretty lonely sometimes.
Yes, kinda. I'm a consultant with techinical people (scientists) who don't program. |
| Thu 26 Jun | AnotherAddict | I surf as a way to avoid work and as a socialization mechanism. It's entertaining and engaging.
It also results in me feeling stressed and guilty.
People do things for one of two reasons: to alleviate or prevent something 'negative' (discomfort/displeasure/pain), or to get something 'positive' (comfort/pleasure/satisfaction).
When deciding what to do, we apply a cost/benefit analysis to every action -- consciously or unconsciously. You and I, fellow addict, are analyzing the cost/benefit of work and the cost/benefit of surfing, and finding that surfing has a better ratio than work.
The question that arises then is how do we change the cost/benefit ratios of work and surfing so that work wins? What makes the work such a high cost and low benefit activity -- and vice versa for surfing? What can I change that will reduce the costs and increase the benefits of work?
When I've applied this in the past, it has resulted in me exploring and discovering my goals, motivations, and underlying beliefs (or assumptions) about myself, other people, and the way the world 'works'. Usually there is some patently silly assumption or belief that's causing my 'problem', but it takes a lot of reflection and introspection to discover it.
I guess, now that I've posted this, I have some motivation to try to apply this to myself over lunch. If I come up with anything interesting I'll post -- maybe it'll help you as well. |
| Thu 26 Jun | Brent P. Newhall | It seems to me that there are two issues at work here, addict: One, you're using the internet more than you'd like to, and two, you're avoiding work.
Let's address the first problem first: Have you considered switching to some other time-wasting activity? For example, you could practice your handwriting. This can at least wean you off of the internet.
The other issue is a whole different one that can't be answered unless we know your specific work situation. Try posting a detailed explanation of that in a separate thread and we can offer suggestions. |
| Thu 26 Jun | Just me (Sir to you) | I am already cutting back on JoS and have considered abandoning it altogether because it takes up more time than am willing to invest. |
| Thu 26 Jun | www.marktaw.com | I don't think this internet addiction is very different from turning on the television at night, and if you're not working, during the day as well. The difference is, it's available everywhere you go - work, home, and for some during vacation.
I wouldn't be surprised if there were a support group for this ( http://members.aol.com/Iainmacn/addicts/ is the first thing that turns up in Google when I search for 'internet anonymous' without the quotes).
What sites do you check out when you're on the internet? Do they tend to be social ones like slashdot, forums, this place, or informative like NYTimes, Wired etc.
Perhaps you can parlay your internet addiction into something else... something creative like writing a web app or creating some sort of community website for something you're interested in (like I did for prosoundreview.com and a few other projects I have percolating).
Maybe you can find a forum dedicated to people who are addicted to the internet and at least now you'll be channelling your addiction into recovery. |
| Fri 27 Jun | Andrew Lighten | Buy a pushbike. Cycle lots. Become addicted to that instead, so that you spent your coding hours dreaming of the next great bike ride instead of focusing on what you should be doing.
Damn. |
| Fri 27 Jun | Li-fan Chen | You could try blocking a few sites?
Edit c:\WINNT\System32\Drivers\Etc\HOSTS
Add a few entries like
127.0.0.1 www.siteyoujustlovetoomuch.com
127.0.0.1 siteyoujustlovetoomuch.com
My finger memory keeps surfing various geek news sites whenever I have idle time... so this curbs this quite a bit.
But then I am here posting.. *sigh* |
|
| Outlook time precision | Wed 25 Jun | He-who-would-not-be-named |
| Hopefully someone here will have an answer:
My company, which is in the financial sector, needs a calendar manager with precise alarms. We have tens (often, more than 20) interesting events per day, which we need to be alerted about 2-5 minutes in advance. The events themselves are not uniformly scattered.
We tried to use Outlook as the event editor / alert, but it often is late 5-10 minutes in popping up the alert (we did not find a deterministic way to make it happen, it just does).
The requirement might seem weird to you, but it often happens that one person has to deal with 3 interesting events happening within 15 minutes, doing other things in the meantime, so we need the alert time to be precisely when we set it.
Does anyone know how to make outlook precise in its alert time? Or any other tool that can replace it? (6 months ago, last I checked, Moz Calendar was not up to it). I wouldnt wont to develop something new just for this little thingy.
And while Im at it, we also need multiple time zones (up to 4 simultaneously), Outlook only does two. Any idea, anyone? |
| Wed 25 Jun | Patrik | First thought on this is that if you use Windows clients your alerting system is not going to be more precise than the PC clock and also Windows performance. What I mean is that if Windows decides not to process messages while doing something lenghty ('This program is not responding') alerts will be missed.
I take it since you are in the financial sector these events happen in some system doing trades with financial instruments. I would look into the possibility to have the trading system send alerts to clients, and not rely on the individual PC clients for notifications.
Database driven alert systems might be too complex for this task, but it all depends I guess how important these alerts are to the users. |
| Wed 25 Jun | He-who-would-not-be-named | Thanks. Just a clarafication:
Database driven alerts is exactly what we need, I was just hoping I can piggyback on Outlook for the database editor and the alert client; So far, this doesn't work.
Second, even the oldest PC in history, the 4.77Mhz IBM PC-g had a default clock precision of 55ms, adjustable down to ~ 1us. What I need is precision of less than a minute, which is attendable even on VCRs. But I _do_ need it to be less than a minute, which for some reason Outlook does not provide. |
| Wed 25 Jun | GiorgioG | You can write an outlook addin to poll a database and create reminders, etc. Or you can hire a consultant to do it for you ;-) |
| Wed 25 Jun | Philo | Net send?
Problem areas worth checking out:
1) Synchronization between the clients and the server
2) Outlook (I think) has settings regarding 'don't bother the user until he/she has been idle for [x] minutes' - make sure these are all zeroed out.
Also consider the combination of sending an email and having a client rule automatically open the email...
Philo |
| Wed 25 Jun | Rhys Keepence | Could you create a little server based app that polles the exchange server calendar via imap, and uses the windows messenger service to send notifications to users? |
| Wed 25 Jun | Coward | Lotus Notes Client, Domino server. |
| Wed 25 Jun | Michael Kohne | While I have no solution, I can say that I don't think Notes is a good idea. As a user of Lotus Notes (it's our corporate e-mail and groupware solution) I can say that it categorically stinks for e-mail and groupware. It's UI is nothing like normal windows UIs and it's propensity to simply lock up when you try to close the program is something that our IT has simply learned to live with. This doesn't even begin to mention the number of wierd or irritating facets of the blasted Domino server itself.
No, Lotus Notes is NOT a solution - it's just a different set of problems. If the timing of the alerts is that critical (and it sounds like it is) then I'd say you probably want to write your own little client to fire them off. I don't know VB, etc, but it seems to me there ought to be some simple way for you to write this in VB - it's not that complex a task. |
| Wed 25 Jun | Frederic Faure | I'm not sure why you wish to use Outlook to warn users of impending events. I wonder if instant messaging like Jabber wouldn't do the trick. Maybe someone has written an event manager add-on that sends messages automatically to whoever is listed for the event.
www.jabber.org |
| Wed 25 Jun | Mike Gamerland | It sounds like, as Patrik indicated, you are suffering from the PC clock. While some events may be held up by the 'not responding' most often triggers are held in check by 'send message at 06:00 a.m.' When '06:00 a.m.' is, depends on what time your machine believes it is now. Try looking at some of these options.
http://www.google.com/search?sourceid=navclient&q=Clock+Sync+Software
We use atomic clock for windows desktops, and it syncs once, each reboot. However, it does require you to have an internet connection. There is also the NIST server at http://www.boulder.nist.gov/timefreq/service/its.htm
it supports a large range of platforms.
Try these first, they are the least expensive approach. Remember to sync the server that is creating the messages.
After that, I like the jabber.org option. It sounds like you are trying to broadcast and an interface between jabber and the DB would seem a trival exercise, left to the reader... ;-) Ok, not really, but it would be as robust as you make it. |
| Wed 25 Jun | Caveman | Outlook sucks. |
| Wed 25 Jun | mb | Outlook is notorious for sending alerts whenever it wants to. It's not the PC clock.
I don't know of any plug-ins since I don't care, but you certainly could write your own alert tool which read the calendar info, and ran its own alerts on a timer. IM works on the server side too.
Funny true story: I was at a presentation by a high level Microsoft exec. His pager went off. He looked at it, and commented that it was his schedule for the day, which should have been sent early that morning... pre-Outlook and a custom extension, but it sure sounds familiar. |
| Wed 25 Jun | Paulo Caetano | > Outlook is notorious for sending alerts whenever it wants
> to.
This is my experience, too.
Occasionally, when I setup an alarm in Outlook, it doesn't fire at the appointed time, but fires the first time I access the Outlook Calendar view *after* the appointed time. |
| Wed 25 Jun | mb | BTW, look for addins on slipstick.com. it's a great site for outlook and exchange issues.
(also s/don't care/don't need myself/ above). |
| Wed 25 Jun | Stephen Jones | I wouldn't advise using VB to write anythng that requires accurate timing. Becaiuse VB gives you no control over threading you can find that alerts end up waiting for nearly everything else to finish. And if you have two things that depend on a timer it very often happens that the thing that should happen first is put into wait mode until the thing that should be happening next is completed.
I suspect that something like that is the fault with Outlook. |
| Thu 26 Jun | He-who-would-not-be-named | Thanks, everyone.
The problem is not the precision of PC interrupts, or the clock setting (it is NTP synched) - it's Outlook, the reason probably being something like Stephen Jones noted above.
Looks like it's gonna be home made after all.
Just one more take about this-kind-of-stuff: I think if you already have to code (or script) something yourself, things like 'net send' are a horrible idea. Opening a decent dialog box with a decent sound is perhaps 5 times more code, but it's a 5-line vs. a 1-liner, so I think it's worth it.
And it's not like the 'net send' line is the majority of the code that has to be written. |
| Fri 27 Jun | Yves | Well, I still think 'net send' is a good idea, because the client for it is always installed on the computer. If your user closes the client of your custom-built app, he'll lose the reminder functionality.
Or is this something that's client-only? Will you want the abitlity to CRUD (create/read/update/delete) each other's appointments? |
|
| Dealing with 21'st century slave labor | Tue 24 Jun | Poor, poor me |
| I got laid off last year from a company that no longer exists, and was out of work for 5 months. Ive never been out of work my entire life for over a month, that was a hell of a shock. Turned out I got a job at 25% less salary, with no stock options, worse benefits, etc. Since I started Ive worked a minimum of 50 hours a week for these guys, with nothing coming back except a thanks. No money, no days off, no promotion, no office, not even a decent effing chair that doesnt wipe my back out. Nothing.
In march they fired a guy, and put me on his project. Took me about 2 weeks to figure out they fired this guy because he told them the truth, it wasnt gonna be done when they wanted it. Just wasnt gonna happen. I told them that, and was told I dont care what it takes, 12 hours a day, nights and weekends, it has to be done. So Im doing 60 hour weeks, and it aint gonna get done by the deadline. Not to mention Im cranking out crap. This stuff was not designed, is not maintanable, it has no unit tests, it will not scale, and I doubt its efficient. My boss has no idea the true state of this mess, she thinks by mid-July it will be done. By mid-July she wont have crap, Ive been lying to her about my progress for a month now. Why lie? Because when I tried to tell the truth, I felt I was a hair from being fired on the spot. I need my job.
Im tired. I want to quit. I also got a wife, a mortgage, and a kid. Ive been tracking the job boards since I started, and have been asking friends about jobs. Nada. There aint squat out there.
For the record, Im almost 40 years old. My expertise is talking to hardware. I can do RTOS, Linux and NDIS drivers. I know Perl. I know Python. I can handle any RTOS you throw at me, from pSos to VRTX to Linux. Ive done mySql, but Im not a wiz at it. Ive written to hardware from ethernet device drivers, to MPEG decoders, to PCI bridge chips, to all sorts of custom hardware. Im good at what I do.
So what should I do? I just got home from a 12 hour day, Im tired, I cant find any job listings that match my skills at any salary. The rubber meets the road on July 18, but I suspect theyll know they have nothing a week before that (its supposed to hit QA 7/11).
Sorry to whine, Im just feeling sorry for myself. Im gonna be out of work soon, and dont like the feeling. I feel like Im screwing some good people (the QA people, all of whom got hired after me),
So, ahhh, to climb out of the self-pity pit. What would you do in my spot? Try and give the boss a heads up and risk getting fired? Try and give QA a heads up and risk they tell the boss, see above? Or keep my mouth shut, not deliver, and get fired? Or cross my fingers and hope for a miracle?
To make things worse, out of the 14 of us who got canned last July, only 6 of us ever got jobs. The rest are doing whatever they can to survive. |
| Tue 24 Jun | GiorgioG | Become a consultant for RTOS development. No really. Start writing articles, etc..put up a web site ala JoS for RTOS minded people. It's just a thought. Yeah, it's hard work, but at this point, stop working 12 hours at the office since it won't do you any good (you're not hourly and you won't finish in time) and spend the 'extra' 4 hours looking for contract work...writing articles, etc. |
| Wed 25 Jun | one programmer's opinion | The work environment you describe is probably more closer to the norm than most people care to admit. I assume you are currently working for a small sized company?
Personally, I would have told the truth about the status of the project and tried to get by on unemployment insurance. There doesn't seem to be much you can do now except keep your mouth shut and hope that your boss is the one that gets fired rather than you.
Lets us know how things eventually turn out for you. |
| Wed 25 Jun | FullNameRequired | 'There doesn't seem to be much you can do now except keep your mouth shut and hope that your boss is the one that gets fired rather than you.'
thats got my vote a well.....you've taken the job and so now you have basically 2 options....keep going and dont complain or quit. |
| Wed 25 Jun | pcglue | What part of the country are you in? Some aerospace and defense companies in Southern California are on a hiring binge now. Even better if you have or had clearance. |
| Wed 25 Jun | Bored Bystander | A few thoughts.
Besides the current rough state of the economy and the dive that tech has taken, there have always been two persistent problems with this industry.
1) an infantile mentality of many in this field that they're 'paid to play', which instantly and irrevocably devalues their work in the eyes of *all* money, management and executive people. Posturing like you're 'playing' when you're being paid to provide value has always seemed infantile to me. It has to appear truly idiotic to anyone who is waiting for a result.
2) a naive attitude in this industry that these are, must, and shall always be, 'THE GOOD' jobs, which keeps certain naive, codependent people slogging away and feeding the rapacious appetite of companies for zero incremental costs. These jobs actually become *pure abusive shit*, once you're past the age at which you're cheap, politically desirable and non-subversive. A truck driver can make better hourly money than many technology roles pay, when forced overtime is factored in.
'F' the man, and I literally mean that. Consider consulting. Based upon your background, you would be well suited to the consulting lifestyle - you have many skills and seem to exhibit versatility - Perl to embedded - whereas most FTEs only know one narrow slice of the whole pie and keep the horse blinders on so they don't threaten anyone. And I don't mean the crap 'consulting' where you work as an indentured, humiliated serf to some pompous bimbo-filled marketing driven 'preferred vendor' bodyshop like a Computer Horizons, etc. I mean the sort of expert, non commodity work where you find specific closed ended projects with small companies that don't need an FTE in the position. These are the value added roles that the big money @$$hole laden recruiter-centric bodyshops know absolutely nothing about.
The post above about 'becoming' the JOS of embedded has great merit. To consult at an expert level, you need marketing collateral, which in the case of consultants means personalized but professional writings, and a weblog can fulfill that role. |
| Wed 25 Jun | Prakash S | Don't Quit, let them fire you, at the least you get paid for those days.
Spend all those 12 hours at work thinking about what you wanna do?
Giorgio & bored have given you good advice. IF you are going the Contract/ Consulting route - start your own corp.
All the Luck, and hang in there. |
| Wed 25 Jun | Alyosha` | It's a very difficult moral conundrum you find yourself in. Do you do the 'right' thing by not lying, by telling it as you see it, and not caring about the consequences -- or do you do what you have to do to survive, to provide for your wife and family?
Sorry, man, no easy answers here. I'm just a young kid trying to make it through this world myself. I really don't know what I would do if I were in your position. |
| Wed 25 Jun | . | Programmers are starting to wake up to the fact that they can be an exploited profession. Not always, but often enough.
If the task they have given you is impossible, and they refuse to listen to you, then start building complications in the code so you will be indispensable when the proberbial hits the fan.
Most other roles in business work this way. It's called looking out for number one, and is admired when performed by corporate executives, lawyers and others. |
| Wed 25 Jun | realist | I largely agree with Bored.
However, you need a short sharp attitude adjustment.
Why do you give a F about what you told them versus what is reality? You just tell them whatever you need to tell them.
Work diligently, apply yourself, try.
But don't sweat it, milk it. |
| Wed 25 Jun | Justin | Been there.
You have my complete sympathy. Since I became a contractor 2.5 years ago (great timing, eh?), I've realised a couple of things.
1) Companies exist to make money for their shareholders.
That's obvious really. You probably knew that already. But if you think about it, it does explain why some people behave the way they do. Your boss’ brief is extract as much work as possible for as little outlay as possible – I’m talking generally here; the July deliverable is a different issue. She is really helped by the fact that you have rolled over and done tricks without even being asked. Imagine how much more you’ll deliver when threatened. In companies like yours, if more profit can be made by abusing people, they’ll do it. They have no long term interest in you. You’ll find this gets much worse if the company’s existence is threatened or – worse – they go for a floatation.
2) People like you have a victim mentality.
You said it yourself. That’s not you, though. It’s me, us, all of us. Most IT people go through a phase of having this unwavering loyalty to their company, no matter how badly they are treated. Obviously, that’s a sweeping generalization. Everybody has a different breaking point.
Years ago I used to work with a guy who would arrive at 08:58 and leave at 17:30, 17:33 at the latest. Sometimes the traffic was kind to him and he’d get in at 08:40 or so, then spend the time reading a newspaper in his car. I used to wonder what planet he came from. Planet ‘HR’ or ‘Accounts’ or something.
Now I understand. I don’t do this myself, but I understand it. If you give them your time, they will take it. They will take anything you give them and like all ‘free’ things it’s worth what they have paid for it.
What this guy knew and I didn’t was that his time was worth more to them if given when requested and that if you stop giving something that is free you’ll be dumped on. Think about it. People who refuse to work an additional unpaid weekend, having already done 3 unpaid are treated like someone who steals equipment or takes 2 hour lunch every day. How many times have you left the office at e.g. 18:30 and to put up with “part-timer” jokes.
3) They don’t own you, they rent your time.
You have a contract with this company. Something I realised from contracting is that an employment contract is just like any other contract [1]. It is an agreement between 2 parties. Read your contract BEFORE you sign it. Don’t sign anything you are not happy with. If the contract says “will work additional unpaid hours, as required”, then that’s what it means. If you sign this, they’ll “require” those hours at some point. Some companies, like yours, find that their requirements steadily increase over time. If the contract says “will work additional unpaid hours, as reasonably required” – that means something else (legally).
I could go on; there are probably other points, but I’m running out of time :)
I realize that these observations don’t help your current position, but they might in future, or maybe will help someone else.
Re: July deliverable (speculation):
Your boss has probably been told deliver this by August or else you’re fired. Her boss has probably been told deliver this by 30/08 or the company goes under. The lack of communication means that you’re working like a dog and it won’t make any difference.
I think you have several choices, 2 of which are:
1) Ask for a meeting with your boss to find out why the specific date is so important. Give an accurate status update. You may well get fired for having previously lied, but this would happen in 6 weeks anyway. Make sure an independent, neutral 3rd party is present.
2) Ask for a meeting with your boss to find out why the specific date is so important. Give an INaccurate status update. Continue lying, to buy time while job hunting. Do only the work that gives visible results. Hey, they’re already screwed and you’ll get fired in late July anyway?
It all depends on *why* the delivery date is critical.
Option 2 Is a tall order. It’s not advice, as such, as I would never contemplate doing this myself. I merely mention it is an option. This is basically what Realist is telling you to do( again it is probably being presented as an available option).
[1] Not strictly true. For a start, the tax people treat them differently. |
| Wed 25 Jun | Just me (Sir to you) | 'The post above about 'becoming' the JOS of embedded has great merit.'
You guys are saying this as if it would be an easy thing. It takes a hell of a lott more than just putting up some asp pages, writing a few articles and answering some questions to get a thing like this rolling. |
| Wed 25 Jun | Pete J | Make a record of every conversation, or use e-mail to create a paper trail. If they sack you for not achieving the impossible then that is unfair dismissal.
As it is, if you left now, in the UK at least, you could claim 'constructive dismissal'. You are being forced out of your job by unreasonable demands. Your predecessor made them aware, to an extent you have, so most courts are going to see your side.
The law is on your side... |
| Wed 25 Jun | Chris Woodruff | Welcome to the world of tech companies controlled by nontechnical people. I bet your bosses leave after 8-9 hours a day since they can get al their work done. I feel for you. I was in the same situation a year ago. I left after 5 months and many unhappy nights coming home. Just hang in there. Things will get better. I always keep this in mind -- 'Without the bad times we cannot know how good the good times are.' |
| Wed 25 Jun | BigRoy | I feel like another nail in the coffin. Roy's words of wisdom cannot outpace some of the excellent posts here. But, here I go anyway...
You told them the project cannot be done on time. Don't over tell it. If you have a record you said it could not be done (even if it is a note on your calendar when you said it), consider it closed.
2 - Leave after 'X' hours. Where 'X' is the number you set. If you work 9 hours and someone asks where you are going? 'I am going to think.' for effect you can mumble at the end. When you get home, spend the hours refining your resume, looking for jobs, making contacts, cold callin |