Sugar-coated software development
By Chee Ming on Mar 14, 2008 | In Random Thoughts, Technical, Exoweb | 2 feedbacks »
Lets say you are in the midst of developing this new web 3.0 website that is going to have all the most sought after features of Gmail, YouTube, Flickr and Digg. You have a team of developers are trying to crank out as much code as possible.
Suddenly someone checks in some code and breaks everything. Nothing works and nobody knows why. You have to spend the time to identify the problem and fix it and things go back to normal. And shortly someone does that again and all work stops to a halt. Nothing works. Again, effort spent to find the problem and fix it again. Some angry screams were heard and a lot of lost time and effort.
All you want to do is to write some code and deliver a functionality. But so many things seem to get in your way. And by the way, the coffee in the office sucks. It almost doesn't seem worth it to write software. But there is definitely a better way to do this.
I've kinda been in this situation before and its really nerve wrecking when testing a software that is developed without unit testing. I was naive and dumb once (okay maybe twice
). You basically have to remember all the different things you can do with your software and test it a million times and tell yourself its all okay before you can relax and calm down. You lose a bit of your life every time you do it.
Its almost the stuff that is being written about in dailywtf but its happening to YOU.
Developing software in Exoweb is like the total opposite of the dailywtf. I would call it the programmer's heaven. I am exaggerating but we're pretty close. Once you start working here you'll be introduced to unit testing, coding conventions, code reviews, pair programming, scrums, dynamic languages, open source and so on and so forth.
Just before I even thought of wanting to jump on the Exoweb bandwagon, I only started reading more about software development, mainly through Joel on Software. I was hooked on reading all his articles and found more and more resources online that really expanded my knowledge. I did learn a lot through reading but you can only know so much and you'll have to start doing.
Working in Exoweb gave me a good place to learn up all these good software development practices. Its almost 2 years in Exoweb now (about 3 more months to go) and I think I've only touched the surface. There is so much more.
A thought just struck me today about how we're developing software in Exoweb: Its almost like its sugar-coated. Its all sweet and nice.
So why do I say this? As a programmer the most important thing is to write code to implement a functionality that will make the user happy. I'll give you an example. If I have to worry about making the test framework better, then I am not spending time fixing the customers problem.
In the current project that I am in, we don't really have to worry about that because a lot of effort has already been spent on this and we just need to use it. Just create a file with the correct suffix e.g. _stest.py, run one command and voila your test code that will test this super new cool feature in that new sexy AJAX form will just work.
Another pain point would be to update the production systems. Most developers would not need to worry about all the work and hassle that is required to deal with updating the production systems to deliver the functionality to the users. Most of the time the main worry is to ensure that the code does what it does and passes all the regression tests. I wish production update is as easy as running the svn up command but we're definitely far away from that goal.
We also have a very good culture of experimentation. There are a number of teams that are experimenting with agile methods and this means we focus on quick results, high productivity and light-weight methods & practices. Again, we can draw a lot of thoughts and experience from those that have done it.
I was a total noob on open source when I joined Exoweb and I still think I am but I've definitely learn more about software, open source or non open source, in Exoweb than I've done anywhere else in the same period. I've even managed give back a bit to the Django community.
I suppose this reminds me a lot about Joel's article about the developer abstraction layer. I really think that the piece is very insightful but its talking about slightly different things. I think Exoweb really deals with a lot of these small issues pretty well like making sure there's enough drinks, providing free snacks, having nice parties and events, listening to our feedback, thinking about the temperature and working conditions, ensure that networks is up and running, making sure that the new spanking machines run well with our development environment and dual monitors, hiring people that are smart and that is able to get things done, celebrate our birthdays and working anniversaries, making sure the coffee is good and popcorns are popping during the movie night and etc.
I think I've written enough of my random thoughts. What are your experiences and what have you learn from it? Do share and leave some comments.
2 comments
glad to see you having great time in beijing. ping me up for a chat :)
Yes its a pretty interesting place to work. Too bad I missed you when I was back in Malaysia not too long ago.
Comments are not allowed from anonymous visitors.
| « How does a geek watch a movie? | Outlet » |
