Archive for the ‘Business’ category

An advice to a fellow developer – 2

2007/12/14

The part 1 of the post is here.

— continuing —

So back again – different coffee shop (Starbucks at Carling), freshly charged battery, Grande Latte and no internet connection (which means no distractions from emails and the Web) – here we go again, part 2.

If I should single out one or two technologies that I think I have neglected and should have paid much more attention to it would be the Web trio of HTML/JavaScript/CSS as one and the SQL as second.

Let’s look at the Web trio first. It sounds weird – how can THIS be neglected, everybody knows HTML, right ? Wrong. What I mean is to have deep understanding of the HTML markup, so that you know when to use (and when not to use) tables, how to properly layout your page, fully understand the possibilities and implications of div and span, the box model and what can and cannot be done with styles and CSS. And I do not mean using Dreamweaver like tools or (god forbid) Frontpage to create the markup, I mean actually writing the markup. Ability to produce and maintain clean markup is very important for application lifecycle and evolution. Clean markup is at the beginning of every good looking site. Even if you get the first mockup version from your  designer, it is up to *you* to componentize the pages, convert them to JSP or ASP.NET or RHTML (or what server side stack you are using). And it is up to you not to mess it up in the process.

The CSS is trickier – it is considered to be “designer’s thing” between us, developers. And designers, they are those slightly weird artistic folks with Photoshop magic lassos and Macbooks that just somehow make things look great for no particular reason. They are so different species and us, developers who recognize 16 basic colors and do not mind using Times New Roman for everything will never be able to match their skills … This is partially true. It is hard to learn creative design. But even if you never will, it is still important to understand ENOUGH of CSS to know what can or cannot be done with it, so that you can maintain and enhance the design of the page without messing up the styles or the markup. You would not believe how big PITA it is to go through 100+ pages just to extract hard-coded font and size references, inserted there by the previous contractor who did not know any better … Do not do that to the guys that will maintain the app after you, it is very bad thing for your karma.

The HTML/CSS/JavaScript is also very important because it is the third platform, and despite JavaFX, SilverLight, Apollo and Flex flexing the muscles (pun intended) and a lot of buzz about the RIA, the traditional web technologies it is not going to go away any time soon. Listen to David H. Hansson interview for more. This stack is all you need to create Firefox extensions, new social network apps (like Facebook) and it will be important for the iPhone/iTouch and alike devices.

JavaScript is particularly tricky: the language itself is actually great and very powerful but got very bad reputation. Partly because it makes very easy to write very bad code, but mostly because many people using it have not enough experience or programming background and produce terrible mess. Not enough good books also contributes. I mean there are many books on JavaScript, but most of them bad or mediocre. We really need to learn or re-learn JavaScript and use it the proper way. I personally would pick JavaScript against Visual Basic any time.

The reason that I mention SQL is because most developers know just one part of it – how to select some data, insert or update. There is another part – that deals with creating tables, indexes etc and is usually “owned” by the professional DBA’s. Which is OK if you have one (and, btw, NEVER EVER trust a “DBA” that cannot create your database tables by ssh-ing to console on the server). In absence of dedicated database pros, many developers rely on GUI tools to get to initial stage of database structure, create tables, views etc. Problem in this that GUI tools cannot be version controlled and without having actual script that creates your database from scratch and loads all test data, your project environment is incomplete and you can never create good enough unit tests that will work. I have seen this to be an issue so many times that it is not even funny. Look at the migrations in Rails and how elegantly these guys solved the problem for Ruby world.

But enough about technologies, I’d like to add few closing more general remarks and mention some good books and sites.

Software development is a discipline somewhere between engineering and creative writing (it stubbornly resists applications of engineering methods like precise estimations :-) ). Same as with writing, similar path will lead you to improvement of your skills. If you want to become great writer, read a lot. Read and dissect the text, think about the storyline, plot, setup, way how the dialogs are constructed and words used. If you want to become great developer, you also need to read a lot – not only books (we will get to that), but also code. Reading good code is crucial and is very intellectually stimulating. Reading means understanding how it is designed, thinking about the relations, architecture, idioms and noting nice tricks and howtos. As with literature, the ease of reading will depend on the language (you are native Java speaker) and your preferences / predispositions. In both cases it is important to select high quality reading material. Fortunately, that is easier that it looks like as with books because there is a consensus how should good code look like. In Java world, going through the source code of Spring Framework will teach you a lot. Look at the source code repositories that do some pre-selection of the projects such as CodeHaus rather than general sites such as SourceForge. For .NET world, look at the CodeProject, select one of the highly rated contributions and chances are very high that you will be OK.

