Tag Archives: people

Coder to Developer

The concept

I liked the blurb on the back:

“This title addresses all of the skills required to effectively design and develop complex applications, including planning, building and developing the application and coding defensively to prevent bugs.”

It suggests that it can bring you from the stage where you focus entirely on the code to the point where you can take in a whole project, make it all work and delight your customers. Mike Gunderloy has 25 years of commercial experience and so has a lot to say.

As he points out in the early chapters, there is a lot of ground to cover. There is everything from actually writing better code, through to planning, risk management, release management and handling your team. He covers all of these areas, providing handy hints and war stories clearly gleaned from hard-won experience.

For example, I liked the way that he sticks to the things that you need to know, even splitting them up into categoories where it makes sense. Gunderloy seems to be as amazed as I am about how m any projects do not use source control, and he lists Three Levels of Source Code Control Enlightenment, from Opening Your Eyes (just six commands and many benefits!), to SCC Journeyman (which he acknowledges may be all many people need), through to Experts Only (which he spends so little time on that it’s difficult to know what the various options he talks about are for).

Windows Coder to Windows Developer?

What you’ve seen so far is praise for the general concept of the book rather than anything very specific. There’s a reason for that. For a general software engineering book, it’s strange that there is such a strong Windows and .Net slant. There is no need for such details and it will reduce its longevity and usefulness. Steve McConnell’s “Code Complete” is ten years old and is still relevant (even though a new edition has just come out). In six months Coder To Developer could well look dated.

There is also a question-mark over the accuracy of some of the information. For example, he credits the the iterative development process to Microsoft and Rational, forgetting Bohem’s spiral model predated both by well over ten years. He seems to be much more fluent in more recent practises like Agile and XP, which is commendable but seemingly lacking the foundations makes it difficult to put these newer methodologies into perspective.

But if you can ignore these problems, there is lots of good advice. He’s pragmatic ? using the good bits of, say, XP without taking the process as gospel ? and the writing is accessible and friendly. Even disagreeing with some of the early chapters, I still persevered as it wasn’t a dense or difficult read.

The facts

Author: Mike Gunderloy

Cost: $29.99

ISBN: 0-7821-4327-X.

Buy from Amazon.co.uk.

Why don’t developers read?

Introduction

At the moment I’m reading Steve McConnell’s excellent ‘Professional Software Engineering,’ in which he talks extensively about creating a genuine software engineering profession. I believe that this is a great aim and, although I disagree with him on some points, I think the basic premise is both a good idea and inevitable.

However, that is not the point that I want to talk about, although it is related. It’s the fact that, even though I work in a relatively professional organisation, almost no-one here reads computer science books. Sure, there are piles of guides to complex Oracle stuff, C++ this and XML that, but there are no books around on how the whole process should work.

Is there a good reason for that, or are we all really lazy or unprofessional?

Professionalism

I think one of the main reasons is that Software Engineering just isn’t a very professional profession. As I mention above, I work for an organisation with a pretty good reputation for delivering, but most of the people do not come from a computer science or software engineering background.

Bearing in mind the current skills crisis that’s hardly surprising, but is it very wise? Does having more of the wrong people actually help in the long term? (If you work in IT and don’t have a computer science background, I should point out that I’m not advocating a blanket ban. Bear with me for a couple of paragraphs.)

Try and compare what software engineers do with another discipline, say building houses. In IT people are expected to move from testing, to development, to low-level design up to architectural design and requirements analysis. But that’s not how it works elsewhere.

An architect has to study many years at university before being allowed to design a bridge. After a few years hacking together simple programs a software developer may be allowed to design a system. True, a bad computer system is unlikely to be life threatening but it can cost a lot of money. Why take the risk?

What does this have to do with books?

I don’t think that an IT industry split with an elite of architects at the top and developers at the bottom is either workable or desirable, but I do think that we all need to be a little more ‘professional.’ One of the first steps on that road is for people to be familiar with the best practices of the industry and the easiest way to do that is to read.

Knowing where to start can be difficult, especially if you read a different subject at University. As a starting point, my suggested reading list is here.

My list here is not full of dull, academic books, although there are some. Nor is it mainly a list of development books, you need to know some history to put everything into perspective. I just think that all these are valuable and, generally, readable. All IT people at all levels should read most of them.

I’m especially interested in people’s opinions of this list. I’m not as widely read as I’d like, so suggestions are always welcome!

Code Complete,” Steve McConnell

