views:

1944

answers:

14

Hi Guys,

I have been coding for about 9 years now and have really enjoyed every minute of it.

But my journey into computer programming has been an interesting one.

I was trained to be a Mechanical Engineer, and I have a bachelor's degree in it. But rather than joining the manufacturing sector, I switched tracks right after graduation to become to software developer. I had dabbled in LOGO and BASIC while growing up and so it was not that difficult making this decision stick.

Since then, I have worked at a startup, at a large product development company, and I am currently working at one of the world's biggest consulting and services company.

Software development offered me and it still does, the opportunity to express myself, something which I could not have got, if I became a shop floor manager.

But I am 32 now, and I am wondering whether my lack of a formal qualification in computer science will prove to be an hindrance, in realizing my long term dream of becoming a software architect. The people who are architects at big companies, seem to have these Ph.Ds and Master's degrees all over their visiting cards.

Can I ever compete with them? If so how?

Edit: It is very difficult to mark an answer correct from this lot of very good suggestions and guidance we have received. I would specially like to mention the following responses.

  1. Markus
  2. David G
  3. Mike Brown
  4. Kasper
  5. Musigenesis
+23  A: 

I have always felt that architect is a role you "grow" into rather than educate yourself to be.

Practical knowledge is always better than theoretical, imho...

ullmark
It'S all about the experiences
Frederic Morin
Agreed... I have no degree whatsoever and am an Application Architect at a bank.
Dave Swersky
+5  A: 

I know architects who have only BS degrees in fields such as Mechanical Engineering, Electrical Engineering, Mathematics, etc. While it certainly helps to have a Masters degree in CS, a CS degree even at the Bachelors level is not a strict requirement.

In fact, my current position is as an architect and I do not have a CS degree.

I would say most of the architects I know have Masters degrees but many do not have CS degrees.

Proven accomplishment in the real world is always more valuable. What you need to do is show the ability to handle increasing responsibility, especially in design and specification tasks.

David G
+1  A: 

What, eh? I have no qualifications and have just created most of the overall architecture for one of the sub systems of an enterprise solution.

Qualifications have nothing to do with the ability to create software architecture. I find a lot of devs that come out of machine that is a degree in CS don't get taught a great deal about architecture, maintenance, scalability or design patterns.

Don't let it hold you back, dabble with your own architectures to get the "Second System Syndrome" out of your system and study up on the topic.

Quibblesome
A: 

I am not familiar with many architects who do have a PhD in Computer Science. My hunch is that if such exist, often the architect title was given to them almost in an honorary way; they PhDs may also be in other fields . Some companies may only give the title if you do have a graduate degree.

It is true that an MS in software engineering may expose you academically to coursework about architecture that is not taught in undergraduate courses (this is the case, for example, at Carnegie Mellon). However, I don't personally feel that it should be a restriction. Experience and that "architect intuition" is more important.

Uri
+1  A: 

The qualities required to be an IT or domain architect are skill, experience, and IT/domain knowledge. You don't need a degree of any kind for this. You just need lots of practice, exposure to many different areas, and a willingness to step-up and grab the role.

Power isn't given, it has to be taken. If you reach out and grab it, and prove you can do it, you can compete with any architect regardless of his/her qualifications.

RoadWarrior
+1  A: 

Architects have that role because they are trusted.

Can you be trusted with large, expensive projects?

Architects, generally, have executive-level sponsors who fund their projects. That's how trust is expressed.

Can you make things crystal clear to an executive with more budget authority than technical savvy?

S.Lott
+1  A: 

Lack of formal education will in many cases be a hindrance in some positions, especially in big old school companies, but if you have made up you mind to become an architect there is nothing that can stop you but yourself. Basically you have to invest some time and money in order to achieve your goal. Attend the local conferences, take a few classes at the best university in your region but the means to an end is to find a good mentor, perhaps even within your present company.

If you find that IBM will not support you in your "quest" then find a new job, the chance of getting an architect job in a smaller shop only based on your practice might also be better.

Kasper
Hi Kasper,At this point my company's response to this same question is a bit iffy.So I guess I will wait and watch. I don't really want to go back to another small company. I have worked at a startup for about 6 years.
swapnonil
+2  A: 

One of the best architects I know never went to university. Since then he's designed (amongst other things) the security architecture for China Telecom's mobile network (I think that was the name of the outfit). Apparently this is one of the biggest such networks in the world.

You might get some mileage from doing a postgraduate programme, but I doubt that it would be worth your while to go back and do a B.Sc.

ConcernedOfTunbridgeWells
+1  A: 

This may be somewhat biased since I don't have any degree. I truly think that the skills required to be a good architect are skills that need to be learned in the field and not taught in a classroom.

