Loading ...
Sorry, an error occurred while loading the content.
 

Re: [XP] Realising my mistakes with XP

Expand Messages
  • Sammy Larbi
    ... Congratulations! This is something I hope to do some day, but I m hoping that each of us will have development skills, and that in addition to being able
    Message 1 of 40 , Aug 1, 2006
      Psychie Naill wrote:
      > Myself an two friends are trying to start up an IT company. One person has
      > been assigned to Hardware (Servers / Networking etc...), one to Software
      > (Me) and one to the outside world (i.e. he's our "business face" to do the
      > talking, handling customers etc.
      >
      >
      >
      Congratulations! This is something I hope to do some day, but I'm
      hoping that each of us will have development skills, and that in
      addition to being able to program, one of each of us will have this
      other knowledge, such as working with servers and being a marketer for
      our company. I'm in a similar position - we have a "server guy" (who I
      am gradually learning from and who only does something when he's
      needed), and we have the "business face," who I am also learning from
      and who also has enough skill to help out on /some/ development tasks.
      I'm the main developer, although on occasion I do have the opportunity
      to work with a couple of other developers (aside from school projects,
      where I am lucky enough to have a couple of professors at the university
      who are committed to teaching agile development with the courses I'm
      taking). But, I'm a ways off. Good luck in your endeavor!

      > Our first project is to provide the IT infrastructure for a retail outlet.
      > This involves writing custom software for Point of Sale, Inventory
      > management, Job Dispatching and Reports to analyse the state and growth of
      > the business.
      >
      >
      > For the Demo, I basically hacked for about a week taking short naps
      > whenever I could (the usual programmer stuff) and came out with something
      > that looked like it did something similar to what was required. By February
      > it looked like we were going to get the deal but we wouldn't know for sure
      > till March. I was sick of Hacking code (well I loved the hacking but was
      > sick of the lack of structure and amount of bugs it resulted in) so I
      > decided it was time for a change. I had a month.
      >
      >
      For my demos, I don't mind just writing up some non-functional HTML
      pages to display what the application will do, perhaps with a little
      code like "if the page was posted, show this message." It keeps it
      simple, its something I can easily throw away because I have almost
      nothing invested in it, and it shows the customer what I think it is
      we're talking about. Then, for what's there, I was taught to ask (and I
      do) 3 things (I don't know if this is an XP practice or not, but it has
      been working well for me):

      1) What do you like?
      2) What do you dislike?
      3) What would you like to change / see in addition to this?

      That first demo marks the end of our first iteration, and we repeat that
      at the end of each iteration (in addition to other duties). I don't
      often go about making fully functional demos before we have the
      business, but I don't know how the experts here would handle that. (In
      fact, I'd like to know).

      > I grew excited at the thought that there might
      > actually be a way to automatically test code, but the Wiki didn't seem to
      > confirm this. I then read the ExtremeProgramming.org site from start to
      > finish and there I found a link to Ron's XProgramming.com where there was a
      > page listing testing frameworks. WooHoo!! It was true! I read around for a
      > while and got my head around the process.
      >
      >
      >
      I remember having the same excitement when I first heard about unit
      testing, and it wasn't all that long ago. I'm still excited!

      > I believe this (i.e. trying to design the database for the entire system
      > first) was probably my first mistake. However, I only recently found out
      > that the database design evolves with the rest in XP (as was the point of my
      > last posts) and so I continued. I finalised the design and went about my new
      > XP ways.
      Yes, even databases can be developed iteratively and incrementally!
      I'm so used to doing data-centric applications (in fact, I often have to
      step back and realize I've got too much entity bias in my applications)
      that I'll think about how the database will look to get an estimate of
      the time involved, but I throw away any "design" I thought I had, and
      just come up with the tables and columns of the db only as I need them.
      YAGNI at work.

      > My weekly iteration plan was also non-existent due to the fact that I was
      > moving so slowly with respect to the scope of the project and the time left
      > to the first implementation. I was getting an average of one story coded
      > every two days, but needed to do two per day in order to meet the deadline.
      > Naturally I cut off the non-essential stories and showed the customer what I
      > can only describe as a "demo of progress", i.e. it showed what stage the
      > system was at without actually doing all of the work in the background.
      > Luckily he had more to add at this stage and if I had gone much further I
      > would have had some redundant work. This showed me how important being in
      > constant contact with the customer is, however since I was moving so slowly
      > I was afraid the customer would lose faith. Even so, not keeping in constant
      > was indeed a big mistake. How do you suggest keeping in contact with the
      > customer when progress is embarrassingly slow?
      >
      >
      Here, I'd ask that if your progress weekly is "embarrassingly slow," why
      would waiting a few weeks to talk to the customer or show him anything
      make it any faster? So, for instance if you only got 2-3 stories done
      this week, is it any better to wait 3 weeks and only have 6-9 done? I'm
      a big fan of communicating with the customer, even if what you are
      communicating is not always good news. So, I suggest keeping in contact
      with them when you are slow the same way you do when you are fast. You
      can use the opportunity to explain why you are slow - and it is also a
      great opportunity for the customer to realize that software development
      isn't easy - it takes time. He sees why it is costing so much - "You
      mean it took you a week to do that? Wow, I thought it would only take a
      couple of hours!"

      With that said, if you are behind because you watched every game of the
      World Cup at the bar, you might want to come up with a better excuse
      (unless the customer was with you - then he would understand) =)


      > the customer is very slow in giving me the stock data for the
      > system. I sent him a spreadsheet containing worksheets representing tables
      > in the database with the fields I wanted to be filled in, along with some
      > sample data to show what I meant. I left out any database association fields
      > of course in order to avoid confusion. Naturally, even though I told him not
      > to, he added fields he thought were needed and sent them back to me half
      > filled in three weeks ago. Along with these he sent me his supplier
      > catalogues and asked me to do the data entry myself instead as it's too
      > inconvenient for him. He expected to be able to just give me the raw data
      > and it would get sucked up into the system as this is what our competition
      > was offering to do. I explained how, since our version of the system was so
      > customised to his needs (and our competition's system wasn't) that I needed
      > the data in a specific way in order for the system to function the way he
      > wanted, but ended up agreeing to do as much of the data entry as I could
      > myself.
      >
      Can you write a script to get all the data in place? Or are these
      hard-copy catalogs? Do they come in electronic format? Even if each
      catalog has a different format, I would think it would be quicker (and
      more reliable) to write different programs to import each of them.

      > The launch date is now September 1st and I'm just finishing the point of
      > sale module now.
      Could the customer go ahead and start using the other components of the
      system? I'd recommend that if so. I recently "went live" so to speak
      on a project, where the customer could have started using the
      application well before they actually did start. After the first couple
      of "launch dates" passed and they kept coming up with more "these new
      features need to be done before we 'go live,'" I finally explained to
      them that if we keep waiting for "perfection" they may never start using
      the application. They agreed, we went live, and we are still improving
      the application (its now 4 months later).


      > Perhaps I shouldn't have tried to do so many new things at once but thought
      > once the initial learning curves have passed things can only get more
      > productive.
      I've just recently started on my "journey" as well. I've (to this
      point) been successful at implementing only parts at a time. For
      instance, I started with doing weekly iterations and unit testing
      first. For me, I saw too much risk in trying to be productive and
      trying to implement a load of new things I've never tried before.

      I can imagine though, that it would be hard to do this Agile thing if
      you only pick and choose which practices to implement. For instance,
      if you are not unit testing and releasing usable software only once its
      "done," I can see how trying to track bugs with index cards might be a
      little hard. People often don't have walls that large.

      -Sammy Larbi
    • Psychie Naill
      Cheers Tony, Will do. Psychie. [Non-text portions of this message have been removed]
      Message 40 of 40 , Aug 9, 2006
        Cheers Tony,

        Will do.

        Psychie.


        [Non-text portions of this message have been removed]
      Your message has been successfully submitted and would be delivered to recipients shortly.