Ask Slashdot: Advancing a Programming Career?
AuMatar writes "I've been a professional programmer for 10 years. The startup I work for was recently bought, and while I was offered a full-time job, I opted to accept only a six-month contract. At my most recent job, I was lead developer for a platform that shipped tens of millions of units, leading a team that spanned up to three geographical areas I've done everything from maintenance to brand new apps. About the only thing I haven't done is been lead architect on a large system. What else is there to look for in the next job so it won't just feel like the same challenges all over again? I'm not interested in starting my own company, so I'm looking for suggestions assuming I'll be working for someone else."
While you say you're not interested in starting own company, why is that? Since you've been lead developer and are looking for further challenges, there really isn't much where you can go. Either you have to switch your area of work, go to management (which also switches your area of work) or start your own company.
Having your company is definitely interesting and provides new interesting challenges. You also have much more personal feel to your work. At times it can be exhausting, but it's also really rewarding - but to yourself, and of course to your wallet. I wouldn't do anything else than running my own company at this point. It is definitely much more interesting than working for someone else.
Apart from that, what is your line of work? Maybe switch to more interesting part of the industry. Game development can be fun too, if you're just done some other kind of software programming. However, I would really suggest you look into game designing and not programming. The latter is crunch work that can be done by almost anyone and in the long run extremely annoying. Designing is fun.
A natural transition for programmers can be "Enterprise Architect" roles. This will still allow you a modicum of programming, and you get to be at a slightly higher paygrade, with pseudo-managerial powers. If you're decent at your job already, this gives you more of a top-down on the process so you can truly shape a project rather than simply build the shape someone else has given to it.
Just my $0.02.
Are you interested in anything besides programming? Maybe head that direction. I don't mean stop programming and do something else, I mean find a job where your programming skills will be contributing toward something worthwhile and that you're interested in. That might mean working on software to help find new cures for deadly diseases, or it might mean being a lead programmer for the NFL. Whatever floats your boat. If you're a part of a team that's doing something that you genuinely like and that enriches your own life, maybe it you'll be less concerned about "the same old challenges" and you'll be happy just to contribute toward the end goal.
Breakfast served all day!
I would look around for the opportunity to break in to the education field. There is no field more challenging and the real life experience you would bring to the classroom would be invaluable to the students.
I've been a developer for about the same amount of time as you and am now a tech lead/team lead, where "tech lead" means I'm the go-to guy for the organization on anything to do with my particular product (new design/architecture, integrations, major issues, what have you), and "team lead" means I act as the manager of all of the developers/testers under me (reviews, layoffs, vacation approval, all that crap).
I'm coming to the realization that I kind of hate this role...I can only put myself down for 5-10 hours a week of actual development, and even that is usually a stretch, and the management stuff is quite stressful. It is shocking how differently people behave when you go from their peer to their manager. So, I find myself in a similar situation, what do I do now? I am the best developer available to work on my product, yet I am unable to find any time to actually code...all I can do is quickly spec things out as best I can, pass them to my team (also spread around the world) and get back to fire control/integration meetings/budget planning/etc. It's extremely frustrating.
My thoughts wander from 1) Just suck it up, dive into the management aspect, do as much coding as I can on the side to scratch that itch (it is my true love), 2) Find another job that is purely technical - lead dev/architect, what have you (would probably lead to the same situation I'm in), or 3) Say f**k it and go totally off the reservation - try to start something on my own, or become a teacher and work on stuff on the side or something, complicating this option is the small matter of a family to feed... I just don't know.
while [ 1 ]; do echo -n -e "\xe2\x95\xb$((($RANDOM&1)+1))"; done
Every developer hits that point eventually. And your choices aren't necesarily limited. Assuming you're ok with a pay cut.
There are plenty of opportunities to move in the direction or Project/IT management. That's the direction I've gone. 15 years of seeing poorly run projects and trying to get them back on track has left me pretty well practiced for taking the reigns.
Switching over to the networking side of the house isn't a bad option either. There's some learning involved, and you're not going to start out as a senior architect, but you can get work with the ancilary skills you've developed.
All industries can benefit from exceptionally bright solution developers. Look into 6-Sigma training and advance your career into process improvement.
And if all else fails, get out of the office. Find yourself a lumbar jack gig, maybe come camp counciling in the summer, park maintenance in the Everglades, etc....
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
My overused response to a lot of questions is: Unask the question.
You've got a lot of technical and lead and coordination and probably management skills you've developed. So instead of asking where should you go next, ask what do you enjoy the most?
It may be that you do want the challenge of a lead architect position, in which case you might be looking for a startup company. I have no idea how people get to that level. Some are bottom up evolution, and some are top down revolution type people.
It may be that you want the joys of integration or release management, or something along those lines.
Basically, in a nutshell, ask yourself what makes you happiest and pursue that. Worst case scenario, you've wasted a few months. Best case scenario, you grow into a beautiful butterfly...
Most developers tend to think that QA is for button pressers and failed programmers. However, having a couple of good programmers on the QA team can dramatically improve a product. If you're really a good programmer then you can take requirements and write GOOD tests. Also, as a programmer, you can deconstruct what the dev team has built, and look for ways to make it fail (i.e. the cases they failed to consider). If you understand the nuances of the language, you can better anticipate the edge cases that a lot of non-technical QA folks would miss.
I've been down this path, and found that when a dev team knows there's someone who will call bullshit on their submissions (and can back it up), the code that's checked in tends to be better.
I'm not clear on exactly where you'd like to advance. You don't want to commit to your employer (and only took a 6-month contract) and you don't want to burden yourself with the risks associated with success (by not wanting to start a company). I assume this also means you don't want to partner with someone.
So you want exactly what out of advancement? No more risk. No more commitment. No more responsibility. Just money? Play the lottery.
The only problem I see with freelancing is that he specifically says he wants to advance his career. When you're a freelancer, people tend to want to hire you to do the thing you did last time. It's just the nature of the beast; you're probably going to get a lot of jobs by word of mouth, and the word of mouth is going to be "when we needed that same thing, we hired this guy -- you should hire him, too." Also, people tend to underestimate the amount of hustle it takes to be a freelancer. You're always thinking about your next job, which means you tend to be reluctant to turn down paying work. These two factors make it very easy to fall into a rut.
Breakfast served all day!
Almost anybody I've ever known who has moved onto being the lead architect isn't handling much (if any) code anymore. You're operating at a different level ... the overall design, the components that make it up, and working with the dev team to sort out problems. And, of course, working to define the requirements, use cases, and all of the other stuff like that.
Which is fine, but from what I've seen you can stay as an actual Programmer for so long, and then people expect you to move into architect/management roles to oversee the people who now do the coding. Your job becomes big-picture kind of stuff. Sometimes they look at someone of a certain age who is still writing code and wonder why you're still doing that.
If you're looking to solve new and interesting problems without feeling like you're doing the same thing over and over ... well, maybe what you want to do be doing it is working with a consulting company? The breadth and depth of your experience gets used for many different problems, it definitely changes often, and you get called in to help clients solve problems and develop solutions
Not saying consulting is for everyone, or that it's even the best choice out there ... but when I 'graduated' from a previous job as a programmer and got into consulting, I found I got to work on different projects, provide different insights into them, and then work towards the overall solution.
If you've been doing the kind of dev work you describe for long enough, there's a remarkable amount of soft skills you've likely picked up that are very marketable ... you don't need to know everything about everything, but knowing a lot about a lot of things actually makes you quite useful as a generalist skillset, with the ability to delve deeper when the need/occasion arises.
Lost at C:>. Found at C.
Take some time off and reflect. Slashdot isn't going to provide you with any wisdom for something that is a function of you and your feelings.
While you say you're not interested in starting own company, why is that?
I can give a few reasons why you wouldn't want to.
For one software is extremely saturated - talent, businesses, products - you name it.
Sales. Starting a business is easy. Watch: There I just started a business. Here I'll start another one. Bam! Two businesses in as many seconds.
Sales. It's extremely difficult as someone who has been behind a computer all his career to get the sales. If you think it''s just a matter of cold calling, walking into a building, or placing an ad in CIO magazine; you will be quickly disillusioned.
You will be competing with established businesses. A couple of years ago, folks were suggesting that one should get into the web page and marketing business because the companies they were working for were experiencing increasing sales. Of course they were. Try walking in as a startup and convincing someone that they should drop the guy that they have been doing business with for the last several years (and most likely pleased with them) and hire you. Try, just try to convince them. Do it cheaper? Never compete on price because there's always someone who'll do it cheaper. Anytime on RAC will show one that.
Your own portfolio? It's a start - if you can get a chance to actually show someone who has the power to hire and pay you. And that's assuming your design and coding skills are so awesome that the potential client will fall in love with you. There aren't too many people like that in the World. .
It's much more than hard work. If all it took was hard work, everyone would be successful in their business. And here's the killer: when you're in business for yourself, you will spend most of your time getting work. So you will not only have to meet your deadline for your project, but work in getting sales - going out to networking events, shows, taking "decision makers" out to lunch.
Then there's the collections. Do you think at the end of 30 days, said company is just going send a check right over? Pfft.
Industry: IT is a saturated industry. If your business has anything to do web design, custom software development, support, or anything sun of the mill like that - good luck! Folks like that are a dime a dozen. And they're all not screw ups.