Tag: software development

  • Untested

    The 2014 Apple keynote was today, with the announcement of the iPhone 6 and iWatch taking center stage. I was excited, with an aging iPhone 4S that needs to be replaced. I tuned in, expecting to watch the announcements while taking care of some busywork on the other monitor.

    At first I saw this screen (though at about 20 minutes beforehand)

    applekeynote2

    About 10 minutes before the event, the countdown switched, and noted that my browser (Firefox) wasn’t supported. I almost switched to Chrome, but then saw the fine print. I wasn’t thinking and didn’t take a picture as I ran to grab my iPad, but Karen Lopez posted an “altered” version of the Apple page.

    applekeynote3

    Fair enough. Apple doesn’t have to broadcast to everyone and I get that they want to let their iPhone/iPad/iTouch/Mac users see it live. The keynote was available about 30 minutes after the end for everyone, so no big deal.

    In fact, in the scheme of my life, not being able to watch live wasn’t a big deal. I can catch the “showmanship” an hour later.

    However I was surprised when my iPad kept showing a test screen from the broadcast truck. When it connected, it was sputtering and halting, even when a speed test showed me getting 20+MBps at the device.

    I did manage to watch a little, with a Chinese translation overlaid on the sound, at a higher volume than the speaker for me. Slightly annoying, but I could deal with it.

    About 15 minutes in, things started crashing, with Safari on my iOS 7 iPad and iPhone crashing. The iPhone would start Safari and connect to the Apple home page and show this:

    Photo Sep 09, 12 49 36 PM

    The iPad connected a few times and showed this:

    Photo Sep 09, 12 49 26 PM

    I gave up, going on with my day, knowing I could watch it later. However that brings up the question.

    Did Apple test in Production?

    By this I mean, did they actually test the broadcast of this event today, with the live event, or did they test things last week on a copy of what this environment would look like? Did they actually run through the same settings for broadcast that they would do today?

    I do suspect they did some testing, and certainly it’s possible that many, many more people than they expected tuned in. They may have been overwhelmed, and that’s understandable. I doubt anyone has any good way to determine what capacity to plan for, other than to just guess. This event might have been larger than the Super Bowl, World Cup, etc.

    Or maybe Apple didn’t want to bother scaling to a capacity beyond some xx% of Apple device owners.

    Any of those is fine with me, and I can understand someone deciding to spend $yyy on this, though I’d argue it was a mistake since this is a great chance for an amazing amount of publicity and hype for their products.

    However there are certainly other problems that I question the level and detail devoted to testing. The overlay of foreign languages means that someone hadn’t configured their audio correctly, and more importantly, no one was monitoring to stop the problems quickly. The problems with the stream meeting devices might have been capacity, but crashing the browser? Either there’s a major QuickTime issue, or the encoding was broken in some way (perhaps again, by capacity).

    This is a shot at Microsoft as well, but I thought Tim Ford’s summary was spot on:

    applekeynote

    We talk about thorough testing on a copy of production. A real, scale, same sized version. Few of us do it, but certainly some do, especially those with big budgets. Apple has big budgets, so I suspect that their testing was cut short, or someone assumed things would work the same way they had in the last keynote, which went off without a hitch for me.

    Complacency, coarse attention to detail, poor quality control and monitoring seemed to be in play today. None of which as a good thing.

    Perhaps Apple was testing in production.

  • Estimates

    Estimating the time it takes to build a piece of software is quite a difficult task. As many of us have seen over the years, most estimates can wildly differ from the actual time it takes to complete a project. There are lots of reasons for this, but I was surprised to find this post explaining some of the problems in a very interesting way.

    I realize that many software projects are very different in scale and scope, but I hadn’t ever considered the spectrum to be quite as wide as explained in the post. Just as in other industries, there are times that your software project needs to create its own technologies and techniques in order to be successful. While software might not be as complex as curing a disease, it might not be that far off at times.

    However it’s not just that the body of knowledge about software development techniques is so vast, it’s also the problem that each of us might have a very limited amount of knowledge about building specific types of projects. What might seem simple and easy to some developers feels complex to others. A simple example I’ll give you is with version control. I know version control isn’t the same as building software, but it’s a tool that many developers use.

    I think version control is fairly trivial to implement and use. It can be a pain to use with T-SQL code and scripts without some tooling, but it’s easy to learn how to use a version control system (VCS). However as I’ve spent two years talking about version control at various events to lots of people, and I still meet lots of people and organizations that see a VCS as an impediment to getting work done. Hint, it’s not.

    I think we share so much knowledge in the SQL Server community, but it still seems that we don’t seem to be educating people as well as I’d like, and as quickly as I’d hoped. Our Stairway Series were designed to try and organize information, but I’m sure there are other, better ways to do so. I’m open to suggestions, and other efforts to help raise the level of knowledge for SQL Server professionals. I’d like to find ways to help people learn more, write higher quality code, at a faster pace.

    Steve Jones

    The Voice of the DBA Podcast

    Listen to the MP3 Audio ( 2.8MB) podcast or subscribe to the feed at iTunes and LibSyn. feed

    The Voice of the DBA podcast features music by Everyday Jones. No relation, but I stumbled on to them and really like the music.

  • Silicon Valley is a different world

    I spent the last couple days at Flowcon 2014, a conference that is bringing people together to talk about growing their organizations with continuous delivery and design, and lean product development.

    It does some of that, but it wasn’t what I expected. The attendees for the most part were people that already believe in continuous delivery, in lean principles for their organization, and in flow. If you don’t know what flow is, read the Phoenix Project, Martin Fowler, and other lean, agile methodology books. It’s a concept from labor and manufacturing, with the idea that we can increase the rate at which we get work done.

    I believe in it, it’s a tenet of DevOps, and I think it works well. The conference features people from Netflix, Nordstrom, Etsy, Thoughtworks, and other companies that are already using these ideas. They believe, and they are looking for ways to better smooth out their own groups.

    However they also have ideas about rapidly changing and adaptive groups and organizations, which isn’t where most of us work. Far, far too many people are still stuck performing waterfall work, or even waterfall-like work.

    It’s also a world where people are looking for startup ideas, looking to move quickly and build something new. It’s a world that’s quite unlike my own. While there’s a buzz and energy from many people, it also feels somewhat shallow and hollow from some that are searching for riches. It’s also a bubble of thought that is so far away from most of my experiences, that it feels sheltered and idealistic.

    Don’t get me wrong, it’s exciting, and there is a passion some of these people have for their craft that’s inspiring. I’m just not sure it’s a place I’d want to be every week.

    However I do wish more and more people would look to better develop software. If we are to improve as an industry, I think many of the ideas and techniques that are invading the software development world related to flow need to be adopted.

  • Hooks

    I read this sentence recently, and it really caught my eye, mostly because I’ve rarely seen hooks being built into the software systems that I’ve written, or that have been deployed to my production systems.

    “A quick chat with your Operations team should convince you of the necessity to log every error condition to a single wellknown location, with the appropriate severity, so that they [the Operations team] know exactly what the problem is.”

    It seems obvious, but so few people I know have taken advantage of this. Far too many software products build their own logs and display errors on screens rather than alerting operations departments. So few people have taken advantage of RAISERROR to write to Windows logs, or the custom SQL Server performance counters to disclose information to operations systems or personnel.

    That’s my experience, but I wanted to ask you this week how you’ve handled things. Do you have software installed that does this? Is it a part of your development process to include hooks?

    Do you hook your logging into operations systems to alert others?

    As I think about it, I can’t imagine not doing this now. After all, I like to sleep. I don’t need calls at 2am from Production operator trying to find a log and debug a problem. I’d rather ensure that I log information to well known places and ensure exceptions will catch the eye of operations people. I want to give them as much information as I can in order to help them solve the problem. I’d rather sleep and depend on the on-call staff then be woken up because they rely on me to solve problems.

    Personally I think that logging to the Event logs, or including configuration switches to send alerts to other software ought to be part of the best practice of developing software. It’s a maturity point where we recognize that we’re building interconnected systems, not individual bits of software that live like hermits.

    Steve Jones

    The Voice of the DBA Podcast

    Listen to the MP3 Audio ( 2.6MB) podcast or subscribe to the feed at iTunes and LibSyn. feed

    The Voice of the DBA podcast features music by Everyday Jones. No relation, but I stumbled on to them and really like the music. Support this great duo at www.everydayjones.com.