Curveball

I'm staring at the previous post that I wrote way back in January, right before things happened:

If I really wanted to make my mark on the world I have to build something. If I really want to become the kind of software developer I always wanted to be I have to write more, both in terms of words and in terms of code. I really want to experience the builder's high, that great feeling of having added something to the world.

It turned out the universe had other plans for me.

Readify's Manila operations have been shut down since the end of January. Circumstances beyond our control had lead to a management decision to shift its strategy and forego foreign operations, deciding to focus its efforts in Australia. Despite this, I remain grateful for the opportunities they gave me, and remain friends with many of my former colleagues in their various Australian offices.

Since then I pursued freelance work opportunities, and this work, along with my current role leading the Philippine .NET Users Group, has occupied me since January. However, even before Readify Manila closed I had been working from home most of the time. I have been working home-based for half of the year now, and while I appreciate not having to wrestle with traffic and parking problems every day, I've been facing a challenge I have never encountered before:

I feel isolated. I feel alone.

I thought that these feelings would be made up for by the presence of my wife and children nearby, and mitigated by online conversations with my former peers. But what I have taken for granted is the ease of approaching people and striking a conversation or raising a question at the workplace.

I also came to appreciate more the value of a team -- a set of people who have different strengths and capabilities -- each one focusing on their own contribution to an overall effort. I have been in excellent teams in my stints in Readify and ITRS in the past four years, and this stretch of working alone made me appreciate those years all the more.

I had wanted to be able to build and write more, but working alone proved to be more harrowing and tiring than I have ever imagined. My recent experiences have given me a great opportunity to think and reflect to know myself better, and they answer a lot of question that I've had for myself before.

Now it's time to act on that new information.

Posted in Career in Tech, Personal | 2 Comments

Building: Life and coding

I change the title of my blog, again.

I used to have two blogs; I wrote purely technical topics on this one and wrote personal and political views on the other. After realizing that I was spending too much time, effort, and emotional capital on my political blog, I decided to retire my "political blogger" hat and focus on writing about technology.

With less than 10 entries per year however, one thing was clear -- I wasn't writing about technology enough!

Sure I was quipping on them -- taking tiny snipes on Twitter and Facebook. But other than that I was avoiding any real work, and any real connection that inspires me to write something.

That is, until I came across Michael Lopp's excellent entry on his blog Rands in Repose:

What’s the last thing you built when you got that high? You know that high I’m talking about? It’s staring at a thing that you brought into the world because you decided it needed to exist.

For me, the act of writing creates the builder’s high. Most pieces are 1000+ words. They involve three to five hours of writing, during which I’ll both hate and love the emerging piece. This is followed by another hour of editing and tweaking before I’ll publish the piece, and the high is always the same. I hit publish and I grin. That smile is my brain chemically reminding me, Hey, you just added something new to the world.

...

Turn off those notifications, turn your phone over, turn on your favorite music, stare at your blank slate and consider what you might build. In that moment of consideration, you’re making an important decision: create or consume? The things we’re giving to the future are feeling increasingly unintentional and irrelevant. They are half-considered thoughts of others. When you choose to create, you’re bucking the trend because you’re choosing to take the time to build.

That struck me. If I really wanted to make my mark on the world I have to build something. If I really want to become the kind of software developer I always wanted to be I have to write more, both in terms of words and in terms of code. I really want to experience the builder's high, that great feeling of having added something to the world.

Happy New Year, and I wish you all the energy and inspiration you need to build something awesome this year.

Posted in Personal | Leave a comment

How I celebrated my 0x21st trip around the sun

It was the 2013 Microsoft MVP Global Summit the week before my birthday, and I had finally been able to make arrangements to attend. It was a great week of learning what comes next for Visual Studio and C#, and I also got to meet guys I've followed, read and talked to online: Scott Hanselman, Phil Haack, Scott Koon, and Laurent Bugnion to name a few.

But what completes the whole experience for me is meeting the guy who made C# the awesome language that it is right now. I'm talking about Anders Hejlsberg.

Anders Hejlsberg and me at the 2013 Microsoft MVP Summit

Anders Hejlsberg and me at the 2013 Microsoft MVP Summit