Code complete is one of those books that does the job so well it has no obvious competition. It describes the complete coding process right from low level design through to unit testing and, while most people would have been very prescriptive, McConnell outlines the pros and cons of each approach. If you’re looking for a rational discussion on whether or not you should use a goto in your program, this is the book for you. This book went ten years without an update and the recently released second edition, although extensively rewritten, is, in many ways, not very different (replace the word “function” with “method” and you’re done — almost!). This is not so much a criticism of the new edition as much as praise for the original.

Professional Software Engineering,” Steve McConnell

I make no apologies for choosing another Steve McConnell book. He’s the editor of IEEE Software so it’s not just me that thinks he knows his stuff! This book, as I mention above, talks about creating a real software engineering profession and leaving behind the far too common code-and-fix method that many people are still using. It’s organised as a number of essays, so you can dip into it, but it’s well worth reading cover to cover.

The Mythical Man Month,” Fred Brooks

If you’ve not heard of this book, I’m surprised that you’ve read this far. There should be no need for me to discuss it’s subject matter. If you’ve not read it, you should have.

Accidental Empires,” Robert X. Cringely

I did warn you that not all the books were academic, computer science books. Cringely used to be a writer for Infoworld and so was just the right man to document how the microcomputer industry came about. It’s full of interesting anecdotes, such as millionaire Bill Gates accepting a quarter from a stranger because he couldn’t find a money off coupon, and is well worth investing in.

In the beginning was the command line…” Neal Stephenson

Many people will also consider this to be an odd choice. This is less a book and more a rant about all the different current operating systems, from MacOS to Linux. But the reason you should read it is that its description on why Unix is as it is is the best I’ve seen. Even if you’re quite happy with Windows, you should be aware of the competition.

Cathedral and the Bazaar,” Eric Raymond

Most of the other books here cover the traditional “waterfall” software development model (or at least some derivation of it such as the spiral model). Open-source software has shown that a formal methodology isn’t the only way of doing things. Eric Raymond documents the process and tells paid software developers why it won’t put them out of a job.

Peopleware,” Tom DeMarco and T. Lister

When I first wrote this piece I left this book in the “bubbling under” section, but as time has gone on I have realised that it was more important than I first thought.

Also bubbling under are: Hackers, Debugging the Development Process, OpenSources and Being Digital.

Note: The links above all go to Amazon.com. If you’re in the UK then it’s much cheaper to buy them at Amazon.co.uk. Here are some quick links for all the books mentioned: Code Complete, After the Gold Rush, The Mythical Man Month, Accidental Empires, In the beginning was the command line… and Cathedral and the Bazaar.

Miscellaneous Pictures, 2003

Like most people I take the majority of my pictures while on holiday. But that’s not the only time. Here you’ll find some odds and ends, places I’ve been where I was only there for a short time or where there are only a few reasonable ones!

The first batch are from my month-long stint at my companies Malta office (actually at the tail-end of 2002). There would have been more pictures, but it rained for much of the time I was there! Not encouraging weather for sight-seeing!

Next are pictures from closer to home. One from a friends wedding in sleepy Southwold, the next few from my “flight” on the London Eye, then a couple from Norfolk and the last two of the UK are in the Peak District. The last few are from my time in Charlotte, North Carolina.

Click the small pictures below for a full size version.

The bay near St Julians Looking over Valetta View of Malta from Mdina This tower is visible almost anywhere on the whole isla
Beach huts in Southwold, Suffolk London Eye pod View of Charing Cross from the London Eye View from the London Eye
View from the London Eye View of the London Eye Near Burnham Deepdale, Norfolk Seals on the Norfolk coast
The Peak District near Edale The Peak District near Edale Charlotte at dusk Charlotee from just out of the centre
Charlotte sky-scrapers Charlotte sky-scrapers A park in uptown Charlotte Classy Christmas Decorations

The last few pictures (the colour ones of Charlotte) are taken on my D300. All the others here have been taken on my EOS300 using Fuji Sensia II ISO100 film.

Tibet, 2002

I assure you: it’s not deliberate. I’d like to go on record and say that I do not plan to only go to obscure — some have even said dangerous — places. I just go where my interests lie.

I’ve been to a couple of Buddhist countries recently (Thailand and Sri Lanka), but they both practise the same kind of Buddhism — called Theravada. I originally thought that they were the less pure form, the Church of England to Tibet’s Catholicism. I went to Tibet to see the “real” Buddhism, however it turns out that, in some ways, the opposite is true (it’s a long story; leave comments!). Tibetan Buddhism (Mahayana) is actually a merger of the traditional Tibetan religion, B?n, with more normal Buddhism.

My confusion over their form of Buddhism was only the start of it. It’s a schizophrenic place, one where the peoples army destroyed some temples and preserved others, fighting between themselves on more than one occasion.

