Showing posts with label Software Development. Show all posts
Showing posts with label Software Development. Show all posts

Tuesday, 13 November 2012

What to know before hiring professional Access developers

My Australian friends at Access Guru liked my post about "The Access Developer's Dilemma", and asked what I thought about the process of hiring Access developers. I thought that I'd share my response here.


One of the real strengths of Access as a development platform is that in the hands of a capable soloist, it can handle projects that, developed in another environment such as C#, would require require a team of developers as well as considerably more time. This is not to say that such development tools are overkill; they most certainly are not. It comes down to some combination of target market, development schedule,  developer skills available, budget and so on. That said, Access is an excellent vehicle for developing a wide variety of applications.

As the old saying goes, there are three types of developer: those who can count and those who can’t. In this context, I’m dividing Access developers into two camps: soloists and accompanists.

Soloists are one-person shops; they design the database, the User Interface more often than not, the release schedule (as opposed to the project’s deadline), the testing procedure if any, the on-line help if any, and the documentation (user and system), if any. As you can see, as we step through the list, the phrase “if any” recurs frequently. This is typically due to one or both of two facts: a) project size, and b) budget available. A soloist almost by definition works on bite-size projects, most often for small businesses and occasionally for much larger organizations such as government ministries, which in my experience might have a dozen projects on the go at once, outsourcing each of them to a soloist, thus mitigating the risk that all dozen projects fail; it is to be expected that one or two will either miss their budget or their deadline, or fail completely. A soloist project might take anywhere from a few weeks to a few months to develop and release; seldom longer. But the point is, such a project is of a size that a single developer can manage. 

Accompanists have typically never run a project, and often know they are not ready for that level of responsibility. Their work experience is often in large corporate or governmental organizations, and the project size mandates both a larger timeline and a team of developers, one of whom takes the lead. This sort of project might take, say, 5000 person-hours to complete.

As the person in charge of hiring, you will know at once whether you are looking for a soloist or an accompanist. It’s not that one is “better” than the other. To think so is to miss the point, and let me try to explain why.

A soloist does everything herself. To put it another way, she is a team player only when forced to become one, typically due to lack of an immediately next client – in which situation, hard-pressed to cover next month’s expenses, she begins scanning the career sites and flinging CVs into the cybersphere.

An accompanist is first and foremost a team player. She knows that he cannot perform some or all of the tasks masterfully, yet is confident that she can provide a meaningful contribution to some aspect of the big picture. She wants to learn from the experience of the team members. Negatively stated, she wants to be shielded from full responsibility for the failure of the project. More positively stated, she wants the opportunity to surround herself with more experienced people, and is eager to learn. From the hirer’s viewpoint, she is willing to work lots of unpaid hours for the opportunity to learn and grow.

Any given project may be divided into three chunks:
a)      Hard – designing the database and the overall user interface (UI); this might be two separate roles, and in large projects, most often is. DB designers are seldom gifted at UI design. There is a huge benefit in separating these roles: the strength of the DB design can be combined with the strength of the UI, and even better, the UI can be revised and enhanced without touching the rest of the project.
b)      Medium – implementing the required queries that will support the forms and reports. This requires the ability to understand database diagrams, know all about the relative merits of various join types (and in the case of a SQL back end, the subtleties of calling stored procedures versus views, etc.).
c)      Easy – creating basic forms and reports, based on queries that have already removed the heavy lifting from the task.

A well-assembled team will consist of one or two members of each class. Follow the chain. The DB Designer figures out all the Normal-Form stuff and how deep to go with it (3NF, 4NF, BCNF, 5NF)[1]. The second aspect of this, which may or may not involve a second team member, is to design the overall UE. I am the first to admit that I would prefer that someone else design the UI. I can deliver basic UIs that work, but if you’re looking for elegant layouts, l need help.

When considering assembling a team, it’s useful to bear in mind Brooks’s Law[2]: The more programmers you throw at a problem, the longer it will take to solve. This is neither maxim nor theory; it is fact, borne out in thousands of projects worldwide, on everything from mainframes to PCs. The manager is thus caught between two pincers (which I might suggest is the definition of that position): Job A is to listen to your underlings’ estimates and shave them down; Job B is to fudge up those estimates and fatten the project’s schedule, explaining to your superiors why it will take so long, all the while knowing they will shave you back (hence the original fattening).

So. We have soloists and accompanists, and you need to know which you’re seeking. I avoided the word “classes” because neither is “better” than the other, in the same sense as neither a cow or a goat is better than the other – both produce milk and ultimately meat – everything depends on the environment.

Know which you need. If you need a soloist, fine. In that case, prior experience in the business domain of interest may be paramount. If you need an accompanist, other factors come into play; as I tried to describe, there are levels, and when dividing the Big Picture into Smaller Pictures, you need to be aware of which aspects can be handled by developers with which levels of experience. Don’t try to hire a crew of experts; not only will egos get in your way, but you’ll be overpaying somebody for doing easy work.

The worst mistake you could make is to try to assemble a team from a group of soloists. Egos, programming styles, and a dozen other things as trivial as one’s ability to carry a conversation at the coffee-making machine, will come into play.



[1] There’s lots of information on-line about these refinements. If you need more info, visit www.artfulsoftware.com.
[2] “The Mythical Man Month” by Frederick J. Brooks, is an absolutely essential read for any professional developer, regardless of programming language(s) chosen.

Tuesday, 31 January 2012

Retro Programming Skills

Recently I have received several emails from headhunters with whom I have done business previously, and the nature of said emails nature provokes me to write about this. In recent days I have received the following:

1. Six-month contract for PowerBuilder expert. I don't think I qualify as an expert, but I've spent some serious time wrestling this pig to the ground, and I hate this language.
2. Three-month contract for Access 2003, for the government of Ontario. Who remembers Access 2003? It was so buggy that MS released Access XP a year later, and everyone I know immediately moved to it. Apparently the government of Ontario did not; call it Software Gravity or something; why any organization would prefer to stick to a version known to be riddled with bugs rather than migrate is beyond me. This is not to be interpreted as suggesting an eager adoption of any technology not suffixed by "SP1" or better.
3. Contract for a Clipper developer (6 months anticipated duration, perhaps longer, depending on performance). Ok, I wrote a couple of books about Clipper programming and created a company to sell a few libraries for Clipper programmers, and yes, we sold enough copies to pay the rent and the hydro and the employees, for a few years basking in the sun. But we under-anticipated the adoption of Windows, and missed the boat on transition to this new world, and although we never had to declare bankruptcy, we were forced to close the doors. Although I think that I can claim serious expertise in the world of Clipper programming, I do NOT want to return to the world of DOS, except in a VM and only then for reasons of nostalgia.
4. An offer for a contract specifying a minimum of 4 years' experience in VS C# 2010. Basic arithmetic would deem this requirement impossible, but to mention that is to invite immediate discard into the pile of Rejections.

All this is pretty much OK with me. Most of you may not recognize the name "Jack Layton", a Canadian politician who passed mid-last-year. He was Leader of the Opposition, having won a landslide in Quebec (thanks to his bilingualism and much to the shock of the Parti Quebecois, but that's another story).

Back when Jack and his soon-to-become wife Olivia Chow were City Councillors in Toronto, and the leading software at the time was DOS on IBM-PCs or clones, I wrote the campaign-management software for Jack and OC (that became her nickname). The software was not especially complex; just a couple of dozen tables and a lot of time-sensitive reports. But it did the trick, and in some small way helped Jack and OC hold their positions. I did all that work gratis (free), and took pride in helping, in my small way, the advance of two people who I felt would enhance the political landscape in Canada. I am proud to have made this small contribution to the advance of the NDP agenda within Toronto, and Ontario, and Canada.

The saddest part about this story is that less than a year after Jack's triumph (and the NDP's triumph), Jack passed away from cancer. This might rank as the saddest event in the history of Canadian national politics. Jack redefined the political landscape in Canada, and sadly didn't live long enough to enjoy the fruits of his triumph. This fills me with profound sadness. We go back to the days when he and Olivia were City Counsellors in Toronto. I have known them both since then, even before they were married, and when a departed friend called Dan Heap was still part of the equation.

I began with Jack in the days of DOS. I fondly recall a day in his office. I was the DBA guy and was allowed entry to his office. His DOS computer was passworded. It took me all of three minutes to get past that, and to update his campaign software. When later that day, he arrived at his office and found me working on his updates, he asked, "How did you get in?" And I replied, "Who do you want to keep out? Your average user, or me? Two different levels of protection are required."

This was decades ago, and penetration was easier back then. It remains easy, given certain knowledge, but back then all it took was a reboot from a floppy; now it is (slightly more, but not much) more complicated. Unless you're seriously into computing and programming and security, I venture that I can get in within an hour -- not that I have that intention, but it's not very complicated to penetrate almost every allegedly secure site. Rocket science is not required, in many cases I have investigated.

Most people use immediately-remembered identities such as birthyear, birthmonth+day, surname spelled backwards, nickname of first-born-daughter + initial of one's surname. All such passwords are easily grabbed, knowing even a trite of data about the target. Hence, you are a target. I confess that my own account (too easily deduced) has been compromised, and that's when I learned my lesson; and my lesson is this. Make sure that:

1. Your password consists of at least 10 characters.
2, Your password  includes at least a few Capitals, Lower Case letters, and Special Case characters.
3. In case you forget it, that you can deduce it from a Hint or two (for example, My Youngest Sibling; what is not declared is that this name should be entered backwards, right to left, and prepended and suffixed by some special characters. The point is, that if you forget what the password is, you can deduce it from a relatively simple set of rules, known only to you.

A.