Category: General Topics

  • Most Developers don’t like Agile…Apparantly

    Most Developers don’t like Agile…Apparantly

    Now for something a bit more controversial. I read a post on LinkedIn recently which appears to originate from an Indian developer. Quite a discussion. Its at: https://www.linkedin.com/grp/post/2139884-5990522670213586945

    I’m an experienced developer, and I’m totally a fan of Agile.

    • Agile is about communication
    • Agile is about learning as you work
    • Agile is about working closely with your project sponsors and involving them in some of the details that are of interest to them
    • Agile is about taking small steps to progressively achieve something big
    • Most of all, Agile for me is about bridging the gap between what the customer wants and what the developers provide. It forces developers to talk to the customer when often they would prefer to hide in a hole and type away producing something that the customer may or may not want.

    I have had an Agile mindset ever since I worked for a customer in 1990 when they asked me to produce prototypes to help write a spec., and then throw these away. I didn’t – I developed the prototypes into the finished system, even though I hadn’t heard the term Agile or Waterfall at that point.

    The conversation I have linked to really got me thinking, but then I think I have an explanation for it. If you are working across time zones, cultures etc. for a corporate organisation that produces a spec., then it is very difficult to think Agile. There are too many layers of people involved. Agile requires experienced developers talking the customers language. It needs a common language, and a common definition of “Done”, especially when it comes to defining what goes into a Sprint and what language is used at Scrum meetings. It is about doing design and having a spec., but it means making extra effort to talk to your customer and follow the Agile method. Once this has been tried, it will become second nature, and better systems will result. I can’t understand anybody not being a fan.

    I will be blogging more about it, but further information is available at http://www.agilemanifesto.org/ and http://www.agilealliance.org/. Also just to try it.

  • Fewer Expert Developers are Better

    Fewer Expert Developers are Better

    Today, at a project review meeting, a customer said in no uncertain terms, that fewer, more expert developers are better than a team of devs all with just a couple of years of experience.

    I was very pleased about this, because this is something I strongly believe, and in this case, a good part of why the customer was saying this was down to my efforts working on her project. Also you don’t hear it from customers very often – most are not enlightened to these kind of benefits.

    It has been said that:-

    A good programmer can be 10 times more productive than a mediocre one.

    I think I first read this in a book quite a few years ago, possibly Code Complete, first edition, I’m not sure.

    Why is this the case? These are my thoughts:

    • Firstly software is not production. Its all design. The only production you do is hit build or publish when you release the software. And you don’t even do that your development environment does the majority of this work for you.
    • So as its all design, using your brain more (to produce a better design) that requires less coding really is useful.
    • If you can produce the same system with ten times less code then there is also a ten times reduction in maintenance overhead and a similar benefit when changes have to be made to the system.
    • If there are only two or three devs working on a system, then the communication overhead and need for meetings etc, is reduced.
    • What if you have too much work for three developers? Get your designer to split your software architecture in such a way that more than one team can work in it without inter-dependencies on the other teams. This is good practice in any case because you will also be reducing inter-dependencies in your software, which is definitely a good thing.
    • Some Agile teams are very light in terms of leadership and design. If necessary, have the business analysts and software architects report to a separate cross departmental leader as well as working in their day to day teams. This is important.
    • It is best if your teams are small but have different personalities within them, for example, somebody really bright who never completes anything, alongside somebody (not quite?) the opposite, a junior and a person who also has responsibility for documentation could be a good mix.
    • We are getting into politics now, but one of the reasons why companies don’t have experienced programmers is that there are not a lot of us around. At one time good programmers were promoted to management after a couple of years, which may well not be a good thing for either party. I’m not going to comment any more on this angle, because my last permanent job was in 1989, I’ve worked for myself as a software developer every day since then.

    More information on this subject can be found at http://programmers.stackexchange.com/questions/179616/a-good-programmer-can-be-as-10x-times-more-productive-than-a-mediocre-one

    The best experience I can draw from in this regard is my own. I have a customer who uses Indian developers, and my daily rate is almost treble what they charge. However the projects I have worked on are 3 times cheaper overall than the Indian projects and these projects at least partly due to the rework needed to get them ready for go live. I am not knocking the people involved here I’m just highlighted the inefficiencies in the management structure on these projects.

    Actual software development is not production like building a car, its a design process like designing a car, even when you write down as much as possible, you can’t write it all down without developing the software. This is why its so well suited to Agile techniques. The only production a developer does is pressing publish at the end when you want to see if the finished product works…

  • Running Visual Studio with Windows 8.1 in Administrator Mode

    Running Visual Studio with Windows 8.1 in Administrator Mode

    When running Visual Studio in Windows 7 (and 8), I always do a couple of things:

    1. Turn User Account Control (UAC) off – on Windows 7 this defaults Visual Studio (and other programs) to run in Administrator mode.
    2. Switch off real time scanning on Microsoft Security Essentials (I don’t run email on the same PC), because I don’t want an anti virus slowing things down by virus checking data that will never have a virus in it.

    Anyway, the subject of this article has come around because I’ve only just started using Windows 8.1. I tried to create a virtual directory in IIS via Visual Studio’s project web tab, and it said I didn’t have permission. WTF?

    The reason why turns out to be that you have to set additional permissions on your executables that you really want to be in administrator mode. Steps:

    Find devenv.exe for each of your Visual Studio installs

    I have 2012 and 2013 on a 64 bit machine, so these are in C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe and C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe)

    Right click devenv.exe and choose Troubleshoot Compatibility

    The following page appears:

    Program Compatibility Troubleshooter 1
    Program Compatibility Troubleshooter 1
    Click Troubleshoot program and click next

    The following page appears:

    Program Compatibility Troubleshooter 2
    Program Compatibility Troubleshooter 2
    Tick “The program requires additional permissions” and click Next

    The following page appears:

    Program Compatibility Troubleshooter 3
    Program Compatibility Troubleshooter 3
    Click “Test the Program” before clicking Next

    It won’t let you click next unless you click test the program first.

    After that its save the settings and close.

    You have to repeat this for each executable you would like to run in administrator mode. Lets hope they improve matters in Windows 10. Given the number of developers in the world, they should have a big button you can press when you are installing windows with the label “I’M A DEVELOPER, I’M NOT STUPID” so it can automatically set all this stuff up for you, although I’m not holding my breath…

  • More on Wireless Networking

    More on Wireless Networking

    Following up on my post about setting up Wireless networking, I wanted to relate a recent problem I have had.

    On occasion, the wireless networking was a bit hit and miss. In particular, the two iPads I have didn’t want to connect. Resetting the router was the only way to resolve.

    The router in question is a Draytek 2830vn. I loaded up wireless settings and set the mode to 11n only. This appears to have done the trick. 11n is the latest wireless networking standard of the options listed.

    Screenshot of the 11n only setting
    Screenshot of the 11n only setting
  • The Ultimate List of Programming Books

    The Ultimate List of Programming Books

    One of the blogs I follow is Simple Programmer by John Sonmez.

    While I haven’t seen many of his Pluralsight courses (I will get round to it one day), I do enjoy reading his comments on his blog, and I do think John is very good at explaining things, particularly for beginners, and this tends to give me ideas – I’ve coached or advised a number of relative beginners over the years.

    John has recently posted his “Ultimate List of Programming Books” on his blog. This is something that I’m trying to develop on this blog also, although progress is slow for me because I’m in the process of slowly going through my favourite books so I can properly review them on this blog – it may take me up to a year or longer to double the size of my recommended lists and review them all.

    Anyway, here is the link to John’s Ultimate List of Programming Books. Most of these would be on my list also.

    My favourites from his list are:

    • Soft Skills by John Sonmez himself – John calls this “The Software Developers Life Manual” – this is a good software development book covering everything apart from the technical side.
    • Code Complete 2 – this is another classic. However I find it quite difficult to read, its more like a reference. I have the original version in hard copy and the second version on Safari Books Online – its difficult to follow with all the jumping around between pages. I’ll try to give this book a better review in future.
    • I like all the Head First books, these are good introductions to quite complicated subjects.
    • Domain Driven Design by Eric Evans – this is one of my favourites on design and should ideally be read when you have some experience of OOD – or you could read Head First Object Orientated Design for a primer before reading this book.
    • Clean Code by Robert C Martin and the Clean Coder by Robert C Martin. I don’t quite agree with John when he says some of the advice is hard to swallow. What Uncle Bob is really on about with these books is he is getting us to think about dependencies and clearly showing the intent in our code – i.e. making code as readable as possible so its clear what its doing without making bugs that are difficult and expensive to find. I think all programmers should read these books with a totally open mind and then see how they can apply some of the ideas to their own work.

    Please refer to my preferred software development books on this site for more information. I will eventually link in my reviews to these pages as well when this blog really gets going.

  • Password Manager

    Password Manager

    My password policy for some time has been to have unique passwords for the important sites like Paypal, and internet banking sites, and not write any of this information down.

    However I can’t remember a unique strong password for every site I use, so some other sites have common passwords, these are written down in case I forget which password I use for which site.

    If one of these sites are hacked and my username and password is published, then I would have to change the password on all of the sites that use this username/password combination. How would I be sure I got them all? Would I be able to change in time? Is there an important site that has accidentally got one of my favourite passwords?

    Also Chrome will not show you your passwords, so there is no way of checking this. What I do like about Chrome though is that it remembers passwords across all my devices, my two development PC’s, my Windows laptop, and also my iPad and Macbook.

    I have decided to give LastPass a try out. Its free until the point I would like to share the passwords on my iPad.

    It imports the passwords from your browsers, turns off the remember password settings and replaces this with its own. It didn’t delete the old passwords though from the Chrome store (despite what it said), so its easy to try out and change back if you don’t like it.

    I’m just working through a security report from it that identifies the sites with duplicate passwords. All the sites I used will have strong auto generated passwords (you press ALT-G) apart from the sites that I would like to remember when using other PC’s. These will still have strong passwords that I remember. The way I do this is by choosing a series of words I know and string them together, e.g. AbLogaboutCoding rather than something impossible to remember like a9g57a!94*H.

    I’ve only used it for a couple of hours, but this new manager appears to just work and its easy to access just like the Chrome password system was. I’ll create another post on this blog if I find anything else worth mentioning about it.

  • When will Microsoft concentrate on Windows?

    When will Microsoft concentrate on Windows?

    I wish sometimes that Microsoft would just concentrate on its own products. Watching the Microsoft Windows saga over recent years, it appears to be far too interested in what its competitors are doing, to its own (and its customers) detriment. Let me explain.

    Microsoft is successful because of the huge success and installed user base of Microsoft Windows and Microsoft Office. Both of these products could be far better with just some simple tweaks. Microsoft appears to be more interested in watching Apple and others, and trying to play catch up with its own user interface, when it should have some confidence in its own ideas and concentrate on improving these.

    Here are some of the things I would do if I was in charge at Microsoft:

    • I would stop changing the user interface for changes sake. Its apparent that they have no ideas or plan of their own apart from to look at others. Make a strategy for the Windows user interface, and stick to it. If I can do that with the applications I create, I am sure that anybody with half a brain at Microsoft could do this. Every time they rip the interface apart its an opportunity for competitors such as Apple (who have had a much more stable user interface in recent years) to grab customers. Many people I speak with are sick to the back teeth of Microsoft continuously moving the location of commands so they have to spend time re-learning things they did learn in the past.
    • It would also be good if normal users would not be in administrator mode, that way you could have a more lightweight anti virus (I use Microsoft Security Essentials for my dev machines with real time scanning turned off).
    • Microsoft desktop search has never, ever worked properly in any version of Windows. Its totally useless. I use Agent Ransack which does a fast, brilliant job at finding files on my PC. Office 365 search is equally rubbish.
    • Office 365 does not let me remove an appointment that somebody else has set, I have to go and ask them to remove it even though they might have verbally told me not to attend the meeting – if I try myself, it removes and then comes back. How crap is that?
    • There are a lot of messages that come from windows that should have “Do not show this message again” checkboxes (and a place in the control panel where they can be re-enabled).
    • Why does the focus of the app move away, for example, when I open Outlook on my PC, I press New Mail and start typing and after a few characters I have to use the mouse to re-focus on the new mail window.
    • While on the subject of focus, give the user the option to have new apps open in the background and for the user to completely control the focus of the current app i.e. user should always change the focus manually.
    • When you press start in Windows 7, why does it sometimes refresh and disappear from under the mouse?
    • If you open a Window in Visual Studio for example on my multi screen PC, the window should open on the same screen as the original app, or if no original app, the same screen as where the mouse currently is.
    • It should be easier to control if an app opens maximised or not. A user with a 4K screen say, would probably not want any app to open in maximised.
    • Why put features in if they do not work properly? For example, double clicking on the window bar on my multi screen PC sometimes will maximise the window to all three screens. I never want that – I always want to maximise to the current screen. Again having the option to choose this kind of behaviour would be good.

    Some of these choices will not be for everyone but having a consistent place to go and set your options, properly categorised and named, would be really good.

    I could go on and on but here is a good place to stop.

  • Intel Rapid Start vs SSD Boot

    Intel Rapid Start vs SSD Boot

    Its important for developers to have fast machines. I tend not to go for the absolutely latest tech. but my machines are always fairly up to date and new.

    I’ve used Intel based motherboards for a while which have Intel Rapid Start technology, the idea being that you have a SSD drive that is used to copy the entire RAM of the machine when the computer sleeps so that waking up can then be really fast.

    Yesterday I upgraded my Windows 7 development machine to 32GB of RAM from 16GB, which meant I had to resize the partition that Intel Rapid start uses on the startup SSD. This got me thinking.

    The configuration is two 512 GB Samsung SSD’s in RAID mirror format that contains my C (Boot) drive and E (data) drive along with a 60GB OCZ SSD that I use for the D (temp) drive (this is a throw back from my Unix days although Windows doesn’t properly use the temp drive at least I can re-install the OS without losing my data on E).

    Control Alt DeleteI cursed it at times because I had forgot you have to add a margin to the size of the partition used for Rapid Start. I added 6GB in the end so 40GB to handle my 32GB of RAM.

    Anyway, I timed the machine waking up from sleep without the Intel Rapid Start technology enabled. It took 10-11 seconds. When I eventually finished cursing and got Intel Rapid Start working, I found the wake from sleep time was 30-35 seconds, and when the login screen appeared, it annoyingly wouldn’t let me type for another 10 seconds or so.

    I then went to my other development machine, which has a similar chipset, but Windows 8.1 and Seagate 1GB Hybrid drives and turned off the Intel Rapid Start. The wake up from sleep time went from around 20 seconds down to 6 seconds.

    So the moral of this story? It is to practice what I preach! I never ever consider code optimisation without measuring the performance first to find out where the code is slow and if its worth optimising. However I had been waking both my machines from sleep every day and wasting 30 seconds for no reason because I hadn’t recently checked the performance since upgrading my drives about 2 years ago!

  • IE9 problems with document.GetElementById()

    IE9 problems with document.GetElementById()

    I have worked in the past for corporate clients who are still using IE9. So despite IE and IE9 in particular not being that widespread in the wild, for these intranet systems, my apps must support IE9.

    This is not usually a problem, but I do recall a problem occurring in the past which went against what you might expect.

    I had some JavaScript whose job it was to open a popup on a web page and pass some data from the page to the popup so the user could review it and press “Search”. When the data was found, the user pressed a “Select” link on the popup and the JavaScript passed the data back to the original page and closed the popup. Should be simple right?

    The JavaScript code that transferred the data looked something like this:


    var custRegCodeTextBox = document.getElementById('CustRegCodeTextBox');
    var destCustRegCodeTextBox = document.getElementById('DestCustRegCodeTextBox');
    destCustRegCodeTextBox.value = custRegCodeTextBox.value;
    $('#popup').fadeIn(700);

    The code worked absolutely fine on my Windows 7 development machine running the same version of IE9 as the client (9.0.8112.16421 – 9.0.35) but it failed with JavaScript errors on the client. Why did this occur? A lot of head scratching and trial and error ensued because isn’t document.getElementById one of the most fundamental things?

    The solution was to change the code to use jQuery throughout, e.g.:


    var custRegCodeTextBox = $('#CustRegCodeTextBox');
    var destCustRegCodeTextBox = $('#DestCustRegCodeTextBox');
    destCustRegCodeTextBox.val(custRegCodeTextBox.val());
    $('#popup').fadeIn(700);

    Why did this work? The best I have to offer are two reasons:

    1. ASP.NET Webforms will generate id=”Something” name=”Somethingelse” even when ClientIDMode=”Static”. This may have been something to do with it.
    2. The customer had intranet compatibility mode turned on, and nothing I could do in the page would turn it off.

    Anyway, its not very often that using a library solves a problem, usually the opposite is true, if the library introduces a bug, going to the building blocks normally solves it. This just shows to me just how good jQuery really is.

  • Hiding the Navigation Window in Microsoft Word 2010

    Hiding the Navigation Window in Microsoft Word 2010

    Microsoft tend to enable new features by default; this is something I personally do not like.

    With Word 2010 and the new Navigation bar, they have gone one further; not only does it popup when you start Word using up screen space, its very difficult to disable this. I don’t want it to come up by default because it uses screen space and there is outline view after all, and I should be able to enable it if I want to see it. There is a principle at stake here!

    I searched around on the web to try to find an answer and the solution was hard to come by, so here it is.

    First of all, turn on the developer menu in word by going to File, Options, Customise Ribbon (you should be able to Google exact instructions for your version of Word if necessary).

    Screen shot of the customize ribbon dialog in Word showing the developer tab selection
    Enable the developer tab in Word 2010

    With the developer tab enabled, choose Developer, Macros and then Create, and type in the following code:


    Sub AutoOpen()
    '
    ' AutoOpen Macro
    '
    '
    CommandBars("Navigation").Visible = False
    End Sub

    Hit Save and you are done! To see the Navigation window you have to type in something else that brings it up, such as CTRL and F to find, or go to View, and then click the Navigation Pane check box.