1. Why junior level? Because I don't want to add memory leaks trying to add features to mongrel2, I'm not enough of a ruby wizard to hack on Rails or Sinatra yet, etc. When I start a project, I want to be doing stuff that will challenge me, but I can still get something done on. When I am hired, I don't think they're going to put me in charge, I think they're going to assign me small things to work on until I learn more and prove myself.
2. My full time job is looking for work. I have many part time jobs, like freelancing, helping my family, farm work, etc. I want to contribute so I can learn. Starcraft will not make me any happier a year from now, or even a month from now.
I use lots of open source. I spent most of a day once optimistically installing what I needed to build Firefox, only to read how long it takes even on quad-core meat grinders. I have a single core 2005 vintage laptop.
In short I don't care if I don't care about the project. The goal is help the job search, sharpen my skills, and maybe contribute something while I'm at it.
Because I don't want to add memory leaks trying to add features to mongrel2
You won't. Just send that patch in that fixes a bug/adds a feature. If its less than perfect, well, thats why code gets reviewed before committed. Other people look at the code and tell you whats wrong. And then you fix it! If you're not sure how to fix it, you ask, and someone will help.
I'm not enough of a ruby wizard to hack on Rails or Sinatra yet..
So what? You don't have to understand the entire system to be able to fix one small part of it. You don't need to understand minutiae of actionmailer to improve active record.
And how big do you think Sinatra is? I'm willing to bet its significantly smaller and less complicated than you seem to think it is :) *
I had more typed up, but, it can basically be summed up as:
1. Find a project you like.
2. Don't make any excuses and send in a patch.
3. ???
4. Profit! (aka: Goal reached)
* Sinatra is small; about 2k LOC, with ~400 LOC being html templates.
Let me tell you one thing, I haven't committed any code to "popular" opensource projects yet. But, I've been closely watching one opensource project from its beginning. Dev team pushes new changes, there I am learning a bit more from it. That way it took me two years to build up confidence that now any code I submit to them would meet the code guidelines, standards and will improve existing system. I've been releasing small features on my own repo and contributing to community forum too. Now i think it's time to go ahead and surprise them with a new feature push.
You named >> mongrel2, Rails, Sinatra
I never understood this. Are there shortage of opensource projects in the internet ? I wonder why every one wants to commit to the already "established" and big projects. They have enough genius community backup to them. Why not give a shot to small projects just starting out in language of your choice ? I think, the end result will be more satisfactory.
May I submit that if companies collectively hired some junior/entry level employees, they might eventually have some mid and senior level developers in the market? Just looking at Startuply for example, there is maybe one junior position out of 53 positions listed in Austin.
Perhaps hire one senior level and a two or three junior level developers to work closely together, and try and raise the productivity of the new devs.
If there are NO senior level programmers available, maybe they should get creative.
Spot on. I've seen this again and again: everyone is hurting for senior people, and everyone wants rock stars/ninjas. Hardly any companies that I see are willing to hire a junior dev or admin and contribute anything at all to his/her personal development, skill accumulation, and experience. They just wanna plug the hole and fill the position as fast as they can, and that's usually bad for both employer and employee long term.
Companies have been hiring tons of inexperienced devs throughout the late '90s and early '00s, and they have been hurt badly by it. Incoherent teams full of junior devs that lacked practical skills and didn't know how to work in a team nearly killed many software based companies.
A CS degree teaches barely any professional skills, it's all on the job training, so training a junior is extremely costly.
So nowadays, smart companies build their team around seniors, and only then start hiring juniors one at a time. Which means 3 to 4 seniors for every junior dev.
It's not about "plugging the hole", it's about making sure the ship doesn't start leaking so badly it sinks.
"Companies have been hiring tons of inexperienced devs throughout the late '90s and early '00s, and they have been hurt badly by it."
Hiring "junior devs" and "hiring inexperienced devs" can be a world apart.
Hiring someone for position X who turns out to be inexperienced is not the same as explicitly hiring a junior developer with the intent of training them up.
I've seen a lot of the former, but not much of the latter. The two ideas get conflated quite often, but in reality are different and the latter takes a bigger commitment of resources.
"So nowadays, smart companies build their team around seniors, and only then start hiring juniors one at a time."
5-10 years from now, the conventional wisdom will probably be different. Sr devs might be more willing to leave, and if there are fewer of them, a larger percentage of your company knowledge, culture and IP resources go with them.
I agree with you in principle but your ratio is way off. Once you get out of the startup phase, a senior team lead plus one senior to two juniors is plenty. Training them isn't any more costly than hiring a senior, and they have the benefit of, you know, being available to hire.
I have seen several teams with this idea but they start calling someone senior after 4-5 years...
The following team is vary senior heavy and would avoid the junior dev team syndrome without costing an arm an arm and a leg and is still reasonably stable over the long term as long as turnover is low.
1 person with 0-2 years exp, 1 person with 2-5, 1 with 5-7, 3 with 7+ and 1 with 15+.
To, keep priming the pump just look for one new grad every 2 years and keep a lookout for the occasional great senior dev out there to cover for attrition.
This is the problem I've had with job listings in the startup world. I'm a jr level web developer, self-taught in the past year, that can't seem to find a single job listing that isn't asking for a ninja, rockstar, guru, or dragon slayer.
Where are the companies hiring warlocks in training, people willing to learn but needing the chance to grow and be challenged.
I guess I wonder why, if I was indeed a sr level engineer, why I would work for anyone at all when I could command high rates as a freelancer, or build my own products.
I live close to the DC/Baltimore area right now. 95% of the positions I see advertised as either junior or entry level are looking for someone with a Top Secret (SCI) clearance and 3 years of professional experience. In addition to the ridiculous requirements they typically offer 40-60k a year.
On the other hand for people with 5+ years of experience there seems to be tons of high paying jobs.
Five years ago you could get a job around here as a security guard making 80k if you had a TS clearance.
I see a few low paying jobs for experienced people, but I also see a lot of 80-130k jobs. Most of them require at least a Top Secret, but not all of them. Try clearancejobs.com if you have any kind of clearance at all.
A resume farm is an entity that collects (farm) resumes. The job postings are most likely taken from other sites. Salaries are inflated to make you want to submit your resume.
Are there any reputable job sites? I have mostly been looking for positions posted on sites such as clearancejobs.com, but I usually apply directly through each company's website.
>Hardly any companies that I see are willing to hire a junior dev or admin and contribute anything at all to his/her personal development, skill accumulation, and experience.
well and after all that investment the person leaves for better salary/etc... to somebody who is looking to hire senior people and not "willing to hire a junior dev or admin and contribute anything at all to his/her personal development, skill accumulation, and experience" There is a reason for the things even if we don't like the reason.
And again, the "hot" skills (any NoSQL/Hadoop) can be picked in a week and even junior with such skills would easy find a place. There is just no excuse for somebody unsuccessfully looking for work in this market to not sit down and master some of such skills.
>well and after all that investment the person leaves for better salary/etc
They could offer them a raise based on their new value? If this company can't pay people well or offer a good work environment, how are they going to get senior developers?
> (any NoSQL/Hadoop) can be picked in a week
I can't believe there are companies looking for people with a "week" of experience in NoSQL who aren't mid-level developers already.
"Rock star" is code for "junior dev who thinks he should be senior and will work 90 hours per week to prove it". People who've been programming for 5+ years generally avoid the "rock star" epithet like the plague.
In general companies seem unwilling to "train". Everyone has to start somewhere. I honestly consider software development to be a trade skill.
For startups, it makes sense to desire a senior level developer. Midsize and large companies really should explore internal training programs. Everyone a generation older than me talk about a world where the "entered through the mail room" and worked their way up. Does this world even exist today? From my point of view, it seems like we only expect top talent everywhere.
The only thing harder to hire than an experienced developer is a manager experienced at turning junior or early-career developers into senior ones.
Seriously, few things can sink the ship faster than taking on inexperienced people and hoping they'll learn. From that point of view, I can see why many startups, particularly those whose CTO/VP-E doesn't have management depth in addition to their technical depth.
Technical Management - either Operations or Project - is still regarded as a soft skill, and therefore isn't desired by most startups. As a result, they don't know how to recruit, don't know how to interview, and don't know how to manage their teams, whether in the office or distributed.
I've been doing it for about 5 years now, almost exclusively remote - it's not difficult, it just requires that everyone communicate well, or be willing to learn, if they don't already.
Part of the problem I've encountered are founder/senior managment who are willing to learn these management skills themselves - they are conditioned that everything is on them, so that can be tough.
At this point, I'm of the opinion that in most cases, especially with startups, remote is far more humane than in the office. It's also far more cost effective.
I'm going to drop a small plug for my former employer, MyEdu (an Austin startup) -- they frequently hire people into junior roles, and I feel fortunate to have had such an opportunity myself. I'm not saying that everything is sunshine and roses there, but they definitely have a company culture that values the professional growth of junior employees.
I had one year of programming experience when I was hired at MyEdu. I was desperate for a job so I actually signed on as a member of the automated data collection team, which only involved writing lightweight scripts. After six months, though, I taught myself PHP and improved my JavaScript enough to move up to the web development team.
Other coworkers of mine at MyEdu had similar experiences with paths like manual data entry -> QA -> web developer / DBA (as junior roles), or automated data collection -> sysop + backend developer (junior role). I don't work there now, but I think it would still be fair to characterize the company as one willing to take a chance on someone who shows a burgeoning aptitude. [And there are direct hires into junior web dev roles also; promotion from within is highly valued but not the only route.]
Naturally, this is not how you make the biggest of bucks, but it's a decent salary (with stock options for some positions) + work on a meaningful product + an enjoyable work environment. It's an especially attractive situation for people who are attempting a career transition like I was.
In the interest of not derailing the discussion too much, email me if you want to know more about my experience there. I haven't worked there since August but I worked there for over two years.
> And do you know if the hire remote for a probation period?
Remote work is normally unavailable to junior positions -- it's more of a trust-earned situation.
2. My full time job is looking for work. I have many part time jobs, like freelancing, helping my family, farm work, etc. I want to contribute so I can learn. Starcraft will not make me any happier a year from now, or even a month from now.
I use lots of open source. I spent most of a day once optimistically installing what I needed to build Firefox, only to read how long it takes even on quad-core meat grinders. I have a single core 2005 vintage laptop.
In short I don't care if I don't care about the project. The goal is help the job search, sharpen my skills, and maybe contribute something while I'm at it.