jcmurrayii
I am a self-taught programmer, granted with a bit more experience than you. I have actually very seldom if ever been asked about my educational background during an interview, and hint: Those companies that made a big deal of it? I usually ended up turning down their offers, due to a very distinct lack of interest in working there that had nothing to do with them questioning my education.
The education check, if it does come up, is usually more to check for generic knowledge, algos, patterns, etc. Know these things, and know them well. Understand testing software. Understand SCM. In short, be a professional developer, and I'm pretty sure it won't be much of an issue, unless you make it one.
Relevant Experience: Worked as an engineer, senior engineer, lead developer, senior lead developer, and currently, a VP, Engineering...for companies ranging from 1-50,000+ employees. I have built and led multiple teams ranging from 2-21 developers in various mixes of on and offshore developers.
Edit: Unlike many of the commenters, I am not afraid of looking for work, and I don;t think you (or they) should be either! Its a great new adventure, I generally move within 3 years at this phase in my career, and I seldom if ever have any issue lining up interviews and competing offers, following the advice above!
Here is why we use gitflow:
We have 5 developers working on a project at a time.
We release versions of this application to our testing environments twice a day, and to production every 1-3 days.
Before we started using gitflow, we had deployments to our production environment hald back due to commits that weren't tested yet, and thus having no surety that we were good to go to production. Now that we use gitflow, my developers keep their work in feature branches, can commit at will, and only merge it back to our develop branch when the feature is complete. Furthermore, we use 'releases' in git flow as well, so I can take a snapshot of develop, make changes only to fix what is in a release, and merge the release back when it is signed off on by the business. It has allowed us to continue to move VERY quickly, and still control precisely what is in each build.
The killer feature, for me at least, is the 'hotfix' feature though. With deploying as often as we do, there are bound to be issues that need to be fixed right now. using 'git flow hotfix' I get a branch that is based off of master (production), can make the changes we need, and when I merge it back, it is automatically merged to both master and develop, tagged as a release, and I can deploy a build from master immediately.
You are 21. Give yourself a bit of time to ramp up to 'changing the world'. Its going to take time. Its going to take working those 'boring' jobs to make your bones, improve your skillset, develop what you need in order to do that truly impactful stuff.
Highest honors? Great! You know how to code. I can guarantee you though, there are a 1,001 other things that a classical comp sci degree hasn't prepared you for in the business world, while working with teams of other developers. Take the time. Enjoy the time. Learn from other's mistakes, learn from the business mistakes that happen in the companies you work for, and learn from your boss, your leads, etc. In 5-10 years...take on changing the world, with a toolbelt of useful things you have learned, and a much more realistic view of the world around you.
You are just getting started. I know the tech world makes it seem like any of us can just EXPLODE onto the scene, change the world, make millions, but in reality this career path is no more a shortcut to insane riches than any other, and the same rules apply. We have our flukes (Insane purchases from startups) but those are the exception, not the the rule.
Welcome to life, my friend, its a little rough around the edges, its not what we dreamed it would be, but it's the only one we've got.
Lets get in touch, we can discuss some specifics, and my background so that you know what I bring to the table.
Use a filter. Figure out what is hot and burning today, and focus on that. Demands first, opportunities seconds, because honestly, you don't time or capital to waste on an 'opportunity' while any important demand waits in 'your' inbox. So start with the demands. Address the ones that come from the segment with the highest ROI. Focus only on things you hear from a 'reasonable' chunk of that segment. No one offs. No feature that one person demands, only things that can score you points with (almost) every customer in that bracket. Plan out that work. That will tell you how long you have before you can afford to move on an opportunity.
If you have good cash flow, consider hiring a person or two to chase some opportunities while your team remains focused. Or use the money wisely, help your team by giving them more resources, and shorten the cycle time before you can afford to engage in speculation.
Speculating about every change, technology, and up and coming sounds like its taking your attention away from where it needs to be. In my humble opinion, that is on the people paying your paycheck, your customers.
As a Founder, it is just as important for you to say 'I am going to accomplish as much as I can' and not go beyond that. Balancing life with work for Founders is a continual issue, but is VERY important in order to prevent the kind of burn out you are talking about.
So what if there is new tech out there? Adapt to it at YOUR pace. If you have a product that is solid, and customers on that product, chances are you can make it down the road a bit just by progressing that, and by gradually working in the new stuff. Focus on VALUE...not on buzzwords. Will that new tech help you provide value to your customers? If so, devise a plan that gets you there. If not? Forget it.
Hire the right people to help you get done what you need to get done. As a founder, your job is to provide the master plan, the vision, and the tools a team needs to succeed. NOT to take on the entire world and make it all your own problem. Delegate.
I do freelance work, and THIS advice is the advice that has helped me the most.
Be, act, and appear a consummate professional at every front. Quality of clients, size of projects, it all depends on acting the correct part.
Might drop the term freelancer as well, although thats a little more controversial. It has appeared to me lately, that freelancer has begun to give the impression of cheap roll-of-the-dice...where as something like 'consultant' tends to be more in line with stable, experienced, professional, and yes, more expensive.
I am not sure you will be able to find anything in the programming area on such short notice that will pay out that quickly.
However, this might be a case where you look outside of that, and take more pedestrian approaches to get you the cash needed to ride out the rough patch.
Day labor, its not programming, and it doesn't pay much, but it could be enough to put food in the belly, and a roof over the head. I know in the US there are all kinds of day labor companies, and construction will occasionally hire for unskilled on a job site, and pay cash.
Recruiters/Staffing/Temp: Find someone that has a client base of people that need software staff augmentation immediately. I am not sure it would solve the problem in 2-3 days, but you might get very lucky.
Original response was dead on though. Hard to say what can be done without knowing where in the world you are.
Started filling everything out, and abandoned IMMEDIATELY when I got to the SSN field.
This form should redirect to SSL AUTOMATICALLY and every time. Seeing it not do so puts some serious concerns out there about your data treatment, how you handle/store PII, and other PCI compliance matters.
patio11 talks about it some in his writings/podcasts/etc.
Brennan Dunn talks about it heavily in his Consultancy Masterclass.
But here is a tidbit for free.
Join your local chamber of commerce. Set up a small seminar on a topic closely related to what you do. Invite local business owners to it (do it for free if you can, or charge a small amount..depends on how well established you are).
GIVE THEM ALL THE INFORMATION THEY WOULD NEED TO DO WHATEVER IT IS YOU ARE TALKING ABOUT.
Pass out your email address, and let business owners contact you. You will have stablished your knowledge and authority, and even though you gave them a 4 hour speech on how to do internet marketing (or whatever), they wont have the time or comfort level to do it themselves...but now they will know one person who can.
Just one way to get started.
A 'normal' year of work nets you 2080 hours of work. Thats 52 40 hours weeks.
Mastery of a given topic matter is considered to be around 10,000 hours of work. At that rate, if you have worked a 40 hour job doing something, for 5 years, you should have mastered most of the skills. When I see 'junior' developer, I am used to it being a developer with less than 3 years of experience. I hire people like this, but only for specific needs. My expectations are inline with their experience, and I look at their past work history to get an idea of what level I should expect them to perform at.
Not all people doing technical hiring are that fair minded though. There are many that will see junior, and will move on, because they need someone with more team skills, or skills in architecture, large application development, etc, that they do not expect to see from 'junior' developers.
If someone tells me they have been working on web development related tasks for ten years, but consider themselves junior, then I worry that they have not applied themselves, or stuck to the same job long enough to actually improve their skills, etc. THESE worries...are why I wouldn't hire them. I would have concerns around their ability to grow and learn within my organization, and whether or not the time and money I would pour into their training would pay off in the future with a well skilled and well rounded member on my team, rather than another trip to the well of talent for another junior developer to try to help 'level up' to a different role.
You have been doing this for a decade...and still consider yourself junior?
Hint: any php 'function' that can be called without parens, is a language construct. Some of our favorite impostor 'functions' in php: echo, unset, isset, die, include, require