Getting to Senior Lead level

Started by
12 comments, last by yoshscout 16 years, 2 months ago
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.
Advertisement
'Senior' titles are usually given to people with a good deal of experience.
'Lead' titles are given to people who have the management skills you describe, plus a good deal of experience in working in a team.
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.
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.
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
------------'C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg.' -Bjarne Stroustrup
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]
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?
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.
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 ;)
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]

This topic is closed to new replies.

Advertisement