More and more, I'm finding that .Net developers are losing touch with how things work. Microsoft has abstracted many programming functions to such a high-level, many people in the industry have forgotten (or no longer bother to learn) what's going on under the hood. I suppose this is a natural and necessary evolution; the growth of the talent pool doesn't come close to the expansion of software development and implementation needs. By dumbing the work down with every release, Microsoft expands the pool of workers while fostering a need for the latest software and training.
The result is an increasing gap between programmers/engineers and coders. So my answer to the original question was--try to be the former rather than the latter. In many ways the distinction is subjective, but if I wanted to gauge somebody's programming abilities, here are some of the things I might ask.
- Write a function that sorts an array. Describe it in big-O notation.
- Write the pseudocode for a simple XOR encryption algorithm
- You have a table in a database with 1,000,000 rows and need to extract a single-specific record. What is the maximum number of records that will need to be evaluated to return the required row if the column you're looking at has a clustered index vs non-indexed with unique values.
- Write your own string-builder
- Design a custom cache mechanism
2 comments:
a much smarter person than me said:
Civilization advances by extending the number of important operations which we can perform without thinking about them.
you might say that the art of creating fire has been lost, but it allowed certain people I know to focus on cooking omelettes in office, instead of worrying about tinder ..;-)
That said, i do agree with the thought that depth is hard to find ..
That's a great point and adds an interesting perspective. I also agree that constantly re-inventing the wheel doesn't lend itself to progress (although it creates a vast and interesting assortment of wheels ;)).
Personally, I feel better equipped to deliver solid designs, solve problems, and produce better code if I understand the underlying technologies. Additionally, some brilliant people have gotten us from fire to omelets; if I can absorb some of their knowledge by studying their work, I may have different insights when dealing with my own programming obstacles.
Thank you for making me think about this one. Thoughts?
Post a Comment