Last but not least – few books and sites.

One great book that would be IMHO just right for where you are at is Refactoring from Martin Fowler. This is very easy way how get the spirit of the design patterns – IMHO better than reading the Gang of Four as the start – which is absolutely a great book to read, but maybe not the ideal to start with.

There few great books covering the “craft” of software development. The classic Pragmatic Programmer (which started the whole company) and Software Craftsmanship will give you more good advice on career of software developer than you may ever need :-) . from Microsoft camp – even bigger classic  is Code Complete.

As for sites and blogs – there are way too many blogs and feeds of interest, email me, I will send you my blog feed from Google Reader. From programmer’s news I am keeping and eye on Dzone, InfoQ, TheServerside.com and theserverside.net. They may be not the best, but I found out that to actually get some time to do some coding and code reading, one must limit the news consumption …

Thats about it.

Happy coding, may the Source be with you ;-)

PS: Thanks to all who managed to read until here and even bigger thanks for emails and comments to the part I. Your feedback is appreciated.

An advice to a fellow developer – 1

2007/12/12

We are recently interviewing quite a lot in anticipation of the great things coming. It is sort of similar task as we did year and something ago, but I enjoy this round much better. This time, rather than “we have to assemble the project team ASAP”, we have the luxury of longer term view and focus more on hiring the people that will be great match to the company culture, will be with us for longer period and will grow with the company.

What I really like about interviews is an opportunity talking to smart people, who are usually very interested and passionate about technology. In every one of our meetings, I like to give the candidates a good opportunity to ask questions, not only to answer them. One of questions I got few times, is “given my resume, what technology, programming language, platform, area etc would you recommend me to look at to make progress ?”.

I answered it, but after doing it second time, I got back to reviewing and expanding my answers. And because the “given resume’s” were not too far apart, I decided to answer it one more time this way. So here we have, Joe Developer, a solid intermediate software engineer with good foundation and few years of Java under his belt. Joe knows the platform quite well, has done some Web application (JSP) but not too large variety of them, and also used Java in non-Web environment, e.g. GUI or some networking stuff. Joe did some scripting, a bit SQL and some basic system administration, but so far did not encounter the “true enterprise” technology jungle.

So, what should I look at, asks Joe ?

Given your solid Java background, build on your strength. Java may not have the sexappeal of the “language of the week” (which seems to be Haskell or F# or Erlang …), but is solid, very dependable with good market penetration and it is here to stay. Making Java the center of your skillset is a good choice. If you have not look at Java 5, do it. I mean look at the NEW things available like generics, annotations, new API’s for concurrency, etc.

In Java Enterprise space, one single most important thing happening is Spring framework. There are way too many frameworks for anything you can imagine so it is risky bet to pick one and rely on its longevity – but Spring is safe bet. Currently in version 2.5, it pretty much sums up all important trends of 2004-2007: inversion of control, aspect oriented programming, design by interface, test driven development, agile design techniques support, extending Java platform by Domain Specific Languages. It does NOT implement everything, but it provides a glue, platform that can be found everywhere. And you can find it pretty much everywhere – from Web applications to rich clients. Solid understanding of principles it represents will make your programs easier to understand, integrate, test and enhance. Spring was even influencer of Java standards – the new, radically different EJB 3 is (roughly speaking) Spring plus ORM – not that I had too high opinion about this EJB idea :-) .

In Web application development – if you stay on Java platform – Spring has also much to offer. The Spring own MVC implementation is one of the very clean and extremely flexible approaches available for building your Web layer. Pluggable view technologies (you can mix and match the JSP/JSTL, Freemarker, Velocity, PDF), support for workflows (via Webflow), availability of security enhancements (Aecegi) makes it worthy exploring.

But what else than Java ? There are so many other languages – which are worth the time investment ? My take on this that you should not learn a new language that does not change your views about programming. Unless, of course you have very convincing reason to do so – like having is a long term project with dare need of this skill – this is how I learned VBA back in 1993.

There is a lot of “software enlightement” value to be found in exotic languages, that are often impractical and unsuitable for commercial skill marketplace, such as Lisp, Smalltalk or Prolog. Lot of fun and little money. Good middle ground between educational value, beauty and commercial usability is Ruby. It is real fun to use, gives you power of Perl (without the cryptic syntax), elegance of Python (with added cleanness and consistency). Ruby is also available in JVM implementation (JRuby) and offers an inroad to something really novel and interesting – Rails.

