What Really Stuck With Me From CUSEC 2008
Every year it is funny how all the keynote presenters topics end up overlapping in such a way that it makes each one of their messages that much more powerful. A smart ass would say that it is probably because of the theme we choose but you would be surprised how many presenters don’t even take into consideration the theme of the conference. That is not a bad thing though, we choose these presenters because they are smarter then us, they need to talk about what they think will have the most impact on us.
So, gros-aux-modeaux, these are the three messages that really stuck with me this year at CUSEC 2008.
1) If You Are Passionate About Software Then To Be Happy You Have To Work For A Software Company
I think this was mentioned in at least three keynote presentations at CUSEC and if I remember correctly Joel Spolsky also recently mentioned this in one of his blog posts.
I have worked both in companies whose product and main source of revenue was software they developed (both desktop and web-based applications) and I have also worked in companies where we developed software to support the business.
I have to say their is a significant difference. If you work for a software company the majority of the focus is on the product. The company lives and dies by the quality of the software. The software developers are respected and play an important role in the process. The application is constantly being improved and even the smallest changes that improve the user experience are appreciated. (If you want to work for a software company make sure you choose one that is lead by someone who comes from a tech background and has a passion and appreciation for software development.)
If you work for a company where you just build software to support the business you are looked upon as “just a developer”. You are lucky if they give you a say in what you are building. There is a project manager, business analyst(s), internal customers, network engineering team, architect, standards compliance office, etc. You as the developer are the last person they want to talk to and they tend to hate to deal with you. That is one reason, in my opinion, why many companies have outsourced the developer role to India. There is ton of politics and a ton of red tape.
What I personally hate the most about the enterprise software world is that their is good enough. In my book their is no such thing as good enough, there might be good enough for this iteration because it is an improvement over the last from the user perspective but we are still going to continue to improve it in the next iteration. If a user is forced to use an application that does not put a smile on their face then my work is not done!
Just look at it this way. For those out their who work in large corporation and use both enterprise software and traditional public applications… which ones do they talk positively about… which one puts a smile on their face? That is what I thought. The process to develop enterprise software is flawed!
(I have to say my experience has not been that bad developing enterprise software. I have been very lucky that my bosses/co-workers have allowed me to improve the way we work and the way we look at software but it took a lot of effort and earning their trust from my side.)
2) Writing Might Be Even More Important Then Programming
Jeff Atwood of CodingHorror fame really drove this message home for me this year. If you are lucky, a couple people might read the code you write but thousands, and if you are as lucky as him, tens or hundreds of thousands might read what you have to say. The pen is mightier then he code.
And it is Jeff’s presentation that drove me to start writing again. For a couple of reasons: 1) I need to work on my writing skills, writing is probably the hardest thing for me to do; 2) Writing will help me structure my thoughts, it is one thing to have your thoughts in your head which always seem perfect, but once you put them on paper you find all the flaws in your reasoning and writing gives you the opportunity to refine them; and (3) I am extremely opinionated and want to test my ideas out, I want feedback on them so I can take my ideas and thoughts even further.
3) Concurrency Is A Problem… And Nobody Has A Good Solution
Why is concurrency a problem? If you have not noticed the frequency of CPUs has not increased significantly over the past 3-4 years because chipmakers have run into the laws of physics. So what chip makers, like Intel and AMD, have been doing is putting more core’s into each CPU and in some cases more then one multi-core CPU into the same machine.
That is sweet from a geeky level but now the problem is that the large majority of applications have not been written to take advantage of multi-core multi-CPU systems. Having programs designed to run on single-core single-CPU systems run on multi-core multi-cpu systems do not directly benefit from the new architecture. (The new architecture can indirectly benefit the application performance since the applications running can be split between the cores but a single application can not run on multiple cores to speed up processing time.)
And that is for when we want to fun an application on a single system. As we move towards cloud computing we might have dozens to thousands of computers available to work on any mathematical calculation you are throwing at it. If we want to successfully move to cloud computing we have to re-think the way we architect the applications that we write. We need to move from thinking sequentially to thinking concurrently… and that is not an easy task my friend…
What messages hit home the most for you from CUSEC 2008?