I'm a Bay Area resident. I went to Costco today at 9:00 AM and it was an absolute shitshow.
HN user
csnewb
Yes, I do.
Good question, and that's the main reason I prefer to own physical books over Kindle books. I know that I own a physical book, but a Kindle book can disappear at any moment. Kindles are great while traveling though.
Go to the gym and lift weights or do some cardio.
Security
Problem Solving 101 by Ken Watanabe provides a toolbox of problem solving techniques. One method I've been using to decompose problems us to use a "logic tree". Start here: https://en.wikipedia.org/wiki/Issue_tree. Another technique is to first explain the problem and solution at a high level (pretend you're explaining it to a friend or coworkers), then write pseudocode for how you would solve it, and then convert that pseudocode to actual code.
If you're located in the Bay Area I'm up for it. Or even working together remotely. I'm somewhat junior (3 years of experience) but mentorship is something I've been looking for in my career.
Become a T-shaped developer. Have a broad range of skills with a deep expertise in one.
Oh look, a thread about my current company. I'm actually in a bug fixing team right now separate from the main product development team. It's an extremely difficult position because as someone else mentioned, you need an incredibly deep understanding of the system to truly resolve these bugs. Unfortunately I work on a 20+ year old legacy codebase with minimal documentation and poorly written code, and our dev team is unwilling to spend any time helping to resolve these issues. They're too occupied with churning our new features, while the bug team is abandoned to clean up the mess from all this new code without any sort of help whatsoever. Another perspective that many people don't discuss is that only doing bug fixing is soul crushing. With things constantly breaking, it can be very mentally draining having to fix them. That being, the attrition rate on the team is quite high because there's very little career growth or satisfaction in being a bug fixer. This experience could be exclusive to my company, and I can't say whether it's effective for the business to run things this way since I'm still really early in my career.
Should be titled "How to Ace the Technical Interview in the Bay Area". Even absolute shithole bottom tier companies or unknown startups are asking these questions. Write perfect code on the whiteboard or get rejected. You have to put in A LOT of time into preparation even if you don't want to work at Google, which is ridiculous.
The books that I've read that have helped me immensely: How To Solve It, Problem Solving 101, 5 Elements of Effective Thinking, and Peak: Secrets from the New Science of Expertise. Trying to improve my problem solving ability in coding forced me to look inwards and analyze my thought process to understand why I'm able to solve some problems and unable to solve others. Ultimately I've realized the root cause of my inability to solve hard problems was poor problem decomposition. Every hard problem can be broken down into subproblems, and those can be further broken down until they become easy enough to solve. Then you just connect all the pieces together. It takes a lot of deliberate practice with many problem types to be able to recognize how to decompose problems, however.
So basically you're asking for a HackerRank screening. In my experience, if your code doesn't pass 100% of all test cases you get automatically rejected. At least with a human interviewer, they can evaluate your thought process even if the code itself isn't quite correct. Trust me you don't want to me interviewed only by robots.
Spaced repetition: https://en.wikipedia.org/wiki/Spaced_repetition
If you don't actively review this material you're going to forget it. I created my own study guide for data structures/algorithms that I frequently review to prevent forgetting any concept. Every few days, or at least once a week, I'll take a blank sheet of paper and try to write down everything I possibly know about every fundamental data structure, including pseudocode and real code for operations such as searching/insertion/deletion. When I go through interviews I read my notes and do this active recall exercise at least once a day every day. Unfortunately there's no shortcut and you have to actively think about and code this material in order to remember it (if your day job doesn't involve knowing those things).
Technical interviews only test your data structures and algorithms skills and your actual work experience is mostly irrelevant. If you want to crack an interview, grind leetcode and practice writing code on a whiteboard. If you want to become a better developer, create software.
The San Francisco Marathon (for 2019) costs $233 to register for the full marathon, and about $143 for the half. It's definitely overpriced here.
#2: Have almost too much self-belief. Self-confidence has been something I've struggled with my entire life, to the point where its crippled my career growth as a developer. I've been told that I'm a good developer, but if I only believed in myself I could go a lot further and become truly great. However, it's hard for me to believe in myself when I don't have a lot of data points to prove that I AM competent and capable. Over the past 3 years of working full-time yes I've accomplished some things, but none of them were truly difficult or ground breaking. I'm always pushing myself harder to learn more and get better, but it never feels like its having enough impact on me actually growing. So if all I have are at best average/mediocre accomplishments, how do I convince myself that no, I AM great, that I CAN do this? I feel like if I start having a lot of self-belief it'll just become a lie that will blind me from my weaknesses and cause me to stop growing.
Read these two books: "HTTP: The Definitive Guide" and "Web Scalability for Startup Engineers".
That's hilarious and so true. Last year I interviewed for a senior back-end engineering position at a well known mid-sized company in the Bay Area. They put me through 2 technical phone screens and a 6 hour onsite interview, grilling me in detail about system design, domain knowledge, personal experience, and of course doing endless exercises of writing solutions to algorithmic problems on a whiteboard. I really felt like I nailed the interview but they still rejected me because they thought my technical skills weren't good enough. 7 months later I start applying to jobs again via LinkedIn, and guess what, that exact same position on the same team is still open. It seems insane that during the past 7 months they couldn't find a single person to fill that role. Makes me wonder if they know what they're really looking for.
2015 15" Macbook Pro. The screen size and resolution is perfect for coding and watching movies. Keyboard is super comfortable, the touchpad is the best of any laptop I've ever used. The physical size and weight of the laptop is hardly noticeable in my backpack. It integrates flawlessly with all my peripherals like a mechanical keyboard, mouse, external monitors, etc. macOS is also sleek and simple. The overall experience of using that MBP is a pleasure.
You can't learn this in a book. You need to put yourself out there (in social settings) and learn through trial and effort. Much like reading books about weight lifting won't make your body grow muscle, you need to actually get inside a gym and put in the work.
I was given a take home project to complete as part of an interview process for one company. I was given 48 hours to implement a basic chat server in Golang. I didn't know Golang, but the hiring manager thought it'd be a good challenge to see how quickly I learn new things and deliver results. I spent an entire weekend learning Go and tried to be honest about using only 48 hours to write the application. I wasn't given any skeleton code, had to implement the whole thing from scratch. I never made an entire web app from scratch especially in language I wasn't familiar with so the learning experience felt like drinking from a firehose. I learned a ton but couldn't complete the project because it was a bit too much on top of my full-time job and going through interviews with other companies, so I submitted my barely functioning code in shame and knew that was automatic rejection right there. I wonder if I'm just a shitty developer or if given enough time I would have been able to make it work.
Sci-fi
- Ready Player One
- Pattern Recognition
- Burning Chrome
- Do Androids Dream of Electric Sheep?
- Hyperion
- A Fire Upon The Deep
Technical (backend development + security)
- HTTP: The Definitive Guide
- RESTful Web Services
- Designing Data Intensive Applications
- Web Scalability for Startup Engineers
- The Art of Software Security Assessment
- The Web Application Hacker's Handbook
- A Philosophy of Software Design
- Clean Architecture
- The Go Programming Language
- Refactoring (new 2nd edition)
- Algorithm Design Manual
- Cracking The Coding Interview
I'll definitely be able to get through all the sci-fi novels, but not the technical stuff. At minimum I need to go through the technical interview prep books, refactoring, and designing scalable applications.
I'm a Bay Area resident but visited Austin for the first time over the weekend. It's an amazing city, but the locals were openly unhappy about any more Californians moving there. Seems like there's already a big ex-CA population.
I recommend Limber 11 to get started: https://www.bodybuilding.com/fun/limber-11-the-only-lower-bo...
Eventually you'll need to fine tune the program according to your needs. Becoming A Supple Leopard is basically the encyclopedia for mobility programs/exercises: https://www.amazon.com/Becoming-Supple-Leopard-2nd-Performan...
$20 foam roller. As someone who lifts weights, runs long distance, but also sits at a desk for 8+ hours a day, my body gets so incredibly tight by the end of the day. As soon as I get home I spend 20-30 minutes working on mobility from my neck down to my ankles. The foam roller helps a lot with that. It's painful but I feel so much better after.
This year I've failed about 15-20 technical phone screens and two onsite interviews. These were SWE roles at SF Bay Area companies and I have 3 years of experience working in the area as well. I'm going to take a break for a few months, do some more interviews next year, and if that doesn't work out then I'm giving up on trying to find a new software engineering job and will become a lifer at my current company.
All my notes are stored in Google Docs, but I sometimes worry that if it ever suddenly becomes deprecated or I'm locked/banned out of my account for whatever reason I'll lose many years of important knowledge. I wonder if I should copy/paste all my notes from Google Docs into plaintext files.
To improve information retention you should exercise your "information retrieval". Basically, take a sheet of paper, write down the name of a topic you're learning or a book you're reading, and then write down as much information as you can remember about it. Compare your notes against your previous attempts to identify what you need to focus on studying/remembering more. Repeat this exercise until you can comfortably recall all the main ideas.
Two books I highly recommend that can help you with improving reading and learning skills: 1) "Make It Stick" by Peter C. Brown 2) "How To Read A Book" by Mortimer J. Adler.
Good luck!
I work in the security industry, and for me, it was attending the DEF CON conference. I was feeling very demotivated and burned out at my current job, but going to the conference rekindled my drive and thirst for learning. Being surrounded by so many like minded who are incredibly passionate about their craft, and actually talking to and learning from these people opened my eyes to how many interesting things there are to learn. Of course, the presentations and workshops were very educational as well. I just bought like five books that I want to devour as soon as I get home, and start working on more projects in my spare time. In your situation, maybe going to a conference or even a local meetup group, or just in general surrounding yourself with passionate people, might reignite your sense of wonder. Good luck!
IMO once you're past the beginner stage of learning a technical topic (which is what most MOOCs provide), you have to either develop side projects or work on open source projects to learn more advanced concepts.