My first several semesters as an undergrad were brutal. The assignments were very abstract, the courses hard, and some of the computer science classes were clearly designed to fail half the students at mid-semester, or so it seemed to me.
And I'm glad.
Being an adult and having a career is often full of hard work, most thankless, and sometimes tedious. I'm glad that my professors in college didn't coddle me, or try to spare my feelings. Adjusting to work life was hard enough, but it would have been doubly difficult if I had been under the mistaken impression that the purpose of work was to entertain me.
So, I'm all for adjusting coursework to make it more engaging and for capturing the imagination of young students and keeping them interested. But, when I put on my old man hat, I also want to make sure that students understand that there will also be a lot of hard work that will be terribly important and will be terribly boring.
No. We 4-digit people all downloaded those floppies and used them on our parents' Windows boxes so that we could feel morally superior to Windows users while also not having to actually convince our parents to run Linux on their computers. Ah, memories.
> We live in the present. The sons/daughters are not responsible for the sins of the great-great-great-great-great-great-great-great-great grandfathers/mothers.
And by the way, I do believe the individuals are culpable for sins committed by the societies to which they belong, so we, collectively, as Americans, do bare the stain of those crimes.
Back when cell phones just made phone calls, my wife had an old Nokia with a 4-line display. It fell out of her purse, and neither of us noticed. The next morning, while parking my car, I rolled right over it, smashing the display. It still made and received calls as if nothing had happened.
> Sure, computers are not the answer to every > educational problem. Traditional methods that work > should not be thrown away. But to ignore all of the > possible lessons that would not be possible without > computers is very short-sighted, and unfairly > limits the experiences the students might be able > to have.
I want to agree with you. I want to believe that there are educational opportunities that are not available without instructional technology. I want to believe that the fact that I have never seen any instructional technology that works better than a book and a teacher doesn't mean they don't exist.
What concerns me, however, is that the cost of getting these (possible existent) opportunities into the classroom is to allow intellectually lazy habits to develop, e.g. indoctrinating children into the world of middle management PowerPoint presentations or into becoming so dependent on spell check that they can neither write nor spell on their own.
To the original poster, I think that your decision should rest on what the teachers in your school are going to do with this IT infrastructure. Given the comparative expense of computers and textbooks, I would set a high bar for putting any computer in the classroom.
"... team stays motivated while reporting to me..."
Most of the replies I see so far are really answering the question 'What makes a good manager?'. 'How do I keep experienced people motivated?' is an entirely different question.
When I was young, I didn't need anything from my manager(s) to be motivated. It happened naturally because I wasn't yet jaded or cynical. I hadn't seen one hundred page coding standards, TQM, Six Sigma, or AS9100A, and I hadn't been forced to repeatedly take training on how to avoid stabbing myself with writing utensils. The newness of any challenge was enough to make me excited.
Now that I'm older, what I need most to be motivated is to know that the people who manage my work (and rarely understand what I do) care about the quality of the product we produce. If you actually care about the quality of the software you deliver, then you will do lots of things that others have suggested. Its important, however, that you communicate that you're doing it because you actually care about delivering a quality product.
You'll fight for reasonable schedules and budgets. You'll offer your people ways to grow technically and organizationally. You'll value technical skill and put up with a little bit of personality shenanigans in order to keep good people on your team. You won't let your process slide, but you also won't pretend that a well-written TPS report is your actual product.
The most important thing is that a desire for quality is a motivation that managers can share with the people they manage. A junior programmer (no matter how old) may have a hard time understanding the business drivers that influence what you do, but that programmer does want to have his/her work appreciated. As a manager, you probably don't care that some feature of Java EE 5 makes your code so much more elegant the way that your programmers will, but if you understand that its increasing the quality of your code, you can appreciate it, too.
My advice to you, as a 'seasoned' software engineer, is to actually care about quality and tell your team that you do.
By the way, take some of the advice you're being given with a grain of salt. People with 11-digit slashdot IDs are not 'seasoned'. They're brand new:)
As many have pointed out, if you purchase an entire system with power consumption as a priority, you can achieve a lower total power consumption. But for US$200, I've cut my 'check email, look up something on Wikipedia' power consumption by two orders of magnitude since I don't need a workstation for that.
As a marketable skill, assembly won't get you anywhere. There are a handful of places were knowing a specific assembly language is a prerequisite (boot loaders, deeply embedded applications, etc.) but these are just a fraction of the overall job-space for software engineers. Most software engineers never mess with assembly; they are, in fact, afraid of it and think that it's evil.
Given all of that, assembly language *is* the hardware/software boundary. It's where all of the fancy abstractions from CS dissertations meet reality. Understanding computer architecture is a huge asset as a software engineer, and to properly understand how software and hardware interact, you have to learn at least one assembly language. There is no alternative. For most people, it is an unpleasant experience, but the payoff is enormous. The learning process that you undergo while learning assembly will change the way that you see your software and will help you understand why your code is so slow and how to make it fast by design.
I have one last point. When you tell a potential employer about the low-level stuff that you know or work that you've done, your assembly skills are a proxy for understanding how hardware works (at least to interviewers with half a brain). If their software needs to run fast, they'll be happy that you understand the deep magic of hardware.
(Incidentally, I think that the fraction of software jobs that require an understanding of hardware and knowledge of assembly languages, linker internals, etc., are the only fun ones and the only ones worth having. So I learned MIPS, ARM, PowerPC, and TMS320C6 assembly, and they have all served me very well because I don't have to refactor C# for a living.)
Dangers of "best minds"
on
Longhorn Preview
·
· Score: 2, Informative
> The company has billions of dollars (and they don't get > it by writing checks I know) but they supposedly have > some of the "best minds" out there.. and yet their > products and interfaces are so scrappy?
I work for a large company, and was fortunate enough to work on a high risk project, one whose failure would have meant financial ruin for the company. Knowing this, they spent lots of money (both in salary and in opportunity costs) to get their "best minds" on the project. This was nearly a disaster for several reasons that I observed:
(1) "Best minds" folks want to be architects, not brick layers; big projects require lots of brick layers. Someone has to write the code and test it. Not everyone can draw diagrams and make UML diagrams if you want to have an actual product.
(2) "Best minds" folks tend towards a grand vision and tend to use phrases like "reusable framework", "integrated system", and "from the ground up"; none of these phrases are useful to turning out a product that works, although they can be excellent at chewing up meetings and budgets.
(3) "Best minds" folks want to build a Maserati GranSport or Panoz Esperante, even when asked to build a Chevy Cavalier, and many times they fail because they continue to try and build their GranSport even after the Chevy parts are delivered.
I've never worked at Microsoft, but if I had to guess, I'd say that they likely suffer from the same problems that we did. Much to my great relief, the "best minds" I worked with decided to commit themselves to the product, check their egos at the door, and get work done, even if that meant getting out of the architect's office and being a brick layer. Evidence of this abounds in that Microsoft wows the world with plans/concepts like WinFS; they have incredible trouble delivering on those concepts. I imagine part of that is that they have a few too many "best minds" who know they are and don't want to do any of the hard work.
They're out there in the embedded market, where your option is paying more for a flash disk or having your spinning mag plates fly apart because of shock/vibe.
As others may have noted, there are different kinds of flash, some that have good write performance, some that have good read performance, and some that have both.
And if you want to pay, you can get an Ultra320 flash disk:
Depending on the size of your project, you will get varying returns from each of these:
1. Seperate source files means that units of code can hide data and functions. 2. Seperate headers, combined with something like GCC's -Wmissing-prototypes enforces the good coding practice of well defined functional interfaces. 3. Seperate headers and source files means that when you look at a function in a file, you will have some idea of what it touches because you can go and look that it included header X but not Y. 4. You can tell the compiler to explicitly forbid global data symbols, which is pointless in one single file. 5. You can use different compiler switches for different files. 6. Your code will have some hope of portability.
If your project is small, it doesn't matter anyway. If your project is large, you can get your compiler to enforce some good design rules on you, which doesn't mean you can't still have a good design anyway, but it will make it more likely. I worked on a project that used a compiler that let you get away with everything. Try and port that code to anything UNIX-like, and it was ridiculous.
Point of order - if you read the article, its about voters in Bernalillo County (where Albuquerque is) and Sandoval County, in New Mexico, not Arizona.
Here in Southern Arizona, we have optical scan ballots, which the best of all worlds. I vote with a pen, a computer scans it, and if there's a question about a recount, a human can go back and look at what I marked on my ballot.
Are there any arguments for touchscreens over optical scan ballots? I can't think of any.
There's always room for another good engineer
on
To Be Or Not To Be A CET?
·
· Score: 3, Interesting
> According to these responses, CS majors are > doomed to spend their lives waiting tables. Does a > computer related engineering degree give hope or > should I change to a more general engineering > program, before its too late?
There is always room for another good engineer. If you take your education seriously and apply yourself, you'll be able to differentiate yourself from your peers. Then you won't be stuck waiting tables.
There is always room for another motivated engineer. If you take a job out of school that isn't quite the job you imagined, but are agressive in pursuing every opportunity at work - you volunteer to finish off that project that no one wants to do, you offer to lead the project thats the opposite of glamorous - you'll differentiate yourself from your peers. Then you won't be stuck waiting tables.
The world is always lacking honest, competent people who will go the extra mile to get work done. If you're one of those people, there will be work for you in the current economy. It might not be the job you want, or even the one you were trained for, but there will be one.
Which is worse? To feed trolls by posting replies, or to reply to any story posted on Slashdot on April 1?
The answer to the question is of course: ITAR, the International Traffic in Arms Regulations, which is detailed here: http://pmdtc.org/reference.htm
"127.1 Violations. (a) It is unlawful: (1) To export or attempt to export from the United States any defense article or technical data or to furnish any defense service for which a license or written approval is required by this subchapter without first obtaining the required license or written approval from the Office of Defense Trade Controls;"
The company I currently work for has a rating system similar to the one you described. Recently, they started to enforce a quota for each of the rating categories because the vast majority of employees were being ranked as exceeding or far exceeding their manager's expectations. Now, I work with a stellar group of engineers, but if all of us are always exceeding our managers expectations, maybe they should raise their expectations.
When the quota system was introduced, we all bristled at the idea of being forced to participate. We have to get ranked on our teams (with anywhere from 3 to 10 people), ranked within our projects (10 to 100 people), and ranked within our department (~1000 people), although the department rankings are broken down into seniority groups. Frankly, its frightening because as the groups get larger and the managers further from the cube farm, its harder and harder to make decisions about who is doing good work, and who isn't. It also brings into question how it is that we demonstrate value to our management.
But after all of our moaning, we realized that what our managers were trying to do is establish some objective framework in which they could measure us against objective metrics. I would much rather have a manager be forced to rank me with my peers with a policy document in hand to help decide which of us is the most productive, rather than have him pick people to promote and give raises to without ANY objective metric or policy. I don't go out to bars with my boss, but I don't want that to effect my performance review.
My point is this - ranking systems are an attempt at objectively gauging the performance of individuals. Quota systems are in place so that managers don't opt out of the hard part of telling people that they aren't as productive as their peers. Its harsh, and it isn't flawless, but compared with the alternative of an entirely subjective promotions/raises process, I'll take the ranking.
Maybe I mispoke. I didn't mean to imply that open model will bend to the way that the closed software world works. I do agree that the commerical companies are bending to do things the open source way, and not the other way around.
But lets be realistic about whats going on.
Where I work, half of our product is the documentation that we supply to our customers detailing design, implementation, and testing. A big chunk of our time is spent going over records of integration testing and through the logs of the version control system. This totally stiffles people like me who want to go and fix the ugly, nasty code that lives in our version control system, but I know every line of code change is going to be another couple of minutes in a code review with our customer. It has been my experience, and correct me if I'm wrong, but most open source projects pride themselves on the design behind the technical aspects of their projects, not by their quality assurance.
If I understand the point of the story, the question is whether or not open projects need a devoted test and process organization, which is what we used to call our Software Engineering Process Group before the last reorg. They do black box testing, make tool suggestions, etc.
I can see how that service would be a tremendous service to an open project, but I don't know if you're going to find people who want to do QA in their free time.
Its a staggering amount because its the largest research grant ever awarded to the University of Arizona, and because it will have a huge effect on the local economy. Oddly enough, the Phoenix Project will be built in Tucson, AZ, at the U of A, instead of ASU in Phoenix. Tucson is a whole lot smaller, and this is a big deal contract around here.
The first phase of the open model was the developer stage - individual people contributed their talents to produce interesting software. Their products were raw and unrefined, but very powerful. All of the best practices that (supposedly) happen at commercial software houses - all of that process - was chucked out the window in favor of devoting time to the very real creative experience of molding and bending and shaping new code.
The second phase of the open model was the documentation phase. When they collected code from the net to make their products, the commerical vendors of open software took the raw, unrefined code, and harnessed its power into a form that PHBs could recognize. Now we have Ximian - a refined product that PHBs recognize, built on the creativity of GNOME developers. Now we have MontaVista and Timesys Linux kernels - products that PHBs recognize, refined to their needs, but built on the creativity of the kernel developers.
I suppose that the third stage of the open model might be to do this - to help open projects apply best practices for software creation, test, and maintenance. I just don't know who you're going to get to do it. Individual developers, I would imagine, will be more concerned with the raw creativity of hacking at code in vi. Commercial companies will more be more likely to apply these practices to the code that they ship their customers, not the code that lives in the repository at SourceForge, although maybe they coincide.
I suppose my point is that you have to find people who want to do it, or money to make people want to, and I'm not sure where you're going to find either.
So, let me see if I've got this right. You have an indeterminant amount of time to spend in the US. You can go anywhere you want to go and do anything you want to do. And you want to spend it in computer museums, big bookstores, and the Smithsonian? Granted, these are all neat places to visit, but why do you want to geek up a perfectly good vacation?
My advice? Ditch the nerd stuff and do something outside.
> Percentage of budget of US foreign aid: 1.0% (dead last among western nations).
Yes, if you ask what the US Federal government spends, as a portion of the total Federal budget, we look like punks. If you look at Federal expenditure as a portion of GDP, we look like punks. But when you look at the bottom line, we end up spending more dollars than anybody else. But that makes for bad anti-US rhetoric.
Take, for example, spending on AIDS/HIV prevention. Look at this document:
http://www.gatesfoundation.org/nr/downloads/glob al health/aids/PWGFundingReport.pdf
The US government contributes more dollars to prevent the spread of HIV and AIDS than anyone else. (see page 34.) Should we spend more so that our percentage of GDP is more inline with the UK? That might be a good plan. But to assert that we do nothing because our percentage of GDP is too low - that's ridiculous. Everything you could ever want to know about the amazing work that done with that money is here:
http://www.usaid.gov/
Go there, look at the work that money does, and come back and tell me it means nothing.
... which is apparently the peak US-bashing time on Slashdot. The US is wants to control everything. The US wants to burn fossil fuels until the planet chokes and eveyone dies. The US wants to poison everyone's language with transliterated American English. The US wants to destroy everyone's culture by building McDonalds and Walmarts everywhere. Blah blah blah.
Stow the rhetoric, please. Not everyone accepts that blather at face value.
An incredible amount of technology that we take for granted exists today because DARPA spent money on it and people complained about the size of the US defense budget (he says while sending his comment of the *internet*).
Hypersonic flight, whether ballistic or not, is incredibly hard to control. Manned or unmanned, incredibly hard to control. This sort of project will develop the skills and capabilities needed to engineer such an audacious plan. That knowledge barely exists now. How do you build something so insanely complex and difficult to control? How do you make it reliable? Someday, that knowledge of how to build impressive stuff will be used to build impressive stuff you'll use everyday.
Your desire to accept student loans should be proportional to you ability to pay them off.
For example, if you are planning on getting a degree, and similar people with that degree are offered a median starting salary of US$45000, then you might be able to tolerate a significant debt load after you graduate because your debt payments will be a relatively small fraction of your monthly income.
If, however, your likely starting salary is US$20000, that same debt load might not be such a good plan because it is going to be a significant fraction of your monthly income.
As noted by other posters, an education can be a good investment, provided you will ever have the means to pay off your debt, and you make the most of you time in school so that you actually learn something.
> Not to troll, but if they're thinking they can > leapfrog with user switching and roaming home > directories, they need to jump a lot higher than > that. User switching came with XP, and roaming > home directories has been in since 2000. My home > directory syncs automatically between my desktop > laptop & other home workstation, and it's been > brain-free for years with Windows 2000 Server.
Not to troll, but NFS has been letting my home directory roam from station to station since it made it out of the lab at Sun in 1984. Thanks to Google: http://classes.csumb.edu/CST/CST434-01/wo rld/WEBSI TES/NFS/nfshistory.html
But you are correct. Fast user switching and roaming home directories do not an intuitive desktop make. (Actually, that sounds like UNIX, cerca 1984. But I digress.)
The point the eWeek writer was trying (badly) to make is that Apple is rumored to be implementing the foundations of intuitive, pervasive computing that Microsoft is likely to shoehorn into Longhorn.
From Microsoft's perspective, computer's always existed as disconnected nodes, hence their late (and rather loud) entry into all things internet-enabled. (Speaking of which, naming something ".Net" was the epitomy of this internet obsession that is Microsoft's reaction to how they missed the burgeoning of the internet and allowed someone else - Netscape - to challenge their strangle hold on personal computing. But I digress again.)
So, in Microsoft's mind, the only way to have "pervasive" computing is to extend the PC experience, so that your PC can follow you around. Its not so much that data lives on the network (as a properly NFSed or even better, AFSed, network might work on a corporate plant site), but that your data will follow you around from PC to PC, if you so choose.
Apple, by way of its BSD folk, understands that this is silly, and that data should just live on the network, hence iDisk is a main selling point of.Mac, and iDisks can be mounted as a normal drive under Mac OS and Windows, and seen as folders on the web, etc.
Apple also understands that whatever decision Microsoft makes, it will be held liable in the court of public tech opinion if it doesn't do it the same way.
So, this is just a long way of saying that what the eWeek write meant to say is that Apple is going to implement a boat load of stuff that Microsoft is planning for Longhorn, so as to make those "features" a moot point.
This brain rot gives me a headache.
on
Software Architecture
·
· Score: 4, Informative
This is exactly what's wrong with the universe, or at least the small part of the universe occupied by software engineers.
What has all of our Functional, Object Oriented, Extreme Programmed, UML-based, XML compliant, Pattern-ed or Anti-Pattern-ed flow charts in animated PowerPoint got us? Its got us a load of crap, thats what. A load of crap. We re-org endlessly. We have more meetings. We write more Standard Operating Procedures. We rewrite the coding standard. We switch languages, run times, operating systems, and libraries. We refactor, re-code, re-work, re-design and re-plan. And we get a load of crap. We manage, and plan and re-manage and re-plan, depending on what the winds of your upper management's whims dictate is the "in" style for the day.
What should all of this tell us?
Software engineering is a practical craft. No amount of process will ever make up for proper training, proper documentation, proper version control, and proper testing. Ever. And that's the way it is. If you have good people, set them free. If you don't, spend a little money to train them to their highest potential instead of trying to make them good cogs in a crappy buzzword wheel.
In the end, 99% of the work done by software engineers is just rearranging magnetic pixy dust on some drive platter, or scattering the electrons in a flash or DRAM or SRAM cell. Most of our value to the universe is just damned pixy dust. And it shouldn't be this difficult.
We don't need any more of this - we all just need to learn how to be practical craftsmen that get *work* done.
Signal delivers notifications with GCM, not messages themselves. But yes, meta-data is not secure.
My first several semesters as an undergrad were brutal. The assignments were very abstract, the courses hard, and some of the computer science classes were clearly designed to fail half the students at mid-semester, or so it seemed to me.
And I'm glad.
Being an adult and having a career is often full of hard work, most thankless, and sometimes tedious. I'm glad that my professors in college didn't coddle me, or try to spare my feelings. Adjusting to work life was hard enough, but it would have been doubly difficult if I had been under the mistaken impression that the purpose of work was to entertain me.
So, I'm all for adjusting coursework to make it more engaging and for capturing the imagination of young students and keeping them interested. But, when I put on my old man hat, I also want to make sure that students understand that there will also be a lot of hard work that will be terribly important and will be terribly boring.
No. We 4-digit people all downloaded those floppies and used them on our parents' Windows boxes so that we could feel morally superior to Windows users while also not having to actually convince our parents to run Linux on their computers. Ah, memories.
> We live in the present. The sons/daughters are not responsible for the sins of the great-great-great-great-great-great-great-great-great grandfathers/mothers.
This would be true, if the crimes committed against American Indians were actually in the past. In my lifetime, the federal government (through the Indian Health Service) forcibly sterilized American Indian women:
http://muse.jhu.edu/journals/american_indian_quarterly/v024/24.3lawrence.html
And by the way, I do believe the individuals are culpable for sins committed by the societies to which they belong, so we, collectively, as Americans, do bare the stain of those crimes.
Back when cell phones just made phone calls, my wife had an old Nokia with a 4-line display. It fell out of her purse, and neither of us noticed. The next morning, while parking my car, I rolled right over it, smashing the display. It still made and received calls as if nothing had happened.
> Sure, computers are not the answer to every
> educational problem. Traditional methods that work
> should not be thrown away. But to ignore all of the
> possible lessons that would not be possible without
> computers is very short-sighted, and unfairly
> limits the experiences the students might be able
> to have.
I want to agree with you. I want to believe that there are educational opportunities that are not available without instructional technology. I want to believe that the fact that I have never seen any instructional technology that works better than a book and a teacher doesn't mean they don't exist.
What concerns me, however, is that the cost of getting these (possible existent) opportunities into the classroom is to allow intellectually lazy habits to develop, e.g. indoctrinating children into the world of middle management PowerPoint presentations or into becoming so dependent on spell check that they can neither write nor spell on their own.
To the original poster, I think that your decision should rest on what the teachers in your school are going to do with this IT infrastructure. Given the comparative expense of computers and textbooks, I would set a high bar for putting any computer in the classroom.
"... team stays motivated while reporting to me ..."
Most of the replies I see so far are really answering the question 'What makes a good manager?'. 'How do I keep experienced people motivated?' is an entirely different question.
When I was young, I didn't need anything from my manager(s) to be motivated. It happened naturally because I wasn't yet jaded or cynical. I hadn't seen one hundred page coding standards, TQM, Six Sigma, or AS9100A, and I hadn't been forced to repeatedly take training on how to avoid stabbing myself with writing utensils. The newness of any challenge was enough to make me excited.
Now that I'm older, what I need most to be motivated is to know that the people who manage my work (and rarely understand what I do) care about the quality of the product we produce. If you actually care about the quality of the software you deliver, then you will do lots of things that others have suggested. Its important, however, that you communicate that you're doing it because you actually care about delivering a quality product.
You'll fight for reasonable schedules and budgets. You'll offer your people ways to grow technically and organizationally. You'll value technical skill and put up with a little bit of personality shenanigans in order to keep good people on your team. You won't let your process slide, but you also won't pretend that a well-written TPS report is your actual product.
The most important thing is that a desire for quality is a motivation that managers can share with the people they manage. A junior programmer (no matter how old) may have a hard time understanding the business drivers that influence what you do, but that programmer does want to have his/her work appreciated. As a manager, you probably don't care that some feature of Java EE 5 makes your code so much more elegant the way that your programmers will, but if you understand that its increasing the quality of your code, you can appreciate it, too.
My advice to you, as a 'seasoned' software engineer, is to actually care about quality and tell your team that you do.
By the way, take some of the advice you're being given with a grain of salt. People with 11-digit slashdot IDs are not 'seasoned'. They're brand new :)
I use one of these at home with an almost complete Debian install on a USB memory stick:
http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/12454-12454-321959-338927-89307-3341342.html
US$200, no fan noise, very low power.
As many have pointed out, if you purchase an entire system with power consumption as a priority, you can achieve a lower total power consumption. But for US$200, I've cut my 'check email, look up something on Wikipedia' power consumption by two orders of magnitude since I don't need a workstation for that.
As a marketable skill, assembly won't get you anywhere. There are a handful of places were knowing a specific assembly language is a prerequisite (boot loaders, deeply embedded applications, etc.) but these are just a fraction of the overall job-space for software engineers. Most software engineers never mess with assembly; they are, in fact, afraid of it and think that it's evil.
Given all of that, assembly language *is* the hardware/software boundary. It's where all of the fancy abstractions from CS dissertations meet reality. Understanding computer architecture is a huge asset as a software engineer, and to properly understand how software and hardware interact, you have to learn at least one assembly language. There is no alternative. For most people, it is an unpleasant experience, but the payoff is enormous. The learning process that you undergo while learning assembly will change the way that you see your software and will help you understand why your code is so slow and how to make it fast by design.
I have one last point. When you tell a potential employer about the low-level stuff that you know or work that you've done, your assembly skills are a proxy for understanding how hardware works (at least to interviewers with half a brain). If their software needs to run fast, they'll be happy that you understand the deep magic of hardware.
(Incidentally, I think that the fraction of software jobs that require an understanding of hardware and knowledge of assembly languages, linker internals, etc., are the only fun ones and the only ones worth having. So I learned MIPS, ARM, PowerPC, and TMS320C6 assembly, and they have all served me very well because I don't have to refactor C# for a living.)
> The company has billions of dollars (and they don't get
> it by writing checks I know) but they supposedly have
> some of the "best minds" out there.. and yet their
> products and interfaces are so scrappy?
I work for a large company, and was fortunate enough to work on a high risk project, one whose failure would have meant financial ruin for the company. Knowing this, they spent lots of money (both in salary and in opportunity costs) to get their "best minds" on the project. This was nearly a disaster for several reasons that I observed:
(1) "Best minds" folks want to be architects, not brick layers; big projects require lots of brick layers. Someone has to write the code and test it. Not everyone can draw diagrams and make UML diagrams if you want to have an actual product.
(2) "Best minds" folks tend towards a grand vision and tend to use phrases like "reusable framework", "integrated system", and "from the ground up"; none of these phrases are useful to turning out a product that works, although they can be excellent at chewing up meetings and budgets.
(3) "Best minds" folks want to build a Maserati GranSport or Panoz Esperante, even when asked to build a Chevy Cavalier, and many times they fail because they continue to try and build their GranSport even after the Chevy parts are delivered.
I've never worked at Microsoft, but if I had to guess, I'd say that they likely suffer from the same problems that we did. Much to my great relief, the "best minds" I worked with decided to commit themselves to the product, check their egos at the door, and get work done, even if that meant getting out of the architect's office and being a brick layer. Evidence of this abounds in that Microsoft wows the world with plans/concepts like WinFS; they have incredible trouble delivering on those concepts. I imagine part of that is that they have a few too many "best minds" who know they are and don't want to do any of the hard work.
They're out there in the embedded market, where your option is paying more for a flash disk or having your spinning mag plates fly apart because of shock/vibe.
. asp
. asp?pid=41
http://www.m-systems.com/Content/Markets/Embedded
As others may have noted, there are different kinds of flash, some that have good write performance, some that have good read performance, and some that have both.
And if you want to pay, you can get an Ultra320 flash disk:
http://www.m-systems.com/Content/Products/product
Depending on the size of your project, you will get varying returns from each of these:
1. Seperate source files means that units of code can hide data and functions.
2. Seperate headers, combined with something like GCC's -Wmissing-prototypes enforces the good coding practice of well defined functional interfaces.
3. Seperate headers and source files means that when you look at a function in a file, you will have some idea of what it touches because you can go and look that it included header X but not Y.
4. You can tell the compiler to explicitly forbid global data symbols, which is pointless in one single file.
5. You can use different compiler switches for different files.
6. Your code will have some hope of portability.
If your project is small, it doesn't matter anyway. If your project is large, you can get your compiler to enforce some good design rules on you, which doesn't mean you can't still have a good design anyway, but it will make it more likely. I worked on a project that used a compiler that let you get away with everything. Try and port that code to anything UNIX-like, and it was ridiculous.
Point of order - if you read the article, its about voters in Bernalillo County (where Albuquerque is) and Sandoval County, in New Mexico, not Arizona.
Here in Southern Arizona, we have optical scan ballots, which the best of all worlds. I vote with a pen, a computer scans it, and if there's a question about a recount, a human can go back and look at what I marked on my ballot.
Are there any arguments for touchscreens over optical scan ballots? I can't think of any.
> According to these responses, CS majors are
> doomed to spend their lives waiting tables. Does a
> computer related engineering degree give hope or
> should I change to a more general engineering
> program, before its too late?
There is always room for another good engineer. If you take your education seriously and apply yourself, you'll be able to differentiate yourself from your peers. Then you won't be stuck waiting tables.
There is always room for another motivated engineer. If you take a job out of school that isn't quite the job you imagined, but are agressive in pursuing every opportunity at work - you volunteer to finish off that project that no one wants to do, you offer to lead the project thats the opposite of glamorous - you'll differentiate yourself from your peers. Then you won't be stuck waiting tables.
The world is always lacking honest, competent people who will go the extra mile to get work done. If you're one of those people, there will be work for you in the current economy. It might not be the job you want, or even the one you were trained for, but there will be one.
Which is worse? To feed trolls by posting replies, or to reply to any story posted on Slashdot on April 1?
The answer to the question is of course: ITAR, the International Traffic in Arms Regulations, which is detailed here: http://pmdtc.org/reference.htm
"127.1 Violations.
(a) It is unlawful:
(1) To export or attempt to export
from the United States any defense article
or technical data or to furnish
any defense service for which a license
or written approval is required by this
subchapter without first obtaining the
required license or written approval
from the Office of Defense Trade Controls;"
The company I currently work for has a rating system similar to the one you described. Recently, they started to enforce a quota for each of the rating categories because the vast majority of employees were being ranked as exceeding or far exceeding their manager's expectations. Now, I work with a stellar group of engineers, but if all of us are always exceeding our managers expectations, maybe they should raise their expectations.
When the quota system was introduced, we all bristled at the idea of being forced to participate. We have to get ranked on our teams (with anywhere from 3 to 10 people), ranked within our projects (10 to 100 people), and ranked within our department (~1000 people), although the department rankings are broken down into seniority groups. Frankly, its frightening because as the groups get larger and the managers further from the cube farm, its harder and harder to make decisions about who is doing good work, and who isn't. It also brings into question how it is that we demonstrate value to our management.
But after all of our moaning, we realized that what our managers were trying to do is establish some objective framework in which they could measure us against objective metrics. I would much rather have a manager be forced to rank me with my peers with a policy document in hand to help decide which of us is the most productive, rather than have him pick people to promote and give raises to without ANY objective metric or policy. I don't go out to bars with my boss, but I don't want that to effect my performance review.
My point is this - ranking systems are an attempt at objectively gauging the performance of individuals. Quota systems are in place so that managers don't opt out of the hard part of telling people that they aren't as productive as their peers. Its harsh, and it isn't flawless, but compared with the alternative of an entirely subjective promotions/raises process, I'll take the ranking.
Maybe I mispoke. I didn't mean to imply that open model will bend to the way that the closed software world works. I do agree that the commerical companies are bending to do things the open source way, and not the other way around.
But lets be realistic about whats going on.
Where I work, half of our product is the documentation that we supply to our customers detailing design, implementation, and testing. A big chunk of our time is spent going over records of integration testing and through the logs of the version control system. This totally stiffles people like me who want to go and fix the ugly, nasty code that lives in our version control system, but I know every line of code change is going to be another couple of minutes in a code review with our customer. It has been my experience, and correct me if I'm wrong, but most open source projects pride themselves on the design behind the technical aspects of their projects, not by their quality assurance.
If I understand the point of the story, the question is whether or not open projects need a devoted test and process organization, which is what we used to call our Software Engineering Process Group before the last reorg. They do black box testing, make tool suggestions, etc.
I can see how that service would be a tremendous service to an open project, but I don't know if you're going to find people who want to do QA in their free time.
http://www.dailystar.com/star/today/30805MARS.html
Its a staggering amount because its the largest research grant ever awarded to the University of Arizona, and because it will have a huge effect on the local economy. Oddly enough, the Phoenix Project will be built in Tucson, AZ, at the U of A, instead of ASU in Phoenix. Tucson is a whole lot smaller, and this is a big deal contract around here.
The first phase of the open model was the developer stage - individual people contributed their talents to produce interesting software. Their products were raw and unrefined, but very powerful. All of the best practices that (supposedly) happen at commercial software houses - all of that process - was chucked out the window in favor of devoting time to the very real creative experience of molding and bending and shaping new code.
The second phase of the open model was the documentation phase. When they collected code from the net to make their products, the commerical vendors of open software took the raw, unrefined code, and harnessed its power into a form that PHBs could recognize. Now we have Ximian - a refined product that PHBs recognize, built on the creativity of GNOME developers. Now we have MontaVista and Timesys Linux kernels - products that PHBs recognize, refined to their needs, but built on the creativity of the kernel developers.
I suppose that the third stage of the open model might be to do this - to help open projects apply best practices for software creation, test, and maintenance. I just don't know who you're going to get to do it. Individual developers, I would imagine, will be more concerned with the raw creativity of hacking at code in vi. Commercial companies will more be more likely to apply these practices to the code that they ship their customers, not the code that lives in the repository at SourceForge, although maybe they coincide.
I suppose my point is that you have to find people who want to do it, or money to make people want to, and I'm not sure where you're going to find either.
So, let me see if I've got this right. You have an indeterminant amount of time to spend in the US. You can go anywhere you want to go and do anything you want to do. And you want to spend it in computer museums, big bookstores, and the Smithsonian? Granted, these are all neat places to visit, but why do you want to geek up a perfectly good vacation?
My advice? Ditch the nerd stuff and do something outside.
Learn to kayak in Colorado.
Hike in one of the last beautiful places on Earth.
Play in the water at a beautiful beach in Florida.
Or go to one of the best beaches in Mexico.
Slide around on snow on purpose.
Go to one of the last truly wild places.
There is so much to see in North America. Please don't spend your whole trip at Frys.
> Percentage of budget of US foreign aid: 1.0% (dead last among western nations).
b al health/aids/PWGFundingReport.pdf
Yes, if you ask what the US Federal government spends, as a portion of the total Federal budget, we look like punks. If you look at Federal expenditure as a portion of GDP, we look like punks. But when you look at the bottom line, we end up spending more dollars than anybody else. But that makes for bad anti-US rhetoric.
Take, for example, spending on AIDS/HIV prevention. Look at this document:
http://www.gatesfoundation.org/nr/downloads/glo
The US government contributes more dollars to prevent the spread of HIV and AIDS than anyone else. (see page 34.) Should we spend more so that our percentage of GDP is more inline with the UK? That might be a good plan. But to assert that we do nothing because our percentage of GDP is too low - that's ridiculous. Everything you could ever want to know about the amazing work that done with that money is here:
http://www.usaid.gov/
Go there, look at the work that money does, and come back and tell me it means nothing.
... which is apparently the peak US-bashing time on Slashdot. The US is wants to control everything. The US wants to burn fossil fuels until the planet chokes and eveyone dies. The US wants to poison everyone's language with transliterated American English. The US wants to destroy everyone's culture by building McDonalds and Walmarts everywhere. Blah blah blah.
Stow the rhetoric, please. Not everyone accepts that blather at face value.
An incredible amount of technology that we take for granted exists today because DARPA spent money on it and people complained about the size of the US defense budget (he says while sending his comment of the *internet*).
Hypersonic flight, whether ballistic or not, is incredibly hard to control. Manned or unmanned, incredibly hard to control. This sort of project will develop the skills and capabilities needed to engineer such an audacious plan. That knowledge barely exists now. How do you build something so insanely complex and difficult to control? How do you make it reliable? Someday, that knowledge of how to build impressive stuff will be used to build impressive stuff you'll use everyday.
Your desire to accept student loans should be proportional to you ability to pay them off.
For example, if you are planning on getting a degree, and similar people with that degree are offered a median starting salary of US$45000, then you might be able to tolerate a significant debt load after you graduate because your debt payments will be a relatively small fraction of your monthly income.
If, however, your likely starting salary is US$20000, that same debt load might not be such a good plan because it is going to be a significant fraction of your monthly income.
As noted by other posters, an education can be a good investment, provided you will ever have the means to pay off your debt, and you make the most of you time in school so that you actually learn something.
> Not to troll, but if they're thinking they can
o rld/WEBSI TES/NFS/nfshistory.html
.Mac, and iDisks can be mounted as a normal drive under Mac OS and Windows, and seen as folders on the web, etc.
> leapfrog with user switching and roaming home
> directories, they need to jump a lot higher than
> that. User switching came with XP, and roaming
> home directories has been in since 2000. My home
> directory syncs automatically between my desktop
> laptop & other home workstation, and it's been
> brain-free for years with Windows 2000 Server.
Not to troll, but NFS has been letting my home directory roam from station to station since it made it out of the lab at Sun in 1984.
Thanks to Google:
http://classes.csumb.edu/CST/CST434-01/w
But you are correct. Fast user switching and roaming home directories do not an intuitive desktop make. (Actually, that sounds like UNIX, cerca 1984. But I digress.)
The point the eWeek writer was trying (badly) to make is that Apple is rumored to be implementing the foundations of intuitive, pervasive computing that Microsoft is likely to shoehorn into Longhorn.
From Microsoft's perspective, computer's always existed as disconnected nodes, hence their late (and rather loud) entry into all things internet-enabled. (Speaking of which, naming something ".Net" was the epitomy of this internet obsession that is Microsoft's reaction to how they missed the burgeoning of the internet and allowed someone else - Netscape - to challenge their strangle hold on personal computing. But I digress again.)
So, in Microsoft's mind, the only way to have "pervasive" computing is to extend the PC experience, so that your PC can follow you around. Its not so much that data lives on the network (as a properly NFSed or even better, AFSed, network might work on a corporate plant site), but that your data will follow you around from PC to PC, if you so choose.
Apple, by way of its BSD folk, understands that this is silly, and that data should just live on the network, hence iDisk is a main selling point of
Apple also understands that whatever decision Microsoft makes, it will be held liable in the court of public tech opinion if it doesn't do it the same way.
So, this is just a long way of saying that what the eWeek write meant to say is that Apple is going to implement a boat load of stuff that Microsoft is planning for Longhorn, so as to make those "features" a moot point.
This is exactly what's wrong with the universe, or at least the small part of the universe occupied by software engineers.
What has all of our Functional, Object Oriented, Extreme Programmed, UML-based, XML compliant, Pattern-ed or Anti-Pattern-ed flow charts in animated PowerPoint got us? Its got us a load of crap, thats what. A load of crap. We re-org endlessly. We have more meetings. We write more Standard Operating Procedures. We rewrite the coding standard. We switch languages, run times, operating systems, and libraries. We refactor, re-code, re-work, re-design and re-plan. And we get a load of crap. We manage, and plan and re-manage and re-plan, depending on what the winds of your upper management's whims dictate is the "in" style for the day.
What should all of this tell us?
Software engineering is a practical craft. No amount of process will ever make up for proper training, proper documentation, proper version control, and proper testing. Ever. And that's the way it is. If you have good people, set them free. If you don't, spend a little money to train them to their highest potential instead of trying to make them good cogs in a crappy buzzword wheel.
In the end, 99% of the work done by software engineers is just rearranging magnetic pixy dust on some drive platter, or scattering the electrons in a flash or DRAM or SRAM cell. Most of our value to the universe is just damned pixy dust. And it shouldn't be this difficult.
We don't need any more of this - we all just need to learn how to be practical craftsmen that get *work* done.