12 skill yg dibutuhkan untuk membangun aplikasi yang baik
So you know how to build a web app? Agile methodologies all talk about “cross functional teams” yet if you look at the vast majority of agile teams they probably have the following “roles”: Developer Tester Analyst Every once in a while a graphic designer is thrown in to the mix. While cross funct
So you know how to build a web app?
Agile methodologies all talk about “cross functional teams” yet if you look at the vast majority of agile teams they probably have the following “roles”:
Every once in a while a graphic designer is thrown in to the mix. While cross functional skills are the right idea we tend to leave some critical skills out of the mix.
If you build a web app it you should run it.
Infrastructure automation and administration should live inside the team. This allows you to feel how easy or hard your app is to live with.
- Automated app deployment (yes even for mobile)
- Self healing infrastructure
- Test driven infrastructure
- 12 Faktor yg dibutuhkan, yaitu :
One codebase tracked in revision control, many deploys
Explicitly declare and isolate dependencies
Store config in the environment
- Backing Services
Treat backing services as attached resources
- Build, release, run
Strictly separate build and run stages
Execute the app as one or more stateless processes
- Port binding
Export services via port binding
Scale out via the process model
Maximize robustness with fast startup and graceful shutdown
- Dev/prod parity
Keep development, staging, and production as similar as possible
Treat logs as event streams
- Admin processes
Run admin/management tasks as one-off processes
If you don’t know who your clients are, or even worse if you don’t have any yet, how do you know you are building the right app?
You should start building a dialog with your community before you start writing a single line of code.
- Knowing where your users are
- Understanding your users
- Understanding why you do what you do
- Articulating why you do what you do to your users.
- Giving users something of value first
- Developing and executing a launch strategy for your app
- Build the simplest responsible solution.
- Pick technologies that serve the users needs.
- Have a strategic outlook on the architecture.
- Understand that you will probably build the wrong app initially.
- Write great code!
Text is still one of the most important mediums for communication when building mobile and web apps. You should craft the sentences in your product with as much care as you craft the code.
- Speak your customers language
- Tell your story
- Why is more important than what
- Be concise
- Be clear
The visual system is by far the highest bandwidth information channel available to humans. Good data visualisation optimises this channel. Using 3D pie charts clogs it with junk data.
Which would you rather do?
- Understanding the data in your web application.
- Understanding the insights your users need to have.
- Applying data visualisation theory to turn data into insight.
Just because you like the way it looks doesn’t mean it’s the best way for a web app to work. Designs are only good if they are useful, usable and delightful. If you would like to know more I wrote a resource guide on ways to learn user experience design
The only way to know how something works in the real world is to watch people using it.
- Paper prototyping.
- Usability testing.
- A/B test to improve existing features. (this is harder on mobile apps)
- Use metrics to make informed decisions.
In order to optimise impact and revenue you need to understand where the money comes from and where it goes. How much does it cost to get a new user, how long do they need to keep using your app to earn that money back?
Where is your major cost, are you optimising the right part of your app to limit costs and maximise revenue. Each web app is different and you need to understand how yours is unique.
- Knowing how your business makes money
- Prioritisation of features
- Knowing where costs come from
- Understand what competitors are doing
- Finding innovative ways to maximise revenue and minimise costs.
Innovate or die!
That is the silicon valley mantra. If you want your web app to compete on the global scene you need to live by it.
- Reduce cost of failure
- Challenge traditional thinking
- Broaden the scope of possible solutions
Another of the more traditional roles. You need to get into the nitty gritty of how things work. Understand the users needs back to front and think about all those edge cases.
- Understand and optimise business processes
- Understand and optimise customer workflows
- Legal requirements
Are you putting your best foot forward?
People make snap judgements on the quality of your web app. You need to be damn sure they make a good first impression. Luckily there is a wealth of information available on line that can help you learn web design.
Design every interaction, think about the whole experience.
- Make the app pretty
- Design for target devices and user needs
- Design is how the app works not just how it looks
- Design the whole system
- Make the small things matter
Is your product a smooth ride or do the wheels come off on a regular basis?
You need to make sure you have a solid testing framework. This includes unit, acceptance, infrastructure, performance and load testing. All automated, all repeatable.
- Find errors as soon as possible
- Identify root causes
- Test the infrastructure
I left this one for last since it is the one that varies the most from project to project. If you are building medical software you best know about medicine. Make sure you know what you are talking about!
- Challenge existing industry thinking.
- Understand the latest research in your field.
- Become an expert.
While having all these skills is by no means a recipe for success it definitely gives you a massive advantage over people who don’t.
Even if you think you aren’t doing all these things you are, you might just be doing them badly. None of them should be an after thought.
Does your team have what it takes?