I’d like to share the story of the mindset and habits that helped pivot my life path towards coding. This post is written from my unique perspective with the vain hope that someone equally as ambitious but as helpless as I was, might leave this page having received some encouragement.
Daily practices and outlook are not often coupled with learning to code but I believe it to be a fundamental link in determining whether you make it.
About me? Having graduated from my bachelors in the Humanities, I entered the world of work as a project manager and later team manager in the localisation industry.
Why did I want to become a developer? The ‘thing’ for me was owning my own craft, where I can build something that actually works and may even be useful to others, and like any craft one feels passionate about, you can devote your life mastering it and still find new things to learn.
However, knowing that I wanted to be a developer was only the very beginning.
The following sections will deal with the tips I picked up along the way that helped to keep me motivated as I balanced working full time with other existing commitments.
Better to start imperfectly than not at all
You’ve made a commitment to learn to code, you have set up your study space and course materials. However, instead of sitting down to finish it, you get busy catching up on your favourite social medias.
Then the excuses follow suite, ‘I’m not in the mood yet”, “I’m too tired”, “I don’t have the time”, “I am not capable”, “It’s too late now”, “Now is not the right time”, “I am not talented”, “I am not ready”.
Attempting to justify yourself and stave off action for a later date is easy, but by then you will be dealing with other concerns without having made any progress.
A universal constant when realising a particular task is the correlation between its difficulty and probability to fail.
Coding is tough and requires effort and initiative which we may unconsciously associate with negative feelings such as a fear of failure. In response, the vast majority of people give in to instantaneous feel good and respond to their temporary anxiety with the usual avoidance patterns.
If you want to succeed at coding and change your career, you must be better than that. You need to step out from your safe space and despite your apprehensions, get down and start the task.
The truth is that there is never a more perfect time for you to start other than the present moment, even if you are distracted. You will find it easier to get into a mental flow once you’ve overcome the initial hurdle.
That initiated action is the actual action that you had anticipated. It doesn't often get any better than that.
You may not study perfectly during your sessions but just keep going and over time your knowledge will branch off from that initial launch and develop over time.
I found that cultivating a daily meditation practice is one such tool that can antidote procrastination and help you get going.
I recommend taking a course or downloading an app where you can set daily reminders for guided meditation sessions. I found a really effective time to sit is just before you start a new task.
By recognising your feelings, rather than reacting to them, you can push through your activity without the primal fears discussed above hold you back.
I've learnt that a good state of mind and coding are closely connected. Code constantly breaks for both new and experienced developers alike and it’s not unusual to grind for hours troubleshooting seemingly small bugs. This can be particularly frustrating when you are just starting out and can discourage most newcomers before they’ve even had the chance to take off.
Although we can’t always change how our code breaks, we can change how we deal with it.
Armed with a healthy detachment from negative thoughts and an awareness of the present, you can take back control from habitual procrastination and kickstart the necessary action to reach your goals without feeling overwhelmed.
There are a lot of really good mindful meditation apps, check out Headspace (paid), Calm (free), and Insight Timer (free).
Code every day
A popular productivity technique espoused by some top developers is the philosophy of writing code every day. 
This habit is related to Jerry Seinfield’s “Don’t break the chain” productivity method.  The basic premise is that, where practically possible, doing something every day establishes an unshakable habit, similar to brushing your teeth for instance.
I suggest making these sessions at minimum a manageable 25 minutes. That’s the equivalent of a work period from the Pomodoro time management system.  This short time-window was found to be psychologically effective at helping you to stay focus without feeling intimidated or overwhelmed. Setting a timer keeps you disciplined and instills a sense of urgency where you’ll get more done whilst also avoiding the perfectionist mindset when overly “fine-tuning” a project. You take a quick break after the 25 minutes is up and then set the timer again. You should aim for a couple of these short sprints in one session where possible.
You don’t have to just code and you shouldn’t, you can brush up on your theoretical knowledge by reading blogs, following a course and watching videos, all of which are equally as important as wielding the tool itself. Each session should aim to be meaningful, constituting a daily “win”, such as developing a piece of functionality or completing a textbook chapter.
Set yourself some rules, such as ‘all code must be written before 11.pm’ to prevent you staying up too late. Downloading an app and setting daily reminders can also help to enforce this practice and track your streak.
By maintaining an unbroken chain of daily wins, progress will rapidly compound. An additional bonus is that context switch reduces, as yesterday’s skill gains are still fresh in your mind.
Exploit all opportunities to study
Finding time when leading a busy life is especially important if you are changing careers and often you need to fit your study sessions in and around your daily schedule.
One key moment during the day for many of us is the morning commute, which where I come from in the UK lasts an average of 54 minutes every day . This doesn’t necessarily have to be a waste of time as with some strategic planning, you can recharge and boost productivity.
So rather than burning through your commute staring into space or scrolling through social media, try staying up to date with current tech news, expanding your mind with podcasts, writing the day's to-do-list and even meditation.
Although this isn’t practically possible for everyone, my personal solution was to buy a netbook and work through programming exercises on the train to work. I would also unpack it at any other spare moment, such as waiting for delayed trains or at the airport . You can also include it alongside existing activities such as stopping off for a coffee and cramming in an hour’s coding when out shopping or before heading home from your day job.
Essentially, take the daily things you can’t help and use them as an opportunity to maximise your time to get stuff done and boost your progress.
Mix up your learning avenues
When teaching yourself to code, don’t rely on just one avenue. You should exploit the very wide range of online courses, books and puzzles. I’ve found that every resource has some unique knowledge to offer, even if it’s just explained in a different way.
If you’re on a university course or at bootcamp, you can supplement your learning with additional online courses, such as Khan academy’s maths progression. 
Sometimes when I’ve been looking into tying to understanding a specific area, I’ve used that as an opportunity to take a broad online course covering it generally.
Although I could have targeted my problem much quicker through direct searching, I’ve been able to fill knowledge gaps that I didn’t even know I had.
You should ideally start putting life into your own projects as soon as you’ve built up a good foundation. Coding with empty files is completely different from the safe hand holding of online courses and will push you to learn and tackle problems as you would in the real world relying on secondary resources such as Stackoverflow. 
Make sure you sharing your code on sites such as Github  to boost your CV.
I believe that how we behave and what we become is based on what we spend most of our time thinking about. Taking this leap personally meant that I needed to deconstruct some of my existing identity and figure out who I was now and what I wanted.
Redefining myself helped to positively direct my actions to become a developer.
Now, we often define ourselves without realising it and sometimes negatively, such as by saying "I'm too fat," "I'm not clever enough," or "I'm a smoker." These self-affirmations influence us and encourages the behaviour we’re trying to avoid.
In fact, much of who we are at present is the result of background threads that run in our subconscious. Reprogramming these to think and act in new ways is how you become a whole new person.
The good news is that simply staying on course with your newly established daily habits will overtime change your attitudes and behaviour.
This is most effectively accomplished through repetition, repetition is how humans learn. Repetition. Dance moves, song lyrics, riding a bike, repetition over a period of time. This is additionally why I believe coding every day to be so effective at changing you on multiple levels.
"We are we repeatedly do. Excellence, then, is not an act but a habit." Will Durant, 20th century philosopher
You can also help this along by altering a few things in you local environment. This may seem cliché, but a small change such as your computer desktop background or one or two posters in your room to something coding related will act as small daily reminders that could further re-enforce your new status.
In addition, meet and associate with other coders to hang out and talk about coding. There are a range of outside work activities to get involved with regardless of your skill level and increase your daily exposure to coding and align your social life with your interests.
Check out your local _ meet ups_  or hackathons to soak up knowledge and also build up a network of contacts in your newly adopted industry.
You could also look to find opensource communities to help out, that looks pretty good on your CV and will help you build an impressive portfolio on Github. By the time you're ready to leap into a new job, you could potentially have much more to show than someone who has been coasting in the industry for far longer.
Take your existing skills along for the ride
Although I was ready for a change, I didn’t need to abandon everything I was. You may think that your arts degree or much of your previous work experience is to be left behind now that you’ve switched careers but that’s not the case. That path you’ve trodden so far will give you a unique perspective on software engineering and sometimes enormously valuable domain expertise.
Understanding the why and purpose of the software in a particular industry can prevent many errors from being made. It may be much easier for a software development company to hire a developer with 10 years of software development experience, but someone who knows software development and has 10 or more years of domain expertise is going to be a much rarer find.
Just about anyone can do this, because software exists in just about every major industry.
Furthermore, if you’ve attended or scheduled a work meeting, been given tricky feedback at work, been through a performance review, or led a team, you already hold valuable soft skills that recent computer science graduates may not have. You're going to be more at ease talking with stakeholders, better at meetings, planning and organisation.
You will be able to leverage your background to stand out from the sea of other applicants who took the traditional route. So make sure to sell your hard earned badges when you’re interviewing
There’s no potion for immediate change, the suggestions above are ideas that can be incorporated into your daily life. The key message being that success is the result of habits which need to be done in a consistent way over years to be effective.
A word of advice: We often stay within the bounds of what we feel is expected of us by peers, family members, and even ourselves. Don’t. There’s truth to the old cliché that no one ever reaches their full potential within the confines of their comfort zone. Instead, embrace your new chapter and individual growth.
Don’t worry if your journey isn’t linear: Learning to program is tough; it takes time. If you’re juggling a pre-existing career and other commitments, it may be difficult to focus on it for more than a few hours a week but do it. You may have doubts, you may get distracted, but you will grow if you hold out and stick with it.
 Cirillo, Francesco. The Pomodoro Technique : The Life-Changing Time-Management System. Random House UK, 2018.