Aside from C# Anders was also responsible for Turbo Pascal and Delphi, and is now also working on a Javascript superset language called TypeScript.

A totally geek moment and an apt birthday gift to a C# junkie like me. :)

Posted in Personal, Talks and Conferences | Leave a comment

Homecoming

Back in September 2012 I got an email from a friend as an introduction between myself and one of the managers at his company.

This friend of mine had been telling me for years about how great his company is and how much he enjoyed being there, and had invited me to join them then. However, it required a move overseas and, for personal and family reasons, that wasn't an opportunity that I took seriously.

The surprise then was finding out that the manager he had introduced to me had been tasked to set up an office here in Manila, and build a development team that adheres to the stringent standards of their company. Of course there was an implicit invitation to join their team as well -- but as I had a bevy of commitments back then, I opted to just help them any way I can in putting up the new office.

Fast forward 10 months later. I will be joining Readify as a Senior Developer after a three year hiatus from the Microsoft stack.

I had a great time with Cormant (as a returning consultant) and ITRS doing iOS, Java, and a bunch of other things completely outside of my prior experience, and the lessons I have learn delving in them are completely invaluable to me.

Then again, it's good to be back home.

Posted in Career in Tech, Personal | 1 Comment

Evolving the Quality Assurance role

Assuring quality is everyone's job -- but programmers and testers alike forget that.

I have encountered all sorts of variations to where developer testing ends and Quality Assurance/Professional Tester testing begins. Some developers hack away carelessly at their code and throw it to QA letting them test it (often the first test the code encounters) and just wait for the bug reports to come, in other times QA personnel start filing bugs that aren't defined in the specification, and start treating programmers as "the cretins who introduce bugs". Entire wars erupt between these two sides of development.

As if to add fuel to the flame, an article claims that quality assurance is one of "10 technology skills that will no longer help you find a job":

5. Quality Assurance Specialist and Managers

Hiring professionals in the Dice survey placed Quality Assurance (QA) on the "low priority" side of the ledger. Do not expect this to change. These days, the tech industry seems to be following Google's lead and turning everyone into beta testers. Users are the ultimate quality assurance staff - and they don't get paid! [Brian Hall - 10 Technology Skills No Longer In Demand]

While the absence of testers dedicated to making developers cry seems like a good idea to software developers, the lack of staff dedicated to testing presents its own problems. There has to be a set of "fresh eyes" that will not see an application under the narrow focus developers tend to have. Implementing the "users as QA" principle also requires the very expensive overhead of analytics modules that are necessary to track user actions that caused a particular bug. Not to mention that the analytics stuff would probably have bugs on its own.

While I tend to dislike the traditional definition and role of Quality Assurance, I believe there are three areas QA professionals can focus on to keep themselves relevant in the industry: test automation, user experience, and domain expertise.

Test Automation - There is enough tedium in the QA process that is worth automating. Repetitive tasks should be relegated to a script, which frees up QA to focus on writing test cases and measuring the performance of applications instead of random bug hunting. Besides, even if you had access to thousands of cheap testers, repetitive tasks are best done by the very machines applications are tested for. There are countless tools dedicated to this effort, and many of them allow you to address Michael Hunter's You Are Not Done Yet Checklist [PDF] in an automated manner.

User Experience - If there's an area that could not be efficiently tested via automation, it would be the visual appeal and intuitiveness of an application. Quality assurance professionals that focus on usability, user experience and design, not just in terms of visuals but also in terms of workflow and ease-of-use will be very valuable in producing software that will have either a lower after-sales support overhead for enterprise software or mass appeal for commercial apps.

Domain Expertise - Many times the breaking point of software projects is the ability of a particular piece of software to follow specific business rules or accommodate new pieces of regulation that the app should comply with. Quality assurance professionals who could gain domain expertise and gain greater insight on an application's impact in the business side of the equation would be immensely valuable. Even in outside organizations working within that same domain.

Just as software development has already evolved far from being a solitary effort running punch cards and checking if the desired output is achieved, quality assurance has to evolve beyond merely using an application and reporting any bugs found. A QA professional possessing at least one of the above skills beyond normal tester job descriptions would be invaluable to any organization priding itself with shipping quality software.

