It's the rest of it. I've always worked on sites with an assload of traffic, so its all about optimising their experience. When you are starting something from nothing the hard bit is actually getting some damn traffic in the first place. It takes so very long to build any momentum that its really easy to get disheartened. It's like watching compound interest on a bank account, nothing interesting happens until the last few years. You could actually be getting a decent rate of growth but if thats 10% on five users its still gonna take a while.
At the moment I'm working on two sites notusingit.com which is essentially a listings site, they are only useful to people if they have listings on them so you are well into Metcalfe's Law territory which makes it very hard to build and audience. I've had to go down the (very slow) SEO route trying to gradually build more traffic and more listing. Its a free site at the moment so buying traffic would be silly.
At the opposite end of the spectrum is customerreminder.co.uk there is no network effect in action here and the customers are actually going to have to pay for stuff. So this is very much a target for adwords. But again the problem is its hard to optimise adwords until you have lost a bit of money in the process.
But you know fun and games, and importantly learning new stuff. But none of it is about the code.
Notifications are incredibly useful but only when the information is important. You wouldn't want the bat phone on silent, but you also don't want it ringing to be sold insurance.
I realised how badly my notifications were configured when a comment on Facebook caused my phone to ping and two computers to make a noise. Thats a lot of attention. So that's an email sent an a push notification to my phone.
I've started to reconfigure all of this because of the level of annoyance. The problem is that the levers that I have to use are all a bit unsubtle. Email or not, notify or not.
What about importance and engagement? I'm not talking about AI a few simple rules would do it, they actually manage it pretty well with the feed. Can't be hard to detect if I'm actively engaged in a conversation or just chiming in to cause trouble.
The intelligence doesn't actually have to be in the service that your interacting with there could easily be a middle man service that you forward everything to. I would have to work out two things, the importance of the message (hard) and where you are.
If its important sent a push and have it make a noise, make of note of whether I have seen it. If I havent make sure that it shows up when I move to a different device. For less important information queue it up into a feed that can be looked at later.
This isn't a spam filter, its something more I think. Google are getting there with voice which does part of the job, maybe of Apple could come up with a similar service and roll their push notification into it that might get half way there.
This is a rant, sorry, but not totally content free.
Any email or communication that I get that isn't interesting to me is spam. Because I'm a hypocrite that includes the email I specifically asked to see, boring is still spam. I want a check box that says only send me stuff I'll be interested in, and then it had better still be amazing.
So how does this affect a company or individual? Don't send email. Unless you can guarantee that the recipient will be interested in what you have to say, Just don't. This includes deal of the frigging day.
All companies that you and I deal with have masses of information about us, they are just being lazy. I'm a bloke, sending me lazer hair removal offers is not going to make me want to spend my money. You are now an annoyance, the hole is only going to get deeper and yet you stil seem to be digging.
Facebook knows everything about me, so why the hell do I see un-targeted adverts. If they charged by impression adverts would get targeted really quickly. Targeting population segments based on loads of information is supposed to be a Marketing wet dream so whats going on. In fact i think that is the definition of a Market.
There are companies that can do this and do it well, unfortunately the cost of over communication isn't measured only the conversion.
Assume that you get to communicate with an individual once a year. As an example take 50k customers (nice to have) and segment them into fifty groups. So you're compiling one email a week, leave them alone at christmas please. For that thousand people find something that they will want to see. That is not hard. Please bear in mind though that you don't get to talk to them again for a year so make it good. Or better still don't send the email at all.
And don't ever call me after 6, just don't. There's a reason that I'm available then, and it's not for you.
I've worked with a big CDN before, its expensive and a bit of a pain. But it they work, oh hell do they work. If you want to get content to Asia in a 1/3rd of the time then its the way forward. But your going to pay for it so you'd better be making a load of cash.
I discovered this nice company today CloudFlare, basically a CND for small sites. There are some added security features as well but its the CDN thats interesting.
Ok this is going to be a little bit of a rant, and I may mention Microsoft a few times. Error messages and their content are important. If they dont provide a course of action then they are essentially lists of keywords to stuff into google.
Recently I was forced to have to mess around with SQL Server. Running on an image that was given to me my someone else. So far so messy. I couldn't not get the Management Studio to connect. Kept geting a message about pipes, you look at the detail you get a stack trace. Essentially some comms stuff somewhere has spat its dummy. Great helpful, thanks.
Poking about ensued, all of the usual suspects, checking services etc.
The VM was unreliable anyway so I thought sod it I'll reinstall the whole damn things, go from clean. During the install of SWL Server there is a big fat button saying as this user to access the database, seems a sensible thing to do. So totally default install. Management studio same error, cant even see that the DB exists.
Removed the DB.
Second install, thought what the hell I'll add the Administrator Group, I'm one of them, that will work.
At no point did any of the messages that I got indicate that permissions were the issue, and the big fat button on the installer encouraged me to do the wrong damn thing. Err FAIL.
I'm guessing the network later just said "no", instead of saying "no you don't have permissions"
And scaling isn't performance, but thats a separate rant.
The complexity of software dosen't increase linearly with its size. If its very well written then you might got close but at some point everything will end up talking to everything else, then your screwed. Code can be split up into libraries and managed carefully but its still far to easy to reach around interfaces and do something bad. At its worst everything ends up talking directly to the database.
Slicing off a lump of functionality and sticking it into a service, especially if its a restful one has a knack of making you have a think about what you are trying to achieve. You can start thinking about giving the service its own independent storage. Maybe using an alternative and more appropriate technology. The dependencies and backwards compatibility are still a pain, but they were there anyway just hidden by other pain.
Imagine a system composed of 10 dice with 6 sides, how many possible combinations? A lot, I'd work it out but I can't be bothered its that big. Take that same system and slice it into 10 subsystems each of which can be in 6 very well understood states.
I know which one I'd rather test.
This will only work if they are totally different systems, the only interaction between them can be through the tested interfaces.
Why isn't it for performance and scaling, well you just picked up a load of network chatter that you are going to have to deal with. Most likely with some caching, which can be fun. But I think that its a worthwhile compromise just to separate some concerns.
So recently I decided to get a company in india, brickwork, to do some of the boring bits of a project for me. It mostly consisted of doing research into affiliate programmes. There has been some confusion but I think that we are getting there. Considering I paid for 5 hours labour I think that they have ended up doing about twenty for me. Still waiting on the final results so we shall see.
The key to it all; say exactly what you need them to do. If there is a process go through it literally click by click. Do not assume anything, if you are coder then imagine writing a script to do the job with decision points clearly highlighted along the way.
I'll update when I've got the final results back, hopefully they will make more sense this time.
Iv'e just finished reading Re-Work, the 37Signals book that encapsulates their philosophy. Its written by DHH so it doesn't exactly pull its punches.
One of the chapters is about the work environment, it specifically talks about not treating staff like they are kids. Elsewhere in the book there are references to having people who work instead of delegators.
I think that the two ideas mesh together nicely. By giving people the ability to make decisions for themselves. You make yourself less important then if they are constantly having to come to you to ask for permission. At that point you might have to explain exactly what you do all day, or not. Maybe you just get to be able to work normal hours again instead of spending all day answering emails and then doing you day job outside of hours when you are tired.
Tim Ferris talks about the same ideas in the Four Hour Work Week except that employees he has outsourced most of his business to other companies. He told them to speak to each other and if they could resolve any problem for less than $400 to get on with it. At the end of the month he reviews any decisions made and sets new guidelines to inform decisions.
The essence of this treat people like children and they will act that way.
It seems that a lot of emphasis is placed on Definition of Done in SCRUM. Its generally the development team that are going to decide on this and communicate out, as a set of rules for them to abide by you can potentially change them every sprint or project. Hopefully to improve them.
The really complicated on is ready for development, this has to be communicated clearly to people outside the team. It will take them time to get their heads around it, so you don't want to be changing it every five minutes. Ready for dev is also something that is seen differently by different members of the team.
The absolute most important thing to remember is that for a user story to be ready a developer must be able estimate the complexity of the story and then start work on it. This absolutely has to be done without a raft of assumptions being made. If the writer of the user story needs to be consulted its not ready for dev.
There are two approaches to dealing with this:
Stick to the rules: Push back anything that isn't ready even if the sprint is only partially full. Warning this will end in tears.
Work together: The less us and them the better. Before the sprint planning meeting have a chat with the person writing the storys and go through some of them to make sure that there is enough detail. Encourage to flesh them out where needed.
The idea is to wean people off option two and onto one.
Also many thanks to the mate that I blatantly stole this idea from...