Sign in to follow this  
yoshscout

Getting to Senior Lead level

Recommended Posts

How do you get to that level? Most people are going to say experience, time hacking out software, etc. I just don't buy it because, I could write engine code for 10 years and never progress. Let me give some background. I have been programming hobby style for a while now. I want to get the required reading, etc. to get to the next level. I can manage myself. I am doing it on a contract basis in web design right now. I am familiar with a lot of design patterns and more importantly why to use them. I know how to deal with subversion( I like planning in TRAC ). I guess it's dumb for me to be asking this question when, I am not even in the industry, and the contract web development I am doing is all solo. The big things that developers recently mentioned here is the way they struggle with deadlines. Then, there are graduates coming out that can work solo that have no idea what subversion is. I think I am beyond that point. I can plan out the development and I have to estimate(competitively) the web software I am doing now. I usually do that budgeting based on hours I believe a task will take. I just want to be the best programmer I can when I transition so that I can put bread on the table.

Share this post


Link to post
Share on other sites
Quote:
Original post by yoshscout
...I could write engine code for 10 years and never progress.

That would be an indication that you don't possess leadership skills, communication skills and/or managerial skills. Becoming a leader is not merely about technical acumen; it is about being able to inspire, guide, challenge, discipline, encourage and manage your team so that they can produce their best.

Quote:
I know how to deal with subversion( I like planning in TRAC ). I guess it's dumb for me to be asking this question when, I am not even in the industry, and the contract web development I am doing is all solo.

So you've never worked with others? You can't lead a team if you've never worked successfully as part of a team, because you won't know/understand the challenges, frustrations and perspective of your team members.

Quote:
The big things that developers recently mentioned here is the way they struggle with deadlines.

Everyone struggles with deadlines. The simple reason why is that software - specifically the amount of work necessary to deliver certain functionality, whether developed from scratch or integrated into an existing product - is notoriously difficult to quantify. This makes planning and estimates difficult to provide with high certainty.

The best planning systems for software development don't really set deadlines per se; they focus more on milestones, and emphasize knowing when a milestone will slip early so they can adjust the schedule. Of course, you can't adjust indefinitely. Most software is not developed with the freedom to release "when it's done." Consequently firm release deadlines lead to either quality compromises or whittling down the feature list.

Quote:
Then, there are graduates coming out that can work solo that have no idea what subversion is.

It doesn't matter whether they know what Subversion, specifically, is. It matters if they understand revision control systems as a concept, and are familiar with one. Further, most graduates don't know anything, anyway, and that first job serves to provide them with substantial on-the-job training. The majority of graduates will tell you, if they're honest, that they learned more in the first six months on their new job than they did in their entire undergrad careers.

Quote:
I just want to be the best programmer I can when I transition so that I can put bread on the table.

Go work in a team, with someone else doing the design and delegating a portion of the implementation to you. It'll make you better.

Share this post


Link to post
Share on other sites
Any senior/lead position requires these areas of skill, in my opinion:

1)A wide range of knowledge programming with many different libraries, on several projects. Not just being an ace coder, but one who isn't too specialised.
2)Experience at higher level design, like UML/Agile and things like design patterns. Being able to design a large part of game without ever typing code.
3)Management skills. How to delegate work, how to use people efficiently, how to produce good estimates and so on.

I think the only ways you can get to this kind of level quickly are

1)Be amazing. Show great committment and interest in the projects you work on, giving input which is actually useful. Be a fast and accomplished coder. Be able to say how it can be improved without sounding arrogant.

2)Work in a non-traditional way, such as on an online project, where you may be able to get a much higher-level position.

Share this post


Link to post
Share on other sites
Olu has poached most all of the things I wanted to mention, though I did want to throw in my two cents worth;

If I recall Joel Spolski's rant correctly, it went something along the lines of...

Programmers make awful managers!

What does this mean? Generally, that the person who ends up leading either has some sort of natural leadership ability -- or that they learned how to lead and encourage (etc). Leads that have technical prowess and superb people skills are in really short supply; some of us try -- but in the end, I find the person leading the team spends more time looking after the team than doing the regular nuts and bolts work kind of stuff. They supervise, they check that dailies were done, they nearly always have some useful advice when you bring them some problem that will look ridiculously simple in retrospect but right now is stumping you (phew!).

So, if you want to actually -be- a leader? Hm, observe other leaders doing their thing, be a team player, and keep on working away -- nothing beats experience.

~Shiny

Share this post


Link to post
Share on other sites
at some point books don't cut it any more. You aren't going to walk into any place as a lead developer with out ever having worked in that field, and more than likely you wont make it if you have never worked there(at the company) before. A senior person can walk in with years of experience in the field, but likely won't make lead until he has proven himself there for a while. If you want to change industries you are more than likely going to have to start over somewhat on the pay scale.

