32 Days Left!

In 32 days (approximately) I’ll be a mum. Strangely I’m not very anxious about it at all. The only thing that concerns me is the first couple of weeks where I’ll have next to no sleep because of the 2 hourly feeds (i’m not great without sleep) so this should be a challenge, but I’m looking forward to it. It’ll be nice to put a face to the little person I’ve been talking to the past 5 months.

Over the next 30 days I have a jam packed schedule. My husband and I need to finish decorating our house (yes I’m still doing DIY), I’ve a load of books and PDFs to read related to my job and interesting topics, I need to dust off my MacBook to develop something in Unity and squeeze in some 360 gaming.  Not a lot at all!

Wish me luck!

9 steps to approach a development task

We work using the agile methodology SCRUM. For those that aren’t familiar with the process, here’s a brief explanation.

SCRUM is a process of working to create a product that is iteratively developed by breaking down all new requests for big features know as Epics into bite sized chunks called Work Items. Each project usually has a team of 5 – 9 people (the optimum being seven) working on a set of items for an agreed length of time, known as a Sprint.

Our team sprints usually last two weeks so every two weeks we have a new set of items divided up between the team.

As a new developer I’m trying to focus on producing the best work in the minimum amount of time. This is obviously going to take me longer than someone who has a number of years development experience but getting into the right process now may save me so much time in the future.

In our team we are using Test Driven Development (TDD) so instead of jumping into development, you write out unit (or integration tests) to check that your work passes. This produces a quick way to check after you have finished development if any issues have arisen within your code even after years of functionality being added. New functionality means new tests to be written so eventually you build up a solid set of tests to fully cover the code you have written.  This is known as code coverage.  The tests that you write are located in a separate test project alongside your project within your solution.

Early on into my transition, I asked my manager (who’s been developing for about 10 years across different technologies and software) the best way to approach a task.  Here’s his advice in 9 simple steps.

1. What’s your goal?

You must clearly understand your work item, what the business requires from this change and what the business value of this change is. If you’re not sure about any of these things talk to people to gain this knowledge before attempting any coding.

2. Discuss the best way to accomplish your goal with others

Consult with other more experienced minds in your team to help you get to your solution quickly.  The aim here again is to use your time efficiently.  By all means try and overcome challenges yourself but be mindful of the time you spend on it.  You should not and do not need to shoulder all the work yourself.  No matter what level of experience you have, don’t be afraid to ask for help.

3. Breakdown your goal into tasks and objectives

Smaller chunks are easier to digest.  It’s just logical.  So before you begin, think about your goal and what you need to do then tackle each task one step at a time.

4. Look for similar, existing unit tests and run them

Think about the current functionality that exists in the product your enhancing.  Is there anything similar that you can step through and debug to help you make your task easier?  If you find any methods like this try and find tests that execute these methods to check if you can extend them to fulfil your new task.

5. Write your new test

If all else fails, write a brand new test from scratch.  But start by writing a test and not by writing the code for your solution.

6. Solve the task with the minimum amount of code

Try and use the least amount of code to write a solution for your task in order to fulfil it.  Don’t worry about efficiency yet, just get it done.

7. Make your test pass

Run the test over your small chunk of new code ensuring that it passes and fulfils it’s task.

8. Then refactor your code

Now that your test has passed you can extend your solution to become more efficient.  Don’t forget that for every new method you may need a new test.

9. Work back through step 7 – 9

Repeat steps 7 through 9 to ensure that the changes you have made in your code don’t make the test fail.  If it does, debug the test to find out why it’s now failing.

Feel free to add in as many asserts to verify the outcome of your tests are correct and reliable at any stage.

And that’s it!  Easy right?  Well no actually, it take quite a lot of discipline especially when you’re a junior developer to avoid jumping straight into coding the solution.  But writing tests as you go along will save you time during and after the development of your tasks.

Related Links

So what’s the difference between web sites and web applications?

After watching Scott Hanselman’s presentation Cloud development with Azure and Visual Studio on Channel 9 I was quite intrigued with learning more about Azure and how it would assist my projects.  But first of all I wanted to clarify (if only within my mind) what was the difference between a web application and a web site?  I’m sure this is pretty basic knowledge for most people but I want to ensure that I do all the ground work and not bypass anything so asking the basic questions will be very much a part of my learning going forward.

