Gary Allison's Leadership Blog

Agile Software


Agile Software and Cloud Computing and Effective Software Projects and Tech News24 May 2014 07:15 am

Gordon Moore

Monday, an article was posted on Forbes titled “Why Software Doesn’t Follow Moore’s Law”. This topic has been on my mind some lately as we’ve been working to rollout a new platform with greater scalability, lower maintenance costs, and significantly enhanced capabilities. For engineers that have worked only on the new platform, it is easy to disparage the original platform. Many of them were were not even professional engineers when the original platform was written and they lose sight of how software architectures have changed over the years from the traditional three tier architecture to the lambda architectures of today.

It’s interesting to break this down a bit more. Are engineers smarter today than they were 8-10 years ago? And were those of 10 years ago smarter than those of 20 years past? In my humble estimation no, and one could argue todays graduates know appreciably less about how computers actually work but lets not digress.

What has changed is the way software is constructed. One can argue that modern languages have a major role to play in this, but one can argue also they are an outcome of the changes in architecture. But why has the architectural change occurred?

I believe a significant part of the change in software architecture is attributable to Moore’s law, somewhat in opposition to Mr Maccaba’s article in Forbes this week. Certainly engineers 10 and perhaps 20 years ago understood the advantages of isolation and service oriented architectures. Why didn’t they build systems in this way?

A major reason what that the systems and networks in place really couldn’t support it. Without gigabit networks, fast processors, and super cheap compute, the emphasis was on highly optimized code paths. REST Call? You would have been laughed out of town. Now the opposite is true.

Thus, Moores law has enabled much less efficient architectures to be feasible. Mr Maccaba also asserts this, but missed the point. These new architectures are much more scalable, can be built with fewer dependencies, can be changed independently since they are loosely coupled, and allow previously unobtainable compute goals to be broken down into independent parts and delivered. This is true whether we are talking about large scale web application infrastructure or big data analytics.

By constructing software architectures that take advantage of Moore’s law, we are solving problems that could never be solved before and constructing software systems of higher quality that we can actually deliver in much faster times to market. While certainly not doubling every 18 months, the time to market of new highly scalable solutions is measured in months today instead of years.

At the end of the day, I feel the point Mr Maccaba has missed here is that Moore’s law doesn’t apply to humans. Thus, we leverage Moore’s law to make humans more effective in software engineering through architectures that do deliver significant increases in scalability, quality, and capability.

Agile Software and Effective Software Projects and Leadership and Teams17 Oct 2013 06:31 am

kitten

As a leader of a Engineering Team, you may have had your fair share of experience with “Free kittens”. Free kittens are one off products, partner integrations, new platform support, or customizations that really only apply to one customer or are focused in a market that is outside your wheelhouse. These will be presented frequently to you as a fuzzy small requirement in a SOW, contract, or just as likely an email you’re copied on – fuzzy, cute, and often not described in much detail.

Of course, free kittens need some one to take car of them, buy them food, expensive trips to the vet when they are sick, and no matter how cute, theres a lot of crap to clean up. Same is true for the kittens that show up at your office door / inbox, usually delivered by Sales. (To be fair though, they can come from Product Management, Support, and directly from Customers themselves.)

As leaders, it is not usually effective or productive to say, “no thanks, your kitten is kinda ugly”. We are in the business to build and deliver software and services that delight customers which requires us to be adaptable and aggressive in meeting their needs. What is often more productive is to ask questions and educate the kitten custodian about what it will take to live with this kitten for the next 5-10 years (software kittens sometimes, but not always, have a shorter lifespan that real kittens).  In so doing, hopefully a business decision can emerge.

I’ve had more kittens than I can count show up at my door over the years. The latest one that came in very recently was run a one-off instance of our SaaS solution in one of the newer cloud hosted IaaS platform that I won’t name here. Of course we can do it (all things are possible with software) is the answer. However, there is this small matter that no one in this company has ever worked with that particular IaaS cloud provider.

I often find people miss the point on how to provide a service – its not a one time effort. Clearly training is needed for everyone who would touch this new platform: Dev, QA, Support, Services, etc. You need need a smooth repeatable process to dev, build, QA, deploy, secure, monitor, troubleshoot, update, backup, and recover from disasters. Turns out those cute little free kittens are somewhat pricey! Is it worth it for this one customer, or can we amortize this effort over a whole set of customers that we would move to this new platform? Can this large investment strategic? Good questions…

