How Do You Compete for Your Own Job, or, Are You Really Learning?

A few days ago my friend and I were talking about the software development market and how as you pass multiples of 10 years of age you tend to face “new concerns” at work. For example, when you turn 30 you get promoted to lead developer, when you turn 40 you get promoted to manager, when you turn 50 you get to keep your job, and when you turn 60 you are asked to leave. This might be a regional occurrence; but it can’t really be that uncommon (Note: I am not in this situation, which I believe to be an exception to the norm).
In every case, said developer is always competing for his own job. What does it take to keep it? How many years does it take to be a good [insert language here] developer. Say it takes 4 years to get “good enough” at Java; what do you have up on a recent college grad with 4 years experience who is willing to work twice as hard for half the prices as you? Think about it from an employer’s perspective; what is the dollar amount that they would place on experience? The answer to that question largely depends on the employer and potential employee, and in particular the former’s needs and the latter’s negotiation skills.
Whatever the case, isn’t there a question lurking at the back of their mind as they read the resume of a developer with 12 years of Java experience, a question something like “If it takes 4 years to get really good at Java, what did you do with the other 8 years?”. While the 4 year number is totally arbitrary and there is a lot more that goes into being a good developer than just programming; I have wondered things like this about both myself and other developers. In that amount of time you could easily attain a degree in some related, interesting field that would add a lot to your repertoire of expertise.
Without too much effort; one could earn a masters degree by attending night school for about 4 years. That is only one class per semester. In retrospect, I could have earned a masters in English Literature two times over by now, yet I have not. Who does this though? It is not considered to be normal; or maybe I am hanging out with the wrong crowd?
Perhaps it is too expensive to justify in terms of dollars or time? I guess I am just left wondering, what have I really been learning? Has it been of any significance? Has it been challenging and truly beneficial? How many programming languages do I need to learn until I have gotten the 80% that I really need?
How would the world look if we were expected to learn something significantly new every 4-8 years? I think that it would look very, very interesting.
What are you doing with your time? Are you challenging your brain? Are you really learning something new and challenging, or is it just more of the same?

What Would You Have Said?

On my last project we had a lot of meetings that included “fluff”. This is not unique, especially in IT. What was different, though, was that every lead developer was expected to perform three-letter-acronym loaded monologues, nearly on a daily basis. On one particular afternoon I felt like I had really gone overboard. While the subject matter gave me little leeway in the speech that I could craft; I still I could barely believe what I had said, and wondered if anyone else felt the same way. I decided to ask one of my friends in the same meeting what he thought, over IM. Here is the conversation that followed:

Me: did you think that was absurd what I said?
Him: sorry, but kind of šŸ™‚
Me: OK
Me: what would you have said?
Him: same thing šŸ˜€
Me: (rofl) I KNEW IT

Maybe Java and C# are the F-16 of the IT world

Emerging Technologies
The U.S. Air force Air Demonstration Squadron , also known at The Thunderbirds, started out in 1953 flying F-84 Thunderjets. The F-84 had been flown for the first time in 1946. In 1955 they upgraded to the F-84F Thunderstreak. One year later they broke the sound barrier with the F-100C Super Sabre, which they stuck with for 14 years. In 1969 they switched to the F-4 Phantom, which had made its maiden flight 11 years earlier in 1958.
In 1974 they responded to the gas crisis by flying T-38 Talon. It was sort of like the Toyota Prius of jets at the time. After a control stick failure in 1982 caused the death of four pilots, they upgraded to the F-16, which they have been using ever since.
Now the point is that in the early days of jet technology, frequent upgrades were necessary to take advantage of the advancements, but the F-16s work just fine and they are content to fly an aircraft that made its first flight in 1974, 35 years ago at the time of this writing.
Maybe Java and C# are like the F-16 of the IT world.
In the nineties we went from text-based applications to GUI applications. From structured programming to object oriented programming, from compiled code to byte code, from desktop applications to web based applications, and eventually to ā€enterprise applicationsā€. And that is where we are today. Sure, we have new frameworks and a few additional tools like Hibernate and AJAX. The F-16s have upgraded avionics and weaponry too. But we are still flying the same basic airframe.
As the technology has stabilized, our skills donā€™t decay as quickly. This is good for people who are slow learners, but it means that movers and shakers may not have the same opportunity to be a rock star that Windows programmers had in the early nineties or web developers had in the late nineties.
So where do we go from here?

— Zachary Schmidt
Good question.
In the late nineties and early 2000s it was an exciting time in IT. People were learning a lot about object-oriented programming and different styles of running software projects. Things have settled down though, like Zac explained. I had always assumed that everyone, having ramped up on the current technologies, would be spending nights and weekends ramping up on whatever might end up as the “next current technologies”. That really hasn’t happened though.
Where do we go from here? Perhaps it is functional programming, but I don’t have any strong opinions here. Rather, I would share that where we ought to go from here is towards smarter programming with powerful languages. IT is generally lacking in both of those things today; and addressing them would save time and money.

We Need More Architectural Engineers in IT

Even though I don’t think that software development is engineering; these two passages spoke to me in terms of project roles that should be distinguised on larger projects: architect and architectural engineer (they apply to structural engineering, but I am going to stretch them here) :

Architecture is a communicative art that situates human activity within a horizon of possibilities, the art and science of designing buildings. A wider definition would include within its scope the design of the total built environment, from the macrolevel of town planning, urban design, and landscape architecture to the microlevel of furniture and product design. Architecture, equally importantly, also refers to the product of such a design.

Bambooweb

Architects are responsible for the form and appearance of a building with a focus on the way that people use and experience the spaces of the building. The Architectural Engineer is responsible for ensuring that “the building works” – that it stands up, that the HVAC system operates, that light and power are delivered as needed. Architectural Engineers use primarily the tools of engineering to achieve optimum system selection and sizing within the overall constraints usually set by the Architect.

WikInfo
These days you are lucky to find people who can fulfill the former alone, let alone both roles.

Visiting the iPhone Dev SDK Forums

The iPhone Dev SDK Forums are just that; a collection of forums whose topics of discussion encompass just about every aspect of working in this market. Specific forum focuses range from low-level details of APIs and tooling to business topics like how best to market and support your product.
Having spent about an hour clicking around there; I got the impression that it was a pleasant community and look forward to spending more time there.