From what I can gather the answer to this question has many variations and is completely subjective, however, most of the answers have similar points.  So these are my definitions:

A web site contains static content that is only able to be viewed by the user but it cannot be interacted with.  The contents of the site does not change depending on the specific user or their actions.  A good example of this would be a news site.

A web application (web app) can be a web site containing elements or features that can be interacted with by the user to display specific content.  The content changes quickly and depends fundamentally on data processing and back-end storage.

References

10 tips for new software developers

So what is a software developer?  Well at least for the foreseeable future it’s me.  Yep, I made the decision to take on the new challenge of becoming a software developer so no more manual testing.  I’ve spent five years building up a wealth of experience from manual and automation to games and web based product testing.   So I think it’s time for a change.

So what do I do now?  

At the company I currently work, there are software developers (covering a number of teams and specialisms) and there are web developers.  Software developers handle the backend and server side of the web systems while web developers specialise in the front-end design of the web products.  I’ll be working as the former and there’s a ton of new tools, tech and languages that I have to grasp in order to be any good at my job.  Luckily there’s a couple of others making similar transitions so we can all learn at the same time.  

As I make this transition I’m struggling to remember anything useful that I can apply from my days at university to my current situation.  Unfortunately most of the languages and software that were taught to me have been surpassed by newer ones.  So it’s back to basics for me.

After scouring Google I’ve found this article 10 tips to go from a beginner to an intermediate developer suitable for anyone also beginning a role as a software developer.

I’m going to be consuming a lot of information at least over the next year so I’ll try and share what I feel is useful to those in the same situation.

7 ways to change your habits to achieve your goals

After listening to episode #71 episode on the RED podcast I came up with this short list of actionable tasks that I was going to try and adhere to in order to change my habits to gain more time, focus my attention and achieve my daily tasks to help me reach my long term goals.

In no particular order here’s the points that I thought were most useful.

Continue to challenge yourself

Working within any area of technology means that you constantly need to be learning and reading up on the latest updates in and around your field. Use this knowledge to continually challenge yourself by trying to use the latest technology within a small project. This give you a good idea of whether this tech could be used within your projects to benefit you in the long term.

And don’t just stick to your strengths. Try and implement new tech that’s completely out of your comfort zone. If after, you realise that this wasn’t a good fit, just think of how much knowledge you’ve gained reading up and implementing it. This will always be a valuable use of your time.

Watch your money

Keeping an eye on your cash flow is extremely important in small businesses. You more than likely won’t be able to afford an accountant within the early stages of your business so you need to discipline yourself with your spending and get into the habit of recording everything clearly and routinely so that when you have to file your financial details at the end of the tax year the task will be as painless as possible.

Have goals

How can you know where you’re going if you don’t have any goals?  Think of where you want to be in one, five or ten years.  No matter how big you think your goals are write them down.

Use lists to work towards goals

Yes, you may have huge goals that you think are unobtainable at first, but by breaking down your goals into smaller achievable tasks you will find that your goals are easier to get your head around.  And by chipping away at them in bitesize chunks, you will slowly see that your goals are a lot closer than you think. Start first by splitting your goals into years, then split the first year into months then the first three months into weeks. Finally you should be able to generate a daily tasks list.

Having short term lists for daily and monthly tasks will keep you on track to achieving your long term goals no matter how far into the future they may seem.

Work in order of importance 

If you get the most important tasks done first and earlier in the day you’ll feel better, like a weight has been lifted and will be more inclined to complete the remaining tasks.  So list your tasks in order of importance. You may find that this allows you to more time in the day to relax.

Go to sleep early/on time

As I commute 4 hours a day I need a decent amount of sleep.  And although I try and make sure I don’t go to bed past 11, I still have a problem with winding down. My brain doesn’t switch off when I jump into bed so it takes me a long time to fall asleep. If you’re like me, try and start to prepare for bed an hour before so that once you get into the covers you’ve dispelled some of the thoughts about daily tasks or challenges that you need to face the next day. Enjoy your sleep.

Drop TV

