Skip to main content

Posts

Showing posts from September, 2012

I ripped through the Mythical Man-Month

[Update] You cannot read MMM without reading "Death March -- Yourdon". I just skimmed sections named "Good Enough" and "Best Practices, Worst Practices". I will have to rip this book shortly.

I was given my first copy of this book when I was a contractor at IBM. The manager that loaned it to me was a good person and an effective leader, manager and architect. I ripped through parts of the book and gave up. Brooks is a fine writer but some of the stories were just a little too slow. Also,  for my taste, once you acknowledge that the writer is credible and provides reasonable references then I get lost in the arguing over the minutia.

What is also interesting that this tomb tome was accepted as gospel in the 1980s. A lot of the information in the book is still consistant with my personal experience but someday it may all be regarded as false. For the moment I'll keep my one page summary as the summary I might use when my intuition checks out.

One Pager - The Mythical Man-Month -- Brooks

The Tar Pit
There is good and bad in large system design and implementation. They are what keeps us going. Creativity of design and programming and the need to be perfect every time.
The Mythical Man-Month
Estimating is hard and futile. Disasters are common. (1) estimating is poorly developed and predicated on ongoing success. (2) confuse effort with progress. (3) monitoring is poor. (4) schedule slippage is expected. "adding manpower to a late project makes it later". "The number of months of a project depends upon its sequential constraints." and the resources needed to implement them.

The implementation formula for planning, coding, testing(component, system).
The Surgical Team
A similar observation to Agile; a wide variation between good and bad programmers. In a surgical team there is specialization.
Aristocracy, Democracy, and System Design
The design must come from the mind of one or a small group. The implementation by many.
The Second-System Effect
The second system…

Resumes, GitHub, Blogs, or Social

What a mindbender! Yesterday I read a Hacker News headline that suggested resumes had no value. Today I read an article from a former Facebooker who said blogging and social were a waste of time to concentrate on developing something good. And there have been countless sitings of GirHub hires in recent months.

I've written about the hiring process many times in the last 12 months. So in response to those writers: ARE YOU KIDDING ME? C'MON MAN!

First of the hiring process for any employer you'd want to work for is never as simple as RESUME=HIRED. There are so many steps that need to be performed before and after the interviews. It's one of the many reasons that companies insist on "contract to hire" as well as extended probationary periods. In many instances the resume has become "the cover letter". While some employers still like cover letters they are not so much about the content as they are about demonstrating genuine interest in the potential empl…

Who makes your security decisions?

I'm sitting in front of my kid's Chromebox and I thinking about a password for her. It's not that big of a deal and I could go crazy if I like. I can also go really loose. But as I'm sitting here I wish I could use this computer to monitor things at work.

For the price or a Chromebox I can go mobile with much less fear about losing my computer because everything is on the network and there is nothing locally. The machine weighs much less than the standard issue laptop. I can also implement a 2 step/part authentication. and so one and so on.

But as I think about security policies. I wonder who is making the decisions and when they make those decisions; what level of friction are they comfortable with. For example if you are a CIO of a company and you have implemented lax security measures and you are compromised then you will likely lose your job and your rank. Not to mention that there is likely to be some legal fallout. So my guess is that if you are a CIO and making th…

I like everything TURBO!

my introduction to programming was BASIC on my father's TRS-80 Model 3 back in the early 1980s. Shortly after that the IBM PC was introduced and I started writing C code using edlin. But was not long after that when Borland International introduced me to Turbo Pascal, Turbo C, Turbo Assembler, and Turbo Prolog. They might have had a Turbo Basic too, however, but then I was on to other things.

So when a company or team introduces a product, application or library with Turbo in the name it's hard to resist the temptation to be an instant fanboy. I do not know anything about TurboLinks but I'm going to read the article anyway. Just for old times sake.

The Google and Apple Honeymoon Appears to be Over

[Update:2012-09-28] One think I really hate about the iPad and iPhone is that they are linked to a person and not a purpose. It's one thing I dislike about the Chromebox.  Anyone can sign in as a guest but to get full features you have to be logged in. I hope the Nexus tablet is different.

