Productive Performance for Engineers
It’s been a month now since I’ve joined the ranks here at Echobind.
In these past 4 weeks, I’ve struggled a lot, but I’ve learned even more. Today, I wanted to cover a topic that I overlooked when I first started my internship: organization.
Previously, my usual development cycle went a little like this:
- Get assigned user stories
- Move one over to “In Progress” on the project board
- Load up my editor
- *click* *clack* *click* *clack* *click* *clack*
- Move the assignment to “Done”
- Grab next user story
- Repeat steps 2–6 ad infinitum
With these kinds of habits, it was natural for me to neglect proper planning. At first, I honestly thought that organizing tasks would be counterproductive. You spend so much time thinking about what to do and how to do it. To me, it just seemed way more efficient to grab tasks and hack away until they were complete.
Weeks of coding can save you hours of planning.
During my second week here, I hopped on a Ruby on Rails project and was assigned a somewhat broad feature to implement: “New Patient Referral Confirmation Page”. A seasoned developer might be okay with a task like this, but I found it very challenging. I was drowning in the code base; my browser window had 50 different tabs open, I was writing code that was impractical, I was going off tangents and digging myself deeper into programming limbo.
I found it especially challenging because:
- I was working with a framework that I hadn’t touched in well over a year.
- Ruby on Rails uses a lot of black magic under the hood that isn’t clearly explained.
What problem does the feature actually try to solve? What directory do I start working in? What files do I need to create or edit? Am I missing something important or is my syntax just off? I had no idea where to begin..
Create Actionable Tasks in a Linear Fashion
Later down the road, we created acceptance criteria and actionable tasks from the user stories that were given. We broke it down into bite-sized, consumable pieces that could be easily completed.
User Story As a new patient, I should be able to confirm a referral that was emailed to me. Tasks Create static page Create route /invite/referral/:referral_id Create view Displays the following fields: Title (Referal #XYZ) Created By (Referrer Lab Name) Created For (Patient Name) Patient Email Patient Phone Number Actionable Tasks Can edit the patient information (Form) First Name Last Name Email Phone Setup password Logs in user upon acceptance Can accept the invitation "Accept Referral and Create Account" Button Acceptance Criteria As a developer, I should be able to hit /invite/referal/1 and see a static page with the information for the referrer and patient on that page. There should be a form with the fields filled in and I should be able to edit those fields. Referrals that have been accepted should not be viewable. This does not include saving or plumbing hookup to the referral creation.
I instantly felt more comfortable. I had direction now. I knew what to do and how to do it. I knew what tasks to focus on and every time I finished one, I could mark the checkbox and move on to the next task. I felt capable and accomplished. My productivity was now visible and tangible.
Streamline Productivity with a Weekly Agenda
Working in a perpetual and endless cycle of tasks for your project might work well for some people, but I found it much more rewarding and productive when I created a weekly agenda. Something that helped me a lot with this was Notion.
My agenda for this week created in Notion 📔
Notion is a workspace that allows for collaboration between everybody you include in your organization. You can create tables, to-dos, lists, and even project boards. You can share notes and documents, @mention team members, and add comments to anything. It’s sort of like a wiki for your organization.
It allowed for me and my mentor to create weekly agendas and notes together. I found myself using it more and more as the weeks went on. I love using it as an agenda/planner, for jotting down quick notes and for collaborating on documents — but most importantly, I just really enjoy clicking checkboxes.
After a few weeks of working through my agenda, I realized a couple of things that were effective and left me feeling triumphant by the end of the week.
📚 Stack up your tasks near the beginning of the week
Try to fill up the beginning of the week with a good amount of tasks. You want to try to taper them so that the end of your week looks sort of bare. This will allow you to stay agile and move some of your work downstream if they took longer than expected.
☝ ️Keep important tasks near the top
Organize your days’ tasks so that the ones with higher priority are at the top. You’ll be able to focus on work that matters the most and get that done before looking at easier ones. It’ll also allow you to spend your energy on harder projects at the start of the day before tapering into easier tasks as the day goes on.
⏰ Time-box your tasks
Making deadlines and arbitrary time limits create a session where you’ll say ‘Hey, I need to lock down and focus so that I can get this done by this time’. Finish what you can within your time constraints and move on to the next thing.
An added benefit is that it allows you to mix-up your work for the day, so if you have other projects, you can focus on those. You can switch to a different project and use a different part of your brain so that you don’t get burned out working on the same problem for hours.
Sometimes, it’s hard to think about where to start when you get assigned a new project. There are a lot of variables you have to consider: what does this project aim to do? How can I execute it efficiently? What are the first steps?
Hopefully, you can see how sitting down, compiling your thoughts, and organizing your tasks can help you accomplish your objectives. Planning it all out creates a visual roadmap and pipeline that you can easily follow.
Planning things out like this might not work for everybody, but it worked really well for me. If you find yourself struggling with productivity, I would suggest you try mapping out your goals and tasks. You’ll feel very accomplished when all those empty checkboxes become filled! 💪