This is something that I will personally struggle (and probably fail at) as I watch a lot of TV series with my husband and by myself while working on my projects.  It’s something that I really enjoy and is a hobby that my partner and I spend doing together. So while I’ll attempt to focus more on the other points, I don’t think I’ll be able to adopt this good habit.  Be better than me and drop TV to achieve your goals. 

To listen to the full episode go to the RED podcast – Episode 71.

Entrepreneur podcasts

For those who want some advice from people who have made the leap to being a full time entrepreneur, the people on these podcasts have the experience and can help you along the way though your journey.  Or, if you just want something interesting to listen to on your commutes they’re not bad for this either. With the scheduled hiatus on the App Business Podcast I thought this was good time to share this list.

If you listen to any additional podcasts about entrepreneurship or developing a business with mobile that you think could be useful to others and is interesting why not share a link in the comments section.

Ask Me Anything!

I’ve learned a lot over the last 2 years. I’ve released my first app to the App Store and Play Store and have also gained a great deal about developing with Unity. Besides this I am an experienced Test Engineer knowledgeable in TDD, BDD and automation testing of web sites.

Recently I’ve also been working on my web development skills learning how to create ASP.NET MVC sites so that I’m confident designing and developing websites.

Over the last year I have been actively trying to create the foundations of a sustainable business so I’ve read numerous blogs and eBooks as well as listening to tens of hours of podcasts. 

I want to share this information with as many people as I can so I want to encourage anyone who has questions about developing their first app, using Unity 3D, starting a business or website development to contact me. For those short questions, feel free to fire them at me via Twitter @kayleigholiver or if you have a more detailed question you can send me an email to kayleigh@takeinitiative.co.uk.  But, if you prefer to have a real conversation, you can get hold of me on Skype using the name kmari1985.

EGX 2014 and Goal Setting

I’m a very goal orientated person. I work best when I know what I’m working towards. I can make plans and prepare. My focus is channelled towards achieving that task. I believe that everyone should have goals, even if very loose ones.

I like to divide my goals into three: short term, medium term and long term. I like to keep these goals somewhere I see them everyday so I know where I’m heading and what I’m working towards.My short term goals are listed on the Colour Note app on my phone. Here I write down daily tasks. Pinned to my notification bar, I can always see it. My medium tasks are monthly ones. These are created from my long term goals which have been broken up so that I can digest the load into manageable chunks but also produce something every month so that can see progression and have something to show for it. These are usually blu-tacked to my bedroom wall next to my long term goals. My long term goals are very high level but precise so that they are measurable, simple but accurate. Going to EGX made me realise how much I want to achieve my long term goals and has motivated me to keep pushing forward.

EGX 2014

The last time I admittedly went to EGX (then known as Eurogamer) was about 4 years ago. The exhibition hall was the smaller venue around the back so gamers seemed to have to go in through the “back way” like some dirty little secret. The show floor was only on the single level and there were vast amounts of open space. So when I went this year I was shocked.  The venue had moved to the larger double-floored hall where the entrance was at the front of the building making the wedding show also exhibiting that day in the smaller hall at the back. The queue for the 11am tickets stretched far and wide around the corner. Luckily getting in was far easier and shorter than for Comic Con earlier this year. Within about 15 mins we were in and my husband had run off (literally all I saw was dust!) to the Evolve queue. My sister and I walked around slowly taking everything in and looking for good candidates to interview for her dissertation. Always prepared, I had a list of games ready that I wanted to see/play so we made our way slowly round and stopped at other interesting stands along the way to say hi to friends running them or because the games looked great.  I played or watched the following games that day: Dragon Age: Inquisition, Fable Legends, Overruled, Tulpa, Lara Croft and the Temple of Osiris, The Room 3, Hyrule Warriors and a racing game that you control with eyes.

What I realised by going to EGX was the amount of indie developers producing great games and being able to present them at this kind of show was getting more common. And if they could do it, why can’t I? So I revised by medium term goals and because of this also my short term ones to help me reach my long term goals next year. Life may get in the way (especially considering I’m now 6 months pregnant) but if I don’t try then I won’t know. I hope to post more regarding my journey over the next 12 months so that you too can make the leap to indie development.

See you at EGX next year!