Of course, Sales people are not comp’ed on taking care of the kitten, just on its adoption. Sometimes this is called “happy ears” – they just want to hear yes, whether from you or the prospect. The sales person or product manager won’t have to feed it or clean the litter box, so it doesn’t hurt to inform them of the smells that can occasionally accompany these cute little guys. With the right business conversation that considers both the true value and cost of the kitten, you can drive a decision that works for your SaaS platform.

Agile Software and Leadership and Teams25 Sep 2013 03:29 pm

portraitI had a ping recently to remind me that people actually read my blog and its been a while since I posted.  That does happen when you take a new gig. I’ve been working on several ideas in my Evernote and so it is definitely time!

I recently had one of my new team members ask, so what does it take to be a VP.  I was instantly reminded of the famous “So You Want to Be a Computer Programmer” post.  With a little less sarcasm, here’s my take on what you need to be a successful executive in this business:

  • Ability to see big picture – beyond a specific instance of a problem to understand the cultural, process, and personal reasons of the situation.  For example, if a team is missing sprint commitments it’s easy to see, but uncovering the core issues and what is driving them can be tougher.
  • Ability to set, communicate an effective vision, strategy, and goals – you must be able to explain the why.  Great teams care as much about the why as the what.
  • Deep understanding of each role in the team – preferably having personally performed a number of those roles – developer, QA Engineer, program manager, UX designer, product manager, and so on….
  • Familiarity and curiosity of new technologies, technical market shifts, etc. For example exploring new AWS services, Docker, node.js and other new movements, even if there is no direct applicability to a current project so that you can ask the deeper questions on future projects and foster innovation in your team.
  • Fundamental understanding of the business, accounting, and budgeting. So much of your capability to execute comes straight from creative uses of the budget and making the most of what you have.  You don’t need an MBA, but a minor in finance or accounting is very helpful, and having a CFO that will teach you as much as possible about corporate finance is a Godsend.
  • Deep understanding of people, what motivates them, drives them and how to make them successful.  This is critical to building a mentoring / coaching culture where you can pass these skills down and scale the team. Very helpful here is an understanding of behavioral styles (ala Meyers Briggs / DISC, etc) and how to communicate and inspire each type of person.
  • Must be able to quickly assess the strengths and weakness across the team and particularly with the leadership so that you play to their strengths and give them support in the areas where they are weaker.
  • Be ready to make and be accountable for difficult decisions. You are going to have to make tough calls on people, priorities, technologies, strategies and more.  At times there will be no great choices, only painful ones and at the end of the day the worst thing you can do is make no choice.  (Nowadays they call it fail fast.  There are lots of cute terms for truths that have been around a long time.)
  • And perhaps number 1 – the ability to sell innovation and change to your team, to executives and to customers. People are generally change averse and whether it is driving a major new product architecture or whether it is helping someone digest the risk they perceive in a new product, the executive must be able to sell innovation and change before they are able to drive effective realization of that change through goals and objectives.
Agile Software and Effective Software Projects and Leadership and Teams01 Oct 2012 09:29 pm

Last year I wrote briefly about the importance of having a great culture in this post, but it deserves a deeper dive.  Early in my executive career I had the great fortune to work with a terrific CEO and mentor. One of the many things I learned from him was the power of culture and the way it can work to juice your team. The power of a competency culture in particular was something that I grew to understand under his mentorship.

In a nutshell, this taxonomy would classify cultures as control, collaboration, competency, and cultivation.  The importance of these comes down to how decisions are made and specifically, how quickly the organization can act. We are all familiar with control cultures – all decisions are made by “the boss” according to a structured authority framework where successively important decisions must be made by higher levels of management. In a control culture, all decisions made by lower levels in the org are subject to being overturned at a higher level of management.  The fall out of this culture is that the people responsible for implementing decisions often never really buy in, resulting in little empowerment and innovation.

In a collaborative culture, decisions are made by consensus.  This requires nearly unanimous agreement and the process for reaching an agreement on complex issues can be lengthy.  The advantage of course is that everyone buys in to the decision and is committed to its execution.  Great buy in, but slow.  Not a compelling recipe for innovation.

A cultivation culture is fairly uncommon in business and is more identified with a religious system, where the organization exists for the focused purpose of growing the individual with a higher purpose in mind. Which brings us to…

