Archive for October, 2010

Developers Shouldn’t Specialize

16 commentsWritten on October 31st, 2010 by
Categories: Opinions, work/career

There are a lot of developers who prefer to specialize in a specific technology. At first glance, that seems like a smart move. As long as there is a lot of market interest in your specialized skills, you can benefit financially in ways that exceed the typical compensation for people who work with the same technology, but aren't as specialized in it as you are. And you can use the internet to your advantage to make a name for yourself when it comes to that particular technology, which could satisfy your desire for recognition and/or further increases your ability to monetize your specialty.

But there are some serious downsides to that particular approach. First of all, in the world of software development, there are always other technologies and approaches on the come-up. Not all of those will make it into mainstream development circles, but some of them will. And when they do, it's always worth checking them out, for a variety of reasons. They might make your job significantly easier. They might reduce the cost of software development of the projects you're going to be working on. They might just be a lot more fun than what you're currently doing. They might just be a fad and it's quite possible that nobody will even speak of them 2 years from now. Who knows? You certainly won't, if you ignore them. You don't need to jump head-first into every new technology or approach that becomes popular, but there's certainly no harm in taking a peek either. You'll at least learn something from it.

There's also another factor to keep in mind, which is more important than you might realize. If you specialize in technology from commercial vendors, you need to keep the market forces in mind that could influence the vendor. Those market forces might be (or seem) irrelevant to you, but the vendor will not let that influence its decisions and strategies if the vendor itself is competing with other companies on a much larger level than your company or your clients are. And when a vendor changes tactics due to market forces, the technology you've chosen to specialize in might be on the way out, or it might no longer be the hot new thing that you can capitalize on.

And that is where one of the biggest dangers in specialization lies. If you're specialized in a specific technology, you're personally invested in it. Your current standard of life, your livelihood, depends largely on that specific technology. Sure, you can move on to something else but you will have to get used to less than you're used to, probably both in money and stature for a while. Realistically speaking, odds are high that you are emotionally attached to this technology because of this. When you are confronted with bad news regarding the technology's future, you're likely to exhibit classic denial symptoms. The recent news about the Silverlight strategy shift and specifically the reactions to it, is a beautiful example of this. Silverlight specialists are writing blog posts to convince people of the merits of the technology and how we shouldn't read too much into the recent statements from Microsoft. It's classic denial and it will happen to you too at some point in the future once you form an emotional attachment to any technology for whatever reason.

The other big danger is that when you focus solely on one specific technology, it tends to cloud your vision. You no longer keep an eye on what seems to be working well for other people. You might have learned to accept certain downsides to your specific technology whereas other developer communities might no longer be confronted with similar downsides altogether. You know what works and you know how to make it work. As such, you might not be looking into ways to continuously improve the way you work any more. It easily leads to a situation where you think you're doing a good job, while in reality you're doing a job in a certain manner because you simply don't know any better.

Instead of specializing in a specific technology, you're much better off in the long run if you make sure that your skills are easily transferable to other technologies. Focus on concepts first, and then on specific implementations. You're going to need specific implementations, but a solid understanding of the actual concepts behind them ensures that you can easily transfer your skills and a subset of your experience to other technologies. You'll have to get used to the new technology, but you certainly will be able to make the jump quicker and easier than someone who's focused solely on specific implementations.

Keep your ears, your eyes and your mind open. If you notice that a group of people gets excited about something new, then figure out why. If you notice that something appears to be working well for others, then figure out why. If you notice an increasing stream of criticism on the technology you're using, then figure out why. You'll need information like this to make well-founded decisions about your future.

Do You Still Believe In Silverlight?

16 commentsWritten on October 30th, 2010 by
Categories: Silverlight

Unless you're not really paying attention to what's going on in the Silverlight world, you probably already heard that Microsoft has confirmed a shift in strategy for Silverlight:

I asked Bob Muglia, the Microsoft President in charge of the company’s server and tools business, that very question and got what I consider to be the clearest answer yet about how Microsoft is evolving its Silverlight strategy. “Silverlight is our development platform for Windows Phone,” he said. Silverlight also has some “sweet spots” in media and line-of-business applications, he said.

