Coding Zealotry: Peer Programming

In our next episode of the smash hit series “Coding Zealotry” (aka “The Random Babbling of a Madman”), we’re looking at the practice of peer programming (pair programming) and asking ourselves whether we should abandon our solitude and do it all together.

Peering Into the Paradigmboat-606187_1280

In case you’re uninitiated, peer programming involves two programmers sitting in front of a computer, writing the code together. Usually one guy writes and the other guy points out all his errors. Depending on the chemistry it can be a fun session of engaging on unique ideas, or a world war of spats over variable names. Read more

Coding Zealotry: Class Interfaces

In a previous article entitled “The Religious Zealotry of Coding Best Practice”, we looked at how some best practices are implemented blindly, even though the costs outweigh the benefits where the practice is actually implemented.

In this article we’ll take a brief look at class interfaces.

It Starts Simple

So here’s a classic service class in C#:

public class CarCreator
{
   public Car CreateCar(string name)
   {
       return new Car { Name = name };
   }
}

It’s simple, it does what it says it’s going to do, it’s easy to read, and clearly easy to add onto. Read more

The Religious Zealotry of Coding Best Practice

Looking across the different cultures of software houses, I’d say there are roughly three camps:

1. The Hack-Attack

The fast food merchants of code production, these guys look to get it out ASAP. Do the least possible work to get the sign-off from the customer, to get a product installed that does what it’s meant to do … for the most part at least.

I actually respect these guys – you can laugh at the quality of their work, but like a fast food outlet technically gets the job done (fills the stomach), these coders are incredibly efficient. In terms of bang-for-buck, they are often remarkably cost effective.

It’s fairly easy to understand the problems with this approach though. Some projects just go wrong. The code is at a level of spaghetti-ness that would impress a native Italian mafia-run dockside restaurant. Typically what happens in these firms is that a fast-build project is also a fast-fix project, so instead of accepting that the code essentially needs some level of re-write, the quickest dirtiest fix is implemented, which often only exasperates the problem. Read more

The Developers that Ruin the Show

“Previously on <TV show name>…”, we discussed how a business can slide into the blame game, where the need for accountability can cause staff to avoid ownership, and where every failing can result in additional processes that produce more cost than benefit.

code-707069_1280We’re preaching the virtues of trust, but as many a broken marriage will narrate, trust that is broken is often never recovered. For every grade-A star, there is a problem developer lurking behind his three monitors, about to ruin the party for everyone. How shall we fix a problem like Maria?

We’ll look at several common party poopers, and I’m sure you’ll even find yourself reflected in one of the categories. I certainly do. Each of these citizens starts with a low level of trust, and as you retrain them and increase their trust levels, you can drop the obsolete processes that originally served as safeguards. Read more

Money-Making is Where Money is Made

When it comes to inventing new tech ideas, it’s so tempting to target the consumer market.  You’re living out your daily life and out of that context you think: what about this new cool app that could do this and that … consumers would love it. Right?

The problem with retail apps is that they’re asking consumers to spend a little bit extra on top of what they’re already spending.  While a good deal of their budget is dedicated to entertainment, that money is not currently untouched – it’s all being spent already.  So when you come along with your cool app and ask someone to spend, you’re asking them to switch their spend from something they’re already enjoying so much that they’ve been willing to pay for it.

If you’re going to be successful in the consumer space, you need to take one of two approaches: Read more

Architecture and modeling in Visual Studio

I’d like to take a closer look at the use of CodeMaps in Visual Studio to debug and to document our solution. The following link to Architecture and Modeling has some very cool videos detailing how to use Code Maps to find the root cause of a bug. Further to debugging Code Maps can be used to assist in documenting program flow and dependency chains visually. Lets start with a very basic example of how to generate a CodeMap. First off if you don’t know what a Code Map is then let me explain. When browsing your VS project files and looking at the ‘References’ link that appears above a method declaration, if you pay careful attention you’ll see the link ‘Show on Code Map’. See below. Read more

Simple C# Licensing (Rhino Licensing)

