Once you've admitted to yourself that you're a bad programmer, you can stop all the silly posturing and pretending that you're great, and you can look around and find the best possible tools to help you look smarter than you are.
People pile layers on top of layers, abstractions on top of abstractions, complications on top of complications, crap on top of patches, and patches on top of crap until everything collapses onto itself and the singularity appears.
Recently I was confronted with the following problem:
- Which x maximizes u?
I remember that I had solved similar problems in analysis lectures about a decade ago, but I had no clue how to approach the task today.
I also have the impression that it would take weeks if not month for me to get back into the subject. Ok, I can read the wikipedia article about the quartic functions but I don't think I will get it without investing some major timespan. I am even doubtful if I could suck the knowledge I need from the internet, or if I finally would have to go to the bookstore and buy an analysis book ...
This made me think about my everyday work as a "coder for hire"/consultant working in the trenches of enterprise IT projects.
I am confronted with problems I have never dealt with almost on a daily basis. However this makes me not nervous at all ...
For instance in a recent project it turned out that I had to write reports with SSRS and integrate them in some custom SharePoint controls. I have never done that before. I never came near to SSRS before and I delibarately had kept a long distance between me an SharePoint. Still I was not afraid of those tasks. I was quite confident that I could solve the tasks within the expectations of the customer (however I am sure there are many developers that would have provided better value for the customer). When I look at the quartic function above I am much less confident and would be get quite nervous if I had to solve that task ...
I started wondering about that fact and came up with some theories:
- I am just a natural talent in everything related to enterprise IT ... nah, I don't think so :-)
- Enterprise IT is a simple domain. We don't really deal with substantially complex or challenging problems, at least not in the technical realization. We mostly deal with trying to understand technology that has been created by other people. Trying to find out what the assumptions and intentions of those other people were and how to match that as good as possible to our context. If we are good, we try not to apply the technologies in a wrong way. (note that I differenciate enterprise IT from other areas in IT like i.e. scaling a cloud infrastructure like facebook or developing new algorithms for video compression, there I think we still have real innovation and technical challenges).
- In the IT industry, especially in enterprise technologies, knowledge is extremely easy to come by. Probably the only real skill you need, is to effectively search the internet. Then you can almost solve any problem. Just ask Goolge and spend some time on Stackoverflow ... you don't need a CS degree for that. Of course that was deliberately provocative: The small challenge remaining is how you combine and apply the knowledge you sucked from the internet. And of course the ability to know when not to apply a technology and look for another solution.
- The IT industry is very immature, at least in the enterprise environments I usually find myself. For each project I get hired, I usually have to go through an interview process. These interview processes have quite different flavors of sophistication but the people conducting the interviews think they check that I am suitable for the job. They usually get the requirements for the job through some obscure windings in the organization, but in most cases it has nothing to do with what I end up doing once I really get in touch with the project. It seems the enterprise IT industry has a hard time defining its specialists. The result is that a bunch of generalists like me are stumbling along doing a mediocre job ...
Nice quotes. Sad but true statements. My experience in IT has been figuring out how to use technologies. Sometimes you get to do Comp-Sci things like your analysis problem you listed, but it's few and far between. IT seems to cater to making things simple so the barrier to entry is lower. Technology also moves at a rate where learning a new technology every so often is a requirement. I guess some of it depends on what industry you're in and how quickly you pick up tech, that lets you get to more complex Comp-Sci topics.
ReplyDeleteHi: That's nice about my current job. I do CS every day, feels like in university :)
ReplyDeleteI generally agree with your post. But part of the problem is that for the quadratic function there is one and only one correct solution (the algebraic one...) In enterprise IT we dont't have that: We deliver what we agree on to be good enough. If you think like that about your maths problem it will simplify quite much and i am sure you can easily write some numerical algorithm that at least may find some good value for the maximum. I think than it's like Enterprise IT: You dont know the best solution, but you keep going as long as you agree, that you found a good solution.