in

dotnet.org.za

South African .NET Developer Portal

Delphiza

  • Where's the Instant Internet Alan?

    Dear Alan Knott-Craig,

    As much as your ‘inspirational and visionary’ (sic) letter to your staff may have increased brand awareness, decreased staff turnover, initiated radio interviews and so on, it sets a standard and a vision which your own organization cannot support.  So before you tell people not to pack for Perth, why don’t you put a bit of energy into understanding how your own organization contributes to the negativity that South Africans feel.

    I have been having problems with ADSL and Telkom for an extended period – no surprises there.  In a huff I thought I might as well go to iBurst for ‘Instant Internet’.  After all for less than R300 per month why not have another bandwidth backup to complement my existing MTN data card backup mechanism?

    A quick visit to iburst.co.za left me thinking that it didn’t seem all that instant, what with all the forms to fill in and whatnot.  Besides, I don’t have (or need) a printer, photocopier or fax machine – if it can’t be done via email and Internet it hardly seems worth the effort.

    I work just up the road from the iBurst offices and since I would have to collect the modem anyway (delivery is not instant – obviously) I thought that I might as well go to iBurst and if there was a sales office there get my ‘Instant Internet’.  Not having a printer I downloaded three months’ bank statements from the Internet and copied them to a USB disk – if they really want hard copies they can print them out, and I always have my ID with me.

    I couldn’t help thinking that this seemed a lot like a credit check, which may not be ‘instant’ and hardly seems worthwhile for a paltry R289 per month.  Why, I thought, can’t I just slap down the credit card and buy a 24 month subscription (not contract) up front, in cash?  Why not let my bank, who has already checked my credit worthiness, deal with collecting the R6,000 from me?

    On arrival at the sales office at iBurst house, the not so helpful iBurst representative informed me (quite bluntly and without trying to understand my needs) that I needed a copy of my ID, three months’ bank statements and proof of residence.  The website lists the following requirements:

    Individual Subscriber: 24 month contracts

    ·Copy of Identification Document·Copy of Pay Slip OR 3 Months Bank Statements  

     

    It says nothing about a proof of residence.  Why do I need to give it to you?  Is it for FICA – how much money laundering can I do with R289 per month?  Is it for a credit check?   I don’t want credit from you, bill me in advance and cap my bandwidth - please.  With all this paperwork, back and forth for ‘Instant Internet’ where is the instant part?  At least Telkom, who are probably the worst in telecoms service do not require banks statements, proof of residence and DNA samples – they do it over the phone.  Vodacom SP (who you had some dealings with) would take a gold credit card as a credit check – produce the card and you have a contract... instantly.

    So while you appeal publicly to your staff to cheer up and not pack for Perth, why don’t you fix the problems that you have control over to make the average South African’s life easier?  Why don’t you offer ‘Instant Internet’ as advertised and develop products that people want and need.  One reason why people are leaving is because they are fed up with degrading service levels, unhelpful staff and pointless processes – and your staff, management and executive are perpetuating that perception.  Never mind the cost and availability of bandwidth as a reason for leaving – something which I think you could influence.

    What major economic cycle do you blame for your staff saying different things from your website?  More like mismanagement, bad communication and lack of leadership.  If you do consider yourself an Internet company, why are there forms to fill in – by hand!?  Why can I not go to your website, fill in my credit card details and get ‘Instant Internet’?  Come on Mr Knott-Craig, show a bit of the innovation that put Vodacom on the map.

    Maybe you have, with your past successes become isolated from consumers.  I assume that you have a fancy house with a big generator in a secure estate, private schools, SUV’s and a PA to sit on hold for you at Telkom.  Perhaps it is those sorts of things that have numbed your understanding of why your staff are packing for Perth.  You are not a South African ‘business visionary’, you are a South African capitalist stuffing your Perth-bound Louis Vuitton luggage with as much cash as possible.

    Simon Munro

    Posted Apr 29 2008, 02:16 PM by Delphiza with 2 comment(s)
    Filed under:
  • We're missing out on something... I think

    The lack of light in deepest, darkest Africa is not a reference to the load shedding, impassable national roads or fenced in communities where no mere mortal can venture.  The darkness in Africa can be summarized in an image like the one below where there is a solitary light on somewhere in Joburg.

    This is a ‘night-time’ map showing all active multiplayer users playing Halo 3 on Xbox Live and is updated every 15 minutes here.  More detailed analysis makes us realise that it is an indication of a primarily western console (the Japanese are more Playstation fans) for a game that is a bit out of date and has a cult following amongst American college students.  However, you can’t help noticing a solitary dot in Africa where some Halo 3 die-hard getting pwned by network lag.

    I looked for various statistics and particularly nice diagrammatic views on broadband penetration in South Africa and cannot come up with anything as compelling, and obvious, as that little dot.  Regardless of the source of statistics one thing is certain – in South Africa we have a pitiful level of broadband penetration; that is if you are willing to stretch the definition of broadband to include anaemic little 1Mb lines.

    We know the reasons (high cost) and we know the culprits (Telkom, Department of Communications) but do we, the privileged few who can fork out a few grand a month for unreliable and relatively slow broadband connectivity, really know what we are missing?  I don’t think we have a clue.

    Broadband is not about providing access to quality education for the underprivileged.  It is not about providing a means for skilled doctors to diagnose remotely.  It is not about providing video conference facilities to corporates or running feature rich business applications.  Businesses don’t really need broadband to transact – credit card transactions, swift payments and airline reservations are pretty lean.

    In our capitalist driven globalized world, broadband is about connecting consumers to sellers through as big a pipe as possible so that they can buy stuff.  But not just any old stuff mind you, we’re talking about the stuff that people don’t really need but want - because they can afford it.  The people that have the disposable income and they will buy virtually anything for $10 without taking the time to see if it is really useful.

    Broadband delivers YouTube videos which in some cases are better than the crap on TV, are free to produce (for YouTube at least) and provides a page or platform for a few on the hundreds of thousands of viewers to click on an advert and buy some related stuff.  Do you like the Elvis video you’re watching?  Well click here to buy a dancing Elvis phone – hmm, I know t least one person that would if it was easy, cheap and delivered.

    Broadband delivers movies and TV shows that we have already seen before but will watch again because there’s crap on TV and besides we liked that episode anyway.  The producers have made their money selling Grey’s Anatomy for prime-time TV and sold as many box sets as they can, so why not put it out there and squeeze the last life out of it from millions of lazy Americans.  Follow this link to hulu.com and you will find it there.

    Broadband delivers music and videos that can be directly downloaded onto you iPod which you buy anyway because iTunes has looked at your playlists and offers some recommendations – which you more or less agree with.  They might as well sell it to you cheap to save you the hassle of ripping a friends CD – besides if you buy it on iTunes you get cover art, which is cool.

    Broadband delivers a community of your gaming peers who will spend hours shooting at each other on Xbox Live.  You’ve paid handsomely for the game but they will get you and millions of others to pay a subscription fee to play with each other and once your ‘friends’ have paid for and downloaded the newest map pack – you have to follow suit.

    Broadband delivers the ultimate platform to buy stuff – eBay.  Where you can sell stuff that you don’t really want and buy stuff that you don’t really need.  It is all hooked up to the idea of being permanent continuously connected to monitor your bids – an opportunity to find more stuff and tracking your deliveries, rating suppliers and all sorts of other things to make your purchase of someone else’s junk more fulfilling.

    Broadband delivers Facebook, lauded as a big player in Web 2.0 which provides narcissists a place where they can create a page on the Internet and invite people who didn’t like them in school – all so that they can have a score on how much they are loved which can be viewed by people who are either jealous or don’t care.

    We don’t have broadband and we don’t get what it delivers.

    There is no Xbox Live in South Africa, no iTunes, no hulu.com.  We don’t have eBay wired into our culture.  Leon Bambrick commented recently that after selling his soul to the devil it turned up on eBay for him to buy it back – we don’t understand jokes like that.  We, thinking that we are well wired, are relieved that the HD-DVD vs BlueRay war is over so we can go and buy some plastic disks with bits on – we don’t realise that the rest of the world doesn’t care since they are already downloading HD content on their 100Mb uncapped line for less than the cost of a BlueRay disk. 

    We are fed marketing bull like Vodacom’s music download service MusicStation which promises an ‘iPod-like service’ that gives South Africa the ‘opportunity to leapfrog many European countries in digital music distribution’ – what drivel!  You can’t leapfrog anything with the cost per meg of bandwidth.  It’s like Telkom offering HD movie downloads for free – but at 15GB per download it will cost a few grand per movie.

    Web 2.0 is driven my consumers and marketers and we have neither in South Africa.  With broadband penetration estimated at less than 500,000 people we are, in the minds of the rest of the Web 2.0 world that one insignificant dot on the map above – hardly worth attention.  Some of the other darker areas on the map are emerging markets for Web 2.0 and they are watching India, China and others.  After all an undersea cable between Japan and China doesn’t seem like such a big engineering challenge compared to laying one down on the African coast where we still have frikkin pirates patrolling the waters!

    Business has been bleating for ages about the cost of bandwidth and how it hinders their business.  Promises of cheaper bandwidth won’t live up to expectations – investors need a return on their delayed business plans and dealing with pirates.  Besides, duopolies don’t go into price wars.

    Over time we probably will have sufficient bandwidth and a good enough price to satisfy South Africa’s needs in terms of education and connection of more of the population to the Internet.  We have bigger problems to deal with in terms of skills, literacy and even electricity.  The oversupply of bandwidth to the privileged who want to buy stuff on the Internet is not going to be high on anyone’s agenda.

    In terms of Web 2.0 we will not fall behind the rest of the world – we are behind and will never catch up.  The growth of cheap ubiquitous communication in other parts of the world is orders of magnitude higher than we can ever sustain and if we do ever begin to close the gap technically we will be culturally misaligned and disconnected – unable to integrate it into our lives and businesses.

    Are we missing out on something?  I’m not sure and I don’t think anyone can say.  Those who have iTunes, eBay and YouTube integrated into their daily lives are not here and cannot offer a comparison.

    But I can’t shake the feeling that there is something going on out there that we have not and will not grok.

    Simon Munro

    deliveryfocus.net

  • Developers are not hot-swappable

    From the side I watched a project crash - mainly because the project manager allowed (encouraged?) key people to leave, replacing them with similarly skilled developers who had no experience on the actual project.  A previously highly productive development team started to languish and falter - missing deadlines an killing morale; a downward spiral from which the project could not recover.  In software development this is a fairly common scenario - particularly when developers start becoming cheeky and demanding (although we would never do that).

    Some professions and industries are more able to handle the replacement of one person with another with little or no impact to the job being performed.  Semi-skilled workers and tradespeople are good examples, but even highly skilled mature professions can handle it with relative ease - the medical industry even uses the term locum to refer to 'a person who temporarily fulfills the duties of another'.  Of course, from an HR or pointy haired management perspective it would be great to be able to treat developers as resources that can simply be interchanged as if they were perfectly fitting parts of a well oiled machine.  Managers tend to think 'Hey, this guy knows C# so we can use him to replace that other C# person' - how many times have you heard that?.

    As much as software developers think that they are special, the inability to interchange people is not unique to software development.  With any job there is a period of lower productivity when someone is replaced.  There are many reasons that can be applied to many jobs, from simple things like not knowing where the photocopier is to soft issues of being new and untrusted within a team to more complex reasons such as new skills that need to be acquired and the ramp-up time to understand new processes, terminology and organizational structures.  I would imagine that any manager would be familiar with these sorts of issues and most managers would concede that replacing anybody, developer or not carries a certain overhead.

    However, development is a fickle art and for the unaware managers there are some issues specific to software development that need to be considered.

    The developer may not know much that is relevant

    The frameworks that we work with these days are huge, broad and continuously evolving either directly from the vendor or from third party suppliers.  It is virtually impossible for a developer to know, at a detailed enough level to be productive, the entire framework or technology stack.  So when a developer makes it through the interview process as, say, a senior Java developer, you need to consider what that means in terms of your particular project.

    Given a set of 'things' within the framework, an a subset of 'things' that the project needs and the 'things' that a particular individual knows...

    DevSkills1

    If you are very lucky the developer knowledge will overlap quite nicely with your particular project needs...

    DevSkills2

    but unfortunately it is likely that the developer will be a touch out of sync with your project...

    DevSkills3

    and the effort to move the blue circle to cover the yellow circle is costly, painful, time-consuming and often fruitless.

    Developers aren't as interested in the clients' business as you may think

    Developers are continuously pulled in to meetings with business - sometimes to take a beating for issues and sometimes because people think that if the developer is in the session then properly documented requirements are unnecessary.  In these meetings a normally quiet developer will say something like "Well actually, you only need to re-order pink widgets if after they have been dispatched to the DC as they are the only ones not yet at the outlet otherwise you will have to cancel the order and issue an IBT" - a stunned audience instantly appreciates the developers insight into the business issues and the deep understanding that the developer has of their business.  But it is only perception - the reality is that at some point the developer had to cater for this undocumented exception(al) scenario in order to get something working.  The understanding that he/she has has come from experience rather than a fundamental desire to understand how to move various widgets around the world.

    Developers, when they start out in their career are keen on understanding how business works and over time those that maintain such interest go the business analyst route or become assimilated into the SAP consultancy market.  Senior developers, although they have a lot of experience across various business processes, are more interested in how the code works rather than the business.  Very few top developers can have the same passion for business and development.

    Yet, because of the occasional insights and business comments that are expressed by developers from time to time, management is under the impression that the developers are very interested and keen on the real business issues - a fair deduction from someone who doesn't understand the code at all.  Developers may monitor hundreds of technical blogs daily, but none relating to the actual business.  Developers buy books on the latest technology, but never on, say, the latest thinking around operational risk management.  Developers know the business issues because they have to code them up and understand how it all fits together - it almost soaks in over time rather than being studied or aggressively pursued.

    When hot-swapping developers, this knowledge about the business simply walks out the door - much the same problem that one would have with any person in the organization with experience.  The difference with developers is that it takes time, effort and inclination to rebuild the business knowledge.  Think about the last developer that joined your project, maybe they read the requirements document briefly until their network login was set up, but as soon as they could logon and open the project they delved into the code, permanently shelving the requirements document as they started working on the system.  They in turn would implement rules in code, not comment them and never reverse update the requirements document - something that their replacement won't even notice.

    Googling the code

    When developers need to find out how to do something, it is easier to Google for an answer than it is to ask the person sitting at the desk next to you and we have not yet progressed to a stage where the code for a system, that is already easily accessible to all, can be Googled for solutions.  Yet at the same time, the chances are pretty high that the problem trying to be solved has been implemented already elsewhere in the project code, particularly if a strong architecture is used with patterns that everybody follows.

    Over time, after writing his own code, debugging others' code, figuring out who to blame when the build is broken and so on, the developer starts to gradually build his own internal index of where to find things.  Solutions then become simpler, such as - "How should I authenticate against the report server? Go look at the authentication for the web service which is in the WebSvcController module.  Ah, good idea!".  Sometimes a developer will do a find on the project source code for a keyword that seems unrelated buts points her in the right direction.

    When hot-swapping developers, that code index and search engine walks out the door, and the new developer has to re-index all over again - the common result is a few re-inventions of the wheel until the index becomes searchable.

    Losing the argument

    In the Infomet methodology the loss of an argument refers to the problem in business analysis where users may give their requirements and understand the first models produced, but as the design progresses new terms and abstractions are added and they don't recognise the final design - they cannot argue the correctness of the final model.  In software development a similar process occurs where changes are made, code is refactored and layers are added to a point where it is barely recognisable and particularly difficult to understand if the developers weren't along for the entire journey.

    Any feature evolves over time and it is the most critical ones that evolve the most because of their importance and usage.  Take any simple feature like pressing a button on a form and a new page appears - the first feature complete iteration may be quite simple and have little code;  then it is decided to add some authentication and security;  perhaps there is a need to add some threading to improve responsiveness;  a refactoring process decides that some code behind the button is useful and it is refactored into another library;  another similar feature comes along that could use the functionality if it was abstracted correctly.  What you land up with down the line is a secure, threaded, refactored, abstracted feature - and it seems perfectly logical to the existing developers, who can also debug, re-use and find their way around the feature anyway, so they don't notice the complexity.

    A hot-swapped developer will walk onto a project, take one look at the code the code and think "This is too frikkin complex, I think I need to rewrite it"

    Hot-swapping vs Replacing

    The idea of this post is not to state that developers are so precious and replacing them is too difficult and detrimental to the project.  Developers can be replaced and indeed should be replaced - you may, for example, choose to replace the initial developers with developers better at maintenance as the system stabilises as part of your normal SDLC.  Replacement however starts with the premise that the right skills need to be found, formal handover needs to take place and the process of replacing an individual is carefully managed.

    Additionally, project managers should endeavour to have little or no high dependency on a particular individual and having a 'High Bus Factor' is a bad idea on any project.  This post serves to point out some of the development specific issues with considering developers to be easily replaceable as long as they have X years of experience in technology Y on their resume.

    I sincerely hope that more project managers begin to learn that the term locum simply does not apply in software development - yet.

    Simon Munro

    Cross-posted from deliveryfocus.net

    simon - at - deliveryfocus - dot - net

  • Career Risk

    I sometimes hear the phrase 'we are carrying all the risk' which, in the narrow view of the speaker refers to financial risk. And, because of this narrow view, is often followed by 'so we need full control', 'so we have the bulk of the shares' or something similar. When I ask 'but what about the risks that I am taking?' my questions are met with blank stares that continue to remain after the explanation my point of view is complete.

    It seems that most business people, when negotiating with individuals as suppliers have the attitude that they have the money and money is all that matters. Individuals do not necessarily share that observation and are concerned about risks that relate to more than money. If you were asked to work on a three year project using technology that was not mainstream or state of the art would you take it? Would you commit to being a Netware engineer on a token-ring network for two years or a cobol programmer on a hierarchical database? Most people in IT that I know would not think about it. Never mind technologies used, what about working on a project that is two years late, four times over budget with a brand new project manager that has promised to 'finally get things sorted out'? It becomes less clear in startup situations where nobody can really assess up front what the final outcome will be but in most cases you can get some gut feeling. 

    When assessing an opportunity I try and assess the risk that I will be exposed to personally. Not the kind of personal risk you are exposed to if I run with scissors or handle sharp paper, but the possible risk to my career based on a particular project. The things that I consider include:

    • The risk of landing up in a technical dead-end which results in being out of sync with the market demands when the project ends.
    • The risk of the project failing completely and landing up with a tarnished reputation.
    • The risk of a successful project landing up in a maintenance mode where there is too much dependency on individuals making it impossible to leave gracefully.
    • The risk of things that I have learned and created being completely owned by those that took the financial risk (also known as selling your soul)
    • The risk of being on a death-march project where I could be burned out or in bad health because I tried to be a hero.

    This concept of career risk does not seem to be shared by the average business person even though some industries consider many aspects of risk. For example the banking industry, because of regulations such as Basel II, consider risks such as reputational risk and legal risk. The assertion that the financial risk takers are taking all the risk is completely incorrect and the idea that the financial risk takers should take complete control and realise all the benefits creates a risk-reward imbalance. I am of the opinion that (cheap) money is actually easier to come by than good resources and
    it makes me think that maybe the equation should be turned around and the risk that individuals take should be seriously considered.

    If I work on a project that leads me down the wrong path for a few years I may never be able to recover and chances are that the organization that put up the cash will still keep going – which begs the question 'Who is taking the most risk?'

    Simon Munro

    www.delphi.co.za

    Posted Jul 19 2007, 05:17 PM by Delphiza with no comments
    Filed under:
  • Wasting the Prince of Darkness and South African XBox Product Management

     

    There is a story about a Microsoft interview where the interviewer asked "You're in an 8x8 stone corridor… The prince of darkness appears before you… What do you do?" The candidate fumbled and was told that the correct answer was "You WASTE him! You *WASTE* the prince of darkness!!" The interviewer stated that one of the reasons for asking such a question was to uncover if the candidate was a gamer as the position had something to do with gaming.

    It got me thinking about the appointment of product management for XBox at Microsoft South Africa, I don't know who they are, but I don't think that they would know what to do with the prince of darkness.

    Interviewer: You're in an 8x8 stone corridor… The prince of darkness appears before you… What do you do?
    <long pause>
    Microsoft ZA product management: Sell him Vista Ultimate?
    Interviewer: No… Quickly! You're about to be pwned!
    Microsoft ZA product management: Oh, I know… get into a licensing agreement and join him in taking over the world!

    I don't think that the product management in South Africa really knows enough about gaming to get through any real gaming related interview.  Let me give some reasons why not.

    The console distribution channel seems confused and unsure of what they are selling and why.  Apart from sales staff not having a clue what you are talking about, the games that are on the shelves are sparse and outdated.  Last year, when buying Gears of War, the Sandton City CNA finally received stock after Christmas – the biggest game of the season, timed for a Christmas release internationally, was in short supply.  In October they had posters in the window, but come 'Emergence Day' nothing emerged – no locusts to waste or pwn for Christmas.  When I walk past the store I always pop in to see what they have on the shelves and it doesn't do the XBox justice – about three months after COD3 was released, they still had COD2 occupying their shelves and no COD3.  So, a new XBox owner is going to buy his console with a game that he thinks is a new game, but is already a classic – comparing his new console to a PS3 will be embarrassing.

    The obvious suggestion is to go to a speciality gaming store, like the one in Northgate, which I did.  I walked into the shop, turned to the X-Box area and bolding asked "I want to buy GRAW2 please", "What?" was the reply, "I want to buy Ghost Recon Advanced Warfighter 2, please" I repeated more explicitly "Oh, okay, here it is…".  The gaming shops are into PC games and just don't understand the X-Box and X-Box Live! subculture.  To sell X-Box games you have to know, not only what to do with the prince of darkness, but must also know what "Gears", "Graw", "Six" and other abbreviations refer to.

    I was walking around the PC section of the same shop and there was a customer who I could see had money in his pocket and wanted to walk out with an X-Box or PS3. The salesman fumbled through interesting anecdotes about overheating and other rumours and, when pushed about the games and graphics, finally admitted that he is more of a "PC Man" and has never played a console game. The guy left the shop with nothing and his R6,000 plus still in his pocket.

    By far the most obvious example that the product management here at Microsoft wouldn't know what to do with the prince of darkness is the lack of XBox Live support for South Africans. A lot of South Africans play XBox Live and log in using accounts created with UK or US credentials and there is a thriving online community. It is not uncommon to join a quick match and find South Africans playing a game. The 'gears' community seems to be the biggest (and most addicted) and once a game gets hosted in South Africa everyone jumps into the space so that they can play a lag-free game (thanks to the hosts for using your precious bandwidth – you know who you are). When I switch on my XBox, most of my friends are local and at least half of them are online for the entire evening or weekend.

    I am not sure how many people at Microsoft South Africa really play XBox live but it can't be that many because I am sure they are not officially allowed to.  For those who have not, we need to give them some clues:

    • XBox is XBox live – the only possible exception being games for kids
    • Live enabled games, such as 'gears' or 'graw2', without Live can be played for a weekend or two before they become boring.  There are South Africans (we know who they are) who have probably spent an average of three hours a day for the last six months (500+ hours) playing 'gears' – the value proposition for the entire console and game changes drastically when you get that much entertainment out of it.
    • X-Box Live is miles ahead of what PS3 has to offer and is the key difference between the consoles – if you want to sell XBoxes, get Live sorted out and get some market share!

    Why is there no XBox live in South Africa?  I don't know really and when I stopped following the discussions last year there was a mention of 'negotiations with Telkom' (Telkom is South Africa's much hated, overpriced fixed line operator). Hang on a minute!  Does this mean that Telkom is telling me what to do with my (very expensive) bandwidth?  Am I being censored and is Microsoft South Africa colluding with Telkom?  Don't start with lies about consuming too much bandwidth, there is a 'gears' junkie who plays 'gears' (very well) on a dial-up line.

    So to return to the interview…

    Interviewer: You're in an 8x8 stone corridor… The prince of darkness appears before you… What do you do?
    Microsoft ZA product management: We negotiate with him and offer the souls of local XBox Live users to him in exchange for being left alone.

    The prince of darkness in South Africa is Telkom and he is not being wasted by anyone at Microsoft South Africa.

    A new update of XBox Dashboard will apparently filter content based on originating IP addresses – supposedly all the South Africans will still be able to play live games but nothing is sure when your IP address originates in the realm of the prince of darkness. This is enough to make a whole lot of shotgun wielding COGs and locusts nervous and trigger happy and there is a petition online to bring this to the attention of somebody. 

    This has created a stir and Microsoft is giving some answers on CraigN's blog and in this News24 article.  One official response from Cindy White cracks me up - "Xbox 360 is a true next-generation digital entertainment experience, that with or without Live the experiences can be enjoyed." Dont be such a noob!  XBox is no fun without Live, and this comment appeared in the GRAW2 forums is illustrative of this feeling - "I vow you will never see a single player achievement for me in Graw2 <snip> if i wanted to play single player games i would have gotten a ps1"

    So, if you are from Microsoft South Africa and reading this please try and change things before you get pwned by Sony and Ster Kinekor.  You may need to start a new round of interviews though.

    Simon Munro
    Gamertag – Delph1za

    Cross posted from www.delphi.co.za

    Posted May 09 2007, 04:42 PM by Delphiza with 4 comment(s)
    Filed under:
  • An open letter to whoever is limiting my bandwidth

    To Whom It May Concern,

    Recently, because of various firewalls, proxies, scanners and content filters I find my Internet usage habits negatively changing.  Your objective of limiting my Internet usage has been achieved although it does not align with my objectives and I question whether or not it aligns with the long term strategic objectives of the organization.

    As an aside to my understood delivery related job functions my position requires that I am plugged in to the Internet so that I can find answers to current, relevant questions as well as having a constant stream of data that helps me formulate my thoughts - about what needs to be understood, as well as fueling insight and creativity which - although your organization may not realize immediate benefits - I expect something useful will be reaped in due course.

    At any point in time I have at least three development environments open, Word, Outlook, Media Player, some explorers and at least ten browser sessions open.  I flip through all of these constantly without breaking my stride... a pause while I let a technical problem that I am encountering sink in is a chance to switch to another window and do something else.  Google is my guide to the world and my profession and I constantly monitor about 50 rss feeds - admittedly one or two of those may not be considered work related, such as The Dilbert Blog or Boing Boing and others may be borderline relevant to my job, such as The Register or SlashDot.  The rest of them I consider highly relevant for the functions that your organization expects me to perform on a daily basis.

    Of course I don't expect you to understand any of this as you sit there in your office counting beans while you wait for your emails to print out so that you can read them.  You are interested in the bottom-line cost of Internet availability and you are not able to picture how the Internet is constantly changing the world - unfortunately your 'visionary' board members have the same myopic view.

    You may think that I am just some geek whose needs are irrelevant, but geeks are at the forefront of technology adoption for the next generation - who at some point you want to have as customers as you sit in retirement waiting for your dividend cheques.  About ten years ago I was considered a geek because I used an Apple Newton - now you probably have an I-Mate of your own and are trying to figure out how to use the technology to push more products and services to your customers. SMS (Text Messaging), which is considered a vital communication mechanism for any business, was not adopted because of some boardroom directive or even a Gartner analysis report - it was driven by millions of youngsters flirting with each other at noisy raves, where voice communication simply did not work.  Those youngsters are now your customers - which is why they demand that services are delivered by text message.  If you don't believe me, step out of your office, find someone young - and challenge them to a race to see who can type out a message fastest on their mobile - you will lose.

    Other technology is being adopted by the next wave of youngsters where instant communication and access to vast sources and types of media is considered normal.  For them it is more normal too scan the Boing-Boing feed than to watch prime-time news.  They want things that interest them streamed directly into little white headphones that they are always plugged into.  They create blogs and wikis and use them as a source for their buying decisions.

    They are becoming your customers and, your actions clearly indicate that you will only understand them too late.

    I know you think that I should not be using the Internet for non 'business related reasons' and that Internet access decreases productivity.  I beg to differ and think that productivity is the responsibility of line managers and not some piece of software that sits between me and the rest of the world.  If I may not access the Internet at work for fear of being dragged in front of a disciplinary hearing, may I bill you for my work related Internet usage at home?  How much can I charge for listening to a relevant thirty minute podcast at home?  Will you refund me for downloading a 200MB software update at home because I would never be able to get it downloaded at work?

    I am not requesting that you investigate my Internet usage in order to determine if I am worthy of more Internet access.  I consider such investigation an invasion of privacy and where I go on the Internet is not something for public consumption.  The recent exposure of the AOL search logs is a clear indication of how such data can be (mis)interpreted.

    The irony is that this is being addressed to you via a blog, and you are so disconnected that you wont even find it.  If someone does forward you this post, bear in mind that I have left out the links on purpose so that you can use that precious bandwidth to go and figure it out for yourself.  You can start at Google - the only link you need to get started.

    Posted Aug 31 2006, 05:30 PM by Delphiza with no comments
    Filed under:
  • The Ultimate List of Developer Tools from Scott Hanselman

    As can only come from Scott Hanselman, an exhaustive list of tools and utilities that developers use.  From the common to the obscure, definitely worth a look and a bookmark.
  • IT Architecture - The Usual Suspects

    If you are considering a career as an IT Architect you need to pause for a moment and wonder if you want to label yourself as an 'Architect'.  While there is a general trend at the moment to clarify the term more carefully and formally, most of the people you run into will have there own preconception of what an architect is.  Lots of people run around IT giving themselves the architect title and, whether doing architecture or not, have given all aspiring architects a bad name.

    So when positioning yourself as an architect, consider that the following types of architects have already set the perceptions of what an architect is.

    The PowerPoint Architect

    By far the most common type of architect is The PowerPoint Architect, these kinds of architects produce the best looking architectures on paper... I mean PowerPoint.  Great colours, no crossing lines and reasonably straightforward to implement... apparently.  The problem with PowerPoint architects is that they are so far removed from real implementation that architectures that they propose simply won't work.  The PowerPoint Architect is generally a consultant who, just before implementation is about to start, picks up their slides and moves to the next project - leaving everyone else to implement their pretty diagrams.  The PowerPoint Architect believes that software development is similar to doing animations in PowerPoint and infrastructure is about how to get your notebook connected to a data projector.

    How to spot The PowerPoint Architect

    The PowerPoint Architect gives him/herself away by scheduling presentations in meeting rooms and having so many slides that there is no time to go into the detail.  If the meeting has more business and project representatives than technical staff, it was probably organized by The PowerPoint Architect so that technical questions seem out of place and should be 'taken off-line'.  The PowerPoint Architect has also been known to use Visio.

    The Matrix Architect

    Named after 'The Architect' in the Matrix movie series, The Matrix Architect has been there so long that he/she doesn't know any other way.  Matrix Architects leaves no room for improvement, discussion or negotiation as the architecture was written by them eons ago and has worked fine, thank you very much.  Much like the scene in The Matrix Reloaded, The Matrix Architect has a personalised, well defended office and if you manage to get in, you simply have to leave by one of two doors - without getting a chance to explain yourself.

    How to spot The Matrix Architect

    The Matrix Architect normally has their own office and is well settled.  Technical books on CORBA, Betamax and other has-been technologies are proudly displayed on the shelves.  The Matrix Architect can also be spotted by their uncanny ability to work their way into meetings and throw curveball comments like "That's just like the SGML interface that we used on DECT and in my day..."

    The Embedded Architect

    The Embedded Architect creates architectures that are so huge and complex that removing them is similar to taking out your own liver.  Most of the time they do this for career stability or, if they come from an external organization are there to milk as much future profit out of projects as possible.

    How to spot The Embedded Architect

    The Embedded Architect is very difficult so spot during the embryonic stage when they are infecting the existing architecture and often once spotted it is too late.  The Embedded Architect often has a team of disciples that as a group understand the entire architecture, but individually know very little.  A requirement that new team members go on an induction course on the architecture is a sign that there may be an Embedded Architect somewhere within the organization.

    The Hardware Vendor Architect

    The Hardware Vendor Architect is actually a salesman with a reworked title.  The Hardware Architect's role is to point out the flaws in everyone else's architecture so that they can justify why the extra hardware expense is not their fault.  At Hardware Architect School, The Hardware Architect is trained in creating proprietary hardware platforms that create vendor lock-in.

    How to spot The Hardware Vendor Architect

    The Hardware Vendor Architect normally has a car full of pens, mouse mats and notepads emblazoned with some well-known brand which they use to assimilate the weak.  They also have huge expense accounts where they can take the entire data centre to lunch occasionally.  They are often heard saying things like 'You need a 24x7 99.999999% disaster recovery site'

    The Auditor Architect

    We are not sure of the origins of The Auditor Architect, because they are supposed to be auditing things, not creating architectures.  The Auditor Architect will always propose an architecture that uses spreadsheets for every possible system interface that requires each user to be a CA so that they can review the transactions before they are submitted (not to be confused with The Auditor Project Manager who uses spreadsheets for all documentation).  Since most organizations don't have that many CA's, The Auditor Architect represents a firm that can provide as many CA's as may be necessary.

    How to spot The Auditor Architect

    The Auditor Architect always wears a black suit, white shirt and an expensive tie in the latest fashionable colour and style.  The Auditor Architect will often go to great lengths to express that they are unbiased and just want to make sure that things are done correctly.  Most emails received from The Auditor Architect have spreadsheet attachments.

    The Gartner Architect

    The Gartner Architect has knows all the buzzwords and has all the supporting documentation.  They never actually put together a workable architecture but run ongoing workshops on the likelihood of the architecture looking a particular way at some point in the next six months to five years.  As soon as an architecture is established, The Gartner Architect uncovers some 'new research' that requires a suspension of the project while the architecture is re-evaluated.  Incidentally, sometimes The Gartner Architect is known as The Meta Architect.

    How to spot The Gartner Architect

    The Gartner Architect always does presentations with references to some research noted on every slide and the true test of The Gartner Architect is asking for the document that is being referred to - it won't materialize.  The Gartner Architect is often accompanied by a harem of PowerPoint Architects eager to get their hands on the material.  The Gartner Architect is often entertained by The Hardware Architect, provided that they represent products that are in 'The Magic Quadrant'.

    The ERP Vendor Architect

    True Architects for ERP systems do exist - but they hang out somewhere else, like in Germany, and not on your particular project.  There is no need for an architect on a system that if changed, self destructs within thirty seconds.  The ERP Vendor Architect is actually an implementation project assistant that is billed at a high rate.

    How to spot The ERP Vendor Architect

    The ERP Vendor Architect almost always has a branded leather folder of some really fun training conference that they went to in some exotic location with thousands of other ERP Vendor Architects.  A dead giveaway is if The ERP Vendor Architect and The Hardware Architect are exchanging corporate gift goodies - a sure sign that they are colluding do blame legacy systems for the poor performance.

    The UML Architect

    The UML Architect is not interested in any architecture that cannot be depicted using UML diagrams and spend a considerable amount of effort making sure that this happens.  The UML Architect lives in an object bubble and has no consideration that their intended audience never learned SmallTalk.

    How to spot The UML Architect

    The UML Architect is easy to spot from the documents that they produce.  All documents have a lot of stick-men, hang-men and and cartoon characters pointing at bubbles.  The UML Architect will always be able to describe the architecture by <<stereotyping>> it as something that you will understand.

    The Beta Architect

    The Beta Architect insists that the current version of whatever software you are using is going to be ridiculously out of date by the time the system goes live.  For that reason it is important that the development be done with the beta framework, operating system or development environment and not to worry, the product will be probably released before the system needs to go into production.

    How to spot The Beta Architect

    The Beta Architect normally wears a golf short with a large software vendors logo embroidered on the front and walks around with a conference bag suitably branded.  The Beta Architect normally comes from an external organization that has a partnership with a large vendor indicated by some metal, but always gold or platinum - bronze and silver partners are not worthy.

     

    Simon Munro

  • KillChildren() - A sign of a bad programmer or a serial killer

    A comment by a colleague on my last post on 'relations' - chuckling at the question "What on earth is a 'parent-child relation'?" prompted a post on one of my other naming pet hates - namely the mis-used concept of Parent-Child to denote hierarchy.

    Over ten years ago I wrote a tree handling routine that needed to delete sub-nodes of a particular node and the method started off being called Node.DestroyChildNodes() which, at the time, I thought would be pretty cool to rename to Node.KillChildren() to reflect the concept of eliminating the children.  Over the years I became more pedantic about naming, primarily inspired by my mentor who was and is extremely particular about naming.  This person had an interesting academic background and his degrees in Theology, Psychology and Electrical Engineering made him interesting to deal with.  He was working as an architect on a project and I overheard a discussion he was having with a developer that went something like this...

    Architect - "Did this account fall pregnant?"

    Developer - "Er... no" (I don't understand the question look on his face)

    Architect - "Did this account go into labour?"

    Developer - "Er... " <long pause> "No"

    Architect - "Was this account inseminated by another account"

    Developer - "I don't think so" (some language barrier here)

    Architect - "Did this account go to hospital and, after a long labour, give birth to this (other) account?"

    Developer - "No.  What on earth are you talking about?"

    Architect - "If this account didn't physically give birth, or contribute is sperm to that account, WHY THE <expletive removed> DO YOU CALL IT THE 'PARENT' ACCOUNT?"

    Since then, the developer made sure that he only used parent and child when referring to real people, as parents, and their children.

    So if it is not correct to use parent-child except in cases where there are actual people involved who have a legal and physical association, what should be used to denote hierarchies?  The simplest and most generic would be to use subordinate which the dictionary defines as 'One who stands in order or rank below another'.  The shorthand of subordinate is sub and is something we use often in English as in subtitle, sub-paragraph and so on.  If sub is the 'child', what is the 'parent'?  From a rank perspective, a choice could be 'principal' but more generically I prefer to use 'superordinate', which the dictionary defines as 'Of higher rank, status, or value'. Although superordinate may be a little bit obscure it is used in English (superscript) and has a convenient shorthand - namely sup (which if misinterpreted to be 'superior' is not to bad.

    Using this naming, a table that stores a hierarchical structure may have the fields 'Id', 'Name' and 'SupId' (instead of ParentId).  My tree routines would also read better - instead of DestroyChildNodes() I would have DestroySubNodes(), which reads well; I would also have a property called SupNode, that would return the superordinate node.

    Using sub and sup is the easy, generic solution, but if you think about it more there are other names that can be used in different circumstances such as...

    SuperordinateSubordinate
    PredecessorSuccessorUsed if the time dependency is critical
    ProviderDependantUsed in true dependency relationships

    Can you think of any more to add to this list?

    It is important in both design and implementation that we name things well and that they make sense.  All too often business hands something over to IT and by the time it comes back it has been abstracted, generalized renamed and confused. 

    Imagine the scenario when dealing with a user talking about a medical aid system where a person has dependants...

    Developer : "When you click here the child nodes are removed"

    User:  "Why not the spouse node as well?"

    Developer: "There is no 'spouse' node"

    User: "There is, two children and one spouse"

     

    Simon Munro

  • Caveat Lector! The 'relation' in ADO.NET

    In interviews I need to know how well the candidate knows databases and start off by going back to basics.  After establishing that the candidate knows that the 'R' in RDBMS stands for 'Relational', I follow it up by asking for a definition of 'Relation'.  I will accept answers along the lines of "... a set of tuples" or at a push, "... a table" (A table is a lay term for a relation, particularly when used in the context of SQL databases).  However, most times I receive an answer that starts something like "A relation is when you have another table with a foreign key...", at which point I ask "Are you talking about a relation or a relationship?", which is followed by stunned looks or muttered agreement.  I have interviewed hundreds of people over the years and only one or two haven't used a 'foreign key' based answer.

    For some reason the concept of foreign keys in SQL databases have been confused with the relation.  I think it comes from the colloquial use of statements such as "Relate employee and employer on EmpNo" - the 'relate' really refers to a relationship but since the speaker may remember a single semester course in relational theory (apparently making him an expert) recalls that it sounds a lot like the 'relational' in relational database and thus the confusion starts.  Maybe it was the result of Bill Clinton's infamous statements where, I can imagine, during a brief period when mathematics was more practical than abstract, a group of exhausted mathematicians decreed "After much experimentation we can saefly say that 'sexual relations' are not part of the realtional model and probably refer more to the physical relationship between two somewhat consenting adults"

    I'm no mathematician sitting in some old ivy covered building at an academic institution - I deliver systems based on SQL databases and (ADO) DataSets every day and am a big fan of the technologies that I use.  However, having had a background in more formal methodologies and working with great, intelligent people over the years - I have tried to understand the theoretical basis for what I use and a smattering of relational theory fits into that understanding - I think that some knowledge of relational theory is important to build systems on top of SQL Server.

    With that as a background, hopefully you will understand why, when using ADO DataSets and Visual Studio, I cringe every time that I have to refer to the ADO version of 'relation'.  Even typing that last sentence makes my hair stand up. 

    DataSets don't seem to officially claim to have anything to do with relational theory and with that as a disclaimer they don't do anything wrong.  Just as SQL Server or Oracle don't make any claims about fully supporting the relational model for fear of upset computer scientists and mathematicians spray-painting integrals all over the Microsoft campus.  However, since DataSets talk to SQL Databases which in turn are (sort of) based on the relational model - the distance between DataSets and relational theory is not that far - the inference that the DataSet relation has something to do with the relational model's relation does exist.   The only 'official' association that I have found is in MSDN (Datasets in Visual Studio Overview) which states "The structure of a DataSet is similar to that of a relational database; it exposes a hierarchical object model of tables, rows, columns, constraints, and relationships." - Which should be enough to upset a few theorists.

    The ADO Relation is simply incorrectly named and propagates the confusion that people have about thinking about relations and relationship interchangeably.  The relation is a fundamental construct in relational theory and has formal relational algebra, relational calculus and other mathematics behind it.  The ADO relation is simply a badly named foreign key.  It is a fundamental error and is like calling the steering wheel of a car a chassis.

    Not only does Microsoft abuse the term, they also use it inconsistently.  Visual Studio developers that have used the DataSet designer are used to the term 'Relation' as it is in the IDE (right click | Add | Relation) and I have myself said to developers things like "Create a relation (cringe) between those two DataTables".  However, the actual class that is being created is a DataRelation class.  Thankfully, the class is not called a relation and DataRelation is sufficiently devoid of significant meaning (like calling the aforementioned steering wheel a DirectionChassis) that one can get away with it.  But why then does Visual Studio call it a relation, and why couldn't they just have used 'relationship' in Visual Studio? 

    Unfortunately it doesn't stop at Visual Studio.  The DataSet class has a property DataSet.Relations which returns, not a collection of DataTables as someone with some understanding of the relational model would expect, but rather a collection of DataRelations (er... foreign keys?).  DataSet.Relations.Add() does not add a new table, it adds a new DataRelation(ship).

    To add to the confusion, the msdata schema definition (xmlns:msdata) uses the term 'Relationship' (msdata:Relationship annotation) or the xs:keyref annotation for foreign keys.  Generating DataSet Relations from XML Schema in MSDN recommends this after creating more confusion by stating "In a DataSet, you form an association between two or more columns by creating a parent-child relation." (aaargh! cringe! What on earth is a 'parent-child relation'?)

    I think that Microsoft's abuse of the term 'relation' is shocking and breaks thirty-odd years of sound theory as well as breaking a few object orientation rules along the way by not naming things clearly and consistently.  I don't think that it is going to be an easy problem to fix, but the easiest change would be to rename 'Relation' to 'Relationship' in Visual Studio - most developers wouldn't even notice.  The DataRelation class is more core to the framework but is thankfully so badly named that it has no meaning anyway so it could almost be left alone.  I don't know how easy it will be to change the Relations property on the DataSet which is horribly orphaned and should have at least be named DataRelations from the beginning.

    The number of people reading this post can never be as much as the number of developers going - Right click | Add | Relation - perpetuating the confusion.  I don't propose a Relational Vigilante Group that spray paints notations of set operators across the Microsoft campus and I imagine (sadly) that the generation that developed and believed in relational theory - the basis for nearly all our business systems - are literally a dying breed.  The father of relational theory EF Codd died in 2003 at the age of 79 and CJ Date, a driver of the relational model, is probably feeling a bit old and won't be able to compete with millions of young, energetic Visual Studio developers churning out thousands of blog pages every day.

    Caveat Lector is is a Latin phrase meaning "Let the reader beware".  All that I ask is that as a .NET developer that you be aware of the terms 'Relation', 'Relationship' and their respective meanings in relational theory, ADO, visual studio and I suppose, the social sciences.

    Simon Munro

    kick it on DotNetKicks.com
  • Don’t let HR specify your Architect role

    What is IT Architecture and what do IT Architects do?

    Seems like an obvious question which should have an obvious answer, yet it has sparked debate in recent months amongst some very clever people. The recent certifications by Microsoft and the Open Group have fanned the flames of questioning and discussion.

    I would like to think the need to understand architecture and the related role has to do with overall maturity of IT – where business is demanding more credible and qualified senior staff on their projects and the technologists are trying to be more specific, explicit and disciplined about their trade.  While I believe that there is an element of this, I suspect that the main driver of the current wave of interest is personal career aspirations.  Allow me to explain.

    Depending on what date you believe the dot-bomb bubble burst, we are about five years on from the end of the dot-com era.  In that time, most of the developers who climbed on the bandwagon have either thankfully gone to another industry or have managed to hang on and become more experienced and senior technical staff.  Corporate IT is also more stable and has trashed many of the outsourcing projects - leaving a technically strong pool of resources within their own organization.

    Someone who has been in development for five years or more begins to pay attention to the next rung of the corporate ladder and when looking at the people who are in a higher salary bracket – their eyes quickly fall on ‘The Architect’.  Not many developers want to become IT managers, dealing with budgets and other painful stuff – nor do they want to become Business Analysts producing lots of documentation that is never read. In their eyes ‘The Architects’ seem to have a cool job – good money and the freedom to play around with technology as much (or little) as they feel like.

    I can almost picture the discussion:

    <fade in to glass-windowed office with motivational posters on the wall of rowing teams>

    [Developer]: I want to discuss my career path here at <deleted>
    [Manager]: Great idea, we have lots of opportunities and value your contribution to the organization.  We have good career paths as a project manager or a business analyst.
    [Developer]: I want to be ‘An Architect’
    <pause>
    [Manager]: umm… Great idea!  But you don’t fit the profile.
    [Developer]: Why not?
    [Manager]:  You need more than five years of experience
    [Developer]: I've been *here* for longer than that.
    [Manager]: Oh...
    <pause>
    [Manager]: and you need leadership skills!
    [Developer]: I’ve been team leader on my team for three years!
    [Manager]: Yes, but you need other stuff
    [Developer]: Like what?
    [Manager]: Stuff like…. stuff like…. umm..  politics.  Yes! You need to be able to do politics! And I’m sure there are lots of framework thingies too! And you need to know what ‘The Big Picture’ is!
    [Developer]: You’re blowing smoke up my butt aren’t you?
    [Manager]: Not at all!  I’ll get the details from HR
    <begins typing>
    Dear HR,
    Please forward me the latest job spec for ‘Architect’...

    While I don’t believe that the role of architect has been entirely defined by someone in HR I think that the bottom up demand for clarity of architecture by development resources has been a major driver in the current need to clarify the architecture domain.  Some existing architects have assigned the title to themselves and are now being pressed to be more precise about what it is that they do – primarily by the developers on their own teams.

    I think it is great that architects are being put under pressure and those that have the skills and experience will flourish while the rest will fade away.  It means that not only will we have better architects and hopefully better architectures in the medium term, but also will have the opportunity to lay the paving stones for the next batch of architects moving up in the ranks.

    I ask only one thing – please debate this amongst your peers to come up with your definitions; don’t leave it up to HR.

    Simon Munro

    Some links to other people describing what an architect does

    Bobby Woolf (IBM)

    Miha (Microsoft Certified Architect)

    Ruth Malan (Bredemeyer Consulting)

    Allan Hoffman (Monster Tech Jobs Expert)

    Marianne Kolbasuk McGee (Dr Dobbs)

    Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! |