Got a super low paid almost intern-type job at a very respected institution. Once that was on my resume, people didn't care (and I sure didn't go out of my way to tell them... I would if they asked, but they never asked) how low level the job was... they just saw the respected institution name and I was golden for the next step.
Also had published some software that got me the first couple jobs. Publishing some software (open source, or an app in an app store) is a great way to get the credibility you need.
If these are not an option, you could work for a friend, long enough to get something you can point to as yours.
Seconding the internship route. Internships are easier to get due to no or little pay and limited duration. There's no risk to the company to bring on an intern.
I can assure you, even if you offer "no pay" or zero subsidy, there is absolutely a risk on bringing on anyone, intern or employee. Building a good company means bringing together the right people at the right time ..
Mine is more of a step by step story. Worked customer service for internet banking at a major world wide bank. While there, I got into VB 4/ 5. Left that, took a contract job at a medical company doing visual foxpro. Left that for entry sys admin job and web development job. While there, I scored side work from a Canadian designer; did that 7 years on the side while at the day job. Was at the day job for 8 years; now I'm 100% freelance.
Very cool. Part of my problem is that I'm impatient with myself as far as building my skills goes. But day after day I'm reminded that it takes time to become a "good" developer. I'm trying to take more of a long view now. Your story is a great reminder of all that, thank you.
I started out by attending meetups and getting to know people locally where I was at while continuing to work on skills. Next, I started letting people know I was interested in freelance work and started taking small jobs. That eventually led to bigger and better things :)
Work at one or more startups and build your skills. You'll find that at a startup you wear more than one hat(eg: You need to worry about front end, backend and database stuff), that in most cases you dont have to worry about in big organizations. Most early stage startups, since they dont have much to pay, will take anyone with experience and willing to learn. The only caveat is that, you will have to work crazy hours, at least for the initial few weeks/months. But you will find that the more you work/code, the more experienced you get and hence can finish tasks faster.
Thats pretty much how I started and why I still prefer startup jobs over jobs at bigger companies with more focused roles.
I think you're right, especially for someone fairly new. It helps develop a solid foundation of overall skill, upon which one can eventually choose an area to specialize. Thanks.
Lots of late night programming, then lots of late night paid programming. It all boils down to putting the time into learning. The difference from self-taught coder and professional developer is the paycheck. Though the self-taught coder might have experience writing code, it will not have experience developing software. Two different things altogether. That is why you need to put in the time in both scenarios.
This is one of my biggest concerns: writing code vs. developing software. I'm trying my best to follow/learn best practices, but the contract job I'm at right now kind puts quality aside in favor of "JFGID right now!" And since I'm still fairly new, I feel like I'm taking shortcuts just to get things working in a timely manner sometimes.
Yes, that is quite common. People will start asking for 100% quality at 100% time. Then reduce time to 80%. Problem is quality is closely tied to time. As a result, code starts being written under the guise of it being a temporary solution. "It will be fixed on version 2." - is what clients or managers often say to keep you at ease.
Solution? Do your best. No one is perfect. Make sure to document the code well (comments) for future revisions. But realize that this is how a lot of software is written. In all size companies.
Ha, I heard something like "it will be fixed on version 2" multiple times last week. The more I do this the more I realize I can only do what I can do (and try to get better where there are shortfalls in skill/knowledge). Like you said, no one's perfect. Thanks for the reminder and tips!
You get there by working your but off. I recommend specializing and going deep in one area. Knowing a little about a lot if things with no real world experience is not a competitive position. Having experience with mongoDB and rails landed me a position over developers with significantly more general experience. At the time MongoDB was an up and coming technology with rapidly increasing demand. With out the specialty I had little chance competing against more experienced developers for general positions. Having a specialty I knew very well gave me the ability to compete.
Great points, thanks. Has this been anyone else's experience? Specialization makes sense to me (and I like the idea of deep focus), but I feel like most of the job postings I've looked at usually list a wide range of desired skills. Maybe I'm looking at the wrong postings though!
Aren't they taught by professors? Good point though - at the end of the day, we're all self taught. I should've been more specific: "self taught coders with no formal computer science education."
You must find a way to communicate that you have computer science knowledge in your resume or during interview. Someone will ask questions, which are supposed to be difficult for a "self taught" guy, you better know the answers, lack of formal education is not an excuse, it will only prove that you are lazy enough to read some books(or just wikipedia :P)
Awesome point. Do you have any reading/strategy you'd suggest? One thing I'm doing is open courseware like CS50 from Harvard. Do you think that sort of work is worthwhile with regard to what you mentioned? Study algorithms? Do topcoder challenges? Project Euler? I'm open to whatever it takes :)
Top Coder challenges may work for you, reading some books will help in solving problems(like Cormen Introduction to Algorithms). That may help only about "theory".
In case of learning the more technical terms, open source projects are the way to go, no need to be active committer, try to understand the workflow and language they use.
Awesome man, thanks! I actually got Algorithms by Sedgewick and Wayne instead. The reviews on Cormen said it's the seminal resource on algorithms, but a little too advanced for the self-directed (non-genius) learner.
23 comments
[ 4.7 ms ] story [ 65.3 ms ] threadAlso had published some software that got me the first couple jobs. Publishing some software (open source, or an app in an app store) is a great way to get the credibility you need.
If these are not an option, you could work for a friend, long enough to get something you can point to as yours.
Thats pretty much how I started and why I still prefer startup jobs over jobs at bigger companies with more focused roles.
Solution? Do your best. No one is perfect. Make sure to document the code well (comments) for future revisions. But realize that this is how a lot of software is written. In all size companies.
You get there by working your but off. I recommend specializing and going deep in one area. Knowing a little about a lot if things with no real world experience is not a competitive position. Having experience with mongoDB and rails landed me a position over developers with significantly more general experience. At the time MongoDB was an up and coming technology with rapidly increasing demand. With out the specialty I had little chance competing against more experienced developers for general positions. Having a specialty I knew very well gave me the ability to compete.
In case of learning the more technical terms, open source projects are the way to go, no need to be active committer, try to understand the workflow and language they use.