From this point of view, mastering “the other platform” (.NET) will not teach you too much. The C# 2.0 is so close to Java that learning it for experienced Java programmer is a no-issue (of course, mastering libraries and frameworks available is completely different story). The really new additions into Windows development toolkit with .NET framework 3.x are features as LINQ (in many areas – SQL, XML) and WPF (as replacement for Winforms ??). Certainly interesting, but they are often “me too” solutions than something really new. They are not bad, if your projects bind you to .NET platform, they are certainly worth of learning – but IMHO the real fun is elsewhere.

Unfortunately, one cannot avoid the feeling that not too much innovation is coming from Redmond in last couple of years – just check Zune vs iPod, Vista vs OS-x, Windows Live vs. Google offering etc. On the positive side, there is strong market demand for Windows based solutions, from Enterprise point of view, their server products are often better than their reputation. SQL Server 2005 has great price/performance ratio and is generally very good database server, development environments (VS 2005/2008) and comparable and close to what the Java world has (Eclipse, Idea, Netbeans).

In Web development on Windows – aka ASP.NET – an experienced Java developer will feel both surprised (by very rich controls offering) and limited (by not so great pagecentric postback-based navigational model and lack of usable MVC implementation). Compared to richness of Web framework implementations in Java, this is very sobering experience. Currently, even Microsoft seems to feel the need to address this – see Scott Guthrie and first Beta versions of true Model-View-Controller for ASP.NET. It’s about time …

What you need to be aware of is that in long term, Microsoft loves to do these right-angle-technology-turns (RATTs) that will invalidate your investment into mastering particular technology. I learned it the hard way – none of the expertise in MFC and C++, ATL or COM/DCOM has too much market value today. As Joel On Software outlines, I am not alone (read more here). And I have the nagging feeling that maybe transition from Winforms to WPF may be yet another RATT. But I may be wrong, I have not really spent enough time in WPF (unlike in Winforms). To sum it up – from opportunities perspective, Microsoft technologies are good investment and tradeoff for pretty much guarantee of more opportunities coupled with (usually) less fun.

Both Java and C# are language of similar “altitude” or expressive power. Quite often trying to rise your altitude and work with very high level language is quite eye-opening experience. There are many scripting languages out there, I would pick two. First is (obviously) already mentioned Ruby. If you want to stay closer to Java integration, look at Groovy – an in-JVM high level scripting language, with not as pretty syntax, but easier to intermix with Java – although as we know, beauty is in the eye of the beholder. Besides, the Groovy folks seem to be copying implementing ruby-esque features like crazy, including the killer app, which is in Groovy named Grails :-) .

