Tech articles you can read with coffee

Menu

Monthly Archives: December 2009

Capitalism is an economic and social system in which capital, the non-labor factors of production (also known as the means of production), is privately owned;[citation needed] labor, goods and capital are traded in markets; and profits distributed to owners or invested in technologies and industries.

When I talk about Capitalism in this article, I am essentially talking about the commerce system we all participate in. I’ll keep my points simple and because of this I might not go into too much detail on certain topics, however if you are interested in learning more, you can follow the links at the bottom of this article. Bear in mind this article is written lay, so that its understandable to anyone who reads it.

The system we have in place today consists of corporations. A corporation in structure resembles a pyramid. At the very top of the pyramid we have the governing body, below this directors, and below that various other levels of management all the way down to the team leaders who are a level above the average worker. It’s important to note that from a structural point of view there are a lot fewer people on the top, while generally the majority of workers comprise the base of the pyramid. It is also worth noting that in almost ALL corporations the better earning potentials exist higher up in the structure.

Now I won’t go into equality issues here. Neither social dynamics. But its worth noting that the wealth is not evenly distributed. The true profit is reaped higher up in the structure, while the average workers might be earning a little over minimum wage. Even their collective earnings do not in most cases exceed that of the top elite few. In other words the collective earnings of workers generally do not exceed the collective earnings of the governing body in an organization. A good example of this is Microsoft, where the top 10 elite earn more than their entire workforce globally combined. Before we digress too much, let’s get back to this point, it’s very simple: Workers generally get paid as little as possible to do as much as possible, to make the top elites as much money as possible. This is one of the foundation principles governing capitalism.

Knowing this, lets move onto the next point. A worker is only valuable to a corporation if that worker contributes to the profit margin. The responsibility of the corporation is NOT to keep people employed, rather it is to fuel profits for the elite few right on the top of the structure. If you have any doubt about this think of companies that outsource their support or telesales operations to 3rd world countries where the equivalent services are provided at a fraction of the price of employing locals. These companies make superficial claims to care about their workforce or country. Mostly these companies will go with what is financially feasible, and do not care about “the little guy”. This brings me to my next point – Efficiency (yes we’ve all heard the buzz word). Efficiency in a production context is basically producing goods in the most cost-effective way possible to maximize profits. There are of course other elements to efficiency such as the producing things quicker, or with less defects, or by using less energy with environmental benefits. The typical stance however, is driven by greed and to maximize that profit line.

This is why when a new piece of machinery comes out, corporations WILL replace the less efficient human component with the machinery which is way more efficient. Cheaper, quicker and more accurate, but ultimately it maximizes that profit line.

Capitalism is a dog eat dog world. The firms that actively develop efficient technology are in their own right governed by the rules at play, and also comprise a pyramid structure. They have one agenda too, to maximize their profit lines.

Where does this leave the average worker? The short answer: replaced and out of work. Where do these workers go? Would it surprise you that about Almost half the world — over three billion people — live on less than $2.50 a day. You might be reading this article on your Mac book in a lovely air-conditioned office working in the service industry, you’re a million miles away from the reality of poverty my friend, but many people are already feeling the brunt of technology in the workforce, and as things progress, more and more technology will automate more and more work done by the labor force, even in developed countries.

Technology improves exponentially. Meaning we’re developing new technologies quicker and easier than ever before. If you’re in any doubt of this, please take a visit to Dubai where the very first completely automated underground system is being implemented. Yes you heard me – 100% fully automated. Remember the goal of the corporation is to be as efficient as possible and the real definition of efficiency is to get things done as cheaply as possible, eliminating as much of the labor needed to produce the desired result in such a way as to maximize profits.

What else is on the list for automation? Lots of work we already do is being automated, work we thought would always be around is now being done by machines, or by advanced technology.

Vending Machines

Call centers

IT Support

Factory work

Sales staff

Restaurants can be fully automated, including stock management and accounting

Cars are learning to drive themselves

Various areas of the transport sector

Various areas of the banking sector

I could go on for hours, the point is automation is happening everywhere, no sector is immune, because when a part of a process can be automated the entire process benefits and becomes more efficient.

This is ultimately why Capitalism will fail. You see there is a flip side to this story. As automation gets implemented, the workforce is done away with, but ultimately (and here is the catch) – there goes the buying power. You see it doesn’t matter how efficient the development of the product was, if there is no buying power out there, then who is going to buy the product?

If you’ve done away with your whole work force, who are now statistics living on $2.5 dollars a day, who is going to buy your Ipods, new cellphones, your BMW’s? Here you might be thinking – the same people who are buying them today – those saved by the service industry. You would be wrong, even the service industry is now becoming more and more automated.

Capitalism is a walking time bomb, it has an expiry date and the system has to eventually fall flat on its face. I’m not even talking about wealth distribution here, the point is – while more and more of the work force get automated, eventually the buying force that motivates the seller gets removed, and this means the incentive of the whole Capitalistic system is in danger.

Is there a solution?

