I would like to share a talk I had with one of my close friends on our unhappiness with our careers or at least for me the last several jobs I have had. The conversation had to do with the parallels between construction work and computer science.

The jist of it is thus:

Programmers = Construction Workers: They are told what goes where and that is pretty much it. They have no say in the specifications or design. Moreover, they tend to be less respected and are seen as disposable; for the simple fact that a lot of people can perform the duties.

Developers = Construction Foremans: Serves as the leader of the construction crew (development team in our case). Has more experience and/or expertise and is respected much more by the engineers and achitects. Might have had formal education in his/her field.

Software Engineer = Engineer: Went to college and earned a degree. Manages the total construction of a structure (project). It is his feedback, planning, managing, and relationships with workers under him that will ultimately determine if the project is a success or failer.

Architect = Architect: Pretty self-explanitory. Responsible for the design of a structure (project). If he didn’t design the structure well, the project will be a failer.

In the jobs I have had thus far in my career, I have felt like the construction worker. I’m told what needs to be done and I do it. There is some thought involved or course, but it does not come close to my full capabilities. Moreover, I have a college degree and almost a Masters degree. Shouldn’t I be given the opportunity to use my learned skills, given more respect and more responsibilities, and ultimately good compensation? According to my skills and formal training I shouldn’t be at the bottom of the ladder (construction worker) I should be in the middle somewhere.

So, that is were a lot of frustration in my career comes from and I believe it is the same frustration many others in my field have as well.