The Chinese have transformed Lhasa to such an extent that there’s now a “Tibetan Quarter,” yet the Tibetans still seem to be certain of their own identity.

It’s easy to see how people become passionate about the cause of the Tibetan people, however to deny that the Chinese have had a significant positive effect (in some ways) is undeniable.

So I’m in two minds about the place. Maybe with these pictures you’ll be able to make up your own mind. Let me know if you do!

The first few pictures here are all in Kathmandu; there are so few of them that it didn’t seem worth creating a new page for them.

Click the small pictures below for a full size version.

All pictures were taken on my EOS300 using Fuji Reala ISO100 negative film except for the first two in Kathmandu which were taken using Fuji Sensia II ISO 100 slide film. Most outdoor photographs were taken with a polarising filter.

If the pictures have piqued your interest, there are a few web Sites that you might want to visit:

  • I’ve deliberately avoided talking about the politics of the area, but as a member of Amnesty it’s difficult not to feel involved to some extent. Have a look at the Free Tibet Campaign or the main Amnesty International site if you want to read more.
  • As always, there’s a Lonely Planet guide. You can buy a copy from Amazon (UK or US). However, I found the Footprint guide to be much better (UK or US).
  • You might also like to read “Sorrow Mountain” by Ani Pachen, a Tibetan Nun. The language used is almost child-like in its simplicity, but, because of what she had to endure, it’s not an easy read. Worth the effort, though. (Available from Amazon UK or US.)
  • Tibetan Buddhism Timeline. On the trip we saw many of the important sites mentioned in this list.

Practical C Programming

Introduction

It sounded like just the kind of book that I was looking for. I wanted a refresher on C since I’d not used it for a while, and some pointers on ‘advanced techniques.’ The blurb on the back looked about right and the fact that O’Reilly published it clinched the sale.

“Practical C Programming” not only plans to teach you C, but also about style, debugging and the software life-cycle.

Content

The book is split into three sections: Basics, Simple Programming and Advanced Programming.

‘Basics’ introduces the language, leaving out much of the fluff and complex bits, but including much on style and ‘process’ — designing, building and maintaining your program. This part of the tutorial is well structured, only introducing new features of the language as and when they are necessary. It does not teach you how to program, rather how to write C. Since you must be able to program before you start the book, I consider the pace to be much too slow. If you already know how to program, why should you have to wait until chapter six before introducing the if statement?

‘Simple Programming’ finishes off what the last section started. It adds most of the more complex bits such as scope, bitwise operators, pointers, floating-point numbers and the C Preprocessor. Of course, the boundary between basic and simple is not well defined, but I would consider the for statement to be basic. This section also includes information on optimising programs which you might have thought would fall under the ‘Advanced Programming’ section.

The final section is much more terse and reference-like than the first two sections. It includes topics such as the difference between ANSI and Kernigan and Ritchie C, more on pointers, portability and some of the more dodgy parts of C such as the 😕 operator and goto statement. It also includes a section on modular programming (again, I would consider this to be in the wrong section) and ‘Programming Adages.’ For the experienced programmer, it is probably this last chapter that is the most useful. Reminders such as avoid side-effects and never put an assignment inside a conditional seem to go against the grain of conventional C wisdom, but are, indeed, correct and very valuable.

Conclusion

‘Practical C Programming’ is not a bad book by any means. Scattered through its 400-odd pages are dozens of useful tips and heuristics, many of which I’ve not seen in print before. It also manages to clarify some oddities, and the example programs are mostly well thought-out and clear.

The C tutorial is not in enough detail to help a true novice and is too chatty and basic for some people, like myself, who just want the facts. The annoying part is that there is a lot of information in there that I didn’t already know, but I almost didn’t have the patience to read it.

It’s also unusual to find a chapter on software engineering in a C book. Oualline has a nice discussion of design, source control and configuration management but it does leave you wondering why it is there. Sure, it’s an important topic, but there are huge books dedicated to this subject. He can not (and does not) even begin to scratch the surface.

What the book lacks is a clear focus. Is the book for a novice programmer? Is it for someone that doesn’t know C? Someone that does know C? Is it a reference? A software engineering guide? The real answer is that it tries to do it all, but only partially succeeds. A nice try but not a must buy.

The facts

Author: Steve Oualline

Cost: Approximately ?24.50 or US$32.95

ISBN: 1-56592-306-5

Buy this book from Amazon.com of from Amazon.co.uk.

Dreadful Conclusions

Introduction

I still can’t quite believe that I did it. I actually bought and Apple Macintosh, just like I said back in February. After years of using Windows and Unix is seems a little odd, but I think I like it.

