When I was on university we had a PC application for creating geometrical drawings. As I already knew about software development at that time, I was very very impressed by that application.
Was 20 years ago, internet was not yet there at that time, but I did not forget about the program and you can still download it from the company which is developing and selling it.
The difficulty was finding out how to do the geometrical calculations! I never really had vector calculation in school. What I know about it is from some lessons on university. But I was able to find for most of the problems solutions. Some solved in this way, some solved in that way. Once I will come back and read a book about vector calculation and create a new library!
Some features are still missing from the original solution I worked with 20 year ago. But I am already very proud about what I were able to realize. When there is the next time slot where I have enough time, I will continue, for sure.
Why is estimating the effort necessary for a software development project so much more complicated than estimating the construction of a building? Because a software development project is a new project with mostly new people and often new technology for every new project.
Once again I had to experience that the estimation for a project was too optimistic. It is easy to estimate the expectable effort if yourself will be the person who has to realise the project. I remember that all estimations I did for myself where exact.
But as soon as the project is larger and is about a new business area, you have to do more work. You will have to do different kinds of estimations, for example a SCRUM story point estimation, a comparison with a similar project, a function point analysis and so on.
Now, there is the cone of uncertainty which tells us that an estimation done before the projects requirements were investigated properly could be far far away from the real effort you will spend. And the estimation will only come down to a more realistic value if you do another estimation after the requirements are clearer or even after you have started developing.
This is a great book about development. One of the best books I ever read to increase my skills necessary for my job. Not only that all the different possible architecture are described in a very understandable manner.
This book also makes clear, that you do not always need the most complicated architecture. For a simple application, a simple architecture could totally fulfill your needs.
Which leads back to one of the most important principles in software development: KISS, keep it short and simple. Software gets at the end always much more complicated that planned or expected at the beginning. Lot of developers do not fear the complexity of the source code they produce and at the end you get stuck in a messy code, impossible to have the necessary overview.
Once again I saw when reading this book, that many of the architecture, similar to design patterns are used without knowing them by name. Whatever design or architecture you select for your application, important is that you and your team know it and keep coding to the selected pattern.
Fowler also describes in a very clear example the data mapper which is a pattern I created myself years ago out of long experience. Its nice to see that I was on the right way and that a guru like Fowler describes it in a very similar way as we designed it then.
Here is the result. It took me only minutes to implement it and as you can see in the different sheets, I have also implemented the Julia set in the same workbook.
The sheets are for 3 different resolutions and you see that the range where both sets are visible is from -2.2 / -1.5 to 0.8 / 1.5 for the Mandelbrot set and from -1.8 / -1.5 to 1.8 / 1.5 for the Julia Set.
I realized the different colors with conditional formatting which is a nice feature of Microsoft Excel. Points which are part of the set are black, points which are not part of the set are colored. The color depends on the number of iterations necessary to decide that they are diverting and is going from red and yellow to white.
You can download the Excel workbook from here. You might have to allow the basic script!
I am a fan of the Mandelbrot set since I have seen it the first time. I developed a screen saver for windows which displays the Mandelbrot set and zooms in randomly.
I also tried to develop something similar for the iPhone but did not succeed for the time. When I was investigating possibilities to draw lines in HTML code, I saw that with HTML 5 there is a new tag <Canvas> which allows exactly what I need.
Here is the result. I have created a page which shows the Mandelbrot set and the same for the Julia set. Both are very impressive. You can zoom in by clicking somewhere in the graph and even move the graph with the mouse.
We are working with SCRUM now for more than a year. But I did my first SCRUM training a couple of days ago. Was a very interesting training with a lot of nice people. I the three days duration of the training, it never got boored.
One picture was especially impressive: it shows the product backlog as an iceberg. The story is the following.
The product backlog consists of epics (very large user stories), user stories and grains of sand. It is not necessary to detail and estimate epics until they become part of the release backlog.
And it is not necessary to detail user stories into grains of sand until they become part of the sprint planning. This picture is very nice and easy to memorize. Thank you DasScrumTeam.
Since I have an iPhone, my wish was to create my own iPhone application. But not so easy as I immediately saw.
First, you have to have a MAC where you can install the iPhone development studio. This was the biggest problem. I buyed an old MAC on ebay but found out, that the MAC I had bought was to old. And after three months it died.
Months later I had the opportunity to buy a Netbook from a friend. And the guy had installed MAC OS on this Netbook. So the biggest hurdle was taken.
The rest was quite simple. For an experienced developer it is not so hard, to learn a new development language within a few days. And after two week or so, I were able to publish my first application.
The application is similar to something I already did years ago for PCs. It is a software which draws a triangle. You can move the corners of the triangle and the most important special points, lines and circles of a triangle are drawn.