“Seniority means that the bugs you create are harder to find (esp. for everyone else).”
- A (senior) colleague from RIM, Seattle (2006).
“Seniority means that the bugs you create are harder to find (esp. for everyone else).”
- A (senior) colleague from RIM, Seattle (2006).
Categories: Seattle · humor · leisure · management · programming
I came across validation on the thought that people management is a hard problem.
From Bruce Eckel’s blog, “Deterministic Software Development“. Bruce talks about management thinking, about why Software development cannot be included in deterministic set of problems and finally about why the people factor in software development is key. He suggests that looking at it in a deterministic sense is a dead-end approach.
Related posts on my blog: “Engineering Management” - Sukshma.
You might also be interested in “What is problem solving?” - Michael E. Martinez, on the application of heuristics, goal management, and learning to solve complex problems.
Categories: management · programming · technology
Jeff wonders what it takes to be a practicing Software Developer (”You didn’t tell me“).
Traditionally, an inclination for Computer Science - the basics, math, data structures, algorithms, database, operating systems, other subjects.
To quote Jeff,
I am rapidly coming to realize that those basic skills aren’t enough anymore for people who want to spend their working lives building things out of bits.
He (and others who commented) feels a good software developer is a little bit of a lawyer, usability engineer, an artist, a marketer, a writer, a communicator, an architect, a database administrator, a hardware technician, a system operator, and finally a business-man (I am tempted to add “hacker” to include a hacking or innovative mentality and “quality engineer” to ensure quality, but that list is getting too long).
I will pause for a moment to let it sink in.
Jeff writes,
In the past, project teams were large, and it was possible to create a team with a bunch of developers and other people with the requisite skills. These days, thanks to better programming tools and high-level platforms and services, very small teams can have an incredible impact, but only if that small team includes enough people with all of these skills. Instead of specializing, it is better to be a jack of all trades.
Ouch, I spent 6 years of my life studying computer science :-)! What is made extinct is the idea of large teams of developers with support groups that carry these other skills (refer to “The Mythical Man Month” - Fred Brooks, to see where the idea of support and specialization within teams is documented).
I read the above and I thought “That is so true, he is dead right”. I would base my hiring strategy on this rationale. There is really no such thing as just a practicing computer scientist any more (thats not my profile for sure, seriously). Paul Graham also has a note on how computer science and software engineering are misnomers. - he calls them all “hackers” and “painters” interchangeably. But he stops short of telling us that the good hackers don’t specialize.
If you specialize in one language, or platform, could it be that your thoughts and efforts are constrained? So many other software development organizations out there continue to persist on the large development team theory (especially here in Pune).
I will add “Leadership” skills to the list. When your team’s stuck in the mud, it is very important for someone to step up and lead. A good friend of mine really believes this to be a necessity especially within small teams of people.
There are a few other questions we do need to think about. What do you think jack’s (of all trades) resume will look like :-)? Also, I still believe you have to be an expert in one skill at least. Finally, Teams that are too small teams are also a drag (2 or fewer). 3 or 4 works better in my opinion.
Categories: interviews · programming · technology
Why should I care about CSS? If your a developer and have ever struggled with web-page development tools, for example Netscape composer, or frontpage, cascading style sheets are a very simple solution. Build simple web-pages first and then style them like a professional would through code re-use. You won’t need to purchase Dreamweaver or other expensive tools to get that professional touch. The references below will definitely help.
This blogs theme benefits greatly from CSS, which allows the seperation of style, structure and content.
Why do I recommend it? The specification is very simple to understand. Even simpler if your already programming in Java or some other programming language (like Ruby and PHP). If your working with HTML and Javascript then CSS is all the more important. Besides, I just wish someone would have introduced it to me earlier. I was inspired by Amit Singh (IBM and kernelthread.com fame).
Have a look at the resources below and before long you will begin customizing your web-design to suit your own style.
What are the caveats? CSS won’t work predictably on all browsers always when it comes to certain features. But if you understand the language and its mechanics you will be able to figure out why certain browsers break and when. It is also possible that you may find yourself getting bored with designing CSS layouts, in which case I recommend web-design as a break between your kernel hacking.
Without further ado, the resources:
Categories: programming · technology
Update: If your looking for a detailed step-by-step tutorial, head over to Mel’s page, (thanks Mel). There was also a question on which theme to use. The themes that are updated to take advantage of the wordpress platforms dynamic nature are the best. Start with the list of featured themes and try out “Connections” - Patricia Muller, or the themes by Becca Wei. Install the updated versions that the designers host on their home pages - this is if you would like to minimise your own changes to the theme.
By way of introduction, WordPress is a user-friendly, “state of the art semantic publishing platform“. My blog is currently powered by WordPress and is hosted by the folks of wordpress.org on their own servers. Choosing this route meant that I lost flexibility. For example, the current theme the blog is based on cannot be changed extensively. Since WordPress.com is hosting this blog, they have very clear and valid reasons for not allowing users to edit the internal mechanics for serving content.The other route is hosting your own blog for maximum flexibility. The requirements are easily satisfiable by most hosting providers. We had a GoDaddy basic plan to work with. Going by my previous experience with Movable Type (I tried installing a version 1.6 way back in 2002), I thought the installation would take up the entire weekend. I did some homework, and was mentally prepared to mess with the PHP internals if required.
None of that was necessary. It took me 5 minutes to install it and get it running. Disappointed? The speedy install meant that I could then focus my energy on getting the presentation right. That is what I call Great Software.
(I did have to tweak the database server location in the wordpress configuration file wp-config.php, you can get the correct location of the MySQL database for your host from your control panel. Look for the MySQL icon).
The WordPress developers are amongst the best with PHP. Their code is worth understanding. The template engine isolates the presentation well and makes manual editing of the templates simple. The blog administration interface is also usable. The interface does not require ‘building’ content if you ever decide to change the presentation. If your not interested in touching CSS/PHP/HTML, you can get a very large number of themes for the WordPress theme engine.
I was disappointed by the fact that some of the themes don’t take advantage of the dynamic capability of the WordPress framework. I had to work on those themes by hand. Of course, the blame squarely lies with the theme developer. Secondly, I could not find a way to gear WordPress to serve a custom-page by default instead of the blog page. Has anyone ever tried this?
If your interested in installing WordPress on your host, I highly recommend you do so. If you would like an invite to join the current group of blogs on WordPress.com, send me an e-mail and I will respond with an invite.
Great Software lets you enjoy your weekend :-).
Categories: blogging · programming · technology · wordpress
Original Article: Building Great Software: Solve For The 80/20 Case.
I found the link on Jeff Barr’s blog.
It is always good to remind yourself who your building software for.
It’s also easy to compensate for user interface problems, to the point that you stop thinking about what you are doing to compensate. I watched this happen in real time this week when an executive I know and highly respect was giving a demo of a software package. In the middle of the demo, he alt-tabbed (in Windows) to another window to bring it to the forefront. He knew to do this without thinking… but the new user wouldn’t. When I called him on it, he said, without thinking, “Oh… I just knew to do that.” Then he thought about it for a second and turned to one of the company’s senior engineers and said, “Hey, we should fix that!”
Categories: programming