HackerTrans
TopNewTrendsCommentsPastAskShowJobs

smokinn

no profile record

comments

smokinn
·il y a 4 ans·discuss
Based on your comments about salary and working at a startup, I think you're probably being taken advantage of.

I think you may at least subconsciously know it too given that you wrote this post.

Step one is to start dialing it back. Another commenter suggested reserving an early hour of the day for leetcode. That's a good idea. When you're ready to start work, don't. Work on a leetcode problem but timebox it to an hour. Then get about your workday. You'll very quickly start to realize that there's nothing special about algorithms. It's basic patterns. No one is asking you to invent new distributed consensus algorithms on the fly in a coding interview. Mostly they're looking for whether you studied to the test or not.

So for the first little while, it's going to suck. You'll be stumped and frustrated. That's fine. Spend a bit of time trying to figure out the answer yourself but if you've given it an honest try, just google the answer. It's about pattern matching mostly so you need a base to pattern from.

Make sure you type everything out. Don't copy/paste. That'll be important for both mental memory (multiple input paths (tactile + visual) leads to better retention) but also that muscle memory will be critical when it comes to the actual interviews.

Eventually you'll get to cruise control. Easy problem won't be stumpers anymore, they'll actually be easy. Mediums will be hit and miss and hards will still be mostly failures but doing some every now and then it worth it for pattern matching to make the mediums easier.

Now that you're cruising and touch typing without IDE assistance through the easys you're ready to interview. You'll probably fail the first few. Interviews are a skill separate from actual programming and they also involve a lot of luck. All the interviews have some random set of qualifications they feel are super important. Unless your practice overlaps heavily with their preferences they won't be inclined to hire you. And when there are like 5 interviewers on a loop you can afford not having overlap with one but if you don't have overlap with 2 or more that'll usually sink you. And like I said, you can grow that overlap percentage but not much, it's mostly luck. If you get a bunch of interviewers that mostly ask questions similar to the ones you practiced and you pattern match them easily (hashmap! tree search!) then you get hired.

The first step though is cutting down your dedication to this company. You're dedicating your life to them and unless they're paying you enough to retire extremely early that's a really bad deal you're taking.

So please cut back on your hours. Take that extra time to take care of yourself first and meet up with friends and family again. Use a small portion of the extra hours to grind out the algo questions. If you can write mobile and web apps you can learn this too. It's a different skill though and it will take time. But it's worth it because you need this practice to match up against everyone else that studied to the test. When you feel you're ready take a long vacation. At least two weeks. Line up a ton of interviews and just power through. Take a break of a least a few days in the middle to regroup and analyze but in general book at least 6 interviews (not phone screens) in those two weeks. Chances are if you've practiced enough you'll get at least one offer. If you don't, that's fine, it just means you need to practice more. Analyze what went wrong, practice more and try again in a few months.

When you get an offer, don't stay at your current company. With your effort and dedication they absolutely know they're taking advantage of you. They'd probably be willing to double your total compensation if you were to actually be ready to leave. It's a trap though. They've already shown they're willing and able to take advantage and will do so again. So when you have a better offer elsewhere you should take it.

Good luck.
smokinn
·il y a 5 ans·discuss
First off, excellent article. I've read a huge number of these and almost didn't click on this one. I'm happy I did. All your points are excellent and absolutely true.

That said, I think you may have missed an important one for engineers: respect

In my experience, engineers highly value respect in their current position and a slap in the face from the company can breed lasting resentment or an immediate job search in the current environment.

Respect comes in a few forms:

1) Believing you were actually listened to and your ideas were fairly evaluated, even if in the end the decision didn't go your way. If you're repeatedly getting shot down and don't understand why that feels like the company doesn't value you or your opinion.

2) Compensation: While the absolute number itself to a surprising degree doesn't matter all that much, what effort the company puts in when it can, does. If the company posts record profits, gushes about your performance, you max out your rating and get a 2% bump in pay as a result when at the very least inflation seems to be 6% right now that cognitive dissonance hurts a lot. This is another form of lack of respect that engineers rarely let slide.

3) Clear growth path/investment: If the company respects you and your term goals, you'll see it through an established career plan, at least for the short/medium term (1-3 years). If you're going about the same stuff every day with no room for growth and no one seemingly cares that you want to take on more or you don't see how you could given the pile of work you're stuck under, that's demotivating and shows that the company doesn't really care about you, just about your monotonic cog-like output.

4) Impact and impact recognition: Engineers want to do things that matter. (Already a theme in your article) and often they want that to be known. Not in a cheap artificial pat-on-the-back and flattery way, but in a tangible way. Success should lead to greater responsibility. Failure should lead to introspection and another swing with advisors brought in. Given your successes you should be given opportunity to advise others working on similar problems you've been successful solving. If all you're doing is solving problems in a silo and no one seems to notice or care, it gets demotivating again.

I'm sure there are others but I find that a general theme of respect for the individual is usually very important for engineers.
smokinn
·il y a 17 ans·discuss
The part about Spolsky, if true, is interesting because Joel obviously doesn't see some of the decisions he made at Microsoft as wrong since he's still doing the same thing.

"He made other similarly stupid decisions like creating a custom programming interface for BASIC in Excel instead of sharing a common interface as strongly recommended. "

Did anyone else think of his special Fog Creek internal programming language?

I particularly like this article that says you should only write new production code in a language lots of people know and others have lots of experience in and then ends with we don't though. http://www.joelonsoftware.com/items/2006/09/01.html