Developer Book Study
Posted by mkhairul - April 30, 2009 at 10:04:09 pm - No CommentsCategories: blog
I actually would love to make a developer book study. Its a pity my previous place falls apart, I had a few discussions on planning for a coding dojo session, but things didn’t go out as I had hoped and I had to cancel it.
Maybe someday when I start my own company, I’d be able to make something like that whether its a developer book study or a coding dojo with my colleagues.
Prototyping with Firebug, A screenshot
Posted by mkhairul - April 28, 2009 at 10:04:40 pm - No CommentsCategories: blog, work
Its been quite some time since I posted anything. Been busy with all the events happening all around me. Here’s a screenshot of an HTML table with multiple row spans and column spans with just Firefox and Firebug.
And also there’s a bunch of drafts that kept piling up that I didn’t get around to complete and post it. I’ll sort it through and try to finish some of it.
Underestimating Resistance
Posted by mkhairul - April 14, 2009 at 04:04:51 pm - No CommentsCategories: Tips, rants, work
One thing that I’ve learnt from MEDIU is to never underestimate people’s resistance to change. Whether my attempt to implement an issue tracking system as the center for software development, implementing standard work, trying to encourage people to contribute to the wiki or becoming more verbal through the email by inviting discussions on decisions to be made and issues raised, most of it failed, not horribly but disappointingly.
When I joined the PHP team, I gave some ideas, implemented some stuffs, try to see the clockworks of the team. Is there any creaking sound? Should it be improved? What does this team lacks? Documentation (tracking issues, FAQs, Guides, etc). I tried to persuade the team members (we’re all on the same level) to write recurring stuffs that they do, because that’s the thing that other team members will be going to do when the problem solver of a solved problem is not around.
So that I don’t have to call them up when they’re on a sick leave or vacation and say, “HELO! NI ADA PROBLEM NGAN STUDENT TAKLEH SUBMIT BENDE”, at that moment of time, you’re in the bus, the airplane, kayak down the rapids, doa selamat for relatives and many more or everything went static from signal interruption and I go “HA? APA DIA? AKU TAK DENGAR!, A untuk ARAB, B Bangkok.. MACAM MANA NAK BUAT NI?”. Wouldn’t it be easier if 10 minutes were spent to write that shit down so that I don’t have to ruin your day?
Since I’m lacking in the Persuasion & Charisma department, my persistent nagging didn’t work.
What should have I done differently?
Since we’re all on the same level, my plead was ignored, I have no authority to enforce the process. Since I already tried to lobby for my boss’ support but there were still nothing being done (I think there should be an autocratic move here), I should have requested to be in-charge, as a team-lead to be given the authority to implement the process autocratically and with an iron fist (on certain issues). Would I make a great team-lead? I don’t know, but I would make most recurring problems go away by documenting it, make it accessible to the team and learn from it, as a team!
From The Agile Startup: Build and Deploy.
Why Process Matters
My field is software process–specifically, Agile methods. One founder I talked to pooh-pooh’d the idea of process. “We don’t have time for process,” he said. “We need to focus on satisfying our customers.”
That’s a great attitude, really. And this founder was fortunate to have paying customers and actual profit. But the part about process? Totally wrong.
“Process” is nothing more than the way you do your work. Process improvement: improving the way you do your work. Agile processes are ways of working better. It’s that simple. Don’t be fooled by the suckers who buy into CMM Maturity Models (or, heaven forfend, “Agile” maturity models)–process improvement does not mean lots of bureaucracy, overhead, or expensive Certified anythings. It means doing your job better. That’s what this series is about: doing your job better.
Oh Python..
Posted by mkhairul - April 9, 2009 at 12:04:10 pm - No CommentsCategories: rants
Last night I went to meet with a friend. Just hanging out while he talks about the problem he’s facing leading a team of 9 developers (most of them are junior). Then he asks, “Whats the next big language?”, I did not take the time to ponder or anything because I already the answer if someone ask me, “Python”.
Today I read a post about Why Reddit Uses Python. I agree with Steve and that’s why I think Python will probably shine brighter in the next few years. Hopefully it would be adopted as fast as PHP. There’s an interesting comment which try to clarify what python users meant by ‘readable’.
What you guys are saying is that Java and C# are more readable because of static typing right? As being more verbose make your code easier to read, like knowing when a block start/ends and that a comand ends when a ; happens?
This is because when you are reading code you looking for what the mechanics of the language are doing, and not what pythonistas mean when they say readable that is knowing what the program is meant to do in a more broad sense (not only pythonistas but most of the smalltalk/python/ruby crowd mean). The diference is between knowing what words are in a text and what the text mean.
We don’t care if variable “x” is an int, but that it is being used to index another object in the line “my_dict[x]“. Maybe this difference in what we want from code is because usually when you have at least an small amount of unittests for a program (or some deep knoledge of its workings) when you are fixing a bug you are looking for an error in logic not in the details (not that you are not going to have this other kind of error in a python program, just that they are much less frequent).
After reading Zed’s post, One Laptop Battery Later And I’m A Django Fan, I was eager to return to Python to code stuffs but I was tied down with all the work in PHP. And my cats (still 6-7 months old) needs attention before they turn in adult cat that would not be as playful and ignore me whenever I return home.
I still use python to write scripts to automate stuffs but not as heavy as I used to when I wrote a p2p app just to see that I can and a PIM (Personal Information Manager) with arabic calendar and stuffs using wxPython as its GUI (I really wanted to use Qt but back then I use windows for development and it has license and stuffs).
The Main Obstacle
Posted by mkhairul - April 8, 2009 at 12:04:18 am - No CommentsCategories: blog, rants
Currently my main obstacle is managing the software development ecosystem. My last efforts at my previous employment was sort of a failure, and I burned myself.
I’m reading a few books (one of them is Leading a Software Development Team) to try to learn from other’s experience. As confucius said:
By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest.
I have lots of ideas on how to improve things, whether its incrementally (kaizen) or radically (kaikaku), but I can’t convey these ideas into words that are convincing enough. Hopefully through reflection from these books, I might gain a few wisdom and after that continue my pursuit on more technical stuffs.
One of the item in Icewind Dale 2 (One of the best RPG I’ve ever played).
LSDT: They just want to code.
Posted by mkhairul - April 5, 2009 at 05:04:06 pm - 1 CommentCategories: Development, blog, rants
This is an excerpt from Leading a Software Development Team.
Documentation has some properties in common with design, except that it’s less rewarding. You still need to decide how much is appropriate – who will use the documentation, and what for?
It’s very tempting to say ‘there isn’t time’ and put if off till later, but then of course by he end of the project there’s a huge pile to be done, no time allocated to it, other projecs with higher priorities, and nobody can remember why they did certain things any more.
Even when I haven’t read the book I realized the need for documentation. I’ve been using open source projects for quite some time and I experience first hand how documentation matters. CodeIgniter is great because of the documentation. Other projects soon realized this and start making their docs as good as possible.
Previously, when I wanted to join the other development team using .NET, I requested help from the team members to get me up and running to be able to help them. But the installation and the configuration is so archaic that it requires at least 3 developers present to make it running. This is not the first time, it has happened 6-7 months before. I hope they realized this and start writing some docs on getting started so that new team members can setup the environment on their own.
For those who have only documentation for the user requirements specification, I hope they realized that developer’s documentation is still required so that new developers can get up to speed on the project. I would suggest a minimal design of:
- A block-diagram-level structure
- ERD (or at least tables with description on what it does)
- Some analysis of the dynamics of the system in use (message, data-flow or sequence diagram)
- Coding Guidelines
- And some notes when hitting a wall implementing a design, etc
And if the project is using a flexible MVC framework like CodeIgniter, they should define or describe what the models are doing, what the libraries are doing, its templating structure, and other related info on the implementation. Flexibility invites Tim Toady, so you’d better say up front what this shit is doing and why.
Why?
Because there are different kind of implementations using the MVC, for example like me, Models are only used for retrieving data from the database, it doesn’t do calculation, loops, call libraries or anything like that. Libraries do not call the database.
For libraries, I use it to glue multiple models together, do calculations, algorithms, spread it out to multiple functions to adhere to Single Responsibility Principle (SRP) and many more.
For views, all the code for displaying the data. I have yet to found a developer who focuses primarily on view that I need to use the templating system to seperate between view and controller.
For controllers, this is where the data comes and go. What? Need an event? Retrieve the ID, call the event library and get the details. Pass it to the view and everything else will be done in the view. Calculations are done in libraries.
I wrote in MEDIU’s wiki before this, I don’t know if anyone read it, about writing comments and solving problems. And I’m still trying to stick to this method, whether I wrote it in the code as comments or wrote it as message in the repository.
- Write down the problem
- Think very hard
- Write down the solution
GimpStyle Theme design by Horacio Bella.