A good architect has to have knowledge of many more areas of IT than just software development because they are responsible for designing a solution that has to be:

  1. Ecosystem friendly: very few applications are deployed into a clean environment. There are other applications with which a solution needs to play nicely.
  2. Opportunistic: the best code is code that doesn't need to be written. As an architect, one should always look for ways to take advantage of existing systems and commercial off the shelf software.
  3. Forward looking: as an architect, one should always attempt to design a solution that takes advantage of existing tech. When possible, he should also try to design in such a way that the solution can easily be adapted to future technology that will be beneficial.
  4. Easy to Administer the IT team has to deploy and manage the solutions created by an architect. He must design his solutions in such a way that they are deployable and manageable by tools that are familiar to the IT team.

And that's just the tip of the iceberg. None of the knowledge to create applications that address those four metrics are taught in school. Even if they were, these skills are something that can be learned through experience. I'd argue that aptitude and experience are more important than degrees in selection of an architect.

Mike Brown
+3  A: 

If I were running a software company, your degree in Mechanical Engineering would put you at the top of the list for being a software architect. The "physical" engineering disciplines (Electrical, Mechanical, Civil etc.) teach basic principles of problem analysis and solution design that are essentially not taught at all in many (if not most) Computer Science departments around the country.

I've spent a large chunk of my career inheriting grossly over-complicated software disasters written by people who had degrees in Computer Science (sometimes even Masters' and PhDs) and yet had no understanding of how the overall reliability of any complex system is the product of the reliabilities of its component parts (which is why it's a good idea to write software that consists of as few parts as possible, AEBE).

In my experience, engineers-cum-programmers make the best architects, and in any event I don't think the lack of a Computer Science degree is a hindrance in most places if you have a long, well-documented history of good quality work. My undergraduate degree was in Anthropology and Physics, and if anything that's just been a source of amusement rather than any kind of an obstacle.

MusiGenesis
I have certainly had the same experience. I have worked with a lot of intelligent computer sciencetists but very few among them are actually engineers.
swapnonil
A: 

At many places (like Google where I work) there isn't a formal distinction between "software engineer" and "software architect". Over time, the engineers who are good at that sort of thing end up developing larger systems. So I wouldn't worry about formal qualifications if I were you. Just do a good job engineering, and when you get a chance to design small parts of systems try to make them great. Before long you will end up an "architect".

lacker
A: 

Yes.

There's a body of knowedge that most successful architectects have accumulated. Some of it can be taught. All of it can be acquired through practice and collaboration, especially if complemented by introspection and feedback.

Two impediments facing self-taught architects:

  1. difficulty in establishing credibility with non-technical managers

  2. a feeling of inferiority to co-workers who are credentialed architects, leading to over-design and/or political shenanigans

Building a solid track record eventually eliminates #1, but the time constant can be problematic. Just mentioning #2 is usually enough to eliminate it.

Dave
+1  A: 

It seems that your problem is more one of marketing than technical skill. You can most definitely compete with someone who has more academic qualifications than you do, provided that you can bring the goods to the table, so to speak.

For the next project you work on, come up with a concrete list of ways that your architectural decisions have helped the company to ship faster, service more customers, and so on. Show that you aren't a head-in-the-clouds academic who wants to build a 'perfect' system; rather, that you're a down-to earth coder who has the gumption and skill to deliver real-world results, and can prove those results in an interview.

As an architect, you'll also need to show breadth of knowledge and skills. I know a number of truly world-class programmers who are utterly helpless when they are faced with command-line sysadmin work. Software architects need to understand not only how the code works, but how it gets pushed out to the customer and used. Document the ways in which you've made your software easier to deploy and integrate with existing systems, and talk about how you smoothed out deployment and testing in your interviews.

Perhaps most importantly, you'll be making decisions that other coders are going to have to implement and live with -- you're somewhere in between being a senior coder and a manager. So you've got to have the diplomatic skills to get the team to do things your way, without making them hate you. Geeks in general are a very proud bunch, so this is not as easy as it might sound.

Academics aren't worthless, but in my experience most managers want to see someone with motivation and skill. If you can show that you've got more of both of those than any other candidate, it won't matter if you're up against Jesus Shiva Knuth, Jr.

Don Werve
That's food for thought definitely. Thanks.
swapnonil
A: 

I discussed this question with the owner of the consulting company I work for and he said that in his experience a masters degree would be less beneficial to a developer later in their career. He would value experience much more than a masters degree.

As I discussed this with him, we both came up with examples of good architects that we knew that did not have masters degrees, or even bachelors degrees in computer science. We also agreed that having an MBA or a a BS in engineering would be very good to have.

The head architect at our company has a B.A. in marketing.

John Fischer