Chris Donnan : Programming – Brooklyn Style
software, trading, family, fun
Posted Finance, trading on Tuesday, September 19th, 2006.
Cantor Fitzgerald moves to real-time data analysis with Kx Systems
As I mentioned in my post on Real Time Data Mining the ability to rapidly analyze lots of high speed incoming data is key.It looks like KX has done it again with Cantor. I know Danny from over at another of my favorite companies, Wombat spent some time over at Kx. I First became aware of Kx maybe a 18 months ago when a trader I had been working with sent me a link to their site. I have been following them and it seems they just continue to shine. These guys are my picks for huge winners in the financial IT services/ software sector. They are all in fact – already successes, but I think it is only the tip of the iceberg for them. I believe it is beyond question that these companies will be able to ride the exponential increases in the automated electronic market space. These players are best of breed. I cant wait to see how they all do!
I was also interested to see in the current issue of Dealing with Technology that IBM is planning on entering into these areas. It will be interesting to see how a huge player can function in an environment with relatively small companies that have been innovating for years already. My bet is on IBM paying to catch up by buying some market leaders.
-Chris
PS – cool magazine Automated Trader – Journal of Automated and Algorithmic Trading
You can leave a response, or trackback from your own site.
Posted patterns and principals on Tuesday, September 19th, 2006.
I am approaching my final day on my current project. I am leaving another software effort at an investment bank tomorrow. I was writing up some documentation for the people ‘picking up the torch’. The person I spent my time with today was great. He is bright and experienced. He asked great technical and business questions. The gentleman that I am refering to does not have the same experience set as I have obviously, so there needed to be some context set up. Much of the work that I have done was done out of my core software development values and beliefs about what is important in software to me.
One thing I find interesting is that I am often put in a position of validating my core software development values when working with new people. Thankfully, given time to put my money where my mouth is – they are eventually convinced
. Why did I do A or B? Why do I have such and such a pattern or recurring theme in my work? Why were certain decisions made or evolved towards. Here is a quick list of items that we discussed. This is sort of a random list -but these are things that are worth valuing.
- Value delivering high quality software to the client rapidly
- Deliver iteratively – work closely with the clients/ users to make the software be what they want/ need
- Value common metaphors in your software design so that it is not all ‘ad hoc’ in structure.
- Remove dead code
- Value readability and understandability
- Value the DIP because of its ability to support the OCP (see Principles and Patterns)
- Boldly refactor the code as it is appropriate
- Make a repeatable logical seperation in your solution
- Give classes, methods and components single responsibilities
- Tolerate NO redundant code
- Start as simple as possible, complexify as needed and continually maintain with refactoring
- REALLY value composition over inheritance
- Inherit to be reused, not to reuse functionality from some super class
I think there are a few folks that have summed up core software development beliefs that I have come to share. Robert C Martin deserves much credit. I think one of the best papers out there for software developers is Principles and Patterns. I cannot say how many software developers I have refered this paper to and how many of them have come back to me in the future to tell me how much it affected them. Integrating these values into your beliefs about ‘what is important’ as a software developer – will better your ability to deliver effective software solutions – I promise. This paper will give a name to the some practices you have learned over the years and if you are lucky show you some things you have been missing.
These books:
Martin Fowler – Refactoring: Improving the Design of Existing Code
Eric Evans – Domain Driven Design
Joshua Kerievsky – Refactoring To Patterns
Andrew Hunt and David Thomas The Pragmatic Programmer
Mary and Tom Poppendieck Lean Software Development
These people have said it before me. There are plenty of other excellent books that I have talked about. I am a huge book lover. That said – these books are the ones for core values. Get the underlying themes for these books and you will be seeing software more deeply. Understanding the impetus for when to do what, when to apply what pattern is what experience as a software developer gives you. Patterns are all well and good, but understanding why they exist and the principals behind them is the link that many software developers are missing.
My advice – focus on core values and principals. When you understand core principals in software development – your solutions will have a new level of maturity. Applying patterns is easy. Typing code is easy. Making lsustainable solutions that scale and are maintainable is a whole different challenge. Building from core principals will make the difference.
-Chris
You can leave a response, or trackback from your own site.