Hmm, looking back, this post is getting pretty long and battery in my MacbookPro is running low (I am typing this in Zavida Coffee which has free WiFi but only few tables where you can plugin your power supply. I guess I finish it tomorrow.
– to be continued –

Absurdity of the DMCA

2007/12/11

If the world of physical objects would governed with the same rules as the Digital Millennium Copyright Act does impose on all things digital, scissors would be illegal and you could end up in jail for manufacturing, and maybe even owning or using them. Crazy ? Well, see this presentation and judge for yourself.

This “law” is currently impacting our friends south of the border only, but it is very real that it will soon become a law in Canada as well.

If you think that DMCA is a bad idea, here is couple of things you CAN do about it.

Taking the pain off installation

2007/12/08

I was trying to set up an Oracle appliance – install the Oracle Express XE into a virtual machine. What (in my mind) should be smooth and straightforward process was something very different. I should have been forewarned warned after seeing the discussion … To make long story short, the installer failed on three different Linux VM’s I had available – because of unavailable dependencies, too small swap space etc, etc.

I am not picking neither on Linux nor on Oracle as there is no such thing as standard or predictable Linux installation. Even within single distribution (like Fedora 7) it is completely up to the user which subset of 1500+ packages will get selected during initial install. The installers are sophisticated enough to add missing dependencies, but nothing will prevent you not to install some seemingly unimportant package, without which the Oracle will not run. Given enough time, you can go and add the missing dependency (and it’s dependency and so on – up to the transitive closure of all missing libs), but that makes the 30 minutes installation more like 3 hours project.

What I ended up doing is loading the XP VM and the Oracle was up and running in less than 15 minutes. The Windows configuration is given (no user meddling possible) and the MSI installers do great job. The price to pay is the nagging feeling that each install may bring that huge binary blob called registry closer to it’s death … but in VM’s that is a non-issue.

There are two ways how to avoid issues like this. The option is go for pre-configured virtual appliance. Lots of appliances are available for VMWARE or for Microsoft Virtual Server.

If there is no appliance, next best thing is to go for “stack install”. Many software packages are now available bundled as stacks – e.g. LAMP/MAMP/WAMP stack (Apache with PHP and MySQL on Linux, Mac or Windows). There is good website BitNami offering many more stacks, including Liferay portal, Alfresco, Joomla, Drupal, WordPress or Ruby stack … This in combination with an “empty” VM should really ease the pain.

Book recommendation: Seth Godin – Small is the new big

2007/11/16

On previous weekend I had great opportunity to spend a lot of time listening to books and podcasts. The opportunity was long drive to Quebec City and back, plus the two days spent walking around with camera, taking pictures, enjoying the differences in style and architecture and listening to Seth Godin’s book – Small is the new big.

There is nothing in this book that would actually require to drive almost 500 km one way – you can comfortably get the same benefit out of it without moving out from your favorite sofa, walking around your neighborhood or on a treadmill (hi Joel). The real reason being in the capitol of La Belle Province was Skate Canada – Grand Prix competion in figure skating. And while my wife was watching Jeff Buttle, Joannie Rochette and many others – which is her favorite leisure time activity, I was walking, taking pictures and listening – which is mine.

The book is very well suited for listening while taking pictures. It consists of short comments on large number of topics – business and life related, presented in alphabetical order. This allows to do frequent stops for shots without loosing the context. If you now think that it must be boring to listen something resembling a lexicon you are wrong. Seth is original, often provocative and inconventional, sometimes “common-sensy” obvious, but never boring. I was very surprised how interesting can be a book from an expert in area of marketing – something that I never had any admiration for (or high opinion about). If you are hardcore techie like me with the same prejudice again something so non-geeky and slippery as marketing, give Seth a chance – you may be surprised.

Recommended.

On hardwood floors and software engineering

2007/11/05

I am in the middle of a non-computer related project. Last week we have decided to get rid of carpeting in my home office and library and to put in the hardwood floor. My wife picked the wood and color, I picked the contractor, with my son’s help we moved out the furniture and the renovation started. The most painful thing was shutting down and disconnecting all the computers and servers – only the lonely router is hanging on the wall and suffering the dust and noise of the power tools. As result, my family is now server-less and until we finish and connect them back, we have to survive using the notebooks only. Fortunately, I have at least one notebook available for each household member, except the cat. Even more fortunately, she (the cat) does not mind.

Surprisingly, this project reminded me of something that is so familiar when you are working in enterprise IT environment and deal with real life systems and real companies: you cannot do just one thing. After we uncovered the carpets, we have discovered few hidden issues that had to be fixed before we could put the hardwood in. In process of fixing it, another issue popped up and we ended up replacing the plywood that was under the carpet. As result, what was supposed to be done in 2-3 days, will take twice as long and will carry according price tag. In all this we are extremely lucky having very good, capable, hard working and honest contractor doing the work.

So, does all this renovation have anything else in common with software engineering? I think it does. Year or so ago, we had this discussion about metaphors, paradigms and models for the software development process. One of the discussion’s topics was why is our (presumably engineering) profession so bad in estimating the time and effort required. Look at the guys building the houses – Steve challenged us – they can tell with 5-10% precision when they will be finished and how much will it cost. Even better, when customer changes his/her mind in the middle of the project, the impact of the change on timeline and price can be determined with fairly high accuracy.

We have talked about obvious differences between building a house and building a software system. The house is pretty much always the same – can be bigger or smaller, but the variations are very small compared to possibilities of software systems. There is very small selection of materials, the components are well standardized and the process of building has been tested and fine tuned on millions of houses built. The workforce in construction business is very much standardized as well – the productivity can be easily measured and deviations between the most and least productive worker are much smaller than in software world. The laws of physics help too – by making the completely wrong combinations of components more obvious and easier to spot. In short, construction of a house is bad metaphor for building a software system.

What seems to be much better metaphor (if we have to stay in the realms of construction business) is house renovation. Here you have to make assumptions and will make discoveries as you progress – and this maps nicely to the process of requirement “gathering” (whoever created the term gathering was idealist, in reality it is much closer to digging for requirements, but back to the topic). You start assuming that your job is to put in hardwood floor – or to integrate two software systems. In reality, your job is to resolve unknown number of problems of unknown complexity in order to even start.

You have the legacy of existing house, plumbing, infrastructure – similar as you have legacy enterprise systems, databases, data feeds, business owners and so on. You may be aware of some them before you start, but their true size, nature, status and complex interdepencies will became fully understood only during the process of renovation (or integration).

So what is the moral of the story and what is the right approach ? I have no answer that would work in every situation. What worked for me – is honest communication and transparent decisions. Make sure that the customer understands what is included in the estimate, what are your assumptions and what can potentially be hidden issues if there is an indication you may find some. Whenever you discover something that may change the scope, do not delay telling the client and make sure he/she understands all possible pathways and their consequences.

Be generous – if you need to invest extra time to make sure the recommended decision is the best option for the client, invest that effort regardless whether the cost will be covered by the client. If you go that extra mile, in long run you will be always rewarded – with repeated business, better rate or at least the good karma for doing the right thing.

Document all agreements, discoveries, options presented and decisions – they may be great reference when facing similar decision in your next assignment. And sometimes the document trail you leave behind may be only existing documentation of the system in question. The contractor that comes next, will thank you for that. If you do your part properly, that somebody may be the future you.

Ordered a Macbook Pro

2007/10/28

I have to confess, I did it :-) . But no, I did NOT do it right away after Friday 6PM when Leopard became publically available. I managed to wait for whole 5 hours… partly because I was not sure whether the 6PM is local time or Cupertino time – and partly because the Apple store was stubbornly saying that my MBPro would ship with Tiger. At about 10:30 there was a “sticker” saying that all new Macs will be shipped with Leopard … and after that, you have to agree I had no choice ….

