Chris Donnan : Programming – Brooklyn Style
software, trading, family, fun
Posted Xml, ruby, semantic web on Tuesday, March 28th, 2006.
Active RDF – is a set of tools for semantic web work using ruby. I have been looking at the Redland RDF Application Framework from Dave Beckett lately. I believe this makes use of it – good stuff!
You can leave a response, or trackback from your own site.
Posted Agile Development, Developers, Software Project Management, programming on Tuesday, March 28th, 2006.
I am leaving the project that I am leading currently in a few weeks. Today I began handing off the lead to one of the developers on the project. The task of getting the entire team ‘on the beat’ of the project and keeping them there is key for this person to be able to maintain. One of the other developers was asking me today what he could read/ do to ‘totally revamp and update his code style’. In trying to introduce agile practices to a group – the group has a lot to change.
Some of the stuff that we introduced:
- Mock objects (Rhino Mocks)
- Unit testing (NUnit)
- SpringFramework.net
- log4net
- Model/ View/ Presenter based architecture
- Strategy
I sent him some of the books, articles etc. that I usually recommend. This chat however got me to thinking – what does it take to become a great developer? There are really 2 transitions that I was thinking about; the transition from a mid-level to a senior developer, and the transition from being a seasoned developer to a world class developer. In the past I have said that the central thing that I am looking for in a developer is someone who is effectively a ‘Good abstract problem solver’. I still think this holds true.
That being said – there are some foundations that I typically look for in a developer – particular mostly to C# and Java developers, but much is also applicable to other development.
Principals
- Inversion of control – see Pico Container, Spring, Martin Fowler, Object Mentor
- Open Closed Prinicipal – see Object Mentor
- Seperation of interface from implmentation – see Object Mentor
Design
- Model domain in software – see Domain Driven Design
- Learn the ‘classical design patterns’ – see GoF book and language specific variants
Code level
- Design by contract
- Assertions
- Guard clauses
- Intention revealing interfaces – see Domain Driven Design
- Effective class composition – single purpose classes and methods
- Learn the Refactoring Patterns – see Martin Fowler
Language Level
- Understand the runtime you are working in
- garbage collection
- how the heap/ stack work
- Threading – deep understanding of concurrency issues
- Be able to program in at least a few different languages
Enterprise
- Understand Databases
- Understand messaging systems
- Understand XML
- Understand heterogenous as many system interoperation mechanisms as possible
- Understand web services
- Understand security concerns
What does it take to be great? A thirst to learn. A thirst to experiment. Coding is what makes you learn. Working with smart people will help you learn. Doing ‘pet projects’ will help you learn. Stretch your ara of comfort all the time. If you think C is hard – do a pet project in it. If you are intimidated by C#, Java, Ruby, Web Services, ANYTHING – just try it – you will see how much more alike they all are then you think. You will also learn to love the differences and functions of all.
I will continue to update this as I need to run
-Chris
You can leave a response, or trackback from your own site.
