Category: Best practices

Forget About Software Configuration, Settings and Options – Choose the Right Defaults 0

Forget About Software Configuration, Settings and Options – Choose the Right Defaults

Common pitfall – “I am not sure what to do…. let’s make it configurable”

You hear this all the time in software companies – Some business analysts, developer or product manager trying to solve a dilemma in software development by pushing the decision to the end user side. “Let’s make it configurable” seems like a get-out-of-jail free card if you can’t make you mind about colors, screen layout and many other hard choices we have to make many time when designing our software.

Effective Development Environments – Development, Test,  Staging/Pre-prod and Production Environments. 10

Effective Development Environments – Development, Test, Staging/Pre-prod and Production Environments.

The following happens in many software projects –
At start, it seems you only need one environment for your web application, well, at most two:
One development environment (AKA your PC) and one server.

But as time pass, you find you need additional environments:
The clients might want their own testing environment, sometimes you need to have a pre-production environment or a staging environment, so business managers can approve the ongoing content as well as look & feel.

Do you really need these environments? What are these environment good for?

Here is a short description of some of the more popular environments and their purpose.

10 things every software architect should consider (AKA – 10 key architectural concepts) 2

10 things every software architect should consider (AKA – 10 key architectural concepts)

After a session I gave about Scalability in Wellington NZ, one of developers asked me what are the things software architect should consider. I have gathered and compiled this list:

1. Security

Application security encompasses measures taken throughout the application’s life-cycle to prevent exceptions in the security policy of an application or the underlying system (vulnerabilities) through flaws in the design, development, deployment, upgradation, or maintenance of the application. [1]