No one likes dealing with legacy code. Any given developer has had to sit down and wade through code that's some combination of poorly designed, undocumented, non-functional, over-engineered, slow, tedious, failure prone and in all other ways apparently designed only to make your life some sort of hell of bleeding eyeballs and migraines - and that's just the code they wrote 3 months ago. Other people's code is worse.
Having written code for nearly 2 decades now, what I can tell you is this: It doesn't matter much. We all want to live in a land of beautiful code - if we didn't, we wouldn't get so upset when we see horrible code. However, the end game is: does it work? Yes, you want to wipe it out and start from scratch, and yes, it'll be a joy to work with after that (until the next guy shows up), and yes, it takes forever to make a change, and yes there's no unit tests, and yes it's loaded with bad hacks - but for a business the real questions are "does it work?".
If the answer is 'yes', you're fighting an uphill battle to correct it. If you are lucky enough to be able to put a cost on it - time or dollars - that could be saved by refactoring, then perhaps you have the ammo required, but if you can't give a realistic metrics-backed analysis of it, then there's no business need to fix it.
Think about that for a bit: The need to fix it is not based on how broken you perceive it to be, but on entirely separate measures of no worth to you that require discrete and specific values.
(Besides, if you spent that time analyzing, now you know the system pretty well, so you're the new expert!)
More realistically, there's always going to be a next, new thing that needs to be built. If you spend all your time fixing problems that aren't 'too' broken, you'll miss all the chances you'll have to work on the new stuff, where you don't have to work on legacy code at all!
So the advice to you is what all good programmers should hate to hear, but know in their hearts to be true: Spend as little effort on it as possible, and move on, until it becomes a large enough problem that it requires attention, not just deserves it.
Oh - and if you have a good dev manager, ignore all that. Tell him it needs to be refactored, let him work out the priorities and schedules, and you're set. Also, while you're visiting Fantasy Island, tell Ricardo Montalban that he was awesome in Star Trek II.
In the US, free speech means you can say anything you want, except very certain things, under certain situations (like "Fire!" or "There's a bomb in the school," or "Why yes, I am a police officer."). In effect, it's using blacklisting to target specific things. Without explicit ruling to the contrary, you are free to speak what you'd like - thus, "Free Speech".
In the entire rest of the world, speech is rigidly controlled. The default assumption is you are not allowed to say anything at all, unless the government has specifically allowed it. For example, you're not allowed to talk badly about the king, or government, or public workers, or even say some things that might indicate racism or bigotry - this is true even in western governments (check out the laws in England, France, Germany, for example). In some cases, you're not allowed to say something that would have a negative impact on someone's reputation, even if it's provable truth! They don't always prosecute, but they almost always have the option to do so. So, they're denying all by default, and using a white list to allow certain 'free' statements. In these cases, "free speech" refers in part to the few things you're explicitly allowed to discuss, and to the socially protected 'right' to not be offended by random speech. T
The entire rest of the world doesn't get the US's interpretation, and the US, by and large, doesn't get the rest of the world.
So when the rest of the world sees someone producing a muslim hate film, and we say, "well, it's legal," to them, that's the same as saying, "Our government went out of it's way to explicitly, specifically endorse this message." They don't understand the difference, or even the value of the US's version. There's all sorts of funny quotes from world leaders visiting the US and asking the president or other high up why we allow protestors in front of the white house/etc, when we could just have them locked up and/or disappeared.
"Apple, Adobe, Google, HP, Microsoft and many others have joined forces and launched a new resource – the Web Platform in a bid to create a 'definitive resource' for all open Web technologies"
That's awesome, because without explicit corporate collusion, we'd never have... a... what? a search engine for referencing 'open' technologies?
Not that they haven't contributed (some more than others) to open source projects, but... why exactly do we need the corporate technical powerhouses to create a definitive resource on open technologies? What will they provide by corporate committee that open source isn't providing now?... or is this one of those redefinitions of 'open' that hasn't got anything to do with open source?
Crumbs - I can't find the link to the studies but here's the summary: When american women adopt the same value systems as american men they tend to outperform men. More specifically, when they make money, work, and recognition their top motivations, they excel in pretty much every supposedly man-dominated field; education, engineering, business, etc. Especially when it comes to small business owners.
So why aren't they running the world? Apparently most women have a different priority order, and things like family, time flexibility, vacation scheduling, personal happiness (one area where women absolutely CRUSH men), and one of the biggest factors: having children. There was an examination of women in business, especially CEO's and VP's, and what they showed was that when qualifications were identical, women made more and generally had better success growing the company/raising stock prices/whatever it was they were tasked with. However, they made up only a very small percent of the CEOs. Why? Because many of them chose to have kids, and didn't have the same qualifications, like an unbroken 40 year long track record of management, as they took time off, or made their career second to being a mother.
In some ways, the gender bias is in the eye of the beholder; the real issue is your priorities and how you work to achieve them. Granted, due to widespread generalization (which may be accurate), women have been sterotyped as less dedicated to a career, and end up earning less, starting for less, achieving less, making the men-stereotype priorities higher hurdles.
It would be interesting to rank people based on how well they've achieved their priorities. Not that it excuses deliberate or accidental sexism, but it may result in questioning equal opportunity regulations. If you achieve all your goals in life, and having gainful employment is not one of those goals, artificially privileging you to get it over vs. someone who prioritizes it but doesn't achieve it - or other goals - on the basis of gender or race seems a bit.. unfairly discriminatory.
The summary of the above link brings up an interesting blind spot: the rest of the world does not have free speech, not in any way. I'm not just talking about countries where you could be executed for praying to the wrong god. I'm talking about 'Western Nations,' like the UK and members of the EU. For example in France - where many of our ideals of personal liberty spring from - you can be jailed for 6 months (and fined) for being seen as insulting the country, flag, anthem, or any public worker. Imagine not being able to speak negatively about a politician or the police, on threat of jail time. This is standard almost everywhere else in the world.
The US is one of a small handful that really places freedom of speech at the top of the list, and doesn't just pay lip service to it.
I would summarize it like this: Socialism promotes the welfare of society over that of the individual, and rather than protecting 'the right to not be offended,' they simply focus on the improvement of society as a whole. It just looks like 'the right to not be offended' on the individual level. The most socialist your country gets, the more likely they are to trade the privileges of the individual for the betterment of society, and free speech is one of those.
So, they may see racism as bad (which it is), and so they outlaw it in both deed AND word. They may consider Nazis to be awful, and so they forbid anyone to claim to be a Nazi, or even learn about them, or listen to any of their speeches - just in case they might accidentally like it: better to bury it all and pretend it never happened.
It's also not unrelated that most of these laws were birthed from strongly fascist or oppressive monarchy governments. They had different motivations, but they also did not value personal liberty. At extremes, there's little difference between strong socialism or strong fascism - they use the same means and have the same goals.
I can't claim to be an industrial psychologist, but I have worked with them and written much of the software that does some of the predictive analysis that was mentioned. I can claim to have a lot of experience with how these tests work.
I have to disagree with you right off the bat here: Employment screening tests are not a sham, and there are many good things about them.
- Has value, but primarily to the employer
Some of the predictive factors that show immediate value are used to best utilize an employee: whether they prefer working solo or in a group, whether money or recognition motivates them, if they are highly detail oriented, or whether or not they'll rock the boat (which could be a good thing! - like suggesting a more efficient process to replace an old, tried, and true one). This helps a manager provide a working environment that best allows an individual to excel, or to position people in groups so any perceived faults are covered with an overlap.
What also ends up being really important in these tests - to employers at least - is whether or not these people tend to lie, steal, or cheat, to abuse drugs or alchol, or may simply be reliable or not. Yes, if you crunch the numbers, you can take a good guess and produce a weighted prediction about this just from a personality profile.
When you're hiring for Walmart or Home Depot or some other vast chain with a large population of unskilled workers, weeding out the likely-to-be-bad ones shows a real financial impact, tens or hundreds of millions of dollars a year, statistically proven. Though the damages may not reach into the millions, smaller business owners are even more impacted by this.
- Must be applied properly
Some businesses, like Keller Williams Reality, do not apply their personality profiling properly. They use a Jungian based personality matrix - simplified slightly - to pigeonhole an applicant. If you do not fit the hole specified for the job, you don't get the job. They even make a big deal about how everyone applying for every position is required to do this, even if it's the next CEO (which was probably a lie, but c'mon, these folks are salepeople at heart). However, they decide in advance which single personality a given job requires, and if you don't match it exactly, you're out. So if you apply for a programmer position, and you're an extrovert, you won't get the job. If you're creative - you don't get the job. You have to correspond to THEIR sterotype.
Obviously this is wrong.
As the parent poster can probably tell you, the proper way to do it is to have your current employees take a test, sort by role, and attempt to find people who are close to the personality traits that your star individuals have in common. You'll also have to update this over time as market or work environments change.
This works because we're producing sample data, isolating trends, and using it to predict success based on commonalities. It's simple statistics. This is how we can 'catch' drug abusers and thieves before the fact: using the personality profiling tests data from criminals, we can find people who match their common traits. It may sound harsh, but the false positive outliers are exactly that - outliers. The vast majority is predictable to a reasonable degree.
Application of this information is a standard practice in risk analysis. If you're hiring for a casino dealer, and your applicant shows up as being 80-90 out of 100 match with career criminals, maybe consider a bit more carefully or do a full background check, or maybe just don't hire them - find a less risky applicant.
- Can be gamed
Most of these tests are straightforward. There's rarely any tricks or clever 'gotchas'. This isn't like a police interrogation where they're trying to trap you. They're personality profiles, and they don't have 'correct answers'.
However, if you can successfully role take, you can determine the outcome without much guile. This is hard for many people to do, grante
I took Prof. Thrun's & Prof. Norvig's course, "Introduction to Artificial Intelligence" when it was first offered. I'm pretty big on self-study, and I rely on instructors to provide efficient direction (a syllabus, specific reading material), a mechanism for self-evaluation (exercises, means to validate results, etc), and finally, a source of answers when I have questions. In a perfect world, online courses seem to be a good fit for my personal needs, so I dove in with relish.
However, I found some of the same general problems the blog post referenced;
- the content (speech, writing) was often sloppy and confusing, it did feel unplanned.
- concepts that were introduced were not explained in their entirety.
- the vocabulary used to describe a new idea was fairly mutable, or inconsistent.
- there were often instances requiring sizable leaps of intuition combined with formal mathematical knowledge to complete exercises which had previously only been provided in a "fill in the numbers" format in previous examples.
In addition, I found no clear mechanisms for self-evaluation. We had to wait a week just to see the results of previous tests, etc. I also thought the quiz interface was childish and poorly done, but that's mostly just a look and feel issue.
I also took Prof. Ng's "Machine Learning," class at the same time. In contrast, I found that Prof. Ng provided:
- Writing was clear, dialog was polished, vocabulary was explicit.
- Concepts were introduced, explained (in both a practical and intuition-focused form), demonstrated and expanded upon.
- Exercises were given to students in the form of example data, algorithms to implement, and with additional suggestions on how to 'play' with them to produce different results and gain an intuitive grasp of the information. Unlimited resubmission of exercises with an automated grading system made evaluation of different mechanisms simple.
- Quizes were more polished.
I felt like I got a lot out of his class, well more than the AI class.
I feel that the difference between the two was pretty obvious. Prof. Thrun was teaching as if he had a live audience in front of him, and did not modify his instruction style for the lack of interactivity. On the other hand, Prof. Ng taught in a way that minimized the deficiencies of video learning, while leveraging the benefits of online, automated instruction.
In conclusion, I don't think the AngryMath blogger is correct in the assumption that live, in-person instruction is needed. In fact, I'd say the opposite was shown: the closer you get to the style of live instruction, the worse it seems to be to me, and more so when it's online. Of course, I have specific needs from education, and others may prefer different styles.
I'm a big believer in the idea that social interactions are more important than job skills when it comes to getting or retaining a job. Just think : how many people have you worked with that seem to have no job skills whatsoever, but they often thrive in an office, undeservedly becoming manager when they don't know how to spell IBM?
Those people are either lucky, or more likely, they know how to manage the social game. With that in mind, here's my advice:
1) Learn to play office politics.
I'm not talking about some sort of 80's and 90's era sabotage-the-other-guy or beat-them-with-a-better-pitch schtick. Just realize that the ability to socialize in a business setting is a valuable job skill. Make sure you know what's going on in the office, and at worst, offer to pitch in where you can, or act to perform introductions between those that need and those who can provide.
This ability is especially rare among stereotype IT/developer types, so when it's recognized, it's usually well rewarded. If you're having problems in this area, I recommend joining a toastmasters group if simple social interaction is your issue, or asking a manager to mentor you... which leads to my next item.
2) Keep climbing up.
The standard business operates not based on income, but the rate at which their income is fluctuating. If it's not going forward, then there's something that needs to be 'fixed' - at least from a stock, investor, board standpoint. This feeling trickles down though. If you're happy doing the same job for years, then either there's something wrong with you, or the job - according to some managerial viewpoints. That's why they ask you stupid questions like, "Where do you see yourself in 5 years," in your interview/review. They're just checking that you're normal, according to their standards.
The easiest path up is management. Ask to be mentored, indicate that you want to move into management. Leverage your technical seniority. You can go the project management route since there's an easy certification for that, if you're into certifications (some companies are, some aren't).
Alternatively, court the architect position. If it doesn't exist at your company, request that it be created for you. You don't need more money (though you shouldn't ~say~ that), in fact, you might not even need new responsibilities. Just do it for the title. It's important. Maybe not to you, but when they make decisions at the top level, they know they can afford to get rid of developers - even a senior developer or two - but an 'architect' sounds invaluable.
3) Take ownership
You've spent significant time at your company, and you have a good idea of the technical domain. You must have a million ideas about what can be done, and what can be done better. Find something you can care about and make it happen. That means drawing up a business plan, inserting yourself in manager's schedules, getting approval, learning.. ugh... powerpoint, drawing gant charts, whatever it is that will sell that idea to the business with YOU as the lead.
It helps then, to be able to pull it off, but honestly it doesn't seem to be all that important.
4) Self-promote.
Ugh. I hate this one, but it's necessary. The only people who may really know your value is your co-workers, and if you're on a small or isolated product, maybe not even them. Your manager ~may~ have a good idea of what you're worth, but let's guess that it's 50%. His manager only has about a 10% grasp, and the department manager with 300 people only knows you by job title and the section his direct report manages.
If your manager isn't whooping up your name and your co-work
We have a goal: elect the best possible leader. So we've provided for sets of inputs, provided a century or so of training on the system, and now we have in place certain mechanisms that produce a result.
However, our current system is not set up to select the best possible leader, but rather the leader who is best at being elected. That's why the marketing $'s spent means more than having a rational budget plan, or why sound bites and looks matter more than certifiable, documented proof of political and intellectual capability.
How do we 'fix' the algorithm? Well, here's where the analogy really falls apart. In AI design, we fix the inputs, assign weights, normalize features, pick better datasets, select alternative prediction models, etc. In the political sphere though, the democratic system itself is biased towards maintaining itself. No one in it will choose to give up power for the betterment of the system.
That's why each administration is lambasted for their power plays and draconian rules and policies by their challengers, who themselves quietly do nothing to reverse these rules upon replacing the administration.
I can think of a lot of theoretical mechanisms, like weighted votes (where a professor of political science's vote may have a bit more weight than an 18 year old who's just 'rocking the vote' based on MTV's preferred candidate), but these will be perceived as unfair, as any merit based system is perceived as unfair to those without merit. I like the libertarian ideal too, where national government is basically static unless 51% of the population can agree on a path - that means 51% of the total voting public have to show up at the polls and actually make a decision, but this has it's own downfalls too, like being inflexible in times of emergency.
Any of these things really going to happen? Naw. I may as well suggest we live in an enlightened dictatorship run by philosopher kings.
I think that the best we can hope for is that our government becomes so stale and entrenched that future leaders have no power or capability to make any changes of import whatsoever. Maybe in the future we'll be smart enough for democracies, but right now, where Rick Santorum can even be considered a candidate, I'm just not seeing it.
Completely unrelated to the subject, our dev team has recently replaced portions of our product with a ruby implementation that has caused no end of problems. These folks that have managed to up our bug count by a factor of 3 and increase our feature-completion time by a factor of about 2. This has been going on for 8 months, and I'm simply ill-equipped to discuss this since I've not worked on the ruby code, or really picked it up myself yet. I'm convinced this isn't really a problem with ruby itself, but more due to the amateur way in which their code is architected, which makes maintenance difficult.
You sound like you've got some experience and opinions on the subject that might be valuable; would you be willing to discuss this via email? I'm at pdughi@gmail.com (slashdot is still showing 'email not shown publicly' despite my user settings....)
Summary of points:
- Accessibility is a good theme, but a bad goal - it never pays for itself
- Retrofitting accessibility on a pre-existing systems is a bad idea
- Most apps/sites/etc are 'accessible enough'
Gotta agree here. Not that what she's attempting isn't tough, but it's not being an explorer. If that was the case, then I'm an explorer, the first time I drove my pickup from my new home to work. That trek had never been made before, in that vehicle.
It reminds me of the art scene where the quality of a painting is less important than whether or not it was made with saliva and blood, or framed on a toilet seat lid.
Just wait till the crack comes out, like normal people who don't like DRM do.
Funny story: The 'help' team associated with steam don't understand when you ask what servers and ports you need to block to ensure your machine doesn't access their systems by accident. They sent me help for opening holes in my firewall.
The old adage of 'they need to get it out of their system' - this is a falsehood: prisoners do not have to "result to other kinds of violence" in the absence of a substitute. If you are prone to violent acts, with all other variables being equal, you'll commit violent acts even after having already committed violent acts. Even with a violence simulator, you're still going to perform the other violence outside it that you were supposed to be suppressing.
Mike Tyson was a good example; all day long he's sparring with partners, hitting punching bags, shadowboxing. Then he beats and rapes a woman, and later looses his temper and bites an opponent's ear. Despite having 'worked it out of his system' hundreds of times more than a normal person, he's still violent.
People don't have violence meters that you can fill up. Stop perpetuating this invalid belief like it was common sense.
Savor your walled garden, secure in the knowledge that because you're not trusted enough to meddle with it, nothing can go wrong. This is, after all, what users want.
The numbers fluxuate depending on the year, but you can simply search for terms like "cause of death" and "hunger" - what you'll get is scary numbers, who's sources are not usually well defined. This is because they're rollups not simply of people who starved to death, but rather, people who died due to nutrition-related problems.
That's why Wikipedia's List of causes of death by rate only puts 'Nutritional deficiencies' at.85%, whereas the hunger crowd folks come up with huge numbers. The rates for death of children are especially high, usually due to how well fed the mother is during pregnancy, and those really swing those numbers high.
If you're searching, be aware that the numbers in 2009 were especially high; 1980-1990 is a more average year range.
I remember watching some random documentary about illegal immigrants; A Mexican immigrant was being deported for the n'th time, and someone asked him, "Why do you keep trying to get back in?". He answered, "In America, even the poor people are fat."
Realize that something like 65% of the population of the earth dies due to starvation - most in India (~50%) more than Africa and Asia combined (~40%). The rest are spread across the world, with a small concentration in Central America (Meixco, etc). Compare the US's policies against this measure.
Also realize that while the US provides medical care, housing, and food in exchange for money, there are mechanisms that provide it to those who need it regardless of the ability to pay. It may not be luxurious, but it's there. You may be limited in other paths in life due to resultant debt, but you can make a choice to not freeze, not starve, not die from a flu. If you choose to flirt with death rather than carry debt, it's obvious you're more capitalistic than the somewhat socialist society we have today.
The only reason he's calling it a mistake is because he's a computer scientist. There's a deep desire to deliberately keep theory and practical usage separate. That's why a pure implementation of scheme, for example, has no mechanisms for input or output. It's why some languages like APL ignored the concept of using syntactical sugar, and instead required mathematical symbols and a specialty keyboard which did not actually exist when the language was created. It was never really meant to be run - only written on paper.
So, there's a deliberate difference between computer scientists and computer programmers. I recently explained it to my managers like this: Say someone needs to connect two systems with a cable, but they didn't say whether the ends were male or female. A computer scientist will figure out the number of possible combinations and bring 4 cables. A competent computer scientist will eliminate the redundancy, and bring 3. A computer programmer will bring 2 (since m-m connects to f-f to produce m-f).
( A really good computer scientist might bring one, citing that while the worst case is two trips, the average case is one - if he understands the domain. A programmer will do the same thing for the same reason, but have no logical justification.)
Don't get me wrong, living in the land of theory lets one produce great results - look at quicksort, as mentioned by the parent, but sometimes the desire to escape to pure mathematics produces practical issues.
Maybe it's just me, but every time I have a game I enjoy, I tend to crack it just so I don't have to put the disk in the drive to play. In most cases, I'm searching for the crack while the installer is still running.
Granted, I don't play many online-only games, like certain FPS shooters tend to be, but is it really an issue.
You get what you ask for, because they know how to turn problems into object models, but you have to ask VERY carefully.
As a developer (and one in the financial industry at that), if there was one single thing I could suggest that would have the biggest impact on software development, it would be this:
Enforce a 'Good Requirements' only policy.
This may require a lot of training, and a great deal of rejected requirements for not meeting the standard, and cause great grief to those who think their 15 second explanation of an 80+ man hour feature implementation is sufficient. It certainly requires that the programming team be empowered to reject bad requests.
I think I have yet to work at a company that has not effectively told me that they would not meet their deadline if they took the time to spell out what they actually want. When I point this out, the universal response is something along the lines of a shrug and a smirk. Often followed by a "well, it's 5 o'clock, I gotta run... let me know how that turns out tomorrow morning."
In all honesty, I have to say that I feel it's pure laziness. When I give lessons, use SDLC software, etc, the thrill goes from "We're doing it right," to "Oh no! I have to do work!". Then they try to work around the system or believe that desk drive-bys are still okay, and then complain when someone is laid off or quits and no one can pick up their work.
I don't know what's so hard about it. The idea is simple and applies to so many things; hard work now results in less work later, when it's more expensive and time-critical. Isn't this taught in business college, PMP certification, etc? What the heck?!?
I currently write financial software targeted at small and mid-sized banks. The article was... confused, so, let me try to clear it up a bit:
In the computing world, when you say you're going to replace your core systems, you're talking about replacing either the main software or hardware that your systems run on - or both. In the banking world, when you say 'core system' (or 'host system'), you're talking about the software package being used to store your customer's account data, such as Fiserve or Miser.
The article confusingly references both types of changes and appeared to treat them interchangeably.
Similarly, the phrase 'realtime' has a loaded meaning in the banking world. Outside of the banking world, 'realtime' means 'instantaneous', such as 'realtime rendering'. Inside the banking world, realtime means that actions (such as transfers) are submitted directly against the core system, as opposed to a proxying system which determines rates ($/day, max $, etc), fees, and tries to keep track of the active balance vs. ledger balance. The alternative to 'realtime' is 'batch' - where everything is performed in one fell swoop at the end of a day - when you reconcile the day's transactions.
Some transactions - such as inter-bank account to account transfers can usually be handled in 'realtime' even if the core doesn't support it. The necessary proxy can know everything about that bank's transactions, and can guarantee the availability of funds, so it's allowed. External transfers can't be though. Thus the separation between available balance and ledger balance. You can see this on credit card systems too; your payment may show up on the site as being verified, but not yet applied. In fact, with only few exceptions, when money is sent from one location to another, the actual movement is not finalized for a day or two. Both sides make note of it, so funds are made available, but it can be cancelled or reversed at any point in time before that.
In any case in the banking world, mobile or web (or even atm and point-of-sale teller terminals) don't care much about whether the backend core is in realtime or batch mode. It has nothing to do whatsoever with that functionality. Those are just pieces of software that hook into the core - and the core (or adapters for it) must support that functionality.
Whew! It was hard to read that article with the mixing of those definitions and a base misunderstanding of their purposes.
I like to think of myself as someone literate, but I couldn't parse everything in the linked article.
All I know is that it had nothing to do with microtransactions, appeared to contain PHB-style solutions to problems that are no help at all (note, heavy rephrasing to make it sensible):
Problem: Someone wants the game to make money and it may impact core gameplay.
Solution: innovate, engage mindshare, customer focus.
Problem: Someone wants the the non-core gameplay elements to make money
Solution: Long tail opportunity, self-leadership, consensus-building... and so on.
(Buzzwords were chosen because their nebulous nature seems to exactly nail the writing style, as though the article may have been put together by an auto-generator.)
Those aren't answers. Those are just concepts, and not well defined or even directly relevant ones at that. It's like having a business plan that just says "succeed". How do you fix the evil of a game that's meant to make money? Have a CEO that will stand up for you. Oh, gee, that helps. I'll get right on that.
This article appears to be entirely without value.
If you as a developer want to influence anything in your product, you'll want to start by working on your communication skills, especially when targeting other developers. This wouldn't even pass muster with PHBs.
It was years before LCDs even had something available in a store approaching the higher-res CRT monitors, much less at a reasonable price.
Yet they phased all the CRTs out well before they had reached that point.
Who makes decisions like this, and the re: the laptop resolutions? How can we make them ~rue~ those choices?
No one likes dealing with legacy code. Any given developer has had to sit down and wade through code that's some combination of poorly designed, undocumented, non-functional, over-engineered, slow, tedious, failure prone and in all other ways apparently designed only to make your life some sort of hell of bleeding eyeballs and migraines - and that's just the code they wrote 3 months ago. Other people's code is worse.
Having written code for nearly 2 decades now, what I can tell you is this: It doesn't matter much. We all want to live in a land of beautiful code - if we didn't, we wouldn't get so upset when we see horrible code. However, the end game is: does it work? Yes, you want to wipe it out and start from scratch, and yes, it'll be a joy to work with after that (until the next guy shows up), and yes, it takes forever to make a change, and yes there's no unit tests, and yes it's loaded with bad hacks - but for a business the real questions are "does it work?".
If the answer is 'yes', you're fighting an uphill battle to correct it. If you are lucky enough to be able to put a cost on it - time or dollars - that could be saved by refactoring, then perhaps you have the ammo required, but if you can't give a realistic metrics-backed analysis of it, then there's no business need to fix it.
Think about that for a bit: The need to fix it is not based on how broken you perceive it to be, but on entirely separate measures of no worth to you that require discrete and specific values.
(Besides, if you spent that time analyzing, now you know the system pretty well, so you're the new expert!)
More realistically, there's always going to be a next, new thing that needs to be built. If you spend all your time fixing problems that aren't 'too' broken, you'll miss all the chances you'll have to work on the new stuff, where you don't have to work on legacy code at all!
So the advice to you is what all good programmers should hate to hear, but know in their hearts to be true: Spend as little effort on it as possible, and move on, until it becomes a large enough problem that it requires attention, not just deserves it.
Oh - and if you have a good dev manager, ignore all that. Tell him it needs to be refactored, let him work out the priorities and schedules, and you're set. Also, while you're visiting Fantasy Island, tell Ricardo Montalban that he was awesome in Star Trek II.
This is pretty straightforward.
In the US, free speech means you can say anything you want, except very certain things, under certain situations (like "Fire!" or "There's a bomb in the school," or "Why yes, I am a police officer."). In effect, it's using blacklisting to target specific things. Without explicit ruling to the contrary, you are free to speak what you'd like - thus, "Free Speech".
In the entire rest of the world, speech is rigidly controlled. The default assumption is you are not allowed to say anything at all, unless the government has specifically allowed it. For example, you're not allowed to talk badly about the king, or government, or public workers, or even say some things that might indicate racism or bigotry - this is true even in western governments (check out the laws in England, France, Germany, for example). In some cases, you're not allowed to say something that would have a negative impact on someone's reputation, even if it's provable truth! They don't always prosecute, but they almost always have the option to do so. So, they're denying all by default, and using a white list to allow certain 'free' statements. In these cases, "free speech" refers in part to the few things you're explicitly allowed to discuss, and to the socially protected 'right' to not be offended by random speech. T
The entire rest of the world doesn't get the US's interpretation, and the US, by and large, doesn't get the rest of the world.
So when the rest of the world sees someone producing a muslim hate film, and we say, "well, it's legal," to them, that's the same as saying, "Our government went out of it's way to explicitly, specifically endorse this message." They don't understand the difference, or even the value of the US's version. There's all sorts of funny quotes from world leaders visiting the US and asking the president or other high up why we allow protestors in front of the white house/etc, when we could just have them locked up and/or disappeared.
(this time not posted as AC, so it shows up ... )
"Apple, Adobe, Google, HP, Microsoft and many others have joined forces and launched a new resource – the Web Platform in a bid to create a 'definitive resource' for all open Web technologies"
That's awesome, because without explicit corporate collusion, we'd never have ... a ... what? a search engine for referencing 'open' technologies?
Not that they haven't contributed (some more than others) to open source projects, but ... why exactly do we need the corporate technical powerhouses to create a definitive resource on open technologies? What will they provide by corporate committee that open source isn't providing now? ... or is this one of those redefinitions of 'open' that hasn't got anything to do with open source?
... when females act like men.
Crumbs - I can't find the link to the studies but here's the summary: When american women adopt the same value systems as american men they tend to outperform men. More specifically, when they make money, work, and recognition their top motivations, they excel in pretty much every supposedly man-dominated field; education, engineering, business, etc. Especially when it comes to small business owners.
So why aren't they running the world? Apparently most women have a different priority order, and things like family, time flexibility, vacation scheduling, personal happiness (one area where women absolutely CRUSH men), and one of the biggest factors: having children. There was an examination of women in business, especially CEO's and VP's, and what they showed was that when qualifications were identical, women made more and generally had better success growing the company/raising stock prices/whatever it was they were tasked with. However, they made up only a very small percent of the CEOs. Why? Because many of them chose to have kids, and didn't have the same qualifications, like an unbroken 40 year long track record of management, as they took time off, or made their career second to being a mother.
In some ways, the gender bias is in the eye of the beholder; the real issue is your priorities and how you work to achieve them. Granted, due to widespread generalization (which may be accurate), women have been sterotyped as less dedicated to a career, and end up earning less, starting for less, achieving less, making the men-stereotype priorities higher hurdles.
It would be interesting to rank people based on how well they've achieved their priorities. Not that it excuses deliberate or accidental sexism, but it may result in questioning equal opportunity regulations. If you achieve all your goals in life, and having gainful employment is not one of those goals, artificially privileging you to get it over vs. someone who prioritizes it but doesn't achieve it - or other goals - on the basis of gender or race seems a bit .. unfairly discriminatory.
... to the rest of the world.
Check out this brief article & interview : http://www.npr.org/2012/09/19/161439562/held-dear-in-u-s-free-speech-perplexing-abroad
The summary of the above link brings up an interesting blind spot: the rest of the world does not have free speech, not in any way. I'm not just talking about countries where you could be executed for praying to the wrong god. I'm talking about 'Western Nations,' like the UK and members of the EU. For example in France - where many of our ideals of personal liberty spring from - you can be jailed for 6 months (and fined) for being seen as insulting the country, flag, anthem, or any public worker. Imagine not being able to speak negatively about a politician or the police, on threat of jail time. This is standard almost everywhere else in the world.
Heck, you can even be jailed in Canada for writing hate speech.
The US is one of a small handful that really places freedom of speech at the top of the list, and doesn't just pay lip service to it.
I would summarize it like this: Socialism promotes the welfare of society over that of the individual, and rather than protecting 'the right to not be offended,' they simply focus on the improvement of society as a whole. It just looks like 'the right to not be offended' on the individual level. The most socialist your country gets, the more likely they are to trade the privileges of the individual for the betterment of society, and free speech is one of those.
So, they may see racism as bad (which it is), and so they outlaw it in both deed AND word. They may consider Nazis to be awful, and so they forbid anyone to claim to be a Nazi, or even learn about them, or listen to any of their speeches - just in case they might accidentally like it: better to bury it all and pretend it never happened.
It's also not unrelated that most of these laws were birthed from strongly fascist or oppressive monarchy governments. They had different motivations, but they also did not value personal liberty. At extremes, there's little difference between strong socialism or strong fascism - they use the same means and have the same goals.
I can't claim to be an industrial psychologist, but I have worked with them and written much of the software that does some of the predictive analysis that was mentioned. I can claim to have a lot of experience with how these tests work.
I have to disagree with you right off the bat here: Employment screening tests are not a sham, and there are many good things about them.
- Has value, but primarily to the employer
Some of the predictive factors that show immediate value are used to best utilize an employee: whether they prefer working solo or in a group, whether money or recognition motivates them, if they are highly detail oriented, or whether or not they'll rock the boat (which could be a good thing! - like suggesting a more efficient process to replace an old, tried, and true one). This helps a manager provide a working environment that best allows an individual to excel, or to position people in groups so any perceived faults are covered with an overlap.
What also ends up being really important in these tests - to employers at least - is whether or not these people tend to lie, steal, or cheat, to abuse drugs or alchol, or may simply be reliable or not. Yes, if you crunch the numbers, you can take a good guess and produce a weighted prediction about this just from a personality profile.
When you're hiring for Walmart or Home Depot or some other vast chain with a large population of unskilled workers, weeding out the likely-to-be-bad ones shows a real financial impact, tens or hundreds of millions of dollars a year, statistically proven. Though the damages may not reach into the millions, smaller business owners are even more impacted by this.
- Must be applied properly
Some businesses, like Keller Williams Reality, do not apply their personality profiling properly. They use a Jungian based personality matrix - simplified slightly - to pigeonhole an applicant. If you do not fit the hole specified for the job, you don't get the job. They even make a big deal about how everyone applying for every position is required to do this, even if it's the next CEO (which was probably a lie, but c'mon, these folks are salepeople at heart). However, they decide in advance which single personality a given job requires, and if you don't match it exactly, you're out. So if you apply for a programmer position, and you're an extrovert, you won't get the job. If you're creative - you don't get the job. You have to correspond to THEIR sterotype.
Obviously this is wrong.
As the parent poster can probably tell you, the proper way to do it is to have your current employees take a test, sort by role, and attempt to find people who are close to the personality traits that your star individuals have in common. You'll also have to update this over time as market or work environments change.
This works because we're producing sample data, isolating trends, and using it to predict success based on commonalities. It's simple statistics. This is how we can 'catch' drug abusers and thieves before the fact: using the personality profiling tests data from criminals, we can find people who match their common traits. It may sound harsh, but the false positive outliers are exactly that - outliers. The vast majority is predictable to a reasonable degree.
Application of this information is a standard practice in risk analysis. If you're hiring for a casino dealer, and your applicant shows up as being 80-90 out of 100 match with career criminals, maybe consider a bit more carefully or do a full background check, or maybe just don't hire them - find a less risky applicant.
- Can be gamed
Most of these tests are straightforward. There's rarely any tricks or clever 'gotchas'. This isn't like a police interrogation where they're trying to trap you. They're personality profiles, and they don't have 'correct answers'.
However, if you can successfully role take, you can determine the outcome without much guile. This is hard for many people to do, grante
I took Prof. Thrun's & Prof. Norvig's course, "Introduction to Artificial Intelligence" when it was first offered. I'm pretty big on self-study, and I rely on instructors to provide efficient direction (a syllabus, specific reading material), a mechanism for self-evaluation (exercises, means to validate results, etc), and finally, a source of answers when I have questions. In a perfect world, online courses seem to be a good fit for my personal needs, so I dove in with relish.
However, I found some of the same general problems the blog post referenced;
- the content (speech, writing) was often sloppy and confusing, it did feel unplanned.
- concepts that were introduced were not explained in their entirety.
- the vocabulary used to describe a new idea was fairly mutable, or inconsistent.
- there were often instances requiring sizable leaps of intuition combined with formal mathematical knowledge to complete exercises which had previously only been provided in a "fill in the numbers" format in previous examples.
In addition, I found no clear mechanisms for self-evaluation. We had to wait a week just to see the results of previous tests, etc. I also thought the quiz interface was childish and poorly done, but that's mostly just a look and feel issue.
I also took Prof. Ng's "Machine Learning," class at the same time. In contrast, I found that Prof. Ng provided:
- Writing was clear, dialog was polished, vocabulary was explicit.
- Concepts were introduced, explained (in both a practical and intuition-focused form), demonstrated and expanded upon.
- Exercises were given to students in the form of example data, algorithms to implement, and with additional suggestions on how to 'play' with them to produce different results and gain an intuitive grasp of the information. Unlimited resubmission of exercises with an automated grading system made evaluation of different mechanisms simple.
- Quizes were more polished.
I felt like I got a lot out of his class, well more than the AI class.
I feel that the difference between the two was pretty obvious. Prof. Thrun was teaching as if he had a live audience in front of him, and did not modify his instruction style for the lack of interactivity. On the other hand, Prof. Ng taught in a way that minimized the deficiencies of video learning, while leveraging the benefits of online, automated instruction.
In conclusion, I don't think the AngryMath blogger is correct in the assumption that live, in-person instruction is needed. In fact, I'd say the opposite was shown: the closer you get to the style of live instruction, the worse it seems to be to me, and more so when it's online. Of course, I have specific needs from education, and others may prefer different styles.
... in this case for the fashion industry, but hey, it's interesting and relevant:
http://www.ted.com/talks/johanna_blakley_lessons_from_fashion_s_free_culture.html
I'm a big believer in the idea that social interactions are more important than job skills when it comes to getting or retaining a job. Just think : how many people have you worked with that seem to have no job skills whatsoever, but they often thrive in an office, undeservedly becoming manager when they don't know how to spell IBM?
Those people are either lucky, or more likely, they know how to manage the social game. With that in mind, here's my advice:
1) Learn to play office politics.
I'm not talking about some sort of 80's and 90's era sabotage-the-other-guy or beat-them-with-a-better-pitch schtick. Just realize that the ability to socialize in a business setting is a valuable job skill. Make sure you know what's going on in the office, and at worst, offer to pitch in where you can, or act to perform introductions between those that need and those who can provide.
This ability is especially rare among stereotype IT/developer types, so when it's recognized, it's usually well rewarded. If you're having problems in this area, I recommend joining a toastmasters group if simple social interaction is your issue, or asking a manager to mentor you ... which leads to my next item.
2) Keep climbing up.
The standard business operates not based on income, but the rate at which their income is fluctuating. If it's not going forward, then there's something that needs to be 'fixed' - at least from a stock, investor, board standpoint. This feeling trickles down though. If you're happy doing the same job for years, then either there's something wrong with you, or the job - according to some managerial viewpoints. That's why they ask you stupid questions like, "Where do you see yourself in 5 years," in your interview/review. They're just checking that you're normal, according to their standards.
The easiest path up is management. Ask to be mentored, indicate that you want to move into management. Leverage your technical seniority. You can go the project management route since there's an easy certification for that, if you're into certifications (some companies are, some aren't).
Alternatively, court the architect position. If it doesn't exist at your company, request that it be created for you. You don't need more money (though you shouldn't ~say~ that), in fact, you might not even need new responsibilities. Just do it for the title. It's important. Maybe not to you, but when they make decisions at the top level, they know they can afford to get rid of developers - even a senior developer or two - but an 'architect' sounds invaluable.
3) Take ownership .. ugh... powerpoint, drawing gant charts, whatever it is that will sell that idea to the business with YOU as the lead.
You've spent significant time at your company, and you have a good idea of the technical domain. You must have a million ideas about what can be done, and what can be done better. Find something you can care about and make it happen. That means drawing up a business plan, inserting yourself in manager's schedules, getting approval, learning
It helps then, to be able to pull it off, but honestly it doesn't seem to be all that important.
4) Self-promote.
Ugh. I hate this one, but it's necessary. The only people who may really know your value is your co-workers, and if you're on a small or isolated product, maybe not even them. Your manager ~may~ have a good idea of what you're worth, but let's guess that it's 50%. His manager only has about a 10% grasp, and the department manager with 300 people only knows you by job title and the section his direct report manages.
If your manager isn't whooping up your name and your co-work
... how else can you explain why all dwarves speak with a Scottish accent?
I see lots of parallels here from AI design.
We have a goal: elect the best possible leader. So we've provided for sets of inputs, provided a century or so of training on the system, and now we have in place certain mechanisms that produce a result.
However, our current system is not set up to select the best possible leader, but rather the leader who is best at being elected. That's why the marketing $'s spent means more than having a rational budget plan, or why sound bites and looks matter more than certifiable, documented proof of political and intellectual capability.
How do we 'fix' the algorithm? Well, here's where the analogy really falls apart. In AI design, we fix the inputs, assign weights, normalize features, pick better datasets, select alternative prediction models, etc. In the political sphere though, the democratic system itself is biased towards maintaining itself. No one in it will choose to give up power for the betterment of the system.
That's why each administration is lambasted for their power plays and draconian rules and policies by their challengers, who themselves quietly do nothing to reverse these rules upon replacing the administration.
I can think of a lot of theoretical mechanisms, like weighted votes (where a professor of political science's vote may have a bit more weight than an 18 year old who's just 'rocking the vote' based on MTV's preferred candidate), but these will be perceived as unfair, as any merit based system is perceived as unfair to those without merit. I like the libertarian ideal too, where national government is basically static unless 51% of the population can agree on a path - that means 51% of the total voting public have to show up at the polls and actually make a decision, but this has it's own downfalls too, like being inflexible in times of emergency.
Any of these things really going to happen? Naw. I may as well suggest we live in an enlightened dictatorship run by philosopher kings.
I think that the best we can hope for is that our government becomes so stale and entrenched that future leaders have no power or capability to make any changes of import whatsoever. Maybe in the future we'll be smart enough for democracies, but right now, where Rick Santorum can even be considered a candidate, I'm just not seeing it.
Completely unrelated to the subject, our dev team has recently replaced portions of our product with a ruby implementation that has caused no end of problems. These folks that have managed to up our bug count by a factor of 3 and increase our feature-completion time by a factor of about 2. This has been going on for 8 months, and I'm simply ill-equipped to discuss this since I've not worked on the ruby code, or really picked it up myself yet. I'm convinced this isn't really a problem with ruby itself, but more due to the amateur way in which their code is architected, which makes maintenance difficult.
You sound like you've got some experience and opinions on the subject that might be valuable; would you be willing to discuss this via email? I'm at pdughi@gmail.com (slashdot is still showing 'email not shown publicly' despite my user settings ....)
Rather than copy everything over, take a look here; http://slashdot.org/comments.pl?sid=2040692&cid=35510122
Summary of points:
- Accessibility is a good theme, but a bad goal - it never pays for itself
- Retrofitting accessibility on a pre-existing systems is a bad idea
- Most apps/sites/etc are 'accessible enough'
Gotta agree here. Not that what she's attempting isn't tough, but it's not being an explorer. If that was the case, then I'm an explorer, the first time I drove my pickup from my new home to work. That trek had never been made before, in that vehicle.
It reminds me of the art scene where the quality of a painting is less important than whether or not it was made with saliva and blood, or framed on a toilet seat lid.
At least it's all for charity.
That's just close-minded thinking.
Just wait till the crack comes out, like normal people who don't like DRM do.
Funny story: The 'help' team associated with steam don't understand when you ask what servers and ports you need to block to ensure your machine doesn't access their systems by accident. They sent me help for opening holes in my firewall.
The old adage of 'they need to get it out of their system' - this is a falsehood: prisoners do not have to "result to other kinds of violence" in the absence of a substitute. If you are prone to violent acts, with all other variables being equal, you'll commit violent acts even after having already committed violent acts. Even with a violence simulator, you're still going to perform the other violence outside it that you were supposed to be suppressing.
Mike Tyson was a good example; all day long he's sparring with partners, hitting punching bags, shadowboxing. Then he beats and rapes a woman, and later looses his temper and bites an opponent's ear. Despite having 'worked it out of his system' hundreds of times more than a normal person, he's still violent.
People don't have violence meters that you can fill up. Stop perpetuating this invalid belief like it was common sense.
Savor your walled garden, secure in the knowledge that because you're not trusted enough to meddle with it, nothing can go wrong. This is, after all, what users want.
The numbers fluxuate depending on the year, but you can simply search for terms like "cause of death" and "hunger" - what you'll get is scary numbers, who's sources are not usually well defined. This is because they're rollups not simply of people who starved to death, but rather, people who died due to nutrition-related problems.
That's why Wikipedia's List of causes of death by rate only puts 'Nutritional deficiencies' at .85%, whereas the hunger crowd folks come up with huge numbers. The rates for death of children are especially high, usually due to how well fed the mother is during pregnancy, and those really swing those numbers high.
If you're searching, be aware that the numbers in 2009 were especially high; 1980-1990 is a more average year range.
I remember watching some random documentary about illegal immigrants; A Mexican immigrant was being deported for the n'th time, and someone asked him, "Why do you keep trying to get back in?". He answered, "In America, even the poor people are fat."
Realize that something like 65% of the population of the earth dies due to starvation - most in India (~50%) more than Africa and Asia combined (~40%). The rest are spread across the world, with a small concentration in Central America (Meixco, etc). Compare the US's policies against this measure.
Also realize that while the US provides medical care, housing, and food in exchange for money, there are mechanisms that provide it to those who need it regardless of the ability to pay. It may not be luxurious, but it's there. You may be limited in other paths in life due to resultant debt, but you can make a choice to not freeze, not starve, not die from a flu. If you choose to flirt with death rather than carry debt, it's obvious you're more capitalistic than the somewhat socialist society we have today.
The only reason he's calling it a mistake is because he's a computer scientist. There's a deep desire to deliberately keep theory and practical usage separate. That's why a pure implementation of scheme, for example, has no mechanisms for input or output. It's why some languages like APL ignored the concept of using syntactical sugar, and instead required mathematical symbols and a specialty keyboard which did not actually exist when the language was created. It was never really meant to be run - only written on paper.
So, there's a deliberate difference between computer scientists and computer programmers. I recently explained it to my managers like this: Say someone needs to connect two systems with a cable, but they didn't say whether the ends were male or female. A computer scientist will figure out the number of possible combinations and bring 4 cables. A competent computer scientist will eliminate the redundancy, and bring 3. A computer programmer will bring 2 (since m-m connects to f-f to produce m-f).
( A really good computer scientist might bring one, citing that while the worst case is two trips, the average case is one - if he understands the domain. A programmer will do the same thing for the same reason, but have no logical justification.)
Don't get me wrong, living in the land of theory lets one produce great results - look at quicksort, as mentioned by the parent, but sometimes the desire to escape to pure mathematics produces practical issues.
Maybe it's just me, but every time I have a game I enjoy, I tend to crack it just so I don't have to put the disk in the drive to play. In most cases, I'm searching for the crack while the installer is still running.
Granted, I don't play many online-only games, like certain FPS shooters tend to be, but is it really an issue.
You get what you ask for, because they know how to turn problems into object models, but you have to ask VERY carefully.
As a developer (and one in the financial industry at that), if there was one single thing I could suggest that would have the biggest impact on software development, it would be this:
Enforce a 'Good Requirements' only policy.
This may require a lot of training, and a great deal of rejected requirements for not meeting the standard, and cause great grief to those who think their 15 second explanation of an 80+ man hour feature implementation is sufficient. It certainly requires that the programming team be empowered to reject bad requests.
I think I have yet to work at a company that has not effectively told me that they would not meet their deadline if they took the time to spell out what they actually want. When I point this out, the universal response is something along the lines of a shrug and a smirk. Often followed by a "well, it's 5 o'clock, I gotta run ... let me know how that turns out tomorrow morning."
In all honesty, I have to say that I feel it's pure laziness. When I give lessons, use SDLC software, etc, the thrill goes from "We're doing it right," to "Oh no! I have to do work!". Then they try to work around the system or believe that desk drive-bys are still okay, and then complain when someone is laid off or quits and no one can pick up their work.
I don't know what's so hard about it. The idea is simple and applies to so many things; hard work now results in less work later, when it's more expensive and time-critical. Isn't this taught in business college, PMP certification, etc? What the heck?!?
I currently write financial software targeted at small and mid-sized banks. The article was ... confused, so, let me try to clear it up a bit:
In the computing world, when you say you're going to replace your core systems, you're talking about replacing either the main software or hardware that your systems run on - or both. In the banking world, when you say 'core system' (or 'host system'), you're talking about the software package being used to store your customer's account data, such as Fiserve or Miser.
The article confusingly references both types of changes and appeared to treat them interchangeably.
Similarly, the phrase 'realtime' has a loaded meaning in the banking world. Outside of the banking world, 'realtime' means 'instantaneous', such as 'realtime rendering'. Inside the banking world, realtime means that actions (such as transfers) are submitted directly against the core system, as opposed to a proxying system which determines rates ($/day, max $, etc), fees, and tries to keep track of the active balance vs. ledger balance. The alternative to 'realtime' is 'batch' - where everything is performed in one fell swoop at the end of a day - when you reconcile the day's transactions.
Some transactions - such as inter-bank account to account transfers can usually be handled in 'realtime' even if the core doesn't support it. The necessary proxy can know everything about that bank's transactions, and can guarantee the availability of funds, so it's allowed. External transfers can't be though. Thus the separation between available balance and ledger balance. You can see this on credit card systems too; your payment may show up on the site as being verified, but not yet applied. In fact, with only few exceptions, when money is sent from one location to another, the actual movement is not finalized for a day or two. Both sides make note of it, so funds are made available, but it can be cancelled or reversed at any point in time before that.
In any case in the banking world, mobile or web (or even atm and point-of-sale teller terminals) don't care much about whether the backend core is in realtime or batch mode. It has nothing to do whatsoever with that functionality. Those are just pieces of software that hook into the core - and the core (or adapters for it) must support that functionality.
Whew! It was hard to read that article with the mixing of those definitions and a base misunderstanding of their purposes.
I like to think of myself as someone literate, but I couldn't parse everything in the linked article.
All I know is that it had nothing to do with microtransactions, appeared to contain PHB-style solutions to problems that are no help at all (note, heavy rephrasing to make it sensible):
Problem: Someone wants the game to make money and it may impact core gameplay.
Solution: innovate, engage mindshare, customer focus.
Problem: Someone wants the the non-core gameplay elements to make money ... and so on.
Solution: Long tail opportunity, self-leadership, consensus-building
(Buzzwords were chosen because their nebulous nature seems to exactly nail the writing style, as though the article may have been put together by an auto-generator.)
Those aren't answers. Those are just concepts, and not well defined or even directly relevant ones at that. It's like having a business plan that just says "succeed". How do you fix the evil of a game that's meant to make money? Have a CEO that will stand up for you. Oh, gee, that helps. I'll get right on that.
This article appears to be entirely without value.
If you as a developer want to influence anything in your product, you'll want to start by working on your communication skills, especially when targeting other developers. This wouldn't even pass muster with PHBs.