I am working as senior software engineer,and giving interviews for tech lead position. I failed in some of them, i am wondering what are the skills for it and if anybody can help me with what are the skills looked in such kind of position or guidance it would be wonderful for me.
i understand its about managing the team and designing the modules and mentoring juniors,what more is asked for such position.
Mark, i would if i could get some inputs from you,as such, what do you expect from a team lead position, i know you want communication as well as technical both, but if you can elaborate on it.
Someone who has experience with the full software life cycle would be good.
experience in these things:
1. Starting out reading through hundres of pages of boring documents to figure out what exactly the customer wants, then turning it into a design. Keeping track of everything that is ambiguous and will need further explanation from the client, etc. Things like that.
2. Ability to recognize which parts of the application will be difficult and which will be easy. Then divide up the work accordinly between the developers. Give the junior guys the easy or non-critical tasks.
3. Strong knowledge of database deisgn.
4. Strong knowlege of object oriented design
5. Ability to actually develop and fill the role of a developer if needed.
Do they prefer to micro manage the design all the down to classes and methods or do they prefer a higher level design giving the developers more freedom to implement things how they see fit?
About communicatin skills... That basically means they are not shy and can attend a meeting and speak during a meeting. You should be able to get a rough gage of their communication skills just from the interview. Shouldn't even have to ask a question about it. If they give clear answers, speak confidently, etc, then they have good comm skills. But then again there's the other side of communicatoin skills such as not offending team members, not being a "bossy" leader, etc.
Keep in mind that different companies want different things from an architect. heck, the title alone can be wildly different, e.g. at some large corporations the role requires 15-20 years of experience minimum, whereas at startups I see "architects" with2-5 years.
When I build a team, here's what I expect of an architect:
- Broad technical knowledge. Within a technology (e.g. Java) s/he should know a number of the more common extensions, tools, services, products, and open source projects available. S/he should also know about alternative technologies and pros and cons.
- Deep technical knowledge. A Java architect, for example, should be able to go under the hood and understand who the JVM works, as well as general computer and systems architecture. This is more than just simply being able to memorize APIs, but rather understand how things function.
- Scalability. An architect should be able to understand issues of size and scale and performance limitations.
- Vision. An architect should be able to put forth a comprehensive solution.
Originally posted by Mike Isano: About communicatin skills... That basically means they are not shy and can attend a meeting and speak during a meeting.
- Communication skills. Sure the architect should be able to speak up in meetings, but so should every engineer. The above statement is a requirement for every engineer I hire. In fact an architect should be a competent speaker/writer. He should be able to put forth documents and present (even formally) in meetings. Moreover, an architect should be able to interact with non-engineers and explain both the overall architectural design as well as explain technical issues in non-technical terms to non-engineers. (I do not expect engineers to be able to do this, but the top engineers usually can.)
- Leadership. An architect must be a leader, who can inspire and motivate the team. An architect may or may not hold a former leadership position, but not all leaders are officially in leadership positions. Nevertheless, an architect must exhibit leadership.
- Mentoring. An architect should be able to provide technical mentoring to more junior members of the team.
- Experience. An architect should have successful completed prior projects of a similar scale, and have seen projects not just through one cycle, but through multiple cycles to understand long term impact of technical decisions. I've yet to see any good alternative for this other than experience.
- Broad understanding of team roles. An architect should understand not just software development, but also the roles of build engineer, QA, release engineer, professional services, field engineer, integration engineer, tech writer, etc.
- Understanding of larger business forces. An architect should have a solid grasp of the business problem being solves by the software, the constraints and trade offs being made, both technical and non-technical.
I may have missed something, that's off the top of my head.