What is Software Licensing?

Software licenses typically provide users with the right to one or more copies of the software without violating copyrights. The license also defines the responsibilities of the parties entering into the license agreement and may impose restrictions on how the software can be used. Software licensing terms and conditions usually include the usages of the software, warranties and disclaimers and protections if the software or its use infringes on the intellectual property rights of others.

About Rhino Licensing –

Rhino Licensing uses Public-key cryptography, also known as asymmetric cryptography, it’s a class of cryptographic algorithms which requires two separate keys, one of which is secret (or private) and one of which is public. Although different, the two parts of this key pair are mathematically linked. The public key is used to encrypt plaintext or to verify a digital signature; whereas the private key is used to decrypt cipher text or to create a digital signature. The term “asymmetric” stems from the use of different keys to perform these opposite functions, each the inverse of the other – as contrasted with conventional (“symmetric”) cryptography which relies on the same key to perform both. You encrypt a value using the one key, and it can only be decrypted using the other key. In the case of license key generation, we store our private key on the server, and distribute the public key with our application. When the user receives a license key, the application is able to verify that it came from us by using the public key. If someone tampers with the license key it will be invalid and the software will no longer execute.

Read more

Bug? More like feature request.

The MVP plays a key result in the final outcome. The MVP can turn a loss into a win. Keeping it simple, on target, doing the right stuff at the right time.

That of course is the Minimum Viable Product. Or MVP as we shall refer to it henceforth.

MVP is the antithesis of “scope creep”, the malicious virus that kills projects, bankrupts businesses, disemploys staff and disillusions developers. So let’s see how this works… Read more

Are you in the right Career?

Your Parents always want the best for you and they will push you to be successful no matter what. In my younger days, I used to love playing with electronics, fixing radios and game consoles etc. However, I never had a passion for computers. Even after I left school, I had no interest in learning how to use a computer. I decided to study sales and marketing and it went ok, I got my first job at my local gym selling gym contracts. I was still young and carefree. I decided to upgrade my job a few times and at last joined a large corporate IT company as one of their Account Managers. In the beginning, money was good and life was good and monthly sales were exceptional but then I met a group of new friends. They were all computer programmers – GEEKS in other words. I asked them one day to show me what they do. At first, it was all new to me and I did not have a clue what programming was all about.

The Change

I decided to learn this funny looking language and syntax starting with C++, (“The hardest Language out there”). I was really starting to enjoy it, and even though it was tough, I could not and would not give up. I started losing interest in my sales and marketing career and I realised that I hated it from day one. I still do and forever will. I realised that I was in the wrong career and needed a change. Read more

Are We Hippies or Soldiers?

I’ve been fortunate enough to employ my software development skills in a few different environments. It’s good to see the world from different angles, but I also pay my respects to those who find their niche early on and just stick with a company they enjoy.

It should be self-evident, but one system doesn’t fit all, and some people thrive in a type of environment that others despise. Enjoyment aside, what kind of group-think, on average, actually results in the best deliverables? At the end of the day, will the company make enough money to maintain?

Joins or Joints?

Think Tank Christmas Party 2014

Think Tank Christmas Party 2014

I’ve partied with the hippies, the discoverers, exploring code and formulating new software religion by bumping heads along the way. It’s obviously a fairly discursive environment, with lots of debate and no shortage of opinions. Flexi-time is par for the course, with wear-what-you-want, and as for drug use, the celebration of coffee came as close to crossing the border as a daredevil East-Berliner.

Efficiency is the biggest challenge, which might seem counter-intuitive to someone working there. In such a fluid environment, whenever you encounter a technology that makes your neck hairs bristle, the prevailing mind-set is to reinvent it. I’m grossly generalising, but when you keep reinventing wheels you lose as much time as you gain.

We spent so much time exploring new tech and tack, changing formulas, abandoning dead ducks and over-debating method names that I would ultimately have recommended some of the customers to other firms. It was fun for a while, but your thirst for your productivity remains unquenched.

Read more