Archive for January, 2009
Before I sign, can I see your codebase?
Changing employers is always a hard decision to make. Whatever the reason is you found that new opportunity that caught your attention: money, fame, need for a new challenge. There are plenty of jobs in the sea, certainly as a developer, and it’s hard to find that one true job. You don’t want to end up in a job which has the same drawbacks as your previous gig. If you take the leap you want it to be worthwhile on all areas: financial, job satisfaction, etc. Although the financial aspect is an important part of the decision making it’s not the holy grail. For me even more important is job satisfaction. In every job interview they’re telling you they have state of the art ASP.Net Turbo 3000 code running on their Windows 2099 machines. But as we all know there is code and there is code.
To be able to make a good decision, the first thing you do is gathering intel. Asking around with friends, former colleague’s, friends from friends and so on about the company you’re about to sign for. If all those signs are positive and the pay is good (I’ve been told it should be minimum 10% more then you’re current wage), you could ask to meet the team you’re going to become a part of. I don’t believe in first contact, certainly not at a job interview because everybody is going to be at his best. You will see your future manager for about 2 to 3 hours and he will be looking for people so he will show his most charming side. Your future team mates don’t know you so they’ll act like the nicest people you’ve ever worked with because they don’t know you. If you sign the contract you’re going to spend more than 8 hours per day with these people, only then you will really get to know them. Worst case scenario if the first encounter with the team was a bad one, I would be reluctant to sign. But this is hardly ever the case.
So on what grounds should your decision be based? I’ve never done this before but I was discussing this topic with some people and it suddenly struck me. They can offer you double the wage you are earning today but if you have to work your way through the next big ball of mud you’re nog going to have a lot of fun at your new job. Unless you’re looking for a real challenge. But how do you make a distinction between a challenge and professional suicide? The best way to get to know how a company works and what the quality of the codebase is: ask if you can quickly see some codefiles and if they could shortly draw how their application is architected. You’ll get a crash course in how the company works and which of the statements the recruiter or manager made about the software methodology they’re currently following are really true. It will be enlightning because you’ll not be jumping into an abyss, you’ll have a better understanding of the risk you are taking. Of course there is always risk involved but calculated risk is in my opinion a part of an exciting life!
Employers can also learn something from this: If you have a neat codebase or some really cool continuous integration system show it to your future employees. It’s certainly an extra plus when trying to convince someone to sign for your company.
Why learning CSS is important in a (web) development world
I notice that a lot of development effort is going into creating a nice back end. Creating a GUI is a matter of using the designer – better known as system.draggy-droppy – and setting the right colors via the properties panel. But lately a shift has happened which forces developers to learn about CSS.
Web development
If you’re into web development and I know more and more developers are into it you must learn CSS. It’s part of the web and part of web development. It will make your applications slicker and nicer looking. You can make some very slick feedback messages with CSS. And everyone knows you can create an application with an almost perfect architecture, if it looks like hell you’ll need ten times the effort to convince users to use it.
JQuery
With the popularity of jQuery, the adoption by Microsoft certainly helped, a lot of developers are starting to learn the pure basics of web development. People are starting to learn the (fantastic) language that JavaScript is. JQuery introduced us to another phenomenon: CSS selectors. You can use CSS selectors to select a certain element on the page. Where CSS used to be for layout only, it is now being used to code. Most developers don’t care about layout. If the code works, they are happy. So most developers didn’t care about CSS, until now.
Fizzler .Net
I recently read about Fizzler .Net, a tool which brings CSS selectors to C#. I think this is an excellent idea, using CSS selectors is very intuitive once you get used to it. I even read about using CSS selectors on plain XML files to select elements. That’s even a better idea! We certainly haven’t seen the last of CSS selectors in server side languages (like C#).
The problem(s)
I see 2 main problems. The first problem is browser compatibility. It takes a lot of effort to get certain CSS code to work in all browsers. Specially Internet Explorer 6 can be a real pain in the ass. A lot of developers lose courage when handling yet another problem of: “It works on Firefox but doesn’t on IE6″. The only solution to this is … deal with it. Learn the Internet Explorer 6 bugs, try stuff out and get to know the solutions/workarounds. A lot of bugs have been dealt with before and after creating a few layouts with XHTML & CSS you are able to solve most of your problems.
The second problem is Visual Studio. It really lacks a tool to do good CSS coding. Sure it has intellisense but that’s really it. There is a real market for a tool which support the developer who writes CSS in Visual Studio. A Resharper like tool which gives you hints like #ffffff can be abbreviated to #fff. That would really rock my world. I was hoping that Aggiornio was going to step up the plate but it hasn’t so far. Another thing that should be added is cross browser testing. You should at least be able to test the different versions of Internet Explorer. Now you have to use tools like IETester and install Firefox, Chrome and Opera on the side to have a decent coverage. CSS Vista is worth checking out for this but Visual Studio is an IDE and CSS is part of the development cycle. The functionality that CSS Vista has should be incorporated into Visual Studio.
Conclusion
What are you waiting for? Good, practical books to get you started are those of Eric Meyer and the Zen of CSS design. You can find a lot of other books on my Shelfari profile, do you have an account yet? If not check it out, you can become virtual friends and it’s a great way to learn about new books!