StartUps - Use the tools that work for you

by Steven6. July 2012 11:52

It has often been tricky enough arguing with folks over the past few years when I tell them I predominantly use the Microsoft Stack in my startup projects (of course with tech like Solr etc when needed) but my argument has always been that other than i find their tools and platform allow me to create better apps that other platforms - and faster, because i know the toolset. It's important for a startup to get something out and learning a new set of technologies - unless something is really key to your product - is really not the best way to get started. I use the tools that work for me.

This brings me to a tweet I saw yesterday from 37 Signals co-founder David Heinemeier Hansson who wrote :

@dhh It's easy to forget that there are still people who proudly call themselves software architects, use UML, and clamor for repeatable process!

I quickly replied to say:

@weblivz uml isn't all bad ... like software - use the features that make your life easier rather than using every option just coz it's there.

Yes, like you i've been in the room when someone has presented a UML diagram that has taken about 3 weeks to create and has one for each UML2 type, every end on the diagram populated, every state mentioned, stereotypes, tagged values, a million associations, hierarchies and more ... and no-one has a clue what it means.

However, there is value if you stop yourself from over analysing everything (contrary to popular opinion, analysing what you are going to code isn't necessarily a bad thing is there is any degree of complexity in it).

Recently I had to write some code that would interact with the Facebook Graph API and with its interaction with my application there were a bunch of flows and outcomes. It would have been easy for me to start hacking code only to discover I was repeating various flows and discovering new primary flows and exceptions - trust me, when you are hooking together API's with oAuth there are a ton of considerations.

However, what i did was through up a few use cases (took about 15 minutes) and there created an activity diagram. The activity diagram did get quite complex and that was just looking primarily at the happy paths. It did make me realize where i was doing the same thing at different stages (such as the oAuth check when further permissions are needed) and gave me a much better understanding what what i needed to code (or rather what I am coding just now).

I'm not necessarily going to start writing sequence diagrams for everything too - i find them useful for very specific but complex code flows, but i do find activity diagrams to be one of the most useful pieces of UML for startups. Class diagrams, component diagrams, statecharts, interaction diagrams - they are for the most part things that don't directly impact on users but the UX is directly dependent on the flow of the app, so activity diagrams are very useful.

In short, i like to create a few variations. A very high level happy path activity diagram. A lower level activity diagram that shows some of the flows in the way you'd show it to your mum (mom) and finally a lower level activity diagram that shows some of the considerations for the code you need to write.

Use the features and tools that work for you - it's your startup.

Tags: , ,

Business | Tech

Comments (2) -

charlie
charlieUnited States
7/6/2012 6:05:09 PM #

Let me ask you this: I've been working on a startup dealing with the MS web stack but I find myself writing, creating business layers and often delving off into areas that I'm not comfortable in.
So then what happens is that I get discuraged and it takes me a while to get back on track.

So my question is, is it better to write something to get it working then go back and make it better/more scalable/etc.. or is it better to do that stuff all up front?

For example my application is fairly simple in nature and I probably don't need to write my logic out into a business layer, but i end up doing that, things don't work right because I'm out of my zone and I either give up or take a lot more time because i need to learn new things.

Reply

steven
stevenUnited Kingdom
7/6/2012 7:59:25 PM #

Hi Charlie.

I think that is pretty common - even with the extensive framework that exists - and all the .Net open source libraries there are now, there is still the magic that is your app.

My approach now is to think about scalability and other future issues right up front - at a high level. As an example, if I know i need to scale in a particular part of my app (say the high demand consumer bits versus the lower demand admin bits) then i immediately look at an interface that allows me to scale session, asset storage etc - very  basic at first but something i can change later.

I also think it's important to think about how DB access can be minimized very early in your project if there are going to be parts that need to scale in order to make the business work.

So what bits absolutely need to scale in order for your business to at least get started? I previously had a project that a user could post a competition that would then be sent to 80,000 of their fans - the admin side was simple, but scaling to 80k users in a matter of minutes can be interesting ... that that is what was needed to validate the idea.

To be honest, i also think when you at early stages in a startup you may not always follow best practice... at times it just isn't feasible to get all your tests, mocks, integration, deployments, code coverage etc etc all working as your "supposed" to. I think we need to be quite pragmatic in that respect.

To finish, I think it is so important to get something working as early as possible for two reasons - the first is to test your ideas and the second is to excite *you* so you don't stop - it's exciting seeing people use your product .... actually that's far far more exciting that someone telling you that your code is well structured Wink

So, loosely coupled, interface based, think and plan big but start small and hit the deploy button asap. I personally also find activity diagrams and some use cases to be really useful - at a UX level and at a lower code level.

PS. Also, don't be scared to use non .Net stack products ... i love Solr and related technologies. So many tech's serve http/ajax these days so you can leave it on a server somewhere, integrate it and get the best of both worlds!

Reply

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

 
Steven Livingstone-Perez is VP Engineering at KILTR, creator of Valebrity and other things. He is married & has two children.
 
He mains the VentureIQ blog focusing on tools for startups.

Books I've Written

What I Do

undefined

Founder

 

undefined

VP Engineering