[Edited by - stonemetal on February 1, 2008 10:42:50 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by Shiny

Programmers make awful managers!


- Managers need good leadership skills.
- Most people don't have leadership skills.
- Some people can learn to lead.
- Programmers are people.

Ergo:
- Most programmers don't have the skills needed for management.
- Some programmers will learn management.

It's no different than anywhere else.

Quote:
know how to deal with subversion( I like planning in TRAC )


Name 15 alternatives to the above two applications.

You're given a code-base shared between 40 people (from administrators, build masters, designers, architects and various management). It consists out of 250kLOC code in 7 languages, 55 third-party libraries, needs to remain compatible with past 3 major versions, and is being worked on concurrently in 25 branches. It needs to integrate automated builds for 3 platforms and provide standalone unit test server

- Justify your choice of version management software (your client uses Perforce, your company uses SourceSafe, your current code-base is in a custom modified CVS).
- Consider the performance of your choice. Current CVS has crashed several times during past 3 months due to large binary files. Users are reporting frequent client-side corruption due to check-in conflicts, and often need to download entire repository. This leads to 17 minutes of lost productivity per week per user. CVS is currently running on deprecated RedHat linux system with 2.2 kernel, but is fully backed up on a RAID system with redundancies readily available - the RedHat system may not be wiped
- Provide outline of migration to uniform version system
- Develop a transition plan from current system
- Estimate the cost of migration
- Design automated build and testing framework for use with this version system
- Integrate build reports into project management software
- Integrate release builds into proper deployment outlets
- Provide documentation and policies for the new system
- Plan for training of all users
- Provide an evaluation plan for monitoring the improvements of new choice over current CVS solution
- Your superior severely favors SourceSafe, due to their Microsoft background, and will not change it
- Your clients will not move away from Perforce
- Repository down-time during work hours must be less than 1 hour.

Your team consists of 3 J2EE junior developers, 4 interns doing data entry, 1 corporate sales representative, two remote client contacts, your quarterly expense budget is $25,000. Purchases of software over $750 require authorization from your superiors (and take 3 weeks for approval). You have 9 weeks to complete your project. The time for migration will not be compensated in the project's plan. You need to report weekly to your immediate superior with full progress report, and you need to issue monthly expense and progress statement to the board.

Can you do the above?

Share this post


Link to post
Share on other sites
Quote:
your quarterly expense budget is $25,000. Purchases of software over $750 require authorization from your superiors (and take 3 weeks for approval). You have 9 weeks to complete your project.
You forgot that your suppliers may take 3-6 weeks to actually ship any required hardware, but they'll gladly overnight it for you when it ships.


Excellent description, btw. That's why I personally have refused to take the project management side, staying on the technology side.

Share this post


Link to post
Share on other sites
Quote:

The majority of graduates will tell you, if they're honest, that they learned more in the first six months on their new job than they did in their entire undergrad careers.


Well, I'm in my new job for 3 months now and I can't really say that. I've learned some things like how to function in a big company, but not about software developement itself.

Let's hope the next 3 months prove more worthwhile ;)

Share this post


Link to post
Share on other sites
Quote:
Original post by mikeman
Well, I'm in my new job for 3 months now and I can't really say that. I've learned some things like how to function in a big company, but not about software developement itself.

Let's hope the next 3 months prove more worthwhile ;)

Congratulations! You're either in the majority of computer science/software development graduates whose first jobs really suck, or whose undergraduate education was superlative. [smile]

Share this post


Link to post
Share on other sites
A senior position requires more than just technical ability - in fact technical ability may be one of the less important aspects.

Personally, I know that I'm more technically capable than most other developers that I've worked with, but I'm lacking in some of the 'soft' skills areas (e.g. I can clearly and eloquently get my point of view across in a document or via email, but if people ask me in a meeting, I tend to stutter, forget what I was about to say etc.), I don't have any leadership experience and I can lack empathy with people who don't see things from my point of view.

Until you have experience working alongside other people, you won't know what areas you lack in.

Share this post


Link to post
Share on other sites
Quote:
Original post by Nitage
A senior position requires more than just technical ability - in fact technical ability may be one of the less important aspects.


In my experience, the opposite is true. 'Senior' positions tend to be manned by programmers who are good enough to deserve good pay, but lacking the people skills to be promoted to manager/lead.

Share this post


Link to post
Share on other sites
I really want to say how much I appreciate the good responses here. I think most of what I have learned for project management has been from collaboration. I frequent local meet-ups.

I do want to point out that you can manage a project with 1 developer, and failing to do so will almost inevitably lead to a snowball of spaghetti that is impossible to maintain. I think that was an important thing to realize for me. I treat my own projects as though I am a team of 1.

Obviously, surrounding yourself with experts really does help. I don't have a particular mentor per say, but talking to a few people with 10-30 years sure does help. They almost always have the most brilliant insight(and yes its usually a lot simpler than what it seems).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this