I recommend you watch Zeitgeist, it explains way better than I can the exact problems we face as a planet. I would also recommend you check out the Venus Project. I would say its a good idea to understand the dynamics at play here, even if you take no action and are a complete slacktivist. Just by understanding you already are part of the solution.

To me the definition of a better programmer is one who writes code that produces the desired result with less errors.

Some people might define a good programmer as one that has a vast understanding of programming languages and concepts, while this is true this definition can only take you so far – ultimately ALL programs are written to perform a function and as error free as possible.

If the average programmer had an infinite amount of time for testing and deployment then almost ALL code would be released error free, but obviously all projects were due yesterday and usually we’re developing under less than perfect conditions, and at times pushing ourselves to the max to achieve the desired outcome. Besides this the industry is generally not that concerned with deep or stress testing applications and at times your rushed out code is just expected to work.

Here are some things you can do that will improve your overall effectiveness as a programmer (these are not language specific techniques and can be applied to just about ANY programmer, including YOU)

Get a second opinion: In the old days it was taught that a developer should read a considerable amount, and search the internet as much as possible prior to asking colleagues. I’ve even read surveys from those times where developers actually felt embarrassed to ask questions to fellow developers in the fear that they might come off looking inexperienced. I would say shed that fear, and the good news is you also don’t need to pester those you work with, enter the era of www.stackoverflow.com, if you don’t have an account create one immediately, its almost mandatory for a modern age developer to be using and contributing to Stackoverflow. Stackoverflow WILL make you a better developer, and by using it, You directly contribute to the collective knowledge of all things programming related.

Don’t trust your own code: Be highly suspicious of your own code. Every error in your application is almost always a direct result of your own code. View all code with suspicion, never think about any function as simple. Don’t think to yourself – “I’ll write a quick function to send an email” or “I’ll just quickly append this line of text to the end of that file” or “I’ll very quickly insert into this or that table”. You have to start thinking. Stop coding for a minute, and think things through. Every time you write a function, think “What could go wrong”, then convert this to – “What WILL go wrong”. That little append method you wrote might expect a file to actually exist, or that file could be locked. That database might be offline, that email server might be undergoing maintenance. Assume nothing, except that every function you write is inducing more possibilities for error, and its your job not only to write the function, but to eliminate as much of this error drag that WILL be caused, to the best of your ability each and every time. Start thinking of functions as in code / error drag ratios. Don’t write a function unless you are certain you can almost eliminate ANY error drag induced. It should really surprise you, after you’ve done this and your application ends up with a logical error in production.

Think and relax: This might not always be possible, but where ever possible exercise your right to be relaxed on the job. I’m not suggesting you take hours off to play network games. What I am saying is, each time you are about to write a function or a piece of code, enter into the development of this function with a clear mind. If you need time to think things over, do exactly that. Don’t cave in to pressure from management to “look busy programming”. It’s acceptable to be sitting at your desk just thinking things though, if it helps you visualize, get some writing equipment, not on the PC and make notes, and draw diagrams, or open up notepad and run through some real use cases. If you take 50 minutes in the hour to think things through, and 10 minutes to implement your idea, even though it might not be finished, its still overall WAY more effective than thinking for 2-3 minutes, and then implementing something in 20 minutes, job done – go home, and then get a support call the next day -1 repution for You, Your Company, Your Product. When you code, you should be coding at the speed of a dinosaur, but your mind should be thinking at the speed of light. The text you are typing is coming out slow, but its quality, because you’re focused on the bigger picture, what your code is going, how it will affect the users, how that one line will prevent support calls, how that function you’ve added will mean your code deploys without you having to be there, the list continues. As a developer you should have a lot of considerations in your mind when you code.

Modernize: If you started coding 10 years ago, then its likely your language/s of choice have seen a vast number of improvements or language enhancements. Stuff you used to write a function for years ago, is now an inbuilt language feature. Before you might have needed 10 lines of code to accomplish something that now only takes 1 line of code. Its your right as a developer to receive skill enhancement benefits while on the job, but so few companies actually offer any tangible skill improvement programs. If you were a Soccer player, most of your time on the job would involve training. As a developer you’re expected to know your job upfront, with very little emphasis on upgrading your existing skills. I’ll cut it short, You are the only one who can make your skill improvement happen, and you need to do this gradually and build it into your every day life. Don’t just write a function doing it the old way, take the time out (yes even if that means at times digressing for an hour or 2) to up skill. Use Stackoverflow or Google and find what is best current practice for the way you do things. Tell your employer that you are actively developing your skills, or that you are researching an improved way to implement if they are curious. Don’t push management to provide you with training, in my experience nothing good has ever come of it.