I discarded the first two drafts of this post because I found myself off target and unable to bridge the gap in order to get back to my point or it was just getting too wordy. So let's look at the logic bomb a little differently.

(a) Apple is building a product brand and data access brand and silo out of it's products. With examples like iOS-6 maps vs Google Maps as an example you should see that the Apple stack is closing. The openness seems to be closing partly because of security measures like sanboxing and partly because Apple likely wants to control it all.

(b) Google seems to have all of the data. They certainly have search cornered. Then there is the cookie breadcrumbs where they lea…

Are Story Estimates Valuable?

Whether you're implementing KanBan, Scrum, or Agile Process Management the topic of estimates is always brought up. The question on my mind is whether there is any real value in making an estimate and /or being accurate. Clearly there are opportunities to game the system.

On the other hand what value do they bring to the stakeholders? They are going to set the timeframes based on the need of the feature and not how long it's going to take (although that can play a minor role). And then there is the project management and leadership who is going to review the numbers. But what does it mean to them and what are they going to do with it?
Lt. Commander Geordi La Forge: Yeah, well, I told the Captain I'd have this analysis done in an hour.
Scotty: How long will it really take?
Lt. Commander Geordi La Forge: An hour!
Scotty: Oh, you didn't tell him how long it would *really* take, did ya?
Lt. Commander Geordi La Forge: Well, of course I did.
Scotty: Oh, laddie. You've got a lot…

Zero Downtime Deploy is a Useless Myth!

I've touched on this before referring to erlang's hot deploy functionality. In that case I was concerned with the notion that transactions would not be reproducible during a hotplug scenario. That elements of the transaction could be mismatched as the various code segments were deployed.

This evening I read a headline that some developer had implemented hot deploy for NodeJS.  Let's forget that NodeJS not currently a serious production environment and while it powers CoffeeScript and Less; I personally am not thrilled with the prospect of having to install NodeJS.

But now there is hot plug NodeJS.

I certainly get what the developer was going for but the reality is that in a production environment we, devops, are supposed to plan for this sort of thing. Our systems are supposed to have downtime.  We are supposed to reboot our systems every once in a while to make sure that we can. Every data center I have ever worked with or for has had a power outage at some point. Even the m…

Standup Meetings: Scrum vs KanBan vs Agile vs Other

Everywhere you go these days teams are doing some sort of standup meeting. Whether it's rigorous, loose, or even adhoc they are doing it.

KanBan

In the KanBan standup meeting the team is supposed to take a task centric view. That means (a) blocking tasks, (b) tasks that are risky, (c) tasks that have not made any change since the last time, (d) whatever's left.

Scrum
Agile

On the otherhand, Scrum and Agile take a resource centric view. Going from contributor to contributor... answering the questions (a) what I did yesterday, (b) what I an doing tomorrow, (c) what is blocking progress.

Other

Between the Agile/Scrum and KanBan they pretty much have things covered. I imagine that if anyone were to invent a new process it might look exactly like these with variations on time, scheduling, attendees, subject mater and/or magnification. So other is my catch all.

One other thing to mention is that sometimes the teams are cross functional and so the stand ups take place twice. Once in the cros…

What are the minimum DB fields required in an Agile Story Schema?

I'm getting ready to define the schema for the bugs backend DB when it occurred to me that I needed a minimal schema in order to maintain the one-page requirement. I do not want to get crazy with 100's of one-off fields. Just a simple set of required fields... auto filling them when possible.

Fields in the most normal form:

id
bug_id (FK)
date
field_id [opened_by, open_date, close_date, status, importance, assigned_to, story, note, ...]
field_value
field_text

I have included field_value and field_text because most DBs have different profiles for TEXT and VARCHAR fields. So in this implementation certain field_ids will be assigned to certain field_**.

What fields would you add and still keep it lean? Would you add a separate agile state or wrap that in status?