I have also purchased the Apple Developer’s Connection select subscription – aka ADC. It is sort of MSDN for OS-X platform, giving you access to interim release. It was cheaper than MSDN, but frankly – MSDN contains by order of magnitude more software therefore it is not a fair comparison. Some people I know would say it is not a fair comparison when it comes to quality of the software – but this is up to everyone to decide for himself. Unlike MSDN the ADC gives you discount for hardware purchase which in case of MacBook Pro paid for the ADC itself plus over $100 savings. The more you spend the more you save ….

I expect the Macbook Pro to arrive in 6-10 days. It is going to be my main mobile workstation, serving all Java and Ruby development needs directly – and (should there be any need) using either a remote desktop or running Windows in a virtual machine for .NET development. I have still not decided whether I will upgrade Parallels or buy VMWare Fusion. On one hand, Parallels did not impress me with their upgrade policy and reviews I have seen show that Fusion performs better – but my experience from using VMServer on Windows and running Linux inside showed pretty unimpressive user interface speed – much worse that VMWare player and close to unusable. I guess first hand experience is required to see how does Linux and Windows behave in VM under Leopard …

Great solution for offsite backup

2007/10/25

I have been using it for over half year now and was very happy with it. After I did today hear Steve Gibson mentioning (and recommending) it on Security Now!, I want to share my experience and add my vote of confidence.

The solution is Amazon S3 service (Simple Storage Service), fantastically affordable system to store your data securely on-line. You pay as you go – the size is unlimited and you are charged only for what you store and bandwidth you consume. Fantastically affordable means 15 cents for gigabyte-month storage and 10 cents for gigabyte transfer in / 18 cents for transfer out which will drop to 13 cents if you use it more. This means that to store my approximately 30 GB collection of pictures I need to upload them first (for $3) and then pay $4.50 monthly for storage – plus the download traffic. But of course, I am not using it for the images because I really need and like the nice album user interface which SmugMug provides. But to archive documents – this is just the perfect solution.

The S3 is focusing on developers and the service is accessible via Web service. You can choose from many available implementations for their API – in Java, Python, Perl, C#, VB, Ruby – you name it. For non programmers, there are client tools available that completely abstract the storage access and make the S3 appear as just another drive. From many clients avialable, I have selected (as well as Steve and Leo did) the Jungledisk. Unlike some other services that are trying to stand between you and your storage, take over not only data flow but more importantly money flow (and often charge fat premium), the good guys at Jungledisk just want to sell you the client and let you pay directly only Amazon fees to Amazon. The price for the client is just $20 – it is no-brainer. For this price you will get client version for all three major platforms (Mac, Linux, Windows) as well as source code of the “engine” part of the solution – in case you want to access same data through UI or programmatically.

After installation, the S3 will appear as another disc under windows or network volume on OS-X (I did not try Linux – yet). Jungledisk contains scheduler and can do automatic backup of defined parts of your disc to S3 – or you can use it for manual backup, as a very reliable and somehow slower external disc.

