Saturday, November 16, 2013

Crawl, resume.

I just spent the morning learning that some writings exist that may help me to formalize reflections on my experiences as a software engineer at a small company. From what I have read so far, it appears as though I may agree with the writings of Fred Brooks, who claims to have written the Bible of software engineering.

I don't remember how I arrived at this place, reading up on Fred Brooks. I know I started by signing up at TopCoder, but went looking for alternative sites to practice solving CS problems after feeling confused by their website. The search for alternatives produced:

The latter three are for savvy high schoolers, but may still provide a nice practice space for evolving professionals like myself. All of the websites have an outdated look, and TopCoder is actually the most attractive. TopCoder also offers some kind of university which looks interesting as I am always looking for another e-learning website.

My main motivation for practicing problem solving on TopCoder is because it was recommended by representatives of an employer I am interested in. Working my way through lectures about Algorithms and Data Structures on Coursera from Princeton (1, 2) and Stanford (1, 2) may not be enough to demonstrate expertise in said area during a technical phone interview, but it's a starting point. I suspect that one of the Q/A forums that recommended alternative sites must have mentioned No Silver Bullet and reading an article about it must have started my web crawl.

I finally ended up at the professor's site and clicked a link about extra notes for another of his writings. I was intrigued by a PDF file that showed his hand-written notes on what appears to be a remodel of his home kitchen. This document further convinced me that I may share similar thought processes because I too have a few design documents for home improvement projects for our rental house.

One of a few things I liked about the summaries of Brooks' writings is that all "programmers" may not be created equal. There are levels of creativity involved with software design and the skill can also be considered an art form. I have debated the origins of creativity with my wife, an art teacher. My point has been that a level of mastery is required to be perceived as creative, but I do agree that does not explain why equally skilled painters produce different images that invoke different feelings in those appreciating the works.

Better is in the eye of the beholder, but there is no debate that different developers take you down different paths. Brooks may argue that these differences are grounds for compensation differences, stating that different developers produce orders of magnitude in differences of costs for the entire produce life cycle. An argument that helps me formalize what I am doing more than my coworkers appeals greatly to me. I would much rather be able to make a down-payment on a house and start building equity instead of throwing away cash on a rental home. Maybe there is a book somewhere on convincing my employer to give me a huge raise. Crawl, resume.