It is the competency culture that drives the engine of the most successful tech companies.  This is an empowering culture where authority and responsibility both are pushed down to the lowest levels in the organization.  Decisions are made quickly, by owners.  The owner’s responsibility is to involve stakeholders in the decision making process. Once all input is considered, and  the decision is made, it is everyone’s role to commit to the decision.  It is ok to disagree with the decision, but in this culture you disagree and commit.  This culture depends on you hiring the very best people available, and giving them all the responsibility they can handle, plus a little.

Everywhere I’ve worked since, I’ve tried to build a competency culture. When it works it really is golden.  People thrive and grow and suprise you with innovation.  Teams live and breathe ownership, commitment, and teamwork because they know they personally can make a difference.  I don’t know why I’ve taken so long to write about something so core to my management philosophy but here it is.

For more information on these cultures and how they can determine the fate of your organization, I recommend this document by Dr William Schneider.

Agile Software and Effective Software Projects and Leadership and Teams19 Jan 2012 04:57 am

Last night, I read a passage in the Steve Jobs Bio recounting a conversation between Steve and Mike Markkula as Steve was contemplating his return to Apple.  The passage was about reinventing a company, and struck me as very poignant as I had just spoken to my team a few weeks ago at our 2012 kickoff about reinvention.  The passage

They spent the rest of the time talking about where Apple should focus in the future. Jobs’s ambition was to build a company that would endure, and he asked Markkula what the formula for that would be. Markkula replied that lasting companies know how to reinvent themselves. Hewlett-Packard had done that repeatedly; it started as an instrument company, then became a calculator company, then a computer company. “Apple has been sidelined by Microsoft in the PC business,” Markkula said. “you’ve got to reinvent the company to do some other thing, like other consumer products or devices. You’ve got to be like a butterfly and have a metamorphosis.” Jobs didn’t say much, but he agreed.

How prophetic. Also evident in the book is that not only did Apple have to reinvent itself, Jobs had to reinvent himself to a degree in order to become an effective CEO.

Reinvention is the key to all success and the path forward. For teams and companies to grow, they must recognize that the things that worked in the past which made them successful, will have to change, be reinvented, to continue that growth.  Since growth = success in our measurement system, then change requires reinvention.  Approaches, processes, technologies, teams, communication – it all must be reinvented all the time.

Five years ago, I wrote a blog about leading through change.  Rereading this now, I feel it is still on target.  At the time I was thinking about change that is sourced from the outside.  Reinvention is sourced internally.  The same strategies apply.

Agile Software and Cloud Computing and Leadership and Teams31 Aug 2011 08:30 pm

Reaching the Summit

Today was an especially good day.  Few things can compare to seeing the combined efforts of a large team who has worked so hard together towards a shared vision finally reach that goal.  Like hikers on a long trek finally reaching the summit, today we took time to survey the terrain we conquered, thought a little about the road ahead, but still enjoyed the moment.  Building SaaS based products with Agile process can result in a relentless pace, so these moments are special.

I’ve had the pleasure of leading terrific teams of very talented people in delivery of software projects, and this day, I have the privilege of leading the best of those.  The scale of innovation, integration, and imagination that as a team they delivered is a tribute to their commitment to our company and our clients.  For me, it is a huge thrill to see what months ago was a set of ideas turned into a quality solution.

Today, in our team meeting, I tried to convey the importance of this accomplishment.  Ten years from now, each of us may look back on this day, proud and maybe a little amazed of what we did together.  There’s a very good chance many of us will never deliver so much innovation in one day again on this scale.  I’m proud of our team, grateful for their efforts, and hopeful many non-profits will benefit from their hard work.

Agile Software and Effective Software Projects and Leadership and Teams02 Jan 2011 08:34 pm

In a prior post, I wrote about the relentless pace at which our Agile development moves, especially as it is teamed with delivery of software as a service (SaaS).  One of the consequences of this speed of constant delivery is that there’s never time to go back and “clean up” any of those important but not urgent tasks that you just didn’t get to in the sprint.  You know the ones I mean – that last unit test you really should write, fixing a low priority bug, UI tweaks, or automating all of the QA tests.

We’ve found that at the core of this challenge is that the team may not all be engaged simultaneously on the same project.  As I work with other Engineering executives, many face the inherent conflict of QA sprints that lag behind development sprints.  On the surface, this seems natural.  After all, there’s nothing to test until it is written?

We know from test driven development practices this doesn’t have to be the case. Even if not following strict test driven development practices, with careful development story planning, the UI aspects or API stubs can be built first in the sprint, so by the time the QA team has spent a day or two planning test scenarios or preparing test data, they can begin automated test development.