Posted in Career in Tech, Industry Talk, Tech Musings | Tagged , , , , | Leave a comment

Was User eXperience invented with the Macintosh?

With today's web and mobile technologies with varying user interfaces of all shapes, sizes and colors, it is easy to forget that once upon a time when someone said "computer" they meant facing a drab, single color, single font-size terminal that tends to hurt your eyes.

Were you already born when this came about?

This dull vision of technology was changed by a young Steve Jobs, who in January 24, 1984 came out with a computer that was able to display much, much more than text. The Macintosh was the first in a long line of products that up to this day bear (almost) the same name.

It is probably reasonable to say that the term Graphical User Interface was, for the general consumer and personal computers, born that day.

Prior to the Macintosh user interfaces were merely textual, and the only other product on the market that had a GUI was the Xerox Star, which was a client-server system that required an office to shell out $50,000 to $100,000 and was definitely out of reach of the common user. Of course there was the Xerox Alto, basis for the Star and famous prototype at Xerox PARC where Jobs got his ideas in the first place -- that one never made it to market.

However, aside from just being a fancy computer with pictures, Steve Jobs was also very particular about "look and feel", and how the menus and buttons of an app worked together, and how layouts affected use, aside from how aesthetically appealing the Macintosh's appearance was. Now, while the term "User Experience" may have been coined in the mid-90s, it is clear that the concept of having an easy-to-understand and easy-to-use application, not just in terms of visuals but in terms of how it affected working with the software, was started way before it, and perhaps championed by Jobs with the Macintosh.

I'd like to wonder out aloud: was user experience invented with the Macintosh? Did Steve Jobs invent user experience? Or have I have been RDF'ed to think that way?

Posted in Tech Musings | Tagged , , , | 1 Comment

Learning without context, and YAGNI

I'm currently studying how to do test-driven development in Javascript. I'm studying JSTestDriver, and while it's not a particularly difficult framework to learn I'm having a hard time slogging through the materials simply because I've got no context.

What do I mean? I have nothing on me yet. No specifications. No user stories. No real-world examples. Every signal swimming through my synapses related to my current project is hypothetical.

That's a problem -- at least for me.

Many of the languages, frameworks and concepts I've had to study before were either existing as a legacy system or at least had some sort of specification lying around. Before that, everything was just fun, games, and Hello World.

I learned BASIC off of a GW-BASIC manual as a kid trying to draw graphics on my monochrome screen. I learned C and Visual Basic for machine problems and projects at school. I learned HTML so I can make a website for my freshman class. I learned COBOL, C# and iOS building on existing projects at work.