This appears to be a good reference. It's still more info than I wanted... but it might be practical for both bugs and requirements.

Convert your Mac from a Rabbit to a Tortoise

I went to the Genius Bar on Sunday because I cracked the glass on my iPhone and the mouse on my wife's MacBook was not working (swelling battery maybe) and then there was the performance on my MacBook Air that was just sucking!

The results are in. Google drive uses craploads of memory and CPU; Little Snitch (3 beta) is not much different. As a result the system is just so super sluggish. I understand the issue with little snitch. Heck it's beta software.  But my concerns for Google Drive's performance are all over the place. They do not have an auto updater and they do not display the current version number in the preferences pane. They do not support a 'start paused' option either.

I have a number of there product concerns with GD but I'm confident that they will never be heard. I like the storage capacity and there are other tools for accessing and syncing (cyberduck) so I think I'll go that way instead.

PS: Make sure that the firewall is turned on. The late…

One Pager - KANBAN -- Anderson

I should not have to justify Kanban.  If you're reading this then someone has already decided that this is the way of the future. There are plenty of images of Kanban boards on google and other search engines. It's pretty simple to implement basic and advanced boards. The complexity comes from lack of discipline to keep doing it. It's so easy to get lazy.

Five Kanban properties:

Visualize Workflow
Limit Work-in-progress
measure and manage flow
make process policies explicit
use models' to recognize improvement opportunities

Kanban shares some elements with Lean, Scrum, Agile, and even waterfall. Artifacts include epics and stories. Work cycles or sprints have time limits. Teams might have multiple stand ups based on cross functional team makeup as well as roll ups.

The Basic Kanban board (extremely oversimplified):

input queue
analysis
development
test
stage prod

The Basic Kanban board with buffers (extremely oversimplified):

