We need better technocrat managers, Harvard

Harvard Business Review recently published an opinion piece about digital transformation, arguing that organizations need better managers, not more technocrats, in the drive to realize this future.

And that’s a view I disagree with, the reason having to do with their credentials. I wouldn’t accept financial advice from Colgate, or agribusiness advice from Ford, and I equally wouldn’t accept digital transformation advice from Harvard, as they are currently not producing the agents of that transformation.

LinkedIn updated their rankings recently, and Harvard placed 7th in the list of universities that produce digital entrepreneur alumni – the sort of people that go on to work at disruptive startups and drive real change.  Stanford, MIT and Berkeley all placed higher.

If Harvard were a thought leader in the area of creating digital transformation, then their alumni should reflect that to some extent. I’d sooner accept digital transformation advice from a pair of Stanford dropouts (say, Sergey Brin and Larry Page?).

What it boils down to is that technology is not a fad, or a gadget. It’s not something you can take a 3-month elective course in and then fully understand. To understand technology, you need to grow up with technology, and produce things with technology. When you understand, at a fundamental level, what technology can and cannot do, and what it can be made to accomplish, you know exactly what to expect from your team, and your organization.

And those are at such odds these days, it’s actually funny. Everyone makes the “developer vs manager” jokes, where the managers don’t understand what the developers do, and the developers get frustrated with arbitrary deadlines and technically impossible requests. This is beautifully captured in The Expert:

That sort of conversation happens thousands of times a day, all over the world. And everyone in that conversation is computer literate – you have to be, in the modern economy. Being computer literate, however, is no substitute for a deep understanding of technology as a whole – for that, you need to treat technology with a lot more respect.

And that sort of respect takes some time to build. I think it’s fair to say that everyone who ever created anything of substance in technology, has at some point stood in awe of what it is capable of, while simultaneously recognizing its shortfalls. And it’s with that understanding that you can build companies that drive the real digital transformations.

Look at all the major tech companies today, the ones that are driving digital transformation in the real world, all over the world. Microsoft was founded by 2 hardcore developers (Bill Gates, Paul Allen). Google, by a pair of Stanford dropouts (Larry Page, Sergey Brin), their ambition rooted in technology’s transformative power. Apple, by two technologists who understood what technology could do (Steve Jobs, Steve Wozniak). Twitter, by Jack Dorsey, a man that wrote open-source taxi dispatch software in his youth.

They do not need digital transformation – they’re creating digital transformation for the rest of us – and they’re doing it so effectively because they have technocrat managers at the helm. Business, people and finance skills can be taught, but true technology skills are earned, through years of hard labor at the keyboard, finding the limits of your skills and the equipment you’re using, and then pushing past them, every day.

That takes passion and ambition, and if there’s one thing you cannot accuse middle-managers in massive conglomerates of, it’s passion and ambition. The sort of people that (want to) spend all of their time managing the lives of others, never creating anything of their own, will have a hard time grasping what it truly means to understand technology.

That’s why I don’t think better managers will work. You can take all of them, train them all you like, send them on certification after certification, have them learn all the buzzwords and the industry trends, but it’s very unlikely that you’ll ever ignite the sort of spark it takes to create true digital transformation.

For that, you need a digital native.

The road to VDSL

As it turns out, Telkom’s made the process relatively effortless, and I’m quite happy with the service. Surprised, even.

  • 6 October AM: Called to place the order to upgrade to a 20mbps line. Within 10 minutes, the order was confirmed.
  • 7 October PM: Upgrade completed in the evening, within 36 hours of the order being placed.
  • 8 October AM: Logged a fault in the morning, since my router wasn’t connecting. Was informed that I needed a VDSL router (doh). Rationalize it when I learn that Netgear has actually discontinued my model, and it’s about time I upgraded.
  • 8 October PM: Get a call from a Telkom technician, telling me he can’t see an issue with my line. I laugh at myself for not reading the manual and the case is closed. Go out to buy a VDSL router, only to find after I get home that the plug is defective. Curse aloud in several chatrooms that at least one thing had to go wrong.
  • 9 October AM: Plug swapped out in-store in less than 5 minutes, and now I’m connected:
Whooosh!

Whooosh!

All in all, quite painless. I get to go through all of this again when FTTH is finally rolled out in my area, and I’m planning on spending a lot more money on my internet access, so I may as well get used to these new prices now :)

London – April 2014

My trip to London, in photos. Not pictured: Freezing cold wind, tons of advertisements everywhere, an efficient metro rail system, and the general sense that everything’s just put together properly.

Confidence shedding

I don’t get involved in politics, as a general rule. It’s messy, it’s scary, and (to quote my 11th grade English teacher), creates more heat than light. A pertinent maxim, given the current load shedding. For the first time since 2008 (that’s 6 years), Eskom is cutting power again.

Now, I get it – shit happens. Every organization, every level, every scale, shit happens. It doesn’t particularly bother me that we’re enduring a rotating blackout. What bothers me are the statements from the politicians in charge of ensuring these crises don’t happen:

“We expect the rains will subside and as the rain subsides obviously we’ll be back to normal. That’s the timeline we’re more or less expecting to have a return to normality,” Molewa said.

