Archive for category development
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.
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?
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?
In a world of high speed, high complexity and high quality we need smart people to work on smart and innovative solutions. But even though smart people come together at a start-up it can completely fail. Not because of the lack of skill but almost always the lack of culture.
More an more start-up entrepreneurs try and work with remote resources and have the smartest people work on their ideas. Sometimes it works out and things get created but in the start-up work many things go wrong on a simple mismatch of culture. Experts do not know how to work with one another, maybe do not share the same goals and visions. In a small company these things are more important than in bigger ones but a strong company culture can really skyrocket production speed and result quality.
But why is a good developer able to create bad results when the culture is wrong? Why will a normal developer do really good things when in a comfortable cultural environment?
We all want to create the best technical solution, making sure it flows naturally and that it looks good. But there is always time and budget pressures that do not allow you to create that perfect piece of software that you want. It is always a struggle between quality, time and money that shape the resulting product.
Interestingly there are always ways to cheat yourself out of an issue to fix it later. The solution might be not technically the best but it can work for 90% of the time and when it fails you can make it matter less. Cheating the client out of the best solution might make them happier than delivering a perfect product.
I’ve been a web-designer/developer for a couple of years now. I have a 9 to 5 job and I do freelance work on the side. Not so different!? Well, I became conscious about why I worked and what I like to do fairly early on. In high-school I already figured out that I like design and I liked to invent things. I had “the nack” as Dilbert was told by the doctor. There are many routes to take but I found my way into the industry that is called the web, and I found it during the best time to join in!
I developed my own way of working and looking at work over the last couple of years. I’ve seen similar thing popping up as we are changing the way we work. I have been wanting to write this for about a year now as I get so many questions about how I manage to do it, different problems that may occur and the different perspective I have. So, I’m writing it down so everybody can read the basics before they start asking questions.
In the upcoming weeks I would like to touch a couple of subjects when it comes to how I work and why I do things in a certain way.
There are actually a couple of things you need to look out for when using plugins. It is not as trivial as: “plug it in & turn me on“.
I know it does not always work like this. But I always find myself in situations where I have different people on different operating systems working on the same project. This has been the case for me several times. I am always open for the idea of developing on different platforms, maybe I’m a bit of a free-choice nut… Anyways! There have always been issues with gems that can only be used for specific platforms. How do you solve this problem!?