There’s a lot to like about it, though. Here are some of my thoughts as a Windows and Unix user.

Hardware

It was the combination of the new, white iBook and Mac OS X that swayed me in the end. There’s no way that I’d buy one of the original iMacs and my budget didn’t stretch to a PowerBook no matter how much I wanted it to.

One thing that I really like is the hardware. Unlike most PC’s, it feels as though it’s been designed rather than just thrown together. Even compared to my old Dell laptop, this one feels well put together.

Having said that, it’s not perfect. I’m sure that it looks neat on all the design sketches, but I can’t imagine that having all the ports down one side of the machine is the most optimal way of doing things. For once, it probably works best for left handed people! The ports are all down the left side so the mouse cable goes in the correct side. Unfortunately I’m right handed…

Also, it’s deliberate that there are no flaps over the ports. The idea being that there’s nothing to snap or fall off over time. On the other hand, I’m sure that means that they’ll fill up with fluff and other random detritus.

Unlike most PC’s, Apple have completely parted with the past. There are no serial, parallel or PS/2 ports (not as though you’d ever expect PS/2 ports on a Mac). This has bothered me less than I imagined it would. The main down-side is printing to my parallel-ported Deskjet, but I managed it using my Linux box as an intermediary (and Postscript interpreter). Not the ease of use that Apple imagined!

The last thing I’m going to mention about the hardware is something that is an after-thought with most machines: the power-supply. Basically it’s tiny, only just bigger than ink cartidges for the aforementioned Deskjet. After using laptops with power-supplies near as big as the computer this came as a surprise.

Software

I didn’t buy the iBook for it’s hardware, though (although that was important!). I got it for Mac OS X. As I mentioned before, Mac OS X is a rather neat combination of a BSD Unix kernel and a Mac-like user interface. On paper it looked fantastic. It has all the things that the original Macintosh operating system lacked, such as a real networking stack, multi-threading, pre-emptive multi-tasking and the ability to use more than one mouse button. (Okay, I’m joking about the last one.)

The incredible thing, after all the disappointments I’ve had comparing marketing literature with the real thing, is that it does deliver.

In the previous section I mentioned that I now print using my Linux box as a server. It’s not pandering to any Macintosh oddities. Mac OS X is sending print jobs directly to the Linux print spooler, just as another Linux or Solaris machine would. Very neat.

Another thing you can’t really see from screen shots in magazines is how good it all looks. Semi-translucent windows, drop-shadows instead of borders, the way loading programs bounce up and down in the dock, the way that progress bars and the default button in dialogs pulsate… They’re all completely unnecessary, but totally cool. It makes working with the machine that much more fun.

Fun. Now there’s a word you don’t hear in connection with Windows very often. Linus Torvalds wrote Linux “Just For Fun” (his book), whereas Windows was written purely for money. I guess they’ve both succeeded in their own goals. I hope Apple can profit from their combination of both.

Annoyances

There are only a few things that I really dislike, and some of them are rather petty.

Firstly, Apple are still not too confident with it. When you get a new machine it defaults to starting Mac OS 9. If you’re used to dual-booting your PC between Windows and Linux you’d probably expect a menu when the machine starts up asking which operating system to start (that’s what I was thinking). But no. You have to find the Startup Disk control panel, change some settings and restart the machine. Not difficult when you know but not in keeping with the well known Macintosh user-friendliness. (Apple have just announced that they’re making OS X the default OS. This has not been well received by many, who are waiting until Quark and Photoshop are native OS X applications before switching.)

The other things are really niggles. For example, in the Finder although you can search for NFS and (presumably) Apple shares, you can’t browse Windows shares. (Of course my Linux box only had SMB shares at the time…) In fact, I’ve not been able to connect to any SMB shares on my server yet. However this “problem” has not been widely reported so I think that we can assume that it’s my local configuration.

And this is the churlish complaint: they’re updating it too often! Within days of getting hold of the machine there have been many megabytes of fixes. Which is kind of good, but the upgrade to 10.1.2 is 30Mb, rather a lot over a dial-up line especially when dropping the line means you have to restart the download from scratch.

Conclusions

Stepping away from what used to be called IBM Compatibles seemed such a big step. At this stage I half expected to be annoyed with myself, and cursing spending all that money on something I didn’t fully understand how to use.

The key has to be its value. I want to be able to access the Internet, edit MS Word compatible documents and write software. The iBook can do all that using free or preinstalled software, comes in a very neat package with some unique features

It is still kind of odd having to think about how to do some things that are “obvious” to me in Windows and Linux, but I’m still of the opinion that it’s worth the hassle.