It's the development platform for Windows Phone (more on that in a minute). It has some sweet spots in media and business apps. Things sure can change a lot in a short time. Silverlight was at first positioned as an ideal technology for media. After that, it was increasingly being marketed as a great platform to develop business applications, cross-platform ones even. Now, despite the fact that nothing has been taken away from the platform's capabilities, it has some "sweet spots" in both areas where it was supposed to be a great technological choice. Every single feature or capability that once formed Microsoft's message that it was great for business applications is still there. And they won't take that away either. The mere fact that their message about Silverlight has transformed so much now, is incredibly telling. If you're a Microsoft customer who's invested a lot in Silverlight for business applications, you have some pretty good reasons to be upset about this.

After all, given how the stated goals of Silverlight have evolved in the past 3 years, who's to say those "sweet spots" will remain interesting enough for Microsoft? I have no doubt that they're going to heavily invest in making Silverlight a great development platform for Windows Phone (whether they will succeed at it is an entirely different matter though), but what you need to develop great mobile applications differs a lot from the needs you have when building great business applications. Will the needs of developers using Silverlight to create business applications be met by Microsoft? Let me rephrase that: keeping the manner in which they're now promoting HTML5 in mind, will they also keep putting additional resources into improving some niche areas of a technology who's primary purpose is to facilitate mobile development? Maybe they will. Maybe they won't. I sure as hell wouldn't bet on it.

Now, unlike a lot of people, i don't think that Silverlight is dead. Far from it even. Silverlight has a future as long as Windows Phone has one. Its real future lies in the mobile world now, and no longer in the browser or on the desktop. It's going to keep working in your browsers, and its going to keep working on your desktops. But you really need to wonder how many of the needed improvements for those 2 environments you'll see being introduced to Silverlight, and how long it'll take. It's quite reasonable to assume that improvements in Silverlight which target the mobile development story will be receiving higher priorities than those which target the browser or desktop development model. After all, that is what the new Silverlight strategy implies. And given Microsoft's need to conquer a respectable position in the mobile world, and their ever increasing support of HTML5, it only makes sense for them to do so.

As for Silverlight being a suitable platform for mobile development, i can't help but wonder whether it really can live up to the high expectations that people will set on it. Anyone who's done any serious Silverlight development knows that it is a technology which suffers from a lot of memory usage problems. Partly because there are quite a few memory leaks in Silverlight's own controls, but also because the Silverlight programming model easily leads to a lot of dangling references which will lead to serious memory problems in a memory constrained device such as a mobile phone. Unless they get rid of the memory problems very quickly, i can easily see Windows Phones suffering from a lot of problems as people start using more and more 3rd party applications on their phones simultaneously. Well, it would have to support running multiple applications simultaneously before it'll be a real problem, but you know that's only a matter of time.

So, as for me personally, i don't really have a lot of belief left in Silverlight as a technology. I don't see it advancing much more in the browser or on the desktop, and i think it's got some real, difficult challenges ahead in the mobile world. What do you think?

Wanna Improve Your Life? Then DO Something About It!

4 commentsWritten on October 25th, 2010 by
Categories: life, Opinions

Meet Tim. He's smart, he's talented, and he's somewhat ambitious. He's also unhappy at his job because he doesn't get the responsibilities that he feels he deserves. He knows he's more than capable to deal with those responsibilities but he continuously gets overlooked by his superiors. He often complains to some of his coworkers about how he would do a better job than Michael and Jimmy, who're doing the job that Tim believes he'd be better at. All he needs is one shot. One chance at showing people what he can do.

Meet Lindsay. She's stuck at a dead-end job because some events in her past prevented her from graduating from college, which led to her having to accept this job just to make ends meet. She's actually pretty smart, and quite capable of a lot more than this shitty job at the local supermarket. She's mad, frustrated and generally unhappy because she thinks life handed her a raw deal. She makes sure she shows up for work every day and makes sure she doesn't get in any trouble. When she gets home, she watches TV or she hangs out with friends. She secretly envies some of those friends who're gradually moving up in life while she isn't.

Meet Christopher. He works for a company that sells heating equipment. He's pretty happy with his job, but he feels he's capable of more. He recently enrolled in a program where he can study software development at home, in his own time, and he just needs to take (and pass, obviously) the exams on the dates that will be assigned to him. He's not even sure whether or not he'd actually go out and get a software development job once he's done with his education, but he's glad that he took the step to learn something new.

