Saturday, August 20, 2016

Small vs. Large

I recently transitioned from 1 contract assignment (with a large military/defense corporate behemoth, which I will call Company A) to another (a small commercial firm, Company B) and I decided to document the differences I encountered between them. They were both of similar durations (short term, 3 months, so I wasn't going to get rich doing either), and both were embedded development projects, but the differences were like night and day.

Company A used a slew of software tools:

  • Rally (a good web-based tool used to track project progress, assisting teams using the Agile Methodology)
  • Collaborator (a great tool by SmartBear, where multiple people could get together in a virtual forum and perform design reviews)
  • Coverity (a terrific static analysis tool)
  • Clearcase (a horrible software revision control system, now owned by IBM)
  • Clearquest (an even more horrible issue tracking system, also owned by IBM)
  • DOORS (a requirements tracking tool; geared to waterfall development, and is owned by IBM)
  • Rhapsody (a UML OO modeling tool/code generator; yes, also owned by IBM)
  • Python (scripting language used here to support unit and subsystem testing)
  • An internal web-based store (where users could install pre-approved/pre-selected software tools)
  • SAP (time-tracking, but their GUI implementation was clunky at best)

Company B didn't have the budget for the above set of tools (especially the IBM licensed enterprise tools). I couldn't blame them.

Company A was "Agile" in that they followed the process with the same fervor they displayed during the old waterfall development days. There were daily standup meetings, the sprints were roughly 2 weeks, the team committed to what they could do during the sprint, and everyone was supportive of the other. A bandaid. The project progressed, according to the statistics; milestones were being met, all looked good...  But the code smelled. Actually, it stank.

Company A was mired in bureaucracy. I was hired and given a report date. The last Friday before that report date, they called, asking for a 1 week postponement. My desk wasn't ready. When I do show up (1 week later), it still wasn't ready. My computer was finally set up about 1 week after that. It took another 2 before I had external internet access (apparently I need managerial approval to access sites  like C++ Reference, or python.org).  I needed admin privileges to change the name of a shortcut icon on my Window's desktop.  I couldn't install Wireshark (a tcp sniffer REQUIRED by the project mandated testing suite), without getting an approved smart chip on my photo-id badge. The facility did DoD classified work, so BYOD was not allowed.

Company A's IT support was very good. For all the problems they had to deal with, they all get high marks.

Company A's software architecture was riddled with obfuscation. Layer upon layer of abstraction; they had an Architectural layer (I kid you not), a device layer, an interface layer, and then they added multiple inheritance, so that everything incestuously mixed together. They had structural problems, in that every message was a separate class; but behavior was hard to trace. They had large enums in separate layers that seemed to duplicate each other, but their ordering was different; then they had code that tested layer 1's enum value, only to assign a layer 2 enum value.  Switch/case statements running for hundreds of lines.

Company A believed in Model Driven Development, a paradigm I have NEVER seen done well.  The Rhapsody model was split into separate entities; and code was generated from each. There were over 10 different specifications on how to compile the project (most of them didn't work, so why were they still in the model?).  The test framework was in Clearcase, but you checked it out from a separate repo (using svn), and whatever was in Clearcase was not to be trusted.  BTW, during the regression tests, the test framework when encountering an exit condition would play a sound snippet from Star Trek that was annoying as all heck.

Normally, in Clearcase you have separate streams (an Integration level stream, and the developers worked on clones called Dev-streams). Approved changes were promoted up to the Integration stream, and the other developers rebased their dev-streams to remain in sync (but, wait too long, and merging the changes get problematic). So, at the standup, we were told we could rebase our streams. I did so, only to find my stream wouldn't compile. Why? Someone checked in whole model components that had illegal code generation stubs (e.g.: boolean functions that had no return statements, or missing header files that were not to be found).

I don't care how Agile you profess to be, that rebase is equivalent to Original Sin, and grounds for banishment from the Garden. So, around this time, I was also approved to use Coverity.  I ran the report on the Integration stream, and the list of warning and errors took my breath away. When I volunteered to fix them, I was told that it could wait (for what?) until after the delivery (when our customer would get this load of deep ****).  I wished them good luck, but I was relieved to go.

Company B was also doing embedded software. Git was used for version control (something WAYYYYYYYY better than Clearcase), no UML models needed, and YOCTO was the cross-compilation/development environment. Drop the bureaucracy, because there was none. Have a problem? Fix it. It's as simply as that.

Now THAT is agile. It is what you do, not how closely you follow some process with a label.

Company B's IT wasn't comparable.  Certainly it wasn't as large as A's. But I had a work computer and desk in the Director's office waiting for me on day 1.

A month later, YOCTO had issues downloading files from GiHub using the command-line. No issues using a web browser.  Somebody was playing around with the firewall...  I sent a test email to my gmail account, and responded back. Gmail got the test email within a minute. The response took two hours to get back into MS Outlook.

Oh well, no place is perfect.





Sunday, December 20, 2015

Figuring It All Out...

I cannot answer why I waited so long to post an update.  Nor can I answer why I decided to try it again.  Blogging is a solitary endeavor, but life (and living it) is not. Does that make sense? So, here we go again...

There has been a revolution of sorts going on in the web concerning another interest of mine. Comics is my second hobby, and perhaps a better investment of my time (even though, computer consulting pays the bills).  I first started drawing as a kid in grade school. My problem: it became a chore. All my friends started pestering me about drawing for them a picture of some superhero or another. That became boring. Contrary to belief, being popular and good at something did not self-reinforce, nor motivate into becoming an artist.  Instead, I repressed it.  For decades.

My subconscious kept needling me about something.  In high school, and throughout college, I became interested in 35mm photography.  I joined the photo club at RPI.  I learned the chemical rituals of developing my own prints, both black and white, then color.  I turned my bedroom in my mother's apartment into a makeshift darkroom.  I was getting good at it.  I even wrote a novel and several related science fiction stories.

Graduating from RPI. I went to work for the Department of Defense.  I was part of a Quality Assurance Intern Program, and was sent around the country to dozens of schools, military bases and facilities (some of which did not permit cameras on the premises).  The one thing they all had in common was that they were far from home, I did not have a car (that came later), and I got bored in the BOQs. If the laptop and internet had been invented, things would not have been so bad, but in those days dialup, CompuServe, and AOL didn't even EXIST.  I started sketching, and rediscovered what I had forgotten since elementary school.

Fast forward a couple of decades.

Technology progressed.  Massive portfolios of 2 ply bristol board and b&w illustrations transitioned to digitally scanned images on a computer hard disk.  With color computers and displays, those b&w images were colorized.

With the introduction of animation software, and ideas for projects floating in and out of my head, I settled on doing a graphic novel.  Massive outlines were written, then rewritten.  One project was scrapped, because the background setup of that project became more interesting.  Finally, the main story arc grew, supporting characters were developed, personalities fleshed out.  The implementation kept changing, since the technology was evolving.

Learning new software was a chore!

The disturbing thing about it is the learning curve that has to go along with it. Not so much the time invested in the actual writing, or drawing layouts, the characters, the styles...  The real issue was import/export, the file formats, compatibility, and operating system issues.

Are you aware that in 1986, Aldus Superpaint (a drawing program on Macintosh (pre-System 9) used Apple's PICT file format and handled multiple layers.  In 2016, 30 years later, that same program still works (running in an emulated PowerPC environment called Sheep Shaver), whereas Apple seemed to have forgotten what the PICT file format could do. Their Preview app often crashes, or refuses to render any previews in Mac OSX v10.6.8 or later if given a PICT file with anything more complicated than the bitmap layer-0 plus 1 object layer?

I'm still figuring it out.

Thursday, May 24, 2012

The Little Grey Cells

Agatha Christie's detective Hercule Poirot's most famous shtick was a line about "...keeping the little grey cells active..."  While cute on PBS Mystery Theater, it is also excellent advice to live by, especially as a work ethic for an IT Consultant (a.k.a., itinerant migrant worker of the Information Age). A transitioning economy generates dislocations, and skills growth (what the grey cells get stuffed with) is a constant requirement. Consider this activity as an evolutionary pressure.

Of course, the real question is the kind of activity, and how much of it. For a consultant, each new assignment is a stimulus barrage, analogous to carpet bombing. You change employer and job site at a minimum, locations (a new city perhaps) and time zones, and then there are the details of the job itself. Its schedule, its planning, the personalities of the people involved, the office and development environments, the hours and expectations, the project scope and its importance (or lack thereof).

All this can be stressful, or it can be challenging. I stated that skills growth is a form of evolutionary pressure. It is, because how you handle it determines whether the activity is positive and reinforcing, or a negative and it is time to search for other horizons. Attitude determines the outcome. Attitude determines how to interpret the environment's effects, and where the evolution takes you.

Stressful: enduring the situation.

Challenging: acquiring new experiences.

Stressful: away from friends, home and familiar surroundings.

Challenging: chances to forge new friends in new surroundings.

Stressful: deja vu because (it has happened before, and will happen again).

Challenging: breaking the mold/getting out of the rut.

Stressful: considering the gig as just that.

Challenging: considering the gig as opportunity.

Deciding which interpretation to use is an activity in and of itself. The grey cells fire like little gattling guns. Unlike Agatha's stories, where Hercule reasoned everything out and always got the murderer in the end, these decisions are a real mystery...

Just don't flip a coin. Think it out...

Sunday, April 15, 2012

Coming Out to the Bleeding Edge

Once upon a time, I was an early adopter. The newest thing that comes along, if it was high-tech, was absorbed as a must have.  But not every new thing.

Ooooh! A Apple II+! Gotta have it.  It was the only game in town, short of buying timeshare hours on some PDP-8 somewhere.

But not a PC (a Sperry clone to be exact, as this was the dawning of the 16-bit personal computer revolution).  Earlier that year, I was toying with the idea of buying a Lisa (remember that old dog?) but didn't.  Lucked out with that decision.

A VHS! (But not a Beta).  Lucked out with that decision.
 BTW, my job is in software engineering. I help make the crap stuff that pulses under the hood of all these gadgets, and now that I consult, I am always forced to learn new things, new APIs, new interfaces, new languages, new patterns of thinking to solve the same problems that we still had from 30 years ago (I'll skip COBOL and FORTRAN, the less said, the sooner they'll die off on their own) .

GPS! Great technology. Never got one. Despite having worked on some software that made sure those GPS satellites were healthy enough to get launched into space...


I did buy a Compaq Armada laptop, fresh off the stamping presses. Windoze 98... (zzz). Sorry, blue screen flashback.

A wireless phone! Err, no. It was the size of a hefty brick (the kind that goes through windows, or used for building foundations).  The antenna looked as long as my arm. Lucked out with that decision.

Technology marches on. Moore's Law gets invented to explain it. Murphy's Law makes a comeback with the software that makes the machines go (OR NOT...).

Dialup! AOL and CompuServe. Joy. I commune with the world, as the  phone lines glow a ruby red from the electron friction.

Cell phones. Nope. Pass by a few years. I'm getting behind the curve here.  Eventually I settle for a tiny brick, an old Cingular Nokia, with no gee whiz gizmos built in.  Lasts 4 years, then a trip through the rinse cycle of my washing machine put it to an end. The Pantene that replaces it is still no IPhone, Razor, or whathaveyou.  

Maybe I wanted to keep my other 8 fingers (we evolved with 10 after all).  I told the salesman that, and I believe I made the right decision.

No IPad yet.  But I have this honking big metal beast in the study (a Mac Pro). But, I've yet to push over to Lion (soon to be replaced by Mountain Lion). Apple better watch it with these cat names; they're running out of predator felines that look awesome on packaging.  The only one left is Ocelot (a let down, as it is smaller that all that came before), then all that are left are the domestic house-cats.  Maybe the extinct Sabertooth might do for MacOS X v9???

No Twitter. Passed on MySpace (lucked out with that decision), but joined FaceBook (pre-TimeLine).  Something happened to me during the last few years, but the enthusiasm level is creeping back up. I have no answers yet, but I'm sure that I'm not retiring from the brain race, even if I don't have every toy in the apartment that was ever created.

Now, I may be a blogger. Stay tuned (or not).