Input queue
analysis (in prog, done)
dev ready (in prog, don…

What is next for my desktop?

I'm staring at two MacBooks on my desk. One PPC Mini in pieces because of a mainboard failure. And a Macbook in the kitchen which belongs to my wife. The two machines on my desk are updating to OSX 10.8.2 and it is painfully slow. My wife's computer will not install 10.8.x because the hardware is old enough that it's no longer supported by OSX. And I have two kids who already navigate our recycled iPhones in order to play educational games. And to top it all off my wife wants me to buy them a computer.

So to say that I'm looking for a new desktop is not exactly correct. To be perfectly clear I'm looking for a new desktop for my kids. And I have some requirements. (a) I do not want to maintain upgrades (b) no moving parts (c) secure (d) inexpensive (e) reboots quickly (f) a preview of sorts for when the grandparents need a new computer.

The chromebox and chromebook are looking like real candidates. My first chromebox is on order. It should be here in a few days. I p…

The book publishing world should go on a diet

Traditionally booksellers had one metric by which they measured a book's value. "The thud factor". I remember well when I first opened the 'M' volume of the encyclopedia and when I bought my first edition Petzold book. Unlike the encyclopedia, however, book authors are just like high school and college students who fudge with the margins, type font, line spacing and images in order to get the right amount of pages for the printer's template.
I want the cliff notes version of every book in my analog and digital archives.
Right now, however, I'm reading 4 different books on Agile Process Management and they follow the same basic outline. Preface, Foreword, 2-3 obligatory chapters of background or justification, 4 chapters of good information that could be distilled into 2 or 3 pages of real info, and then several chapters of case studies and a postscript.

Then there is every rubiest's favorite, "the pick axe book". It's 700+ pages of all thin…

Pair Programming - shared experiences

I'm not a fan of continuous paired programming. There are a few cases where it makes sense. (i) new employees, (ii) rookie programmers (iii) certain rapid development cycles. However, sustained two users and one keyboard is simply not practical unless it's full contact MMA style.

There are a few other interesting offshoots. (a) Real-time file sharing (see subethaedit and coda) (b) splitting the coding into dev and test but coding in parallel and together. This can be even more fun when you add a third person who it structuring the module's API signature while the others fill in the blanks.

Pair programming is not meant to be arm chair programming or back seat programming.

MDD and DSL - I feel like I'm circling the drain

Have you ever seen one of those charity boxes that looks like a large funnel and when you put your coins in motion it goes round and round until it falls into the center hole only to be collected by the charity's processor. Looks something like this. Well when I think about MDD (model driven development) and DSL (domain specific language) I feel like the coin going round and round.

MDD and DSL were and still are viable tools for deconstructing systems and processes that are to be implemented in hardware/software but to fail to recognize the history is pure folly. Many years ago they were referred to as DFD(Data Flow Diagram) and FFD(Funtion Flow Diagram). Sure, back in the day, we used analog systems to capture the details and now it's digital but the results were exactly the same.  In fact even if you say that MDD is the new and improved DFD.... it's new and improved in terms of same box of PopTarts with just a little less filling.

And so now I wrestle with OO.next(). Objec…

Self organizing teams are costly in other areas

The Agile process is suppose to accomplish a number of things. Sustainable development is only one of them and that truly depends on the team. The challenge, however, is that "team" is not a static thing. Employees leave and join teams regularly. Whether by normal attrition or because of success in the business and the anticipated or realized workload. Sometimes it's a matter of cross training members in other teams that could benefit from knowing more about the whole instead of just a few parts.

But one of the tenants of Agile is that the teams are supposed to be self organizing and that suggests that teams are self regulating as well as adapting the process as the team sees subtle or obvious customization. And it is this customization of the Agile process that I'm concerned about. For example when you are RUP trained you can be interchanged from one RUP team to another so that you can concentrate on the domain specific challenges on not the internal processes.

Furthe…

Getting ahead of the pack in an Agile world?

I just bought 6 books from PragProg adding to my expanding library of eBooks on the subject and taking some cues from real life and experience I want to know "what is it going to take for me to receive the highest salary increase" when salary adjustments are handed out?
However every industry has it's laborers and architects --Richard Bucker
Historically salary adjustments had many different names. (i) cost of living increase (ii) merit increases (iii) bonus and so on. And in pre-agile times managers would rank employees. First everyone might receive a basic or flat rate adjustment ... for surviving the previous year or as a part of profit sharing. And then, using the ranking, the manager would increase the employees from a shared pool at the managers discretion based on any subjective or objective criteria.

However, in an Agile world where managers are supposed to be looking for marathon like sustainable development, what criteria should a manager use to rank or reward emp…

Is the JVM a viable release platform?

I have written a number of server applications based on Sun's JVM and luckily for me I have not had to code anything beyond a few interview questions under Oracle's stewardship. In the last year or so Oracle has released two versions of it's JVM with well publicized security holes. Normally this sort of thing would go unnoticed or at least pass quietly so what does it mean?

Back in the day when Sun was touting the benefits of Java it was "rewrite once and run anywhere", "the network is the computer" and security. Whether "security" is defined by phone home, crypto, private and protected modifiers... or the effects of recent attacks you really have to start thinking about Java a little differently.

So when I watched an interview with Rich Hickey this weekend where he talked about Clojure, and by extension Datomic, just plugging into the JVM on your local machine I could not help but get a little concerned. First of all while Clojure is interestin…

Having worked with driptiles. metro is interesting but has limited usecases

The description that follows is derived from my experience with droptiles. What makes droptiles interesting is that it is browser implementation of the metro interface as generally described by Microsoft for Windows 8. I cannot begin to determine what sort of accuracy there is between the two but it is interesting to use and modify.

The way droptiles implements the individual tiles is effectively that of a porthole on a cruise ship. (a) you can see out the window at the limited and effectively prescribed view, (b) if you want to see more you have to get off the ship.

The tiles on droptiles are simple views that you allow the user to see, They are implemented in fixed sizes but can be anything you can render with private css and/or Twitter's Bootstrap. Optionally, the user can add tiles from the "store" and the user can move tiles from one section to another or within a section. (some of the auto placement is a little awkward and buggy.)  Also, if implemented the user can c…