Always push for more testing: This might not directly improve your coding skills, but it does go a long way in terms of PR. If functionality you’ve been working on hasn’t undergone ANY testing, then you need to explicitly emphasize this. Don’t release something and say that its ready, complete or done, if it hasn’t been tested. When I say tested, I mean thrashed by someone other than you, who can try and extract as much errors or usability issues as possible. I’ve written this article to be as practical as possible, because of this, I will assume you don’t have a team of 5 testers just waiting to take over your code for testing, and you don’t have ANY real testing in place in your organization. You need to mention this EVERY SINGLE TIME you release something, because its something non technical members of your team very quickly forget. Hand over functionality always under the clause that it needs to be tested. If no testing is possible, then you’ve covered your base when errors do come back (and they will). The point is always make the point known that you are indeed a man short (the tester), this goes a long way in protecting your reputation as a developer, because the sad reality is not enough testing ever takes place, and if you don’t make others aware of this, you’ll end up just looking like a 2nd grade developer when issues happen.

And finally – above all else take errors very seriously and fix them ASAP, its ok to have some error drag (bugs) in your application. No one I’ve ever met has ever got to the point where they can release a perfect program that’s 100% error free, but what is more important is how quickly and effectively you deal with these errors when they occur, this includes your turn around time, and your initial ability to trap, log and notify these errors.

This post affects 6/10 people on this planet, because roughly 6/10 people are either directly downloading and distributing illegal content on the internet, or are just getting stuff for free they should be paying for.

In the latest in the clamp down on piracy, we’ve seen Mininova been given the ultimatum to either clear out all illegal content from their search index, or they’ll simply get shut down. Naturally Mininova complied and so you can no longer search for free programs, movies, games, HD rips, or anything of that nature from them. Mininova are just 1 in many Bittorrent distribution sites that are getting rapidly shut down, while Thepiratebay might still have some online presence, they too are facing pressure, and slowly closing their doors.

It seems the war on piracy is making huge leaps forward in eradicating illegal content via the bitTorrent (P2P) protocol. I would imagine that other services offering direct downloads (RapidShare) or newsgroup downloads (UseNext) will too soon be feeling real pressure to legalize.

Is this all a bad thing?

I would say I am not terribly sad to see these services being eradicated. If anything this extermination can’t come soon enough. Human nature is as such, people will get away with what they can. But once they can no longer get away with it any longer they adapt, and order is restored. Before you flame me just yet for this point of view, read on.

The more legal channels (no not TV channels but outlet channels) there are for movies, games and other entertainment media, lets not forget educational media, the more competition there is is the market place. As legal purchases rise, more companies emerge into these profitable arenas, and eventually the prices drop, because that is how economics works (supply and demand). Still you might be thinking nothing beats free?

While this is where you are wrong, because free can only be sustainable for so long. If a platform simply is not profitable enough it can get boycotted. PC gamers are already feeling this effect. Many game companies refuse to target the PC platform, because of the high rates of piracy.

I would say lessons need to be learnt. The public will not stop pirating on their own, and so because of this need these mechanisms taken out of their control. Like in the same way – people will not stop smoking, what they really need is to ban the sale of cigarettes, might sound Nazi, but I can promise you in the long term, people would be happier because of this. On the flip side, Movie Studios, Music Producers, all artists involved need to tone down a bit, and provide the public with realistic pricing for entertainment material.

This whole sector needs to also start realizing that there are people who live outside of economically stable areas and outside of the US / Euro zone. Vast hordes of people would also like a piece of this entertainment action, but you can’t expect for example Eastern Europeans or Indians to be out buying a BD Disk once a week, when it costs 1/10 or 1/5 of their monthly income. You must understand these people don’t exactly have a moral dilemma pirating when they see John Travolta’s private Lear Jet collection, to these people the industry is rich enough, and they almost feel like they have a right to get that item for free as part of a rebellion to bring the prices down.

I’ve always said it, and I’ll say it again, if you want to stop the piracy – start by bringing the prices down, and make US and UK material readily available for the middle class outside of economically active zones. Still we see most of the bigger names in the entertainment industry clearly do not understand this, neither are they suffering. The piracy continues, but this brings me to my next point.

The entertainment industry have the philosophy that – “We’re selling 10 now, if we eradicate piracy, people will be forced to buy, and so we’ll sell 100”. This is not exactly true, until the prices drop, most people will cut down severely on their now doses of entertainment material. In person trading (making copies for friends) has been going on for decades, and so far there is no way to eliminate this completely, other than doing away with the ability to have local copies of material.

Why am I fairly happy about all of this?

Because I believe we’re living in a time when the average person is misinformed. Misinformed or simply uninformed about world events and what exactly is going on with our planet. The general population is misinformed because they’re living in the free entertainment era, they’re coming home from work, watching DVD’s or playing XBox games. The average person does not read enough, and is an easy target for media brain washing, and new world order compliance.

Most people are naive enough to think that the US president actually has power, that just 1 man and his staff run a country. Most people have not heard of the Bilderberg Group, Trilateral Commission, neither do they know that the US presidency is run by bankers.The reason why they don’t know any of this is because they’re too enriched with all this free entertainment media floating around and its a great distraction. Take away the freedom to pirate, and the overall awareness of facts will increase as people find better more wholesome ways to invest their time.