For some people that's vacation, for others it's safety nets, and for others it's engineering processes. Only you know what matters to yourself.
51 karma · joined April 15, 2015
For some people that's vacation, for others it's safety nets, and for others it's engineering processes. Only you know what matters to yourself.
But realistically, you're very early in your career and can afford to burn some bridges and make some selfish decisions. Doing this once or twice isn't going to really stand out as a problem, so much as you taking a little time to get your bearings in the real world.
So be sensitive to your employer's needs (don't quit during a release crunch), and be open to any counteroffers they may offer as you tell them your plans, but do what you need to.
Most clients will want to see examples or case studies of your success in the role -- so that they can understand what you do -- and that can't happen until you get some clients. You'll have a very hard time selling it as "I've done this, that and the other thing in a few different places so of course I can do this for".
You either need to find the established title that already applies to the role you want (project manager?), capture the rest of the supply chain (digital agency?), or you need to stumble into a defining gig before you start marketing yourself.
Don't assume that you can anticipate where your scaling challenges are really going to strike. MySQL and Mongo are both more than capable of supporting your project for quite a while, and after you collect more empirical data on your projects growth and bottlenecks, you can start thinking about how to address those problems.
If he really just wants to code, the best way to maximize income would just be develop a career as a consultant rather than a staff engineer. The biggest opportunities for writing code for a ton of money are in a few intense roles, usually associated with R&D on a core product. It's not easy to stumble into those opportunities, and if your friend had the skills to go down that path, he'd already know.
I understand what you're saying in general, but there are a lot of universals that would apply across all kinds of jurisdictions.
You won't give everyone the benefit of the doubt, but only take seriously the people who offer it to you.
That strategy doesn't seem like it would pan out very well!
You can indeed say "it works for me" to the QA member, and it's their responsibility to identify the environment or series of steps that reliably produce a failure. From there on out, you can no longer say "it works for me" because it doesn't: you finally know how to make it fail and now it's your job to figure out why.
And like I said, nascent startups with just a few founding engineers are a necessary exception. But the QA or Customer Support hire should come very early! Too many organizations stall on that, and they waste tons of opportunity and productivity by doing so.
Speaking to your own concern, the tradeoff is that many technical managers are only there because they fell upward. They may understand your job responsibilities well based on their own experience, but they may not be good at advocating for their team or understanding how team members might have different needs and productivity then they themselves delivered. They also might loathe and stress excessively over their own job, which is no good for anybody. You can have a great manager that happens to be highly technical, but you may often find that you have a highly technical manager who's an awful manager. So as you learn what they are, keep an open mind to the skills that are applicable to management itself --being a manager isn't the same as being a technical lead.
Sharing the pain has benefits, but you're almost certainly paying more in lost productivity on both bugs and features than you're gaining in insight and sensitivity. As a small and stable company, you can probably afford the loss as you learn more about your market and as you prepare for more organizational complexity, but it will eventually inhibit your growth and burn out many of your developers.
When you hire a PHP person to join your Ruby team, you're making a bet that they're able to ramp up on the new environment as readily as you and I might. I've seen great engineers fail to make leaps exactly like that one. The weirdest things can hang some up, and it can take quite a while to recognize and address the issue. It can cost quite a lot more than holding out for the right candidate. Sensibly or not, that's a risk that a lot of employers aren't willing to accept (or maybe aren't able to).
What mitigates the risk for these employers is if the candidate has other ready skills or has a track record of picking up plethora of skills like "C, Ruby, Java, C# and others" as you describe. I tried to express that in my original comment, but maybe didn't do so as clearly as I'd hoped.
Provided that you're drawn to something that can get you work, just go for it.
What a delightful thought experiment! In the meantime...
If so, what might the answer look like?
If not, why did you ask the question?
But it also depends on the distance between skills (frameworks < platforms < languages), whether you know the industry or applicable business logic already, the breadth of your resume as a whole (a proven generalist vs a transitioning specialist).
But most importantly -- you can't really know from the outside -- don't be afraid to burden them with your resume. Worst case, they'll throw it out immediately and forget they ever saw it. Best case, they'll be in a pinch or spot a detail in your resume that you didn't even know they were looking for.
It's almost always a good idea to understand what's behind the report. It's just that somebody in a different role should be doing most of that work.
Not only are developers a very expensive resource, they're generally not good at doing what you describe here. Nor are they usually well set up for it as their systems/devices are often tainted with development and debugging tools.
We can't make end users deliver bug reports that are detailed and reproducible, but (whenever possible) developers should only have to worry about reports that have those qualities.
Any organization that's grown beyond a couple founding engineers needs to have a layer of QA or Customer Support that's responsible for everything that you describe. It's a layer that not only pays for itself but also keeps both users and developers happy.
2. Figure out what's popular in that sector
3. Focus your skill development on that.
With some exceptions, but there's a high affinity for certain technology stacks in most sectors.
Alternately, if you want to work with C or Haskell -- start by identifying the sectors that are actually using those (they do exist), and build your understanding of the problem domains unique to that sector or your familiarity with the frameworks, libraries and toolchains that are being used on top of them.
You've probably got more honed skills to contribute actively, and you won't have opportunity to make especially useful contributions programming in anything that's widespread. So you can dable in something popular to be able to read it better, explore something esoteric to have something novel in your toolkit, or just pursue something that's personally practical like the systems scripting and web stuff you've already been toying with.
Don't overthink it. Just find the one that gets you excited and spend whatever time on it you'd like.
* you'll be ignored by good clients that can afford to avoid that risk
* you'll be score low pay to compensate for the risk
* you'll be hired for "good" pay by bad clients because they don't know what they're in for.
* Nobody will hire you and you'll watch the months go by without making money or developing a portfolio.
None of these are especially great for you!
For now, you'll learn more and make more if you look for a job for a bit first. If circumstances or preference make that impossible, you have two options:
* reach out for opportunity through your networks - friends, family, local events
* list and/or bid your services through markets like elance, odesk, or Craigslist
In 6 months, you won't know that your hire is a "rockstar". You'll know that they were opinionated and that they took initiative. You (and they) won't learn about the technical debt, unmaintainability, and latent carnage they left until well after their gone -- which is probably what happened at their prior employers as well.
If they really ever proved themselves to be that great, some prior employer would have paid them mountains in compensation just to keep them around and their resume would probably looked different.
No, but I'd be hiring a contractor if that's what I was looking for.
But even then, your anecdote only speaks for yourself. There are many people who are indeed privileged by exceptional class or talent and who don't even need to suffer through the sacrifices that you did. Doors have been swung open for them their whole live, while others (like yourself) have to open those same doors with a crowbar, and others still (like the OP's 8/10) will never even get to see the door.
2. Use a password manager like LastPass or 1Password.
Regardless of the incidental security risk of showing those rules, the site shouldn't facilitate your irresponsibility when it comes to password management.
They've spent the time to hire and ramp you up one their processes and code. Unless you're terrible at your job, they don't want you to walk away. So tell them that you're feeling burnt out because X, Y, Z and that you want to see if there's a way to make things more satisfying for you.
It's really sad when a good engineer leaves a team without having shared their concerns ahead of time. One of the most important and satisfying roles of a manager is to help in situations like this, but they can't do that if you don't give them a chance!
Your job can be tough, it can be discouraging, and it can make you feel responsible both for and to a ton of people on a ton of different levels. But you need to make sure you're taking care of yourself along the way.
If you're like most founders, you're probably overworking yourself and burning out. Of course you're not going to see the path to success once you've done that. Take a few days off and do something interesting and self-fulfilling. Then come back and take a fresh look. You may be surprised at how much more optimistic and ready you are.
2. Confident and strong rapport with your stakeholders (CEO, board, investors, etc), so that you can get the resources you need and so that you can feel comfortable delivering harsh news when you need to.
3. Leadership and rapport with your team, so that they're contributing as best they can.
4. Humility, so that you know when somebody else should be architecting, coding, hiring, estimating, managing, planning, or doing whatever else your job requires.
You're doing it wrong. If you're having that much trouble with deadlines and bandwidth, you should be inspiring your CEO, board, and investors to solve that problem. You should also make sure that you're providing them with honest estimates and not over-promising what your team can achieve.
Even if they do it willingly, pressing so hard on your team is going to lead to burnout and turnover in the long term, and lower quality deliverables in the medium term. Those almost certainly cost your startup more than a postponed feature or missed deadline.
But they still probably make a 95%-accurate assessment in those first couple minutes.