Software Engineer
Fullstack / Web Development Process
May 06, 2019

Step One: Plan out what you will accomplish today.

It's tempting to just sit down in the morning and get into what people like to call the flow-state. Slam out some good code, give it a pat on the back, and get it out the door. If the world was perfect, this is how every programmer I know would prefer to spend their time.

Enter reality. I've learned (the hard way, multiple times) that this really tends to be counterproductive. Now, when I sit down in the morning, I try and make a review of what I've done this week, what I need to do, and set a reasonable timeframe for it. Everything in web development will take longer than estimated. Data won't flow correctly, your state might not work as intended, the database connection peters out, and I don't think I've had a project yet where Safari or Firefox hasn't broken a critical UI asset yet. Spending a day writing throwaway code isn't good for your client, and it's definitely not good for your mental state.

So, first thing, plan out the day with the big picture in mind. Monday I'll do the frame. Tuesday I'll add data. Wednesday I'll... you get the idea. Make a plan, and then stick to it loosely. Adjust where needed.

Step Two: Research

Adding that new feature? Guess what, if you don't know how to do it, expect to spend a few hours slogging through posts, documentation, stack overflow, and videos about it. Suddenly you're one of the 659 people who've watched an indian speaker try and work through {very niche problem that you thought you'd never have to worry about}. It happens. It's fine to bill for research time. It helps you plan, and if because of it you don't have to redo a week of work, everyone wins.

Step Three: Code

Finally the part where you actually feel like a developer, right? Well, depending on the day, you might not even make it to step three. You might make it to step two. Or maybe step one if that one team member who handles a certain aspect is out of reach, and you have to find something else to work on.

In any case, for step three, the best way forward is to work hard, and not get too frustrated when you hit roadblocks. Reach out to forums and websites. People there are having the same issues, or they have at some point. Be friendly, easy to communicate with, and 8.5 times out of 10, you'll resolve the issue without having to go any farther than that. Sometimes you'll have to just straight out rewrite a large chunk of what you just did. It's a terrible feeling, but it happens. If you follow step four, you won't have to do this as often.

Step Four: Tests

Yep, Tests. Write some bloody tests for your code. Afraid of breaking something? Wish you had an easy way to see immediately if it works or not? Tests. Seriously. Learn to use Jest, or Mocha, or whatever you want. It will make your life easier and better. I get it. Tests are scary. I didn't want to learn, and almost no developer I've ever met has been excited about learning or adding tests. Try making some snapshot tests, I guarantee it will improve the quality of your life.

Step Five: Breathe

Finally, a little bit of advice. I've come to realize that there is always more to fix. No project will be perfect. Most projects won't even be close to perfect. If something breaks, or doesn't work, by all means, fix it. If someone points out that this or that object doesn't look exactly how it should, fix it up, but remember that it's not personal. Web development is difficult. Css is tricky, databases are often complicated, and sometimes even the basics can be hard. Be kind to yourself. Stay persistent, take frequent walks, and stock up on water and coffee, and remember that it'll be OK.