One of the things you have to deal with when creating a rails app that faces “the public” is that you have to deal with meta data. Traditionally this would come down to a title, some keywords and a description. Currently meta tags are used for much more as both Open Graph and Twitter are using it to determine what to do when that link is shared. Making your site more SEO and social network friendly is not that straight forward as it used to be.
So when it comes to designing an app the first thing most designers think if creating a user flow and then just filling in the screens one by one. Although looking at flow is of course the first thing any designer should do the filling in of the blanks much too often happens in the present state of the app. Why present state? Because that’s what is being build right now and design has always struggled with the slower and changing pace of development of an app vs design. Many designs right now are create in one go. If things are missing there are issues, if things are added there are issues.
But there is a way for design to work with and in sync with development. A way where design is a tool, like code, for the direction the app is going in.
First let me start that this is one of my pet peeves and not meant in any way to offend anyone or specifically point to any one person, organization or company.
With that out of the way… Why the F*** does everyone think they are doing a startup nowadays?
Startups are all the rage at the moment. On the world markets the headlines are mostly about startups going public and new emerging companies taking control of markets. They even pop up in regular news now and then when new apps or new concepts are released. It’s all about Silicon Valley in San Francisco, CA, USA. So much even that in London there is a roundabout nicknamed the Silicon Roundabout. On top of that HBO started this year with a new series called “Silicon Valley” that follows a startup.
But why am I so pissed of about it? I’m gonna be complete goth/emo/hipster about it and just say it. Making it popular killed it!
In the software development community automated test have been there more and more. I myself started coding in PHP without a single test and just ran the app like QA would have done to see if it worked. Over the past decade this has really changed for me. I’ve lived through a flux where everything needed to be tested through and through to only integration tests. Currently I think we all agree that automated tests are something that is kind of a requirement when talking about serious software development. Note; “serious” I’m not talking about hacks and one of experiments.
So now the question becomes; When are we too obsessive with our test? Or, when are we just not covering the code enough?
Although not a very scientific question it is a very relevant one. Over the past couple of years there has been a drop in how much is being paid per eyeball on an advertisement online. Not because the mass on the internet has become much bigger, no there is not enough return from the advertizements placed. In some cases advertizing online can even have a negative effect when done in the wrong way. What cases these effects? And an even more important question how can we do something about it?
As I’ve been doing start-ups for a while now I’ve been getting more and more into the business that makes a start-ups succeed or fail. Over the years one thing does strike me over and over again. Some mistakes are made over and over again. I have found many times that problems can come from an imbalance between searching for solutions and making sure you keep your eye on the prize.
So you have a Ruby project and you practice TDD. Now to not make it too hard on yourself to run your test suite every single step of the way your using guard to speed up your process. Good for you and it should make testing as fun as it could be.
Now as I’ve been moving from project to project I’ve seen different practices when it comes to using guard. Some good, some bad but all beneficial for different reasons. What I did find if most projects is that the Guardfile is shared by putting it in the repository of the project. Now I’m wondering, is that a good practice?
Code is never perfect the first time over, specifications change and there is always pressure when developing a new feature. Thus the programmer has invented the word refactoring. This word implies that when a programmer stumble upon the code the next time or there is time to optimize the programmer will use that occasion to refactor the code into a better state. On small things this might take a minute on bigger things a refactoring can take up to several hours. But there is always that point when a developer thinks about if it is really worth refactoring it or if it deserves a rewrite.
The rewrite is a more radical approach. You take a piece of working software and trow it away to be completely rewritten. Better optimized, better functionality and build from the ground up to be a better performing piece of software than the last iteration. David Heinemeier Hansson once lovingly said about 37signals Basecamp; “Sometimes it is time to take out the old trash and start over”. And that is what 37 signals did. They rewrote Basecamp from the ground up and they got a better product.
So when does the grey need to turn into one or the other?