In the modern days of cheap disk, big disk caches, and large ram, proper modelling is more important than strict normalization.
Back when those books were written, disk was expensive and not cached, RAM was very expensive, and machines had terrible I/O bottlenecks.. Normalization is critical under these circumstances for maximum performance.
Today, these normalization techniques will increase performance but not as much as you might think. Really it is best to concentrate efforts elsewhere, especially for a one-person shop.
All of that normalization work requires coding changes and it will undoubtedly make the code much less readable and maintainable.
<facepalm/> Performance? I wasn't even thinking of that as a reason to understand normalization. I'm thinking data integrity at least in the conceptual model.
The value of normalization is not so much in performance but in considering and planning what a decent data/information model should look like.
You normalize your *model*, your blueprint, and de-normalize as you see fit with the resources available. The actual tables and tablespaces might not (will not) look 1-to-1 to the model, but you still have a model of information.
And when you do deviate from your model, you do so consciously; you know exactly where you are deviating from the model; and you know why. Without a model, or worse, with a badly crapped model, you don't know what you have.
It is good to exploit the hardware capabilities we have now, BUT without at least having a conceptual understanding of normalization, this is almost always a sure way to get into a corner where the only option is to throw more hardware to the problem.
The distinction here now is that people deploy hardware strategically, but because they have no choice: shit won't run without. Hardware is cheap. Operational costs are not. Understanding normalization is to (relational) data modeling and building what modularity and structure are to OO design (and software building in general.)
Normalization is not about performance (even if its immediate effects in the past were performance related.) It is about reduction of unnecessary data redundancy that compromises data integrity.
Not performance. Data Integrity.
Even with the hardware that we have today, I still have to see a well-designed model that does not in great part enforce the 2nd normal form and most attributes of 1st normal form (in particular about avoiding duplication of rows and maintaining regular columns.)
"I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications"
Translation - I'm a one man IT department
Bud, start with the truth. A "Director of IT" does not write code. You could have equally said you were CIO, just as truthful.
That's an stupid, novice assumption. I've seen smaller operations with an IT director having to get down and dirty because of downsizing or lack of resources. Coding is done on top of the functions of IT managements.
So before you let your projecting ego go about correcting people's titles without knowing the specific circumstances, maybe you can try something more useful, like, oh I dunno, maybe answer the question and suggest a good relational modeling book. Crazy, I know!
"I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications. We use a variety of technology at our office, the majority of which rely on MS-SQL and MySQL databases. I am familiar with tables, SQL queries, and have a general understanding of how the SQL databases work. What I'm looking for is a good book, particularly a newer book, to explain general database design techniques, and maybe explain some relational tables. We have some tables that have million of rows, and I'd like to know the best method of designing these tables."
There is more to RDBMS than tables and SQL. Your developers should understand data normalization first and foremost, at least 1NF, 2NF and 3NF.
The examples in the URLs above should suffice for getting a general understanding on how to start with a relational model. As for books, I'd suggest these:
I would also suggest C.J. Date's "Database in Depth: Relational Theory for Practitioners", but I can imagine the local penny arcade l33t-hax0r-wannabe crowd going batshit crazy about studying relational algebra and relational database theory in depth. To each his own.
Most problems that arise in poorly designed relational database models arise from not understanding data normalization
The young and bright are trying to get the fuck out of China? Why would anyone (other than a corp) go there for a job, specially an engineer with a good education and higher-than-average IQ?
With this, our transformation will be complete. We will become a planet of fatties, like in Wall-E. It sounds like a joke, but really, we are getting there.
The result? A 24-user study showed that reading from a printed book—versus an e-book on any of the three tested devices—was a faster experience to a significant degree.
The user study group is too small to be statistically significant. It can't possibly "show", "demonstrate", much less "prove" what TFA claims it does. At best, the article should read that findings of this user-study group suggest that reading from a printed book versus an e-book might be a faster experience under certain conditions... further research is needed.
But then again, it's PCMag for Xenu's sake.
Having said that, from my own experience using a Kindle 2 for both technical and leisure books, a printed book is a much faster read for me. I stopped buying e-books because of this. Any other new purchases have been in the form of old/used printed books (much cheaper and much more efficient for reading.)
I can only conjecture that this is because of ergonomics and screen size. I can see much more text at once in a printed book than with a Kindle 2. I can scan for key phrases before immersing myself in a page faster. I can backtrack pages faster (to reinforce what I've read so far.) Flipping through physical pages seem faster and more efficient than scrolling through screens (which is also why reading from a book is more efficient than reading from a scroll or concertina-styled folded document.). I can bend the tip of an arbitrary page (for bookmarking) and go back to it faster than trying to bookmark and navigate to it in a Kindle (can't speculate about the iPad, though.).
Unless there is a breakthrough in HCI, reading from a physical book will most likely be more efficient than using the e-reading technology we have today.
It was being presented as an option for those people now unemployed. Changing your life retroactively is hard.
It is hard, but it tend to be mandatory and unavoidable. Not to gloat, but this where my perspective comes from:
I came to the US as an accountant with no English skills whatsoever, and for a while my work was behind a McDonald's bin (want fries with that?) and later driving forklifts. Took me two years to learn English at the college level, and 6 more to get a B.S. degree in Computer Science (studying almost full-time while working full-time.) During the dot-com crash, I got unemployed twice and had to re-invent myself rather quickly (jumping from software development to IT operations.)
Before I got my current job, I became unemployed... six days before my wife gave birth to our baby.
Was unemployed with a newborn baby (and no medical insurance) for four months. Had to dip into my savings to take seminars (Groovy and Spring Framework), buy books (.ie. Groovy, Nagios), getting Sun certified, and trying to scratch a living with a pal of mine as consultants... giving some of our services for free just to get visibility.
My pal and I were brainstorming like, wtf we do now, but in a calm way. We were planning to write a book and start a podcast (maybe we will), but we both got steady, interesting jobs, and that's how it is for now.
The difference between the times I got unemployed during the dot-com bubble and this time is that I was prepared. I was preparing myself for years for this type of eventuality which is unavoidable. I'm sure in 5-10 years from now I will be unemployed and in need to scramble.
The sooner a software person accepts this as part of the career we have chosen (and prepares himself accordingly, the better.) I know people that have gone through worse, and unfortunately, some have not coped well. Fortunes and misfortunes in software are cyclic, and you can't let them caught you with your pants down.
Just curious, that company which paid 15% below normal entry level pay... do you know any other recent hires?
The person I was referring to was the last one, but I have friends and ex-coworkers that work at that company as either employees or consultants (I tried for years to get in to no avail, oh well.) They do seem to pay lower than average to new grads (unless they are exceptional gifted). But the exposure that you get to software and hardware technologies and software development processes, those are things that you take with you for life.
How many hours of unpaid overtime are they expected to perform on average?
On average, probably 5. 10 on very development phases. That's the average in decent companies. BTW, gaming software companies are atrocious sweat shops.
Whenever I've worked as a contractor, I've never worked less than 50 hours a week. 60-hour weeks were not uncommon. I would get paid overtime (oh man, OT is so good), but I would be tired as hell, and I don't get benefits like employees do. So, some of my OT gains would go down the drain with out-of-pocket expenses like medical and dental.
On the other hand, whenever I've worked as an employee, I've never worked beyond 45 hours during normal weekends. I am expected, however, to work as long as needed to get things done when it gets busy. For example, last year I worked 80-90 hours on a three-week streak during an important integration phase. A couple of weeks I've worked 50-55. But most of the weeks have been 45. I could stop and leave home with just 40, but then, my job is not just a paycheck mill. It is my career, and I get out what I put in.
It is important to
not confuse a job with a career
do use your job to cultivate your career
A job gets you the money, but it is not your career. The moment you treat your job as the only expression of your career and go home at 5, that's it. Yo
So... unless you are the previous mentioned randian superman and can go to topcoder and own the place to put yourself into view how is a fresh student supposed to make himself employable for decent paying freelance work?
You start before you even graduate. You look for internships, you look for jobs inside school, you network with professors who might know people in the industry, you network with companies that fund projects at your university, you attend job fairs, you give a helping hand to open source projects. In other words, you make yourself visible before you even graduate.
If you wait till you graduate, guess what? You will be green, you will be unnoticed and you will be fighting the competition. And what is worse, the competition will contain individuals that did move their cards before graduating (and who thus are no longer green or unnoticed.)
It is an unfortunate thing that no one explains this to students, but then again, nobody does. People who do this, do them on their own. They have passion and motivation. People either have it or they don't. No gloating here, just stating the facts.
You are competing against the usual assortment of east-Europeans/Asians etc who will underbid you.
Well, don't be a cookie cutter programmer. Specialize in something... and don't wait until you graduate for doing so. I've seen students in their senior (or even junior) years aggressively going after (for example) Sun's certifications on Java web service development and architecture, blog about it and get themselves known for it. You gotta find something in which to specialize. Otherwise, you will be yet another replaceable body.
Far more than normal jobs this environment is a ruthless globalized meritocracy.
Which is not to say that trying to land some projects wouldn't be a better use of your time than doing nothing... but for most it's going to bring in peanuts.
Welcome to the real world buddy. Sometimes you have to bite the bullet and work for peanuts while climbing the ladder. I did that for years, people were mocking me for the peanuts I made in the career I chosen, but it eventually paid. Expect to be paid peanuts right out of college for a couple of years.
During that time, your pay is not your salary, but the opportunity to work in the real world and acquire valuable, specialized skills. Putting your faith on whether you make a decent salary or peanuts is a sure way to screw your nascent career.
Without going into specifics, I know of a young graduate who got an offer at a major engineering firm that produces very valuable, well-known system-level tools and applications. The company is super-hard to get in, but the name carries prestige and they know how to work software.
Well, the idiot (sorry, I can't call him anything but an idiot) declined the position because the money wasn't there (about 15% below the average for entry level developers). Big deal getting 15% less than the average. He could have learned all these wonderful things. The name of this company in his resume would have meant he actually made it through their rigorous hiring process.
Instead he opted to do entry-level, cookie cutter web stuff on a local hospital, known for their piss-poor software practices, working among a bunch of incompetent programmers... and the pay wasn't even that better anyways. I actually thing he devolved from a recent grad into yet another incompetent programmer just because of the exposure to that kind of environment.
Make your choices wisely, and don't base them just on salary. Expect to work for peanuts until you actually acquire the skills that warrant for a better pay.
Except you don't understand that there was a meritocracy based selection process which acted to dampen out the negative aspects of a free for all system.
This is pretty much what a lot of us in the U.S. do not understand, and which is at the root of the matter when it comes to personal student loan debts. Couple that with this pedestrian, quasi-ludite fear of tax-based services (ZOMG, the gubermenmnt took mah money!), and you can see why many of us fail to understand that.
We have a culture that
Believes everyone is college-material (no, we are not)
Believes success can only be measured with a college degree (what happen to valuable technical/vocational jobs?)
Shuns and vocally dismiss vocational education
Measure happiness with success as narrowly defined above
The only way to study, even for many of the truly gifted, is by taking student loans.
Put all that together and you can see how we are the way we are. We do have a measure of belief in self-reliance and independence. The idea of depending on a government-sponsored program is abhorrent. We stupidly equate government programs with hand-outs. Ergo people don't have qualms in getting in debt for getting an education.
The unfortunate side effect of this is that:
We don't have a meritocracy that dictates (filters) who can enter a 4-year college institution
We don't have a HS system that teaches valuable, practical skills or trades.
We don't provide our youth with a chance to explore a vocational trade. Then boom, they are out of HS and we expect them to work as adults. But they have no skills and nobody wants them except as hamburger flippers. The only way out is to get a 4-year college degree, even if that is not what is in their hearts and would be much better off learning a trade.
A fine merit-based, government-paid college education system coupled with equally funded vocational training and a society that appreciates and nurtures the later is what we need.
Unfortunately, that would require a cultural change of a great magnitude. It ain't gonna happen in my lifetime, I'm sure of it.
The company gets crappy code written by people who understand the syntax of the language, but has no deep understanding of algorithms or data structures. They might think they know what they're doing, but having been at that point myself once, they really don't.
This counter-argument would make sense except that it also applies to people with college degrees. I mean, geez, just look around in the software industry. Most have degrees, and yet they write crappy code, barely understand the syntax, have no deep understanding of algorithms and data structures, and don't know how little they know.
The workers end up not really knowing their craft, and have a much harder time getting their next job without a degree.
Knowing the craft is not a function of having a degree (see above). But I do agree with you that not having a degree would be an impediment for getting a job.
The only winner here is management, who makes a quick profit off bonuses for cutting costs so much, and don't need to worry about long term maintenance.
Uhhh, no, in that scenario, everyone loses, even management. There is no such thing as a quick profit when cutting costs since cost will creep up in other forms (mostly operational costs and over-extended project timelines.) It doesn't work the way you think it does.
I don't think Zoho's ideas would be practical for the entire industry (we do not a culture and infrastructure that'd permit those ideas to flourish), but Vembu is right in observing *with hard, observable data* that there is no co-relation between grades/degrees and the ability to write good code. However, I would see that as an indictment of our higher education institutions (in particular of our CS schools.)
Heh. That means I did the right choice by NOT choosing to start a computing degree this year. I'd rather keep myself to a hobbyist-linux level for now.
Jesus Christ man, do you choose your educational path solely on these type of news? Please keep yourself there and don't come into the computer industry. There is the type that doesn't know the difference between a job and a career; the later never gets cultivated thus the former devolves into sucking. We got way too many of those in the industry already.
It is not just a Chinese phenomenon mind you. You see similar things (albeit with their own unique twists due to their historical peculiarities) in the Dominican Republic (everyone wants to marry a lighter-skinned person to "improve the blood") or Mexico (ever seen a Mexican soap opera? Everyone but the maids look like I dunno, Iceland.) But for a nation like China where culture dwells so much on its national pride (to the point of being chauvinistic and xenophobic towards foreigners and their own minorities), I find this self-directed racism (which it is no matter how you cut it) quite entertaining, in a "poetic justice" kind of way.
Except I can find redeeming content on various parts of other websites that provide actual information. I don't with twitter, or facebook. Both can die in a blaze of their own fiery doom for all I care.
That says more about your tweet/follow choices than the medium. I pretty much use my twitter through my linkedin account. I strictly follow co-workers, ex co-workers, ex classmates and certain individuals in the software industry that work on subjects I care about (.i.e. Cassandra, Software Engineering.) That is, I get a pulse (sort of) on people whose areas of academic and professional interests match mine.
The advantage is that it's a filtered pulse. Not quite an RSS feed, but something a bit more taylored, filtered, brief and which somewhat reflects industrial/interest changes as seen by them. They don't (usually) tweet something unless they have briefly evaluated it as something of value to others, and I do the same. Better and far more concise than a RSS feed and with the potential of having as much depth as a blog worth reading.
If someone that works on technology cannot find one single person, just one, just a single one whose tweets might have technical value (and it doesn't have to be Grady Booch or Don Syme, just a colleage or someone heading an interesting FOSS project), then shit man, you gotta start asking why is that. If all you see in the sea of tweets is "ZOMG, a turd hangs off my ass, I look like a kangaroo, LOLCATS!", then that's you, not the medium.
Like the internet and just about any other form of communication technology, you get what you put in. There is a difference between not preferring the medium vs being predisposed at not finding anything of value in it.
Unfortunately, you can't use the number of people who "spoke up" as evidence of public outcry because there's probably just as many who didn't speak up in their agreement because it's rather "uncool" to tweet cheers to such a tweet.. I'd say it's far less acceptable to tweet something like: "Good! He deserved it!" than it is to tweet: "That's terrible."
Since you probably follow people of your same mindset, you likely saw a bias representation of the event and assume it's "public outcry." The BBC post isn't any better.
There's a bit too much sensationalism going on here, including you.
Doesn't this guy sound like every drunk imbecile who, upon finding out you write software, wants to sell you on how he's got this great idea for the next Facebook or Apple or eBay? For the percent of a percent of them who act on their delusions, they are the ones you see ridiculed on the Internet for ridiculous job postings.
These people have a conception of software development derived from 24, and have the intelligence necessary to remain that ignorant.
But do you know what's most funny? He betrays the shibboleth of every incompetent business person, and assumes the same of his audience: he thinks he is an expert in user interface design. "Write a detailed walk-through of every click." When you see any spec like that, withhold your laughter, and decline whatever they are offering.
Just worked on a project using LEAN. What we would do is let all developers deliver the same prototype. At the end we evaluate each one, pick the best and move on. In diverse projects, different developers will excel in different areas. This was one way we could quickly see who is strong in which areas making later task assignments easier - especially when you are done with prototyping and now need to add all the other functional requirements.
This sounds very similar...
No, it is not. Not by a long shot. You are missing the entire point and essence of that practice.
The author of that ill-advising article is suggesting small businesses to hire three independent programmers (none of them working in collaboration, but in competition, and thus, not necessarily acting with anyone else interest in mind), and somehow be technically capable of evaluating which is the best (and only one to pick up.)
Yeah right.
The lean approach you are suggesting entails pitting ideas and designs for later evaluation by a team of colleagues. Yes, one design gets picked up as the primary contender. But chances are that other ideas from the other designs will be picked up and integrated to the final design as well. If this integration of ideas does not take place, and the only thing being done is to take a winner to the exclusivity of the other designs (which is what will happen with what the blog author is suggesting), then you are doing something wrong. That's not engineering.
And has been doing large contracts like that for quite some time. Military, especially. Then, again, the Fed. Govt. is moving away from hiring contractors and is looking to hire permanent employees these days.
Yeah, but the Gov. usually consider competing contractors on large-scale systems (not individual programmers or individual programming efforts.) Contractors have to pitch (hopefully) sound and technically feasible proposes using specific systems (not software, systems) engineering processes. Prototypes might be involved but they are submitted by the contractors as the result of team efforts within each contracting agency.
The scope of competition between contractors vying for a gov. contract vs individual programmers competing for implementing a web site or a e-business idea is really different by several orders of magnitude. One entails systems engineering (usually mid-to-large scale integration of electrical, computer, software and many times mechanical engineering). The other one will most likely reduce itself to a simple hackery contest.
It's looking mighty bleak for cubicles too. Unlike mobile pieces of paper which can be written on pressed against the wall while standing in the hallway, a cubicle just takes up room and chains people to one place where their managers can easily sneak up on them.
Projections indicate that by 2015, just 18% of white collar workers will have cubicles while the others will lurch aimlessly about the building, filling TPS forms while sitting on the floor of the lobby using each others' backs for support.
Replace that with "where managers can do their supervisory job" and it will be more accurate.
This, friends, is why we shouldn't get our software developed in a third-world country like India. They can't even consistently power the computers they're using to fuck up our software.
Our software was already fucked up before the "Event" (aka "offshoring") - the trend some of our own incompetent software force dreads. I would agree with your sentiment so long as there is agreement this country has been equally incompetent in writing software (15 years of watching *and fixing* some of the most atrocious code *here*, even in supposedly *good* development shops tells me so.)
Otherwise, your post reeks like a steaming pile of crap dropped from a position of false technology&quality confidence.
And nowhere did GP mentioned impaired motor skills.
And wtf does neurotoxicity means and does to you? Newsflash: Neurotoxicity -> motor impairment.
Mentions lymphoma, chemo, and "neurotoxicity", and how exercise helped reduce the after effects.
^^ See above.
Are we even reading the same thread?
I'm actually reading it (^^ see above wrt neurotoxicity.) Apparently you did not. Eyeballing =/= reading. I'm sure they teach that in some 1000-level course in college.
If someone does tai chi, and it makes them feel better, then that's fucking fantastic. However, some of what GP said could be seen as mildly hypocritical.
Only if you fail at reading comprehension and/or don't know what tai chi and neurotoxicity are. Again, all of this speaks more about you (wrt to your persona or reading skills) than about the poster.
What's interesting is how you extol the virtues of tai chi as a form of detox, and then go on to talk about "crazy biopirates" in the same breath.
What's interesting is how you are devious enough in trying to find a logical flaw where there is none. Tai chi, Yoga and other form of slow-mo exercises are good for dealing with impaired motor skills. That you assumed he was talking about esoteric hocus pocus says more about yourself than the poster.
Sorry, but apparently you don’t know CSS very well. It is perfectly suited to layout print documents. Especially CSS 3.
Perfectly suited? Specially CSS 3? That would presume that capability was "perfectly" implemented in previous versions of CSS and browsers of the time would render them for printing as intended.
In my experience, the easiest way to get a consistent and stable printing experience is by generating PDF. I have yet to have stability problems if this is done properly. As you're working with Ruby on Rails, using Prawn and Prawnto might be useful. However, if you absolutely positively must NOT use PDF for printing, then this probably won't help you.
^^^ This. The only other solution is to provide "print versions" of html output. That's the standard way to do for most things.
I'm amazed when people try to use rich web apps for precise printing. Besides, what could possibly drive one to write a web app that does not does not display well on both IE and Firefox? I could understand accidental design decisions, but to meticulous and continuously implement requirements that makes it impossible to render the web ui on the two major browsers, it's like WTF?
Either the requirements are invalid (in the sense that they are technically unattainable); there is a requirement/analysis mismatch; or (if the requirements are truly valid), a web ui is the wrong solution for them.
In the modern days of cheap disk, big disk caches, and large ram, proper modelling is more important than strict normalization.
Back when those books were written, disk was expensive and not cached, RAM was very expensive, and machines had terrible I/O bottlenecks.. Normalization is critical under these circumstances for maximum performance.
Today, these normalization techniques will increase performance but not as much as you might think. Really it is best to concentrate efforts elsewhere, especially for a one-person shop.
All of that normalization work requires coding changes and it will undoubtedly make the code much less readable and maintainable.
<facepalm/> Performance? I wasn't even thinking of that as a reason to understand normalization. I'm thinking data integrity at least in the conceptual model.
The value of normalization is not so much in performance but in considering and planning what a decent data/information model should look like.
You normalize your *model*, your blueprint, and de-normalize as you see fit with the resources available. The actual tables and tablespaces might not (will not) look 1-to-1 to the model, but you still have a model of information.
And when you do deviate from your model, you do so consciously; you know exactly where you are deviating from the model; and you know why. Without a model, or worse, with a badly crapped model, you don't know what you have.
It is good to exploit the hardware capabilities we have now, BUT without at least having a conceptual understanding of normalization, this is almost always a sure way to get into a corner where the only option is to throw more hardware to the problem.
The distinction here now is that people deploy hardware strategically, but because they have no choice: shit won't run without. Hardware is cheap. Operational costs are not. Understanding normalization is to (relational) data modeling and building what modularity and structure are to OO design (and software building in general.)
Normalization is not about performance (even if its immediate effects in the past were performance related.) It is about reduction of unnecessary data redundancy that compromises data integrity.
Not performance. Data Integrity.
Even with the hardware that we have today, I still have to see a well-designed model that does not in great part enforce the 2nd normal form and most attributes of 1st normal form (in particular about avoiding duplication of rows and maintaining regular columns.)
"I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications"
Translation - I'm a one man IT department
Bud, start with the truth. A "Director of IT" does not write code. You could have equally said you were CIO, just as truthful.
That's an stupid, novice assumption. I've seen smaller operations with an IT director having to get down and dirty because of downsizing or lack of resources. Coding is done on top of the functions of IT managements.
So before you let your projecting ego go about correcting people's titles without knowing the specific circumstances, maybe you can try something more useful, like, oh I dunno, maybe answer the question and suggest a good relational modeling book. Crazy, I know!
"I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications. We use a variety of technology at our office, the majority of which rely on MS-SQL and MySQL databases. I am familiar with tables, SQL queries, and have a general understanding of how the SQL databases work. What I'm looking for is a good book, particularly a newer book, to explain general database design techniques, and maybe explain some relational tables. We have some tables that have million of rows, and I'd like to know the best method of designing these tables."
There is more to RDBMS than tables and SQL. Your developers should understand data normalization first and foremost, at least 1NF, 2NF and 3NF.
http://en.wikipedia.org/wiki/Database_normalization
http://en.wikipedia.org/wiki/First_normal_form
http://en.wikipedia.org/wiki/Second_normal_form
http://en.wikipedia.org/wiki/Third_normal_form
The examples in the URLs above should suffice for getting a general understanding on how to start with a relational model. As for books, I'd suggest these:
http://www.amazon.com/Relational-Database-Design-Implementation-Third/dp/0123747309/ref=sr_1_4?ie=UTF8&s=books&qid=1278630155&sr=8-4
http://www.amazon.com/Information-Modeling-Relational-Databases-Management/dp/0123735688/ref=sr_1_3?ie=UTF8&s=books&qid=1278630306&sr=1-3
I would also suggest C.J. Date's "Database in Depth: Relational Theory for Practitioners", but I can imagine the local penny arcade l33t-hax0r-wannabe crowd going batshit crazy about studying relational algebra and relational database theory in depth. To each his own. Most problems that arise in poorly designed relational database models arise from not understanding data normalization
:
The young and bright are trying to get the fuck out of China? Why would anyone (other than a corp) go there for a job, specially an engineer with a good education and higher-than-average IQ?
Oh oh oh. Let me try it too... hmmmm, err... ok...here it goes... what would Jesus do???
With this, our transformation will be complete. We will become a planet of fatties, like in Wall-E. It sounds like a joke, but really, we are getting there.
The result? A 24-user study showed that reading from a printed book—versus an e-book on any of the three tested devices—was a faster experience to a significant degree.
The user study group is too small to be statistically significant. It can't possibly "show", "demonstrate", much less "prove" what TFA claims it does. At best, the article should read that findings of this user-study group suggest that reading from a printed book versus an e-book might be a faster experience under certain conditions... further research is needed.
But then again, it's PCMag for Xenu's sake.
Having said that, from my own experience using a Kindle 2 for both technical and leisure books, a printed book is a much faster read for me. I stopped buying e-books because of this. Any other new purchases have been in the form of old/used printed books (much cheaper and much more efficient for reading.)
I can only conjecture that this is because of ergonomics and screen size. I can see much more text at once in a printed book than with a Kindle 2. I can scan for key phrases before immersing myself in a page faster. I can backtrack pages faster (to reinforce what I've read so far.) Flipping through physical pages seem faster and more efficient than scrolling through screens (which is also why reading from a book is more efficient than reading from a scroll or concertina-styled folded document.). I can bend the tip of an arbitrary page (for bookmarking) and go back to it faster than trying to bookmark and navigate to it in a Kindle (can't speculate about the iPad, though.).
Unless there is a breakthrough in HCI, reading from a physical book will most likely be more efficient than using the e-reading technology we have today.
"we are bound by privacy laws to keep this information out of the hands of third parties"
outsourcing to India does not involve a third party? sheesh
No. In a case of two parties X and Y, a contractor that
acts as an extension of X. It is not thus considered a third party.
It was being presented as an option for those people now unemployed. Changing your life retroactively is hard.
It is hard, but it tend to be mandatory and unavoidable. Not to gloat, but this where my perspective comes from:
I came to the US as an accountant with no English skills whatsoever, and for a while my work was behind a McDonald's bin (want fries with that?) and later driving forklifts. Took me two years to learn English at the college level, and 6 more to get a B.S. degree in Computer Science (studying almost full-time while working full-time.) During the dot-com crash, I got unemployed twice and had to re-invent myself rather quickly (jumping from software development to IT operations.)
Before I got my current job, I became unemployed... six days before my wife gave birth to our baby.
Was unemployed with a newborn baby (and no medical insurance) for four months. Had to dip into my savings to take seminars (Groovy and Spring Framework), buy books (.ie. Groovy, Nagios), getting Sun certified, and trying to scratch a living with a pal of mine as consultants... giving some of our services for free just to get visibility.
My pal and I were brainstorming like, wtf we do now, but in a calm way. We were planning to write a book and start a podcast (maybe we will), but we both got steady, interesting jobs, and that's how it is for now.
The difference between the times I got unemployed during the dot-com bubble and this time is that I was prepared. I was preparing myself for years for this type of eventuality which is unavoidable. I'm sure in 5-10 years from now I will be unemployed and in need to scramble.
The sooner a software person accepts this as part of the career we have chosen (and prepares himself accordingly, the better.) I know people that have gone through worse, and unfortunately, some have not coped well. Fortunes and misfortunes in software are cyclic, and you can't let them caught you with your pants down.
Just curious, that company which paid 15% below normal entry level pay ... do you know any other recent hires?
The person I was referring to was the last one, but I have friends and ex-coworkers that work at that company as either employees or consultants (I tried for years to get in to no avail, oh well.) They do seem to pay lower than average to new grads (unless they are exceptional gifted). But the exposure that you get to software and hardware technologies and software development processes, those are things that you take with you for life.
How many hours of unpaid overtime are they expected to perform on average?
On average, probably 5. 10 on very development phases. That's the average in decent companies. BTW, gaming software companies are atrocious sweat shops.
Whenever I've worked as a contractor, I've never worked less than 50 hours a week. 60-hour weeks were not uncommon. I would get paid overtime (oh man, OT is so good), but I would be tired as hell, and I don't get benefits like employees do. So, some of my OT gains would go down the drain with out-of-pocket expenses like medical and dental.
On the other hand, whenever I've worked as an employee, I've never worked beyond 45 hours during normal weekends. I am expected, however, to work as long as needed to get things done when it gets busy. For example, last year I worked 80-90 hours on a three-week streak during an important integration phase. A couple of weeks I've worked 50-55. But most of the weeks have been 45. I could stop and leave home with just 40, but then, my job is not just a paycheck mill. It is my career, and I get out what I put in.
It is important to
A job gets you the money, but it is not your career. The moment you treat your job as the only expression of your career and go home at 5, that's it. Yo
So ... unless you are the previous mentioned randian superman and can go to topcoder and own the place to put yourself into view how is a fresh student supposed to make himself employable for decent paying freelance work?
You start before you even graduate. You look for internships, you look for jobs inside school, you network with professors who might know people in the industry, you network with companies that fund projects at your university, you attend job fairs, you give a helping hand to open source projects. In other words, you make yourself visible before you even graduate.
If you wait till you graduate, guess what? You will be green, you will be unnoticed and you will be fighting the competition. And what is worse, the competition will contain individuals that did move their cards before graduating (and who thus are no longer green or unnoticed.)
It is an unfortunate thing that no one explains this to students, but then again, nobody does. People who do this, do them on their own. They have passion and motivation. People either have it or they don't. No gloating here, just stating the facts.
You are competing against the usual assortment of east-Europeans/Asians etc who will underbid you.
Well, don't be a cookie cutter programmer. Specialize in something... and don't wait until you graduate for doing so. I've seen students in their senior (or even junior) years aggressively going after (for example) Sun's certifications on Java web service development and architecture, blog about it and get themselves known for it. You gotta find something in which to specialize. Otherwise, you will be yet another replaceable body.
Far more than normal jobs this environment is a ruthless globalized meritocracy.
Which is not to say that trying to land some projects wouldn't be a better use of your time than doing nothing ... but for most it's going to bring in peanuts.
Welcome to the real world buddy. Sometimes you have to bite the bullet and work for peanuts while climbing the ladder. I did that for years, people were mocking me for the peanuts I made in the career I chosen, but it eventually paid. Expect to be paid peanuts right out of college for a couple of years.
During that time, your pay is not your salary, but the opportunity to work in the real world and acquire valuable, specialized skills. Putting your faith on whether you make a decent salary or peanuts is a sure way to screw your nascent career.
Without going into specifics, I know of a young graduate who got an offer at a major engineering firm that produces very valuable, well-known system-level tools and applications. The company is super-hard to get in, but the name carries prestige and they know how to work software.
Well, the idiot (sorry, I can't call him anything but an idiot) declined the position because the money wasn't there (about 15% below the average for entry level developers). Big deal getting 15% less than the average. He could have learned all these wonderful things. The name of this company in his resume would have meant he actually made it through their rigorous hiring process.
Instead he opted to do entry-level, cookie cutter web stuff on a local hospital, known for their piss-poor software practices, working among a bunch of incompetent programmers... and the pay wasn't even that better anyways. I actually thing he devolved from a recent grad into yet another incompetent programmer just because of the exposure to that kind of environment.
Make your choices wisely, and don't base them just on salary. Expect to work for peanuts until you actually acquire the skills that warrant for a better pay.
Except you don't understand that there was a meritocracy based selection process which acted to dampen out the negative aspects of a free for all system.
This is pretty much what a lot of us in the U.S. do not understand, and which is at the root of the matter when it comes to personal student loan debts. Couple that with this pedestrian, quasi-ludite fear of tax-based services (ZOMG, the gubermenmnt took mah money!), and you can see why many of us fail to understand that.
We have a culture that
Put all that together and you can see how we are the way we are. We do have a measure of belief in self-reliance and independence. The idea of depending on a government-sponsored program is abhorrent. We stupidly equate government programs with hand-outs. Ergo people don't have qualms in getting in debt for getting an education.
The unfortunate side effect of this is that:
We don't provide our youth with a chance to explore a vocational trade. Then boom, they are out of HS and we expect them to work as adults. But they have no skills and nobody wants them except as hamburger flippers. The only way out is to get a 4-year college degree, even if that is not what is in their hearts and would be much better off learning a trade.
A fine merit-based, government-paid college education system coupled with equally funded vocational training and a society that appreciates and nurtures the later is what we need.
Unfortunately, that would require a cultural change of a great magnitude. It ain't gonna happen in my lifetime, I'm sure of it.
The company gets crappy code written by people who understand the syntax of the language, but has no deep understanding of algorithms or data structures. They might think they know what they're doing, but having been at that point myself once, they really don't.
This counter-argument would make sense except that it also applies to people with college degrees. I mean, geez, just look around in the software industry. Most have degrees, and yet they write crappy code, barely understand the syntax, have no deep understanding of algorithms and data structures, and don't know how little they know.
The workers end up not really knowing their craft, and have a much harder time getting their next job without a degree.
Knowing the craft is not a function of having a degree (see above). But I do agree with you that not having a degree would be an impediment for getting a job.
The only winner here is management, who makes a quick profit off bonuses for cutting costs so much, and don't need to worry about long term maintenance.
Uhhh, no, in that scenario, everyone loses, even management. There is no such thing as a quick profit when cutting costs since cost will creep up in other forms (mostly operational costs and over-extended project timelines.) It doesn't work the way you think it does.
I don't think Zoho's ideas would be practical for the entire industry (we do not a culture and infrastructure that'd permit those ideas to flourish), but Vembu is right in observing *with hard, observable data* that there is no co-relation between grades/degrees and the ability to write good code. However, I would see that as an indictment of our higher education institutions (in particular of our CS schools.)
Heh. That means I did the right choice by NOT choosing to start a computing degree this year. I'd rather keep myself to a hobbyist-linux level for now.
Jesus Christ man, do you choose your educational path solely on these type of news? Please keep yourself there and don't come into the computer industry. There is the type that doesn't know the difference between a job and a career; the later never gets cultivated thus the former devolves into sucking. We got way too many of those in the industry already.
It is not just a Chinese phenomenon mind you. You see similar things (albeit with their own unique twists due to their historical peculiarities) in the Dominican Republic (everyone wants to marry a lighter-skinned person to "improve the blood") or Mexico (ever seen a Mexican soap opera? Everyone but the maids look like I dunno, Iceland.) But for a nation like China where culture dwells so much on its national pride (to the point of being chauvinistic and xenophobic towards foreigners and their own minorities), I find this self-directed racism (which it is no matter how you cut it) quite entertaining, in a "poetic justice" kind of way.
Except I can find redeeming content on various parts of other websites that provide actual information. I don't with twitter, or facebook. Both can die in a blaze of their own fiery doom for all I care.
That says more about your tweet/follow choices than the medium. I pretty much use my twitter through my linkedin account. I strictly follow co-workers, ex co-workers, ex classmates and certain individuals in the software industry that work on subjects I care about (.i.e. Cassandra, Software Engineering.) That is, I get a pulse (sort of) on people whose areas of academic and professional interests match mine.
The advantage is that it's a filtered pulse. Not quite an RSS feed, but something a bit more taylored, filtered, brief and which somewhat reflects industrial/interest changes as seen by them. They don't (usually) tweet something unless they have briefly evaluated it as something of value to others, and I do the same. Better and far more concise than a RSS feed and with the potential of having as much depth as a blog worth reading.
If someone that works on technology cannot find one single person, just one, just a single one whose tweets might have technical value (and it doesn't have to be Grady Booch or Don Syme, just a colleage or someone heading an interesting FOSS project), then shit man, you gotta start asking why is that. If all you see in the sea of tweets is "ZOMG, a turd hangs off my ass, I look like a kangaroo, LOLCATS!", then that's you, not the medium.
Like the internet and just about any other form of communication technology, you get what you put in. There is a difference between not preferring the medium vs being predisposed at not finding anything of value in it.
Unfortunately, you can't use the number of people who "spoke up" as evidence of public outcry because there's probably just as many who didn't speak up in their agreement because it's rather "uncool" to tweet cheers to such a tweet.. I'd say it's far less acceptable to tweet something like: "Good! He deserved it!" than it is to tweet: "That's terrible."
Since you probably follow people of your same mindset, you likely saw a bias representation of the event and assume it's "public outcry." The BBC post isn't any better.
There's a bit too much sensationalism going on here, including you.
This is tantamount to proving a negative.
Doesn't this guy sound like every drunk imbecile who, upon finding out you write software, wants to sell you on how he's got this great idea for the next Facebook or Apple or eBay? For the percent of a percent of them who act on their delusions, they are the ones you see ridiculed on the Internet for ridiculous job postings.
These people have a conception of software development derived from 24, and have the intelligence necessary to remain that ignorant.
But do you know what's most funny? He betrays the shibboleth of every incompetent business person, and assumes the same of his audience: he thinks he is an expert in user interface design. "Write a detailed walk-through of every click." When you see any spec like that, withhold your laughter, and decline whatever they are offering.
Yep, pretty much.
Just worked on a project using LEAN. What we would do is let all developers deliver the same prototype. At the end we evaluate each one, pick the best and move on. In diverse projects, different developers will excel in different areas. This was one way we could quickly see who is strong in which areas making later task assignments easier - especially when you are done with prototyping and now need to add all the other functional requirements. This sounds very similar...
No, it is not. Not by a long shot. You are missing the entire point and essence of that practice.
The author of that ill-advising article is suggesting small businesses to hire three independent programmers (none of them working in collaboration, but in competition, and thus, not necessarily acting with anyone else interest in mind), and somehow be technically capable of evaluating which is the best (and only one to pick up.)
Yeah right.
The lean approach you are suggesting entails pitting ideas and designs for later evaluation by a team of colleagues. Yes, one design gets picked up as the primary contender. But chances are that other ideas from the other designs will be picked up and integrated to the final design as well. If this integration of ideas does not take place, and the only thing being done is to take a winner to the exclusivity of the other designs (which is what will happen with what the blog author is suggesting), then you are doing something wrong. That's not engineering.
And has been doing large contracts like that for quite some time. Military, especially. Then, again, the Fed. Govt. is moving away from hiring contractors and is looking to hire permanent employees these days.
Yeah, but the Gov. usually consider competing contractors on large-scale systems (not individual programmers or individual programming efforts.) Contractors have to pitch (hopefully) sound and technically feasible proposes using specific systems (not software, systems) engineering processes. Prototypes might be involved but they are submitted by the contractors as the result of team efforts within each contracting agency.
The scope of competition between contractors vying for a gov. contract vs individual programmers competing for implementing a web site or a e-business idea is really different by several orders of magnitude. One entails systems engineering (usually mid-to-large scale integration of electrical, computer, software and many times mechanical engineering). The other one will most likely reduce itself to a simple hackery contest.
It's looking mighty bleak for cubicles too. Unlike mobile pieces of paper which can be written on pressed against the wall while standing in the hallway, a cubicle just takes up room and chains people to one place where their managers can easily sneak up on them.
Projections indicate that by 2015, just 18% of white collar workers will have cubicles while the others will lurch aimlessly about the building, filling TPS forms while sitting on the floor of the lobby using each others' backs for support.
Replace that with "where managers can do their supervisory job" and it will be more accurate.
This, friends, is why we shouldn't get our software developed in a third-world country like India. They can't even consistently power the computers they're using to fuck up our software.
Our software was already fucked up before the "Event" (aka "offshoring") - the trend some of our own incompetent software force dreads. I would agree with your sentiment so long as there is agreement this country has been equally incompetent in writing software (15 years of watching *and fixing* some of the most atrocious code *here*, even in supposedly *good* development shops tells me so.)
Otherwise, your post reeks like a steaming pile of crap dropped from a position of false technology&quality confidence.
And nowhere did GP mentioned impaired motor skills.
And wtf does neurotoxicity means and does to you? Newsflash: Neurotoxicity -> motor impairment.
Mentions lymphoma, chemo, and "neurotoxicity", and how exercise helped reduce the after effects.
^^ See above.
Are we even reading the same thread?
I'm actually reading it (^^ see above wrt neurotoxicity.) Apparently you did not. Eyeballing =/= reading. I'm sure they teach that in some 1000-level course in college.
If someone does tai chi, and it makes them feel better, then that's fucking fantastic. However, some of what GP said could be seen as mildly hypocritical.
Only if you fail at reading comprehension and/or don't know what tai chi and neurotoxicity are. Again, all of this speaks more about you (wrt to your persona or reading skills) than about the poster.
What's interesting is how you extol the virtues of tai chi as a form of detox, and then go on to talk about "crazy biopirates" in the same breath.
What's interesting is how you are devious enough in trying to find a logical flaw where there is none. Tai chi, Yoga and other form of slow-mo exercises are good for dealing with impaired motor skills. That you assumed he was talking about esoteric hocus pocus says more about yourself than the poster.
Sorry, but apparently you don’t know CSS very well. It is perfectly suited to layout print documents. Especially CSS 3.
Perfectly suited? Specially CSS 3? That would presume that capability was "perfectly" implemented in previous versions of CSS and browsers of the time would render them for printing as intended.
In my experience, the easiest way to get a consistent and stable printing experience is by generating PDF. I have yet to have stability problems if this is done properly. As you're working with Ruby on Rails, using Prawn and Prawnto might be useful. However, if you absolutely positively must NOT use PDF for printing, then this probably won't help you.
^^^ This. The only other solution is to provide "print versions" of html output. That's the standard way to do for most things.
I'm amazed when people try to use rich web apps for precise printing. Besides, what could possibly drive one to write a web app that does not does not display well on both IE and Firefox? I could understand accidental design decisions, but to meticulous and continuously implement requirements that makes it impossible to render the web ui on the two major browsers, it's like WTF?
Either the requirements are invalid (in the sense that they are technically unattainable); there is a requirement/analysis mismatch; or (if the requirements are truly valid), a web ui is the wrong solution for them.