Friday, December 31, 2010

Where are the algorithms?

In the highschool programming was interesting. We learned linked lists, backtracking, and other algorithms. I made little programs with rotating things in Turbo Pascal (i.e. planets moving on a leaned ellipse path), tried to imitate GUIs (start menu, windows), made a snake game.

At the university we learned other algorithms and design patterns. It was also interesting.

But all the above had too little to do with what a programming job is about. Programming for a living mostly means arranging list views in tabs and showing data gotten from some server. It's hard because of lacking a real spec (not just screenshots, but actually knowing what the program should do in the background), not being able to test it (i.e. no access to the server from which the data is gotten), no up-front design (not defining the api between the layers; not assigning features clearly to developers), a technology switch every year, complicated UIs; not because of the algorithms involved. All this is the same in every program. And after doing this, you start to ask what the heck are you doing. Where's the fun in coloring and arranging list boxes and buttons, and filling them from a database table or from a service? Why were computers invented, if they don't compute anything, just show the contents of some tables, in a zillion ways (each program in its own way)?

Thursday, December 2, 2010

How too much project management slows down projects

At first look, managing risks by splitting the project into milestones, and assigning full features for each milestone, should help projects. But, as I've seen so far, it puts all the developers to work on the same part of the program, having merge conflicts, especially if each code piece needs to wait for code review, in the meantime gathering more conflicts.

Another slowdown comes from the fact that the code for each feature needs to be understood by more developers (because both DeveloperA and DeveloperB work on Feature1 in Milestone1, and both work on Feature2 in Milestone2), and understanding code and specs takes up a good amount of time.

Perhaps the classic waterfall model is not that bad after all, and we'll see a return of it in 5-10 years.