Startups do not have much money. Even the ones that do should aim to keep their burn rates low. That generally means paying for a few experienced, battle-hardened engineers that produce results instead of picking up the cheap, green labor right out of school.
Training junior engineers is important -- they are the future of our industry, but hiring a junior engineer at a startup is a recipe for disaster. Most startups simply can't afford such an expense and it would be irresponsible to try.
It's good that you want to improve your skills, but this is not the way to do it.
You should work on an open source project.
There are plenty of large projects that would be thrilled to have a developer who wants to tackle something more than a small bug, but you have to go find them.
Moreover, open source projects are much more deserving of your talent than the people posting on this thread trying to get some free work out of you. Don't undervalue yourself.
What are you interested in?
Personally, I have contributed to Python, Django and AngularJS because I use all three on a daily basis. Think of something that interests you and I'd be happy to help you find a project that fits your goals.
Location: San Francisco
Remote: Possibly
Willing to relocate: Unlikely, but maybe for the right company
Technologies: Python, Django, JavaScript, AngularJS, HTML5
Résumé/CV: https://www.linkedin.com/in/jamesbrewer3
Email: [email protected]
I have been solving problems with software for almost a decade and developing my skills with every new project I take on. That means you can rest assured that I have a lot of experience bringing ideas to reality and I can solve your business problems quickly and efficiently.
Project I have worked on include building web services with Python, Django, Ruby and Rails that had a collective reach of over 23 million users, crafting numerous single-page applications (SPAs) with AngularJS, Backbone, React and jQuery, and storing information on homes and user-generated events with PostgreSQL, MongoDB and Elasticsearch.
Being logicians by necessity, I'd argue that most developers could debate the socio-economic implications of bitcoin or any other currency better than you would expect.
In fact, it is my experience that most good engineers can accurately debate many concepts with which they are unfamiliar.
This isn't what you've asked for, but I'd like to offer some unsolicited advice, if I may.
When you are selling high-priced products to consumers you have to sell an idea first and your product second. Let me offer an example.
I used to sell beds. Selling expensive beds to your every day person is really hard, because they are so expensive. Who is going to spend $7,500 for a luxury Tempur Pedic when they could get cheap mattresses from Big Co for $300? Eventually, I gave up trying to sell beds. It was just a waste of time because nobody every bought them.
Then something interesting happened: somebody gave me the advice I gave you.
You see, when you are selling something expensive, you can't just push the product. You have to sell your customer on the experience.
How did I apply this to mattress sales? It was easy!
Did you realize that you spend approximately 33 percent of your life sleeping? Sleeping is your body's way of regenerating itself. It's the biological equivalent of turning off your laptop when it starts to overheat. It gives your muscles and tissue time to rebuild themselves. It gives your brain time to digest everything you've learned that day.
A good set of mattresses will last you 20 years. With that said, very few people go so long without replacing their bed. In reality, a bed will last about 10 years; less if the customer has a lot of money or moves frequently. But let's assume a 10 year lifespan for your new $7,500 bed.
Over ten years, that bed will cost you $2.05/day.
Now is $7,500 a lot up-front? Absolutely. But like anything else of high quality, this bed is an investment. And what an investment it is. I will bet you that a luxury Tempur Pedic will give you a better ROI than most stock traders who have been in the biz for 20 years get.
How?
Simple. Better sleep = better productivity. If you got a great night sleep every single night, do you think you could turn that extra productivity into $10 dollars each day? I know I could! If I were productive for one extra hour each day, I would make an extra $100 a day.
Assuming you make an extra $10 a day from your new found productivity, this bed will pay for itself five times over throughout its lifespan.
And so on and so on.
You see, I'm no longer selling a bed. What I'm selling is a complete experience, an investment and a new way of life. $7,500 doesn't seem so bad when it makes your life better for the next 10 years now does it?
What's the point of my rambling?
You need to avoid selling your coworkers on testing. Very few people like testing and the only sure-fire way to make somebody do something is to make them WANT to do it.
Instead, try selling them on how their lives will improve if they increase the quality of their software. Show them how they will benefit from shorter release cycles, fewer bugs, higher quality code, etc. Show your coworkers the benefit of taking the time to correctly architect a solution before they start implementing it. How does taking the time to learn and correctly use the tools at their disposal benefit THEM?
Will this be difficult? Absolutely. People don't want to change. Your job is to make them WANT to be better. There is simply no other way to accomplish your goal with any lasting impact. Sell your team on the complete experience, the investment and the new way of life.
I agree, but I stand by my statement. Asking "What framework should I use?" is not a good sign. Using the process I outlined could easily answer this question.
It depends. I've worked at a company where the compressed and gzipped JavaScript file was over 1MB because there were multiple libraries being included for the use of one function.
That's obviously an extreme example.
Ultimately it's the engineer's job to make good decisions.
Instead of trying to find one tool that solves all of your problems, try understanding what your problems are. Once you have a list of problems, ask how you can solve each of those problems. When you have solutions, THEN you figure out which technologies are best for implementing those solutions.
Great example! Github needs to give their code some TLC though. It seems like new comments on a pull request don't show up until after I push a new commit.
The solution you offer is exactly what server rendering is meant to stop. You should load content as fast as possible and that means rendering it on the server.
Please stop putting loading icons and spinners where your content should be.
A lot of it has to do with the price of living here. I'm about to move out of a 1 bedroom apartment that I pay $1,800/month for, and that's a pretty decent deal compared to some of the places I looked.
It's hard to say though. I dropped out of university (CS major) after two years and I have spent most of my time building out the front-end of multiple projects. That is not to say that is true for all or even most people.
Personally, I don't like asking whether one person is smarter than another. Everybody brings their own set of experiences to the table, making each people smart in their own right.
I also don't believe that holding a degree in computer science necessarily makes a person a better developer. Sure, there is some correlation because those driven to computers are probably driven to computer science in college, but there are plenty of people with no passion that get a CS degree because they heard they could make some money.
Who knows? It's a little bit of everything, I guess. :)
This is actually not abnormal in the Valley, to be honest. It takes skill certainly, but I know a number of people who have accomplished similar feats.
You should focus on contributing to open source projects. A good open source project is almost identical to what you will be doing as a software engineer and is the best experience a non-professional software developer can get. That means triaging and fixing bugs, getting familiar with a (possibly) large codebase, and occasionally shipping features or enhancements.
If you like Python and Django, then both Python and Django are great open source projects and I recommend starting with them.
You should also create your own open source projects. Do this before, during, and after working with an existing open source project and remember to look back at your old code each step of the way. It will blow your mind how far you've come.
Let's also go ahead and get this out of the way, because it will come up at some point: Do not work for free unless it is on open source projects. Working for free makes you a commodity. You are not a commodity. You have a skill set that can make a company millions of dollars. Charge every penny that you are worth and don't ever feel bad for doing so.
Becoming a good software engineer will not be easy. You will probably get fed up and want to quit. Frankly, that's a good thing. As an engineer, you will spend a lot of time feeling incompetent. You should get used to it now and embrace it, because that means you are constantly learning. If this sounds unappealing, then maybe you aren't cut out to be an engineer. You probably wouldn't enjoy it even if you became a professional. There is absolutely nothing wrong with that. Don't waste your time on something that isn't appealing to you.
On the other hand, it's an incredibly rewarding career if you join the right company. Hard problems, happy customers, and true innovation make for a happy engineer.
Your salary is, to some extent, correlated to where you live. Here in the Valley, we can demand higher salaries easily because the cost of living is ridiculous.
Here is an unsolicited piece of advice: Turn down your first three job offers. I wish I had done this when I started. One of the hardest things to do as an employee is judge whether the company making you an offer is the kind of place you want to work. If you accept your first offer, then you have only one data point to base your decision on. That is not good.
If you have more specific questions, my inbox is open. You can find my email on my profile page. Please do not hesitate to reach out.
Here is what you need to know: It doesn't matter. Most people are biased in one way or another. Stop trying to make other people happy.
The most important thing is that you have the skills to do the job required. In interviews, draw on your skills and past experiences to answers the interviewer's questions to the best of your ability. If that isn't enough, believe me, you don't want to work there anyways.
Most people are biased in one way or another. Maybe your interviewer is self-taught and maybe they aren't. Perhaps they've worked with a terrible engineer that was "self-taught" or maybe their self-taught engineer was the best thing since sliced bread. You can't pretend that this won't cost you a few job opportunities, but is that so bad? Ask yourself honestly, do you want to work with someone who doesn't think you're competent because you didn't go to Stanford?
I went to university in Canada as an international student. I've moved back to the states because I couldn't afford to live in Canada anymore. I just got out of school a month or so ago.
I could work and study if I wanted to. My biggest issue with doing both is that neither moves me any closer to my goal of becoming a software engineer. My courses would all be basic studies (english, math, physics, chem, history, etc). I wouldn't take a computer science course for another two years.
My email is in my profile if you'd like to chat. :) Hope to hear from you!