We also find that we need for new code development to stop at some point in the sprint. From that point to the end, developers are only fixing bugs found by the QA team in the sprint, completing those final few unit test cases, taking on usability feedback, and otherwise driving to complete.

By taking this approach, the developers and QA engineers stay together, focused on one goal as a team.  That goal is sprint complete of a high quality and finished deliverable.  The result is far fewer lose ends, a higher quality product with less rework, and just as important a team that works together.

Agile Software and Effective Software Projects and Leadership and Teams02 Dec 2010 01:28 pm

Smell the Agile Roses

On my day off today, I find myself contemplating how little time there is to smell the roses (and write blog posts).  We have so tuned our processes that really there is no downtime.  It turns out that when you add Agile development processes to delivering software as a service (SaaS), what you achieve is a relentless pace of innovation.  That’s good right?

Well, it does have a few consequences that are important to manage.  First is that there is never time to go back and finish that unit test, test automation, or UI tweak you really wanted to do last sprint.  You need to be complete and ready to move on to the next project.  We’ve been working on ways to improve here which will be part of a follow up post (really it will).

This post is about another consequence – we deliver innovation so quickly while also working on the way we deliver that it is easy to lose sight of how far we come.  As I overheard on a flight yesterday, “the days are long and the years are short”.  So true.

To combat this in my team, we try to be as rigorous about our celebrations as we are about our delivery.  We deliver somewhere around 10 times a year (even more with minor updates) and this will only grow as our product line continues to expand.  Still there are certain deliveries that stand out as larger accomplishments and 3 times a year as a team we will take a day and celebrate.

Often these celebrations include a team engineering event – we’ve built tinker toy towers, water balloon launchers, and aqueducts.  We’ve played kickball, laser tag, and cruised the lake on a party barge.  Once a year in Dec/Jan, we will take stock and as a team, share what we feel are our largest accomplishments as we also layout how we want to raise the bar for the next year.

It can be exhausting at times to be a part of the relentless pace of Agile delivery, and at those times when the release is rolled out to clients, maybe the last thing you want to do is plan a celebration. But every time we have one of these events, I am reminded what great people we have on our team and how much they deserve (and need) these times together.

Agile Software and Effective Software Projects and Everyday Tech and Teams and Tech News17 Oct 2009 06:04 am

Oh, how I love this post by Joel on The Duct Tape Programmer!  This is such a salient point that applies to so much more than the context here.  “You see, everybody else is too afraid of looking stupid because they just can’t keep enough facts in their head at once to make multiple inheritance, or templates, or COM, or multithreading, or any of that stuff work.”

I just ordered my copy of  Coders At Work.

On a total Tangent, I just completed the transfer of my domain name off of Network Solutions to Dreamhost.  Dreamhost is awesome and dirt cheap.  They have one -click installs of just about everything you’d ever want to run on your website and their registrations are almost free they are so inexpensive.  I’ve been hosting with them for over a year and have had zero issues (other than imap email, but that’s another story).  I 100% recommend Dreamhost.

Agile Software and Effective Software Projects and Leadership and Teams17 Oct 2009 05:52 am

Lots of discussion lately about measuring productivity has had me spending time I should be sleeping thinking about the same.  I love accountants and finance folks.  I find them very bright and love the way they typically approach any business discussion from the point of logic, but they can be an intractable lot as well.  They’d love to measure software engineering efforts like a consultancy – hours in, output out, utilization metrics pop right out the other side of the equation.  More utilization of the team means more productivity!  Wonderful!  Its so simple and we should have figured this out so long ago.  All that time wasted counting KLOCS and function points….

Of course it doesn’t really work. You can count hours, or days, or whatever to your hearts content but you are only measuring effort.  And, measuring effort of a software development group is an exceptionally tricky (and potentially dangerous) thing.  Its not the effort that matters, but rather the results.  So how do we measure the results?  Ahhh there’s the rub.

What we need to measure is the business value of the stories the team is being asked to build.  For the consultant this is very simple – you are paid by the hour for the consulting performed.  Thus, hours billed X hourly rate = business value.  The business value of a software going into a product is not so easily measured.  But, lets assume this is a solvable problem.  It gets even more interesting in the planning phase when you are making product choices.  For a proposed feature, what is the busniess value?  Now suddenly, this is not a software engineering question at all.

Agile Software and Leadership and Teams29 Mar 2009 09:13 pm