The big issue with remote storage of sensitive documents is security: can you really trust with your precious data to a third party (even if that part is Amazon) ? I think this is up to anyone to decide – but the S3 comes pretty close to my definition of secure-enough system and Jungledisk plays along very nicely. All traffic between you and Amazon is of course encrypted (SSL) and your data is stored as encrypted as well, by default using a private key that Amazon provides you. This allows key recovery – but also allows (in theory) that someone on Amazon side could read your files. If you want however, you can generate your own key pair and use it to encrypt the data – and all you need to do is properly configure your client Jungledisk. Or if you are really paranoid you can encrypt your data even before they even get to Jungledisk and Amazon – if you want to exchange convenience and easy of use for more security. In the last two cases, nobody on the earth will be able to read your files – but if you loose your key, you will need few million years to break it :-) .

Give S3/JungleDisk a try – you may like it too …
PS: If you are curious about performance and want more than my subjective feeling of “very reasonble” – read this.

PPS: The Smugmug actually *is* running on Amazon s3 – but because they use hundreds of terrabytes of space, obviously were able to get the storage for a wholesale price. The $59.95 / year membership of Smugmug would buy you on S3 about 15-25 GB storage and reasonable usage. As most people have less than 15 GB images, the Smugmug can actually make some money and employ really talented designers.

Book review: The Dip

2007/10/21

Subtitled “A little book that teaches you when to quit and when to stick” by Seth Godin.

So what is the dip ? It is the strange valley after you start with something, causing that after initial quick success you will get worse before you can get better. Obstacles that you either overcome – or you quit. Seth explains that these obstacles are there for a reason – they separate those who want something badly enough from those who do not. We know them in various forms. Back at the university, the first 2 years packed with math were the dip. Very little of the math we have had to learn was actually really necessary – other that learn you how to think, how to study and in addition to that, separate those who really wants to have that Computer Science degree strong enough.

Graphical rendering of the dip can look like this:

The Dip

Dip is the division between the amateur photographer and a pro, between the a coder that can write a Excel macro or a quick applescript to the guy who can write the whole system. It requires different skills, different tools and in process of acquiring them, you will experience pain and difficulties. I am still in the dip with Ruby and Rails – after initial excitement with “wow this was fast” now comes “how do I achieve this ? I can do it in J2EE and ASP.NET, but what would be the true Ruby/Rails way ?”.

The dip is not the only curve Seth is explaining. It is one of three “evolution scenarios” in pretty much any new venture: a job, school. The other two is flat curve of cul-de-sac, dead-end and the cliff – line going up to the breakpoint and then going down. With respect to quitting, there is a good point when to quit each curve: the flatline any time – the sooner the better, because it is just waste of time to stay and the cliff – any time before the breakpoint (after which is too late).

The book is not about the later two curves – it is about the dip. Seth describes various types of dips – in sales, manufacturing, education, relationships and impact of quitting in various phases. But the crucial question is when and where is it good idea to quit, what does it mean quitting and why quitting and failure can be different.

The old proverb says that “Winners never quit and quitters never win”. Seth Godin challenges this and explains which is right time to quit and right time to stick. His advice makes sense – as you know, those who never win and never quit are idiots :-) .

The Dip is a very short book and has excellent content to length ratio, very little deja-moo that so often fills the business strategy books. Recommended.

Book mini-review: Breaking Windows

2007/10/20

I’ve spent lot of time today reading. I am catching up with my reading stack. Between stuff I’ve finished was: Breaking Windows : How Bill Gates Fumbled the Future of Microsoft

The impression ? Mixed feelings. Maybe I’ve expected something different. Lot’s of details on internal politics and inner fights, not too flattering portrait of Bill G as control obsessed person with very questionable interpersonal skills. From technology perspective, very little what was both interesting and new. I can hardly tell how close to reality are the facts presented, but I often disagreed with the conclusion and analytics. Overall, it was probably worth the time spent on the book – the more you are into politics and relations, the more you may like it. If you are (as I was) expecting a view from more technology side and other stuff that matters, get another book.

Scary part was realization how every freaking email anybody ever wrote could be (and in fact, it indeed was) digged out and used to put its author into a fairly uncomfortable situation ! One should be very careful what one writes into an email, blog or even newsgroup … It does not matter that you later fix it, change it or even delete it. Google and other search engines will find it before, cache and store it for eternity …


Follow

Get every new post delivered to your Inbox.