Posts tagged learning
Posts tagged learning
6 notes &
I’m part of a study group and right now we are reading Uncle Bob’s Agile Principles, Patterns and Practices book. The first chapter was a refresher on Agile and so I thought I’d write down what Agile meant to me. Thought I would post it here for posterity …
The key themes of agile, IMHO are as follows:
Feel free to tell me I’m speaking shite, as long as you do so constructively and back up your argument. ;)
0 notes &
In the spirit of refactoring to keep things clean, I’ve decided to move the book list from the original post to here. This should hopefully make it easier to use. Please add any new recommendations to this list.
Agile Software Development: Principles, Practices and Patterns (aka PPP)
Apprenticeship Patterns (if you’re thinking of reading Apprenticeship Patterns, Hashrocket are covering it in their Bookclub)
Smalltalk Best Practice Patterns
The MIT SICP course (aka The Wizard Book)
The Refactoring book (original) (Ruby)
Working Effectively with Legacy Code
Any book by W. Richard Stevens but Advanced Programming in the Unix Environment and the Unix Network Programming Volumes in particular.
Finally, some great advice given to read through the man pages on your system. This also applies to reading the code for any application/plugin/gem etc. that you use. You can learn a lot from other people’s code/documentation.
1 note &
On the Sunday after the Scottish Ruby Conference this year, I found myself hungover and starstruck in the company of some of the smartest developers I know (and some I was just meeting for the first time). I say this not to kiss ass, but to set the scene and lend weight to what follows.
The topic of conversation fell upon the tendency of younger developers in general, and the Rails community in particular, to invent some hot new coolness that is actually just a wheel reinvented. Some were arguing that this was borne of ignorance (willful or otherwise), others that it was because of the lack of willing to use languages other than Ruby. Personally, in my own limited experience, I think that it is probably a mix of both, but leaning more towards the former.
It’s a well-know phrase/cliche in the Unix world that,
“Those who do not understand Unix are condemned to reinvent it, poorly.” Henry Spencer
This is as true in software development as a whole as it is to Unix in particular, and something that I have often wondered how to counteract in my own development. So I (eventually) asked the question I ask most coders I meet that are further along the road than me,
“How do I, as a novice developer, get the knowledge of history that you guys have achieved through living and working it?”.
I have decided to share the answers I received, both from the original question and from the follow-up tweet I sent, as there is some real gold here.
First and foremost, and perhaps to be expected from software craftsmen, was the advice to sit with better coders and learn firsthand from them. However, not all of us have access to such a resource. Furthermore, in Software Craftsmanship, the onus for learning is placed on the apprentice and not the master (or at least on the individual rather than those he/she learns from). As such many books were suggested, the list of the recurring and noteworthy has now been moved to a post of its own for ease of use.
Of these books, I’ve already read The Pragmatic Programmer, which lit the fire in the first place and cannot be recommended highly nor often enough, and The Passionate Programmer, which is an excellent companion to The Pragmatic Programmer. I’ve also read Uncle Bob’s Clean Code book and am now following up with the PPP book (it was recommended to me that I read them in this order). However, I think I’m going to put the PPP book down for just now and read Apprenticeship Patterns first. This book, I hope, will give me the foundation for the rest of the books. The reason that I’m reading them as it were. I then plan on reading The Art Of Unix Programming as it contains a lot of good history as well as good advice. I’ll then return to the PPP book.
Throughout all this reading, I’m going to attempt the SICP lectures as well, as they are supposed to be as much practical as theory. However, better folk than me have tried and faltered, so I’ll need to wait and see how I get on.
Anyway, I hope that you get something out of this. Please post comments with any books/resources that have helped you, or even just argue the merits or otherwise of the suggestions made here.
For my part, I will continue to blog as I go on with these books and related learning.
Finally thanks (in no particular order) go to Steven Baker, Jeremy Hinegardner, Chris McGrath, Alan Francis, Graeme Mathieson, Joe O’Brien, Jim Weirich, Randall Thomas and Bruce Williams for their input and patience in the face of many a noob question.
1 note &
Over the last year since I left university I’ve been plowing most of my time and effort into completing a fairly large project for the company that I currently work for. It’s been quite hard going at times and has really stretched me to the limits of my current knowledge and understanding, and in that has been very beneficial. However during this time I have let my own personal growth go by the wayside, or at least become very much a 2nd class citizen. This is a fact that I became very aware of recently when asked to show my portfolio to someone and had little to show for the last year other than a stack of tutorial code from various screencasts, podcasts and books.
So it’s time that I got back in the game. I’ve decided to do this in two ways. The first will be to carry on developing my coding skills by taking the main personal project that I have, my Honours Project, and refactoring it to come in line with what I now know about TDD/BDD and other good coding practices. Once I have completed that, or at least once the current feature set is clean and elegant, I’ll start to look for OSS projects to work on. Any suggestions welcome!
Secondly, I need to improve my soft skills. I’ve a further blog post brewing on this so I won’t delve too far just now. Suffice to say that a knowledge of the history and roots of software development, accompanied with a knowledge of best practices, will improve me as a developer just as much as, if not more than, learning languages and tools.