Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This is a problem that I think many people will find very common and some guidance from the expert users around here will be appreciated.

Background

Basically I'm a junior web developer in a team of 6 (all juniors too). 6 months ago our team leader and project manager left the company. Currently we are being managed by a non technical person.

The new manager chose me to act as a technical leader for the rest of the team till the company hires a someone more experienced.

Problem

Although I'm a good developer my experience in providing solution to the company's needs is somewhat lacking. I mean I have no problem implementing solutions or adding new modules to the system as I have been working for 2 years already in PHP and MySql.

The problem is when we are designing a new heavy feature or building a critical module that can't tolerate trial and error.

Check this link for a design issue that I recently had to implement: http://stackoverflow.com/questions/10529459/building-a-cron-job-scheduler

I can easily build all solutions that were mentioned in the post. The only problem is that I don't have enough experience to choose one of them. My ex-Team leader used to make the hard decisions and I really used to learn a lot from him. However, now he's gone and I'm left out all alone.

Solution

Now There is 2 solutions that I figured would be best for me:

  1. Leave the company ASAP :D and find a better company that can provide me with good experience and increase my knowledge (Although I can't leave the company any time soon due to various reasons).
  2. Find books, references or any available materials for large scale projects or pro web developers techniques. Basically anything beyond simple applications. This is the only option I have right now.

Notes:

I am not looking for resources to learn PHP, MySql, frameworks, ORMs or design patterns. I want knowledge transfer from experienced programmers.

share|improve this question

closed as off topic by Mark Trapp, Walter, gnat, Jarrod Roberson, Caleb May 22 '12 at 20:06

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

    
What are you expected to do as a techincal leader? –  briddums May 22 '12 at 15:32
    
@briddums well the same tasks as our previous team leader used to do: Analysis and design for new modules, Code reviews, Refactoring some of the old modules, choosing a design pattern,...etc. Actually he used to involve us into the process, but given he was the most experienced one he often proposed new ideas and solutions that we never thought about. –  Songo May 22 '12 at 15:39
add comment

5 Answers

up vote 7 down vote accepted

What you are asking for can only be gained with experience. Right now you are in a tough situation, but it is an opportunity for you to learn. I'll be honest: a software company without an experienced technical leader is in trouble.

The problem is when we are designing a new heavy feature or building a critical module that can't tolerate trial and error.

When you build a critical feature, you have to perform trials and errors. You have to implement proof of concepts of some solutions and see which one is the best. People who truly know what works and what doesn't are the ones that have tried things, not the one who have read an article on framework X vs framework Y.

Sure, books will help you. But in the end when you are facing a critical choice you have to "loose" some time with prototypes that you will throw away. Try to find what is adapted to your workflow. Advices from blogs and websites like Stack Overflow are great, but sometimes they are not valid because you have specific needs.

So I would suggest to be transparent about this: Say that you lack experience, and make long estimations to take prototyping into account. Say that the alternative is that your company recruit someone more experienced programmer, or that a non-technical person take responsibility for the technical decisions.

share|improve this answer
    
+1 Thanks for the advises. We are somehow managing ourselves, but my main concern now is that I'm not gaining valuable experience as I used to when my TL was there. –  Songo May 16 '12 at 12:37
add comment

I'm with Simon but I feel that it is important to add:

Lean on your team a bit. I'm willing to bet that there's at least 6-10 years worth of experience in the group. They say that good leaders surround themselves with smarter people than they are. This is one of the reasons why.

So, for your example, you could approach it like this:

  1. Investigate potential solutions.
  2. Ask the team if anyone has written one of the solutions before, ask for a quickie post-mortem and if they were aware of the other solutions and had an opinion.
  3. Ask the rest of the team what they think.
  4. Have a dev POC/Prototype the most promising solutions.
  5. Pick the better one based on your needs and the feedback from the dev(s) that wrote the POCs.

And to be honest, 1-3 takes 15 mins in a daily dev meeting.

share|improve this answer
    
+1 Actually since our TL left we have been doing steps 1-3, but that resulted in fierce arguments. Some members of the team hold on to their opinions and other feel intimidated by the responsibilities and decide to go with the final decision anyway. –  Songo May 16 '12 at 12:43
3  
10 people with 6 months of experience -- especially if the experience has been acquired as member of the same team -- don't have 5 years of experience, they have 10 times the same 6 months of experience. –  AProgrammer May 22 '12 at 11:10
    
@AProgrammer: You can't assume to know what each person took away from that period of time. Especially if they were working on at least partially unrelated tasks, they all would have learned different things about the project, the company and the team. –  Steve Evers May 22 '12 at 14:43
    
@SnOrfus, Obviously there is some independent experience. But the OP has 2 years and is probably the most senior one or he wouldn't have been chosen as acting technical leader. So there is less than 12 man-years available. Having collectively 6 years of experience is probably a max, having 10 years would means that each has 19 months of independent experience when they have spent the last 6 months acting collectively. –  AProgrammer May 22 '12 at 15:28
add comment

Not really a solution for your problem, but you are gaining experience right now and in one of the more effective ways.

Experience isn't knowledge acquirable in books. Experience is time spent outside your depth. Years spent inside your comfort zone isn't experience even if HR people thinks otherwise.

You probably would fell better with someone available as life guard (as some says, experience is a bad teacher, it gives the test before the lesson so a life guard is good) and the company would for sure be better with a less risky way for you to acquire the experience it needs, but you are acquiring it.

share|improve this answer
    
I completely agree with AProgrammer, the only way you'll gain experience as a technical leader is by working as a technical leader. That said, it's also good to find a mentor who can assist you in walking through difficult decisions. But if you do a good job the company may not hire a more experienced lead but permanently promote you into the position. –  briddums May 22 '12 at 16:00
add comment

If you are looking for experience it won't come unless you start working on something new.

Have you considered doing some freelance work?

Doing some new projects outside the scope of your work can greatly affect your work experience. It helps to see other people requirements in a field that is much dynamic as freelancing.

For example, I never thought about integrating PayPal APIs in my work. However, I was forced to in one of my jobs recently.

share|improve this answer
add comment

I agree with @saba7saba7 that experience won't come unless you start working on something new.

I have found that reading helps me learn about new ways of doing things. Sometimes, doing something in a new way can be a new experience even if I'm doing something similar to what I've done before, but in a new way.

I had seen a few sparks catch fire by following along with the ideas described in the book "The Pragmatic Programmer", although many of the ideas in the book are already familiar to me. I think that reading this particular text would be a great way to get exposure to some new ways of thinking that could send you in new directions.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.