Before I fell in love with programming, I was a professional cook. I spent two years in culinary school, and worked in a lot of different restaurants, from dive bars to fine dining. Along the way, I learned some lessons that still guide how I approach my work. Though I'm nowhere close to perfect at any of them, I'm reminded of them when I program and see the scars on my hands and arms from the burns and cuts I collected. I want to share them with you.
Most everyone who starts cooking professionally starts in the same place, the bottom. For most people, that's the salad station, known as garde manger, or pantry. In an industry as intensely competitive as restaurants, the only way to move up is by working as hard as you can. This means being willing to take on any assignment your chef gives you. It means constantly working to master your craft. Always striving to be better than you were the day before, always learning, always growing. It can be hard sometimes to find that drive within yourself. It's easy to get comfortable on the station you've been working for several months or a year, and it can be terrifying to do something different. The best way that I know to combat that and push yourself to work harder, go further, and grow faster is to look at the person next to you and try to work harder than they do. Whether you're a junior dev, or a bootcamp student who just finished writing a "Hello World" program, or even someone with years of experience, there is no secret to becoming the programmer you want to be. It takes work. Programming is a craft like any other, and the only way to master a craft is to work at it all the time.
I learned early on in my cooking career that I was never going to be a head chef. I didn't want to admit it for a long time, but in my gut, I knew it was true. The reason for this is simple, I didn't love cooking. I enjoyed it, sure, but I worked alongside people who lived and breathed to cook and I could sense that they had something I didn't. I saw their passion for their craft push them through incredible obstacles. They were the ones who were seemingly blessed with inspiration from the gods of gastronomy. They always had better ideas, better product, and better technique, because they loved it to the point that they were always working to be better. They read about cooking, practiced their skills, leveled up, cooked outside of work, and as a result they were just better. If you're going to code, if this is your career path, then go all the way. Read as much as you can about programming. Practice your technique by doing code challenges and exercises, and build side projects. Love what you do. The familiar saying "love what you do and it'll never feel like work" is false. At least for most of us. But if you love what you do, you'll love the work regardless. It'll help you keep moving forward when you're tempted to quit.
Opportunity comes to the people who are there when it arrives. You have to show up. To me, this means two things. The first is don't be lazy. If you don't feel like working on a project, work on it anyway. Every day, I talk to a dozen people who are hungry to make it as developers. I'm one of them. If you've already made it, recognize how lucky you are and make the most of it. The second is don't be afraid. If you don't think you can build a project, build it anyway. If you don't think you can write a blog post, write it anyway. Don't let yourself get caught in the trap of thinking that you can't do something because you don't know how, or you're not qualified. Show up, do it anyway, and you'll be surprised at how much you're capable of. You never know what opportunities you might miss out on if you don't try.
The best kitchens are obsessed with organization. Mise en place. Everything in its place. The most common piece of advice I've heard for cooks who were in the weeds, aside from cook faster, was to stop, take a breath, and wipe down your station. When your work area is clean, and your tools are where they should be, your mind is better able to handle complex problems. For a cook, that could be preparing ten different dishes simultaneously. You know what that looks like for a programmer. Our minds need to be clear to debug that problem that has us totally lost, and a good first step is to organize your space, whether that's your physical desktop, your computer desktop, the directories and files in your application, or even your life. Being organized leads to better success.
Plan your work. The best cooks never have to ask what to do next. They have a solid plan of action, written down, that they execute step by step. I have seen so many people fall on their faces because they didn't have a plan (I was often one of them) and so many others kill it because they always had a plan. Plan your day. Write out your projects in pseudocode before you start programming. Sometimes there's no way to get where you want to go without a map.
Cooking is a lifelong pursuit. Even the best never stop learning new things, and that's one of the reasons why they're the best. Programming is no different. There's always something new to learn. So absorb as much as you can, and help out the next person in line. We owe it to everybody who helped us learn to help the people who are where we once were. It's not just a nice thing to do, we learn more by teaching than we ever could by studying. And anyway, the world seems like it needs more nice people right about now. Might as well be us.