The computer science world offers many options and tracks that allow career growth and progression through computational growth. What I have mostly seen, has been the divide between two camps: born developers and system administrators. In many organizations, there tends to be a pendulum swing as to what type of leadership is provided. Application support is done by system administrators who may not have the entire knowledge of the inter-workings of a software application, while custom applications are built by software engineers / developers who literally have a stance and foothold in almost every aspect of the infrastructure. Is it any question that I feel Developers have a bit of an upper leg?
I have performed in many roles, including naturally a self-taught, college refined, business proven, software engineer / architect, as well as using many shavings of that knowledge as a systems / network administrator. I’m a contractor, I do a lot of things. I’d like to be more diplomatic, but that’s basically what I think about the difference. To be a developer and engineer of a system, you must know each and every piece… while to be a network / systems administrator, you must only know the surrounding infrastructure around an application, never the particular details of the data structures, serialization, infrastructure design, load balance communication, or even the website bindings…
Developers and True Software Architects are engineers of complete knowledge of computing systems along with syntactical and conceptual knowledge of advanced programming. Knowing and understanding the true underlying dependencies within code, integrated with true ISO and international standards, with experience with building web servers in C++ and distributed programming systems in CORBA, SOAP, and REST as well as deep understanding of the 3D matrix world, able to interpret in OpenGL and DirectX, experience with highly advanced data structures and communications in Java and .NET, are true architects in this world.
This computer science world continues to grow… As the need continues to expand, positions and roles are filled by those who “seem” competent, with the right timing of being available, of-course for the right pay (both business and personal side, all circumstantial). As the computer science world continues to grow, people forget that software architects are much different than application architects. In my true opinion, I believe that the term architect and manager are HIGHLY over-used. I have posted about this many times.
Let me tell you why:
With the need of roles in computer science and the lack of people to fulfill those roles, America has turned to high levels of outsourcing and high levels of preference for foreign talent. Budgets for Information Technology are staggering, and proven, but the number of people who fulfill these roles is highly in demand. Therefore, we allow more positions than ever to achieve “management” roles. An individual can become a manager from a developer, network / systems administrator, business / systems analyst, or QA upbringing. On top of that, it is cheaper to hire a manager from a non-specialty role, as it is also not as important for a manager to have a specialty, as that specialty would be better served in that particular role.
Therefore, the majority of the management out there, literally has no direct end-to-end experience, and has no true understanding of the underlying parts of an technology infrastructure. More so than not, it comes down to cost compared to performance and accomplishment of goals. Improving is the priority, better efficiency aids in productivity, but all the while, the overall picture is diluted into money and past performance where quantification of true performance is completely missed.
I state that specialty and deep understanding of computer science is the most important part of managing a true computer infrastructure environment. I state that IT departments can be run at much more efficient levels than Trial and Error, but that it requires that deep understanding of how environments work, what costs money, what applications are effective, and when it is right to build custom solutions.