While I teach my apprentices how to write code, there comes a time where I have to be able to write my own code.  In the classroom, I’m good at using canned examples and even better at coming up with other relevant examples.  I really enjoy that part of my job – while I’m the queen of typos when it comes to live coding, I’ve learned to get past that and just have fun, which makes it that much easier for me to live code.

However, when I’m out of the classroom, I somehow escape that mindset and end up facing the same issues my apprentices have – getting trapped in my head between ideas and code and fighting through analysis paralysis.  Thankfully, there is a part of me that listens to what I tell my apprentices, and this is what my latest adventures have led to.

Brainstorming on Paper

Despite this being a digital age, I am one who thrives when I have pen and paper.  From drawing wireframes to making lists of things to be done, I find myself making lots of notes.  Whether it’s drawing on pads from UI Stencils or the many notebooks I’ve gotten from conferences and other events, I’m making notes of what I envision the user experience of the app to be.  As I do that, I watch wireframes flying out of my head, followed by data models.  Notes are added by buttons and menus as to what I expect to put there.  It’s such a fun experience once I get going.  By sketching my ideas out, I can make sure I’m on the right track.

Recently, I was asked to create a dashboard application, and while it’s something I’m working on solo, I still drew out some of my thoughts. Since I’m using technology that I’m very slightly unfamiliar with and feeling very rusty with some of this, I bounced the ideas off of a friend to see if I was missing anything.  Had I not shown them my notebook, I probably wouldn’t have been able to properly convey where my thoughts were.  It was good to get the ideas out of my head.

Starting to Code

Once I get through the planning phase of an application, then I transition into coding.  As my apprentices tell me, it’s overwhelming when you have a large idea and don’t know where to start. When you feel so overwhelmed by analyzing the problem and don’t know where to  start – that’s analysis paralysis.  Sometimes, sketching out the app makes the app seem larger than life, a daunting, overwhelming task.  So many moving parts… how do you know where to start?!?

This is when I take a deep breath, evaluate ALL OF THE THINGS, and break them into manageable chunks.  Sometimes, this means drawing out class diagrams – which is sometimes done on paper and sometimes done in my development tools.  Once I have that outlined, then I have a better idea of where to go.  With my apprentices, I have them do flowcharts to understand processes and flow of the program.  Once we get through these steps, I encourage pseudocode.  This is where I am now on my dashboard app – pseudocoding things and figuring out my layers.

The Nerves of Working on Apps

While I tell my apprentices to get used to failure and to check their perfectionism at the door, I struggle a little with this as well.  Not the failure part – I’ve embraced failure and see it as a stepping stone towards success.  My perfectionism though gets to me on projects.  Does this UX flow well?  Did I lay it out right?  Do I like these colors?  Wait… what if I did…?  The questions flow and I second guess a lot.

In addition to my solo app, I have another app in my backlog that involves coding with a friend.  While I’m excited to be working with this friend on this project, I’m still nervous with my own issues.  What if my perfectionism brings out a not-so-nice, cranky side of me?  (Silly, girl… your friends know how to deal with you.)  What if my code is a mess?  (Seriously?!  You don’t put up with that from your apprentices.  You won’t let yourself be that scattered.  Your chaotic organization won’t be in your code.)

The Excitement of Working on Apps

This is why I’m in software development – the excitement of working on apps outweighs the nerves every time.  I love taking an idea and making it come to life.  I enjoy solving the problems that others are having and making their lives easier or better in some way.  To watch my wireframes and notes turn into something that makes the world a better place – regardless of the size of the project – that is awesome!  When I hit that zone where ideas are flowing and code is flying from my fingertips… such a great feeling!  As for working with friends… to see how we think, where we differ, how we handle differences, and how we work together to make our ideas come to life… it’s quite an adventure!

Conclusion

I don’t think my apprentices or friends realize what it is like when I’m working on an app.  This is what it’s like for me to go through developing an app.  And with that… I’m off… another app to work on!