Jonathan Levin's Axioms

Ideas, Rants, Theories vs Getting Things Done

In the UK, tax prices have gone down from 17.5% to 15% .

Good news!
However, its a bit of a nightmare to change the prices on our websites. We're lucky. We don't have to reprint thousands of pamphlets that have prices for Christmas sales, since we are a primarily web-based company.
My boss said that this is like the Y2K bug, only you have 1 week to fix it.

Basically, we need to go over hundreds of pages of code for some 'very' hard-coded tax figures.
Our databases will also need to have a look at. I might need to have an all-encompassing function to look for products with tax already calculated into them and update them.
Oh well, it looks like it will be interesting.

Wish me luck.


8:04 PM

Me ScrumMaster, You Jane?

Posted by Jonathan |

Yes, I have turned into the stereotype called a scrum-master. I haven't really done the infamous 2 day course on it to be certified, but apparently I read enough about it and practiced some of the principles to know a few things (or at least to think I know).


In my company..

In my company, we do use scrum with our development team. In most cases it works very well and the management are very happy. In some cases, where emergency support is involved, not so much, but they still like the structure of it and the fact that people commit to finishing things.

In all cases, very little testing is being applied and almost no documentation is written. I do realize that in the case of documentation, agile is suppose to cut down on those, but some form of documentation or changing some charts will be fine by me. In the case of testing, I think since I made a fuss about it, more testing has been done. But, I still think we could do much more about testing.

I spoke with my boss about it and how he looked at it was that, we had applied a process that brought in positive results and now we are at the next stage where we evaluate some of the problems that rose to the surface. Meaning, we are doing so well that we are fine tuning the process. I tend to agree with him on that. Even though technically, scrum does say that you need continuous integration testing, most places I have seen have been struggling with the testing sides of it. Oh, I did the self assessment on the nokia test and got a 5 out of 10.


Oh noes!! we must write tests now!

To be perfectly honest, its quite difficult to sell people on the idea of testing in general. Sometimes, when I mention testing, everyone thinks I am talking about moving everyone to test-driven-development. So in any case everyone is scared I am making earth-shaking changes to the whole process they are used to.


The (slight) Downsides of Tests

Tests themselves have issues that you need to maintain them. If you write a test with very specific parameters and values and then one day you change the actual behavior of the code, you will need to re-write your tests. You can avoid that by making your tests flexible for those changes, but you need to be aware and somewhat experienced in testing to do that.

Also, when you develop something new, writing tests can be much more simpler then writing tests when you are trying to fix old code. That is something I am particularly struggling with, since a lot of the work we need to do is patchwork to existing code. Just to add tests to existing code means you have to go into it, understand it and then apply some tests to it.


Conclusion

I need to study the issue more and try to apply it to my teams.
In any case, we need more testing and documentation (documentation is something I also plan to write about).

What I have decided to do is to try to do some of the following things:
1) Add certain tests as a requirement on the user stories
2) Do user stories that the whole process is to write tests for a problematic part of the code (the 20% of the code that causes 80% of the problems)
3) Do a face-off between 2 teams. One will use TDD and the other one won't. This will be a proof of concept that TDD is faster to develop then with regular development or even it is slower, only marginally slower and has the addition of all the extra tests.


Here are some questions I have asked on stackoverflow:
How do you apply Scrum to maintenance and legacy code improvements?
Scrum, but with no testing or documentation

6:49 AM

Can't Find New Non-Windows Machines

Posted by Jonathan |

I was looking for some non-windows machines for my development team. My development team all use Ubuntu. As hard as I tried, I couldn't really find anything pre-built that didn't have windows on it. 

I really don't like the idea that I will buy machines with windows on them just to have them formatted and have linux installed over them. And what really gets me is that windows will add to the price of the machine (at time when I'm trying to cut down on all my department's spendings). 

I was considering to order computer parts and build the machines myself. But after getting flashbacks of my youth, trying to find the right CPU to fit the right motherboard, I decided that my time could be better spent on other things.

In the end, I found that the best option would be to buy servers for my developers instead of work-stations. I found a nice 'HP ProLiant ML115 G5 AMD Opteron 1352 Quad Core'. It was extremely cheap. It comes with 512mbs of ram, but I can add up to 8gbs of memory. Which I fully intend on doing for my own work-station, because I am trying to play around with our MySQL databases on my laptop (I copied dumps to my laptop, don't worry) and it takes forever to do the tiniest alterations. 

So all in all, it is a good deal, but it's not very conventional. I was kind of hoping that Dell would do something with linux work-stations, but the only thing I could find with linux (or no OS) machines was those (cute) mini-netbooks.


Conclusion
Linux Machine with 8Gbs of Ram is much better then (>)  Windows Vista machines for the same price.

9:48 AM

Rule of Representation

Posted by Jonathan |

I have been doing some studying on the internet in my free time (not that I have too much of that nowadays) and I stumbled upon the Unix Philosophy. This is a philosophy, not method, for building programs and systems.
As I went through the rules, I found something interesting. I'll paste it here:

Even the simplest procedural logic is hard for humans to verify, but quite complex data structures are fairly easy to model and reason about. To see this, compare the expressiveness and explanatory power of a diagram of (say) a fifty-node pointer tree with a flowchart of a fifty-line program. Or, compare an array initializer expressing a conversion table with an equivalent switch statement. The difference in transparency and clarity is dramatic. See Rob Pike's Rule 5.

Data is more tractable than program logic. It follows that where you see a choice between complexity in data structures and complexity in code, choose the former. More: in evolving a design, you should actively seek ways to shift complexity from code to data.


I have read in the past many articles about how data trumps programing algorithms in many cases and I know that Google uses this principle on their searches. Its just nice to see that its been thought about and discussed in the days of when Unix was thought of.

Subscribe