Last week, the Austin Agile development user group, AgileAustin, published a online poll of tools that teams in the local area favor for agile planning.  In response to the email announcing the poll, a couple of members emailed the list saying their favorite tool is no tool at all.  Some said index cards.  I shook my head a bit and emailed a good friend of mine who also leads development teams for his thoughts.  We came to the conclusion that it must be nice to work in a project so small you need no tools to help the team plan a sprint.

Actually, I don’t think it would be that nice.  I’d submit that if your plans are so simple that you need nothing to track them, or index cards suffice, you’re probably not doing much interesting.  For my team, Rally Software’s Rally Enterprise has been very successful in helping us plan very complex agile projects.  I recommend it without hesitation.

In many cases, our product management team enters user stories (sometimes we use epics for very large user stories) while the development, QA, and docs team breaks these down into stories and tasks.  We plan sprints as a fully integrated feature team across all these disciplines.  It’s not perfect, but it works and works well.

You can keep your index cards, thank you.

Agile Software and Leadership and Teams and Tech News02 Dec 2008 10:04 pm

Tomorrow, I have the opportunity to speak at an Rally customer success tour at the Renaissance.  Tonight, I am reflecting on the leaders I have a privilege to serve with on the panel, Israel Gat, Jack Yang, Torsten Weirch, and Eric Huddleson.  These gentlemen are all significant leaders in the Austin Community and I’m looking forward to tomorrow.

I’ve chosen the topic of “Agile in the Large” since the real power of Agile is evident when you turn loose the teams to run at their full speed in a self directed agile process.  Agile gets really interesting with development teams over 50, and also holds its most promise.  We believe that the best way to scale a team and continue to deliver successful software projects is to build it as a set of Agile teams.

Here’s few things we’ve learned along the way.  Interestingly enough, in comparing notes with the some of the development leaders at salesforce.com, it seems they have learned many of the same things.

  • There’s no replacement for a great technical leader in the Agile team – effective team leads are priceless.  You should always be growing and recruiting for leaders.
  • Great Product Owners are hard to find.  I have the pleasure to work with some of the best, but to scale the teams, you need more.
  • An Agile team must be composed of all the skills they need to produce a shippable result.  In our case, it is the product owner or manager, usability, dev team, QA team, and tech writers.
  • You run into problems when you depend on other parts of the organization that may not be Agile.  Just for an example, if you have a supporting organization that is still working on the Hero principle, or the waterfall process, there is going to be trouble.
  • Tool support is critical and everyone must adopt. For large teams, roll up views and quick reporting is absolutely essential.  Rally gives us this capability.
  • Test automation is absolutely key to keeping the product shippable.  As each sprint there is significant new functionality being delivered, the QA team must at the same time deliver automated tests so that doing regression testing onthe whole product is a swift process at the end of the release.  There’s just not time to regression test the whole product.

We have even been able to extend Agile to expose our feature teams to end clients through the Rally Agile tool.

Agile Software and Effective Software Projects and Leadership and Teams23 Jun 2008 08:41 pm

Recently, we evaluated several Agile Project Management tools.  Having used XPlanner for years, it was time for a change.  XPlanner is great in some ways – fairly lightweight and easy to use for developers.  It really falls apart though when you start to consider multiple agile teams working together to deliver a release.  It is just really problematic to get a group view of where you are, what progress is being made by the team, and where the hot spots might be.  To accomplish this, you need to drill into the details of every scrum team and study the metrics / charts.  I even went so far as to change the source code to build a dashboard – that’s when we started to approach diminishing returns.

The other shortcoming of XPlanner is the management of the product backlog and release planning.  Yes, you can work around this, but intrinsically, the tool does not support building a backlog and then moving stories into a sprint.  Yes, this can be done, but it is arduous.  The interface also is stuck in Web 1.0 land, making data entry into a form submit after form submit affair.

So then what?  Surveying the market and talking to many of my longtime friends developing software with agile process, we quickly build the short list to replace XPlanner. We looked in detail at Rally, VersionOne, and FogBugz.  Though FogBugz had some very interesting capabilities around predicting the accuracy of estimates, it didn’t really seem to support agile planning methodologies and the scrum process.  Also, though the predictive capabilities are interesting, this really isn’t a huge benefit in my opinion if agile is really used and you know your people.