It seems that the brain is invoking the YAGNI (You Ain't Gonna Need It) rule -- which teaches you not to implement application features you don't need yet, or you only think you're going to need. I'm going to use TDD on my new project, that's for sure. But because it knows any code I write now is throw-away code, my brain has a hard time cooperating.

It explains all those times I had a hard time studying in school -- I didn't think I was going to need any of those lectures in real life (I was mostly right). Too bad it took me a decade to realize it.

I never thought YAGNI is applicable to study and learning -- but here it is.

Posted in Tech Musings | Tagged | Leave a comment

Book review: Dreaming in Code

I wrote this first as a customer review on Amazon

At the beginning of the book I thought Scott Rosenberg was going to fail in his narrative of a software development project. As a software developer the drivel and pain feels akin to a small boat dragging its bottom across a shallow reef. I had terrible feelings of depression all through the halfway point as I relive similar mistakes and experiences -- some my own doing, some by my colleagues, some by management -- on development projects I have been in.

Only when the book got to its final third -- somewhere around Chapter 9 -- did I start understanding why Scott had to get everyone through all that pain. It's particularly difficult to explain to non-developers why programming isn't as easy as they think it actually is, and Rosenberg HAD to bear that pain and point down on his readers to get that point across. It was in this final part of the book that I found joy and wisdom; not only am I not alone in my struggles as a software developer (most of the book brings this point across), but even the greatest minds in the industry have wracked their brains to solve this inherently difficult problem.

Particularly striking to me was the explanations on the works of Donald Knuth, who before this book I had only heard about, did I appreciate his own quest in creating something practical (his decade-long work on TeX) and feeding it in to his more esoteric pursuits (his lifelong work on "The Art of Computer Programming").

All in all I feel that this book is a must read for everyone working in the software industry, specifically because it compiles all the greatest resources on the subject matter -- from Frederick Brooks of Mythical Man Month fame to Watts Humphrey's CMMI movement to the formation of the Agile Manifesto and Extreme Programming to 37 Signal's lean approaches -- and Rosenberg successfully wire-walks these contradicting views with sufficient balance and absence of bias towards any of them.

Posted in Book Review | Tagged | Leave a comment

0×20

I celebrated my 32nd round trip in the solar system last weekend.

In the morning we fed some kids from where the poorest of the poor of Manila live.

In the afternoon I helped in the logistics of a arts and music workshop for kids studying in a working-class neighborhood school for my uncle helps run.

I feel that it's important once in a while to join these kinds of activities. For all the problems that we think we have, when you put yourself in the shoes of these children their woes are more daunting and their world much bleaker than yours.

Then you look at them and realize that they still, somehow, manage to smile. Perhaps you can learn to smile at your problems too.

Be thankful.

Posted in Personal | Leave a comment

Some things benefit from IT, some things don’t

Some things should embrace the wave of massively online technology, like education:

It’s been interesting watching this unfold in music, books, newspapers, TV, but nothing has ever been as interesting to me as watching it happen in my own backyard. Higher education is now being disrupted; our MP3 is the massive open online course (or MOOC), and our Napster is Udacity, the education startup.

We have several advantages over the recording industry, of course. We are decentralized and mostly non-profit. We employ lots of smart people. We have previous examples to learn from, and our core competence is learning from the past. And armed with these advantages, we’re probably going to screw this up as badly as the music people did. [Clay Shirky - Napster, Udacity and the Academy]

I surmise it would take a long time before this actualizes, but the writing is pretty much on the wall. While traditional companies will still value diplomas and transcripts of records, the prevailing startup industry will start valuing skill more than degrees.

Some things are better left offline though, like say, military logistics pipelines crucial for fighter squadrons:

As the Marine Corps prepares to set up its first operational squadron of F-35s next week, some experts say other security risks may lurk within such a large and highly networked weapons support system.

One concern: Lockheed shored up political backing for the F-35 by choosing suppliers in nearly every U.S. state. But having such a large and widely dispersed group increases exposure to cyber attacks, said Ben Freeman, national security investigator with the non-profit Project on Government Oversight. [Andrea Shalal-Esa - Insight: Lockheed's F-35 logistics system revolutionary but risky]

This fiasco reminded a friend of Battlestar Galactica where the protagonists were able to fight back with older fighter craft because they weren't "networked" and weren't affected by a computer virus the enemy Cylons used to disable the Colonial protagonist's systems.

There are, however, some things that are just plain badly implemented -- like the Romney campaign's late voter system:

Called "Orca," the effort was supposed to give the Romney campaign its own analytics on what was happening at polling places and to help the campaign direct get-out-the-vote efforts in the key battleground states of Ohio, Florida, Pennsylvania, Iowa, and Colorado.

Instead, volunteers couldn't get the system to work from the field in many states—in some cases because they had been given the wrong login information. The system crashed repeatedly. At one point, the network connection to the Romney campaign's headquarters went down because Internet provider Comcast reportedly thought the traffic was caused by a denial of service attack.

...

"The end result," Ekdahl wrote, "was that 30,000+ of the most active and fired-up volunteers were wandering around confused and frustrated when they could have been doing anything else to help. The bitter irony of this entire endeavor was that a supposedly small government candidate gutted the local structure of [get out the vote] efforts in favor of a centralized, faceless organization in a far off place (in this case, their Boston headquarters)."[Sean Gallagher -
Inside Team Romney's whale of an IT meltdown]

My friend Cocoy Dayao covered the US Elections as a member of the press representing BlogWatch. He posited that the Democrats benefit from having more extensive data, to which I countered that the Democrats simply decided to use IT from day one, as opposed to the Republicans who planned to use it only on the day of the elections.

Posted in Tech Musings | Tagged , , , , , , | Leave a comment