There are a lot of Tims and Lindsays: people who are unhappy with something in their life, and do nothing but complain about it. There's nothing inherently wrong with complaining. Everybody does that from time to time. But you can't expect people to feel sorry for you if you don't actually put in any effort to improve the situation that's making you unhappy. Tim needs to quit complaining to his coworkers and he needs to put in some effort to convince his superiors that he's capable of dealing with the responsibilities he's asking for. Lindsay needs to cut down on the TV hours and needs to spend some time actually looking for a better job, or even better, go to night school so she can go find a job in something that interests her.

To a large extent, you make your own luck in life. Life can always deal you a bad hand, but what you do with that hand is entirely up to you. Sometimes, people lose even though they were holding a royal flush. Sometimes, people win with a pair of 9's. Sometimes, you can win without having to show your hand. It all depends on how you play and read the game. Sure, you can't lose if you don't play. But you won't win either. Obviously, you can't control Really Bad Luck (like disabilities, diseases, mental illness, accidents, etc...) but in the large majority of cases, you can improve the situation you're in if you're just willing to put in the effort to make that happen.

Wanna become really good at something you like doing? Work hard, hone your skills and be patient. It's not gonna happen overnight, but if you keep at it, you will have put yourself in a much, much better position to reach your goals. Want more responsibilities at work? Then don't sit around waiting for an opportunity to fall in your lap. Opportunities often just fly by, and you just need to grab them while they're in front of you. And if there really aren't any opportunities, either create them yourself or go someplace else. Wanna get a job in a different field? Then make sure you're capable of doing that job and educate yourself. Yes, even if it means having to do that on your own time. It's that simple. If you want change, you are the one who needs to make that happen because nobody else is going to do it for you.

Christoper is putting in some effort which may or may not lead to a big change in his life. If he 'fails' in his studies, it's still a win in my book because at least he tried. And if he 'fails', he's gonna end up trying something else. And sooner or later, he's going to enable the change he wants in his life on his own, without any complaining. And since i know all 3 of these people in real life (though they have different names), i can state that Christopher is not only happier than Tim and Lindsay are right now, and i'm quite sure that he'll be happier than Tim and Lindsay in the long run (provided that he doesn't get a dose of Really Bad Luck). Simply because he's willing to actually DO something about the things that he's not happy with.

Recommended Book: NHibernate 3.0 Cookbook

No Comments »Written on October 24th, 2010 by
Categories: Books, NHibernate

The people from Packt Publishing asked me to review one of their new books, the NHibernate 3.0 Cookbook. I was a little hesitant at first to do yet another book review (don't worry, i'm gonna cut back on the reviews) but the NHibernate community needs a good, up to date NHibernate book and i was curious to see if this one could fill that void.

As the title says, it's a cookbook. It consists of a bunch of recipes for a very large variety of NHibernate-related tasks. These kind of books are usually pretty low on theory, but this one does a good job of backing up most of the recipes' practical steps with just enough of the background theory that you do need to use NHibernate effectively. I still prefer the approach used in NHibernate In Action, which is more heavy on theory, but that book unfortunately targets NHibernate 1.2. This one covers a lot of the new things that have been introduced in NHibernate 2, 2.1 and the upcoming 3.0 version and as such, is the most suitable NHibernate book available right now.

I'm not gonna go over each chapter like i usually do, so if you want to get a a glimpse of what the book covers, just click here. And as you can see, it covers quite a lot. As usual with NHibernate books, i'd like to see a bit more pages being spent on querying, but this task only becomes harder as NHibernate keeps adding more querying API's. Yes, both QueryOver and the LINQ Provider are covered. Unfortunately, the whole chapter that deals with querying covers HQL, Criteria, QueryOver and LINQ in a mere 44 pages. And while there are some examples of each, none of them are really covered in depth. That's probably not the goal of this book, and it would indeed be hard for any book to cover all of those querying API's in depth while not boring the hell out of your readers, but it is something that a lot of readers are going to need to look into a bit more if they're going to use NHibernate in real applications.

But don't let my nitpicking on the querying chapter fool you. This book is very useful to people who are new to NHibernate, and a lot of people who already have experience with it will learn a few new useful tricks or learn some things they didn't know yet. And while it contains a lot of useful information, it also manages to be a pretty quick read. And if you need any more convincing, just take a look at the price of the electronic version of this book ;)

What’s Wrong With This Picture?

4 commentsWritten on October 22nd, 2010 by
Categories: IronRuby, What's Wrong With This Picture

For once, absolutely nothing.

(it's alpha, so it's not smooth sailing yet, but it's great to see nonetheless)