So, it was down to VersionOne vs Rally.   Both companies did extensive demos for our leadership team and key stakeholders.  Both tools intrinsically are built around the scrum agile process.  Both were priced around the same level with VersionOne being just a little less per seat, per month, but Rally matched and beat this price point in our negotiations.  The huge gaping hole in VersionOne for us was that it really didn’t assist with resource planning at all.  That is, they don’t enable you to enter the amount of available resources in terms of hours, days, etc, and then in the planning cycle show you where you are in using those hours as you take stories from the backlog and add them to the sprint.  Both tools track burndown during the sprint of course, but only Rally lets you know if you are planning too many stories in the sprint.  Even XPlanner supports this, so it is a big miss for VersionOne.  We can only assume they are working to add this capability.

Also, the rollup reporting for an entire release is more powerful and flexible in Rally.  This was a big plus for us.  To be sure, Rally isn’t super sophisticated in resource planning.  It doesn’t allow the individual team members enter their availability and then sum it up for the sprint.  (I would like this feature – I need to add this to the Rally Community.)  Rather, it just allows you to add the total number of hours available for a sprint at the beginning of the planning cycle.  How you figure this out is up to you.  After you add the total number of hours available, it shows you hours remaining as you add stories.

In coming blogs, we’ll talk more about the pros and cons of Rally as a Agile management tool.

Agile Software and Effective Software Projects20 May 2007 08:07 pm

The Third Sin of Software Projects is failing to understand its all about the people – attracting, retaining, and helping the best software development professionals available to succeed. The people on the project are the key determining factor of success. Let’s look at a few of the key factors in what we need in our people.

Productivity – you’ve probably read that top notch software developers are 2x – 5x more productive that the average developer. I’ve lived it and can attest. It’s not that the best will write 2 – 5 times as much code; it’s that they either can achieve the goal 2x – 5x more quickly, or just simply solve problems that others find unassailable. When I was early in my career I had the good fortune of working with just such a superstar: Brian. While I could hold my own in some of the most difficult projects, I could also see that Brian was simply a brilliant developer. He was simply world class, solving the most challenging issues and making it seem almost effortless. What if you could build a team mostly of this type of person? You could do anything! (FWIW: this also opened my eyes that I needed to focus my career on an area where I felt I could truly excel – leadership.)

Motivation – Software professionals are different than many other professionals in what motivates them. They are motivated by working with other smart people, working on challenging problems and cool technology, and by achieving a level of success personally and technically. (This last one is a complex subject as there are as many meanings of success as there are different types of people in software development). As leaders, we must understand that software professionals are motivated differently, and try to understand what success means to each person in our team.

Teams – In addition to having the most productive and motivated professionals, we need to be able to have them work effectively in a team. Dysfunctional personalities, poor attitudes, or weak contributors will torpedo a team very quickly. Any of these attributes in a team member negates all the positives above. Take a developer who is tremendously productive and knowledgeable, but just has a very negative attitude and they can drag everyone else down, kill cooperation and communication, and single handedly cause a project to fail. Conversely, a team that is made up of top-notch people that are motivated, focused, and check egos at the door can turn out the most innovative solutions imaginable.

Trust – finally, the key essential ingredient in the organization that makes it all work is trust. People within the team must trust each other to deliver, development must trust product mangers, teams must trust their leaders, and all the way through the organization. Very recently, I’ve heard about a situation where a new leader came into a development team and half the team left the company. It’s safe to say that more emphasis on building trust was needed! A subtle implication of trust is that integrity is required for trust to exist. The best companies I’ve worked with have a deep appreciation for all these ingredients, starting with the CEO. Those that don’t will fail.

Agile Software and Effective Software Projects25 Mar 2007 03:55 pm

In this business, we are all subject to schedule pressure which is essentially market pressure. This pressure is often real, coming from executive management, the board, or investors. Despite this, there are some necessary steps in the development process that can seem expedient to skip that in many cases, just shouldn’t be skipped:

  • Prototyping the UI and getting feedback and buy in from Marketing and target customers. In the rush to get to market, we can easily skip this one. After all, once the design is done and the developers are implementing, its very expensive to change. Also, when working with new technologies, you don’t always know up front what is possible in the UI.
  • Throw away the prototype. Its tempting to keep the hastily constructed prototype and evolve it into the final product. Especially when considering the need to prototype to explore UI options and technologies, this early deliverable is critical but also a mess under the covers. Learn from it and toss it.
  • Internationalize the code and externalize strings up front. Its tempting to say “we can do that later”. Later is incredibly expensive. In our globalized world, most commercial software must be internationalized – design it in.
    Continue Reading »

Next Page »