It’s absurd that our national energy supply could be affected by the weather. I mean, other countries endure tornadoes, hurricanes, earthquakes, nuclear meltdowns, and actual acts of terrorism, and they manage to keep the lights on. So that worries me, but not as much as this:

“It is a question of utilisation, that’s why cabinet… said we are making a call to all South Africans to ensure we use energy efficiently.” #

Or, put another way: There’s plenty of power available, if you use less of it. Given that electricity is an artificial resource, and that you can produce more of it given the correct facilities and resources, the question is: where are those facilities?

In fact, where is the sense of urgency to say “well, crap, we have to fix this”? Saying that there’s plenty of energy and we should simply use less, is horrifically short-sighted. In what market (hell, in what universe), does it become the consumer’s fault that demand exceeds supply?

Jackie Chan is not amused.

Jackie Chan is not amused.

By that logic, they need never expand our national capacity again. Every time there’s another shortfall, they just trot out the “efficiency” rhetoric, somehow making it everyone else’s fault for using too much electricity – electricity that we’re paying a ridiculous amount for in the first place, because the vendor has failed to create adequate capacity.

What a circus.

User authentication in Laravel 4.1

Laravel ships with Eloquent’s user authentication built in, but I had to do a little extra massaging to get it to work.

First, I had to create a migration that looked like this:

Schema::create('users', function($t) {
  $t->increments('id');
  $t->string('username', 16);
  $t->string('password', 64);
  $t->string('email', 96);
  $t->timestamps();
  $t->datetime('deleted_at'); // For softDelete
});

Then I had to edit app/models/User.php to add these variables to the User class:

protected $softDelete = true;
protected $guarded = array();

Then I created app/database/seeds/UserTableSeeder.php with:

DB::table('users')->delete();

User::create(array(
  'email' => 'foo@bar.com',
  'username' => 'admin',
  'password' => Hash::make('password')
));

And finally I added this to app/database/seeds/DatabaseSeeder.php:

$this->call('UserTableSeeder');

I then ran:

php artisan migrate
php artisan db:seed

And used the rest of the authentication system as prescribed by the documentation.

New toys: 2014

I’m on leave. Or at least I’m supposed to be, but beaches and cocktails don’t suit me very well. So instead I’m updating my technology skill stack, learning a whole bunch of new stuff along the way:

PSR-0
Not actually a technology, but I’ve managed to structure a new PHP app to follow the PSR-0 autoloading standard, which immediately enabled the use of:

Composer
Which is actually pretty cool. Still an issue or two with memory handling, but it’s fantastic to be able to install all sorts of supporting software in one go – especially when included in a:

Vagrant
file. Vagrant is awesome, pure and simple. My largest Vagrantfile, when run, produces a box, installs software from 3 sources (apt, pear and composer), creates mysql databases with random passwords, and runs my application-level provisioning (database migrations mainly).

I love Vagrant so much, I’ve started applying it to other people’s projects!

Python
I finally got around to writing some rudimentary Python – first, a script that used urllib2 and basic regex to scrape stuff off a webpage. Then, a more complex use case, when I started using:

Flask
Which is another fantastic toy. Not dissimilar from Rails’ WEBrick, Flask makes it easy to build simple web apps. And I’m sure, with enough application, more complex ones. I’ve just been tinkering with it, but it looks really useful for building simple APIs.

Git
I’ve been using Git for ages, but only the bare basics – init, remote add, commit, push. This year I’ve actually started using (Github-specific) forking, branches and pull requests, and it feels great to contribute some code back to the open source arena – even if they’re only tiny patches for now :)

LESS
Good lord, LESS is what CSS has needed since inception. It’s hard to overstate how much time it saves – both in writing CSS, and in reading complex stylesheets. I can’t imagine not using LESS in any of my future projects.

node-webkit
There’s a growing number of solutions for running HTML5 applications on your desktop. Adobe AIR’s been around for a while, but it’s monolithic when compared to current solutions, and node-webkit is one of them – two files, one command, and I have a packaged app ready for distribution, backed by the full power of webkit and nodejs (which I have yet to learn).

Phinx
A lifesaver if there ever was one – it’s PHP-based software for doing MySQL database migrations. Migrations are usually nothing more than a feature included in larger ORMs, but when you just want migrations, it’s damn near impossible to find a good system. Until I came across Phinx, obviously, which has a CLI client and is ridiculously easy to install and use.

Monolog
Never going to write a custom logging library again. In about 5 minutes I had monolog installed, and configured to write events to two files on disk, plus send critical alerts via Pushover.

What I’m most impressed by, though, is that every new technology above is open-source. I don’t know much about the Sun/Eclipse ecosystem, but I know that Microsoft is basically playing catch-up at this point. NuGet, WebGrease, escalating versions of MVC and EF, all of it iterates frantically in the wrong direction, requiring more and more updates to the monolithic entity that is Visual Studio.

The future seems to be moving in the opposite direction – singular packages, dependencies and integration. That’s what PHP, Python and Ruby all have in common now – package management with dependency resolution, all of it managed by the system default command prompt, none of it locking you into any specific IDE.

And I still haven’t gotten around to rails, argh.