Stay away…

Yesterday I found out that my dad was robbed, not in some dark ally or in the dead of night, but in broad daylight, walking through the entrance of a busy shopping mall in Rustenburg, with (useless) “mall guards” and numerous shoppers within meters of him. Thankfully he was not harmed, this time.

This is a warning to all those tourists coming to this country…DON’T. Stay away, make other plans. A game of soccer is not worth your life, or the life of a loved one.

If you insist on coming, please be aware of what you’re walking in to. This is not a “rainbow” nation of friendly people, not a place where life is valued and people feel safe.

This is a place where criminals beat a 1 year old child because it “was making too much noise”, where children are kidnapped and dismembered for some sick ritual need, where small girls are stolen from their mothers arms and sold into slavery, where old people are brutally beaten and murdered in the most grotesque ways, where a person is shot for their cellphone and R50 cash, where people are robbed in broad daylight, where the criminals are free and innocent people lock themselves behind burglar proofing and electric fencing. This is Africa…be prepared.

What is code quality ?

So starting the new jobs has given me the opportunity to take a fresh look at software and how it should be approached.

One of the questions that I have been pondering on alot is “What is code quality ?”  Is it code that’s well documented ? Is it code that follows some sort of coding convention, code that is uniform throughout ? Well named variables ? Test cases ?

Obviously we all have our own perceptions, but in order to write good software I think its important to look at code from multiple perspectives, in order to do this I need your guys feedback!

Please tell me what you think makes good code ?

Interviews

Having recently been on a round of interviews looking for that ideal job I thought I’d write down some of my thoughts on the whole process of interviewing the interviewer, or, knowing what you’re getting yourself into!

As a start let me first say that the word interview, in my opinion, is not the correct term to use as all:

interview ( ) n. A formal meeting in person, especially one arranged for the assessment of the qualifications of an applicant.

…implies a one way assessment of interviewer(s) over interviewee. This was (and in most cases still is) the traditional way of looking at this process, essentially you (as an interviewee) get grilled by one to many people to determine if you’re an acceptable candidate. You generally get time to fire off one or two irrelevant questions about pay and leave and that’s about it. I think this is ridiculous, that’s like signing a contract without reading or at least understanding it!

I prefer to use the term negotiation:

negotiation ( ) n. mutual discussion and arrangement of the terms of a transaction or agreement…

…implies a two way assessment, they interview you, and you interview them. Yes, interview, as described above, just like they interviewer is there to determine if you’re a good candidate, you should be there to determine if the company is a good candidate for you, the “sale” should come from both sides.

Entering an interview prepared for me is key, and I don’t mean reading up on the company and understanding their business etc etc… that’s just common decency (or common sense?). What I mean is having a thorough list of what you think are important criteria for you to accept the position they’re offering, and don’t be afraid to ask the important questions!

As an example during a recent interview I asked this question of the manager who would ultimately lead me:

“You seem like a manager that has his head in the right place, what are the chances you will resign and/or leave within the first few months I’m employed?”

A very relevant question, the company was strongly corporate (heirarchical, dictatorial, classic waterfall) but this manager worked in an agile, collaborative way. Everything would change if he were to leave.

During my interview for a ScrumMaster position I asked this question of the CEO:

“So what do you think of scrum?”

For me extremely relevant, resistence to agile methodologies is a surefire way to fail, change must be driven from, and embraced at, the highest level.

A while ago I read an interesting excerpt from an article by Bruce Eckel, it was titled: Interview Questions You Wish You Had Asked:

  • If I want to buy something like a book or a tool, how does the process work (how hard is it?).
  • What’s the cost limit before the approval must go up the management chain?
  • What’s the noise level like during the day?
  • How many meetings am I expected to attend, and how long do they usually last?
  • Is there a dress code?
  • Can I work from home sometimes?
  • Does it matter when I work, as long as I come to meetings?
  • How many projects have succeeded/failed in the last five years? To what do you attribute the failures?

Again, all relevant questions to ask!

What I’m trying to get at here is don’t short-sell yourself, have enough respect in yourself to know that you’re the right person for the job, and take the attitude that you have all the opportunities in the world available, it is up to the interviewer to prove to you that their opportunity is the best!

Fresh blood

The activity on this blog has been, well, lacking of late, so I’ve decided to expand the list of contributors. This blog will become a multi-contributor blog focused (initially) around Agility in the Software Industry. With that in mind we’re adding a new contributor by the name of Nic, someone I’ve personally worked with and trust to add some good value to this blog.

Software Craftsmanship…

Manifesto for Software Craftsmanship

I think this is long in the making and something that’s sorely needed in the industry. Too many people are getting away with too much these days. People call themselves “senior developers” but don’t have a clue when it comes to writing well understood and valuable code. Too many people entering the industry are being trained by institutions whose only interest is monetary gain and couldn’t care less about creating good software craftsmen. The revolution is upon us, fight the flood of ineptness and lack of any pride that seems to have taken over our industry and sign the manifesto; then live it!

Testing…

Found an interesting article on generating test data entitled Testometer – Triangle Test.

Here’s a blurb from the site to entice you to go there, give it a whirl, it’s quite good, I managed to score a 7 out of 10:

“This is probably one of the most common question in software testing interview. This problem was first introduced by Myers, who was one of the first person to treat Software Testing as a different subject all together. This test check your ability to think about generating test data in a given condition”

Retrenched?!

Yes, it seems I’ve been retrenched, not due to the current economic crisis but I think purely because there just isn’t the interest in South Africa (Gauteng specifically) for consultant ScrumMasters, or is there? I have no idea, but based on what I was told (read: sold) I thought they were lining up like kids in a candy store wanting my unique services. I cannot and do not blame anyone for this, especially my (now previous) company, I would’ve done the same in their shoes. What I would’ve done differently is perhaps dished out more of the harsh truth up front, be more transparent, that there was not, in fact, a plethora of clients waiting but only one, and yes, I know I was hired for this “one client” specifically, but really, would I have taken this if I was told that there was a risk this client would pull out of the contract and that there was no-one else lined up, and that ultimately I would be retrenched if they could not find me anything? Hell no! I would’ve kept my nice secure job and waited…

I guess lessons are learned this way, I need to be more careful in future, I was chasing a dream and totally missed the forest for the trees…