How to become a Software Developer – Create a Time Budget

Time is our most valuable resource.  There’s no guarantee of how much we’ll get so we’ve got to make the most of it.  With a family and career I’ve got to be careful about managing time so it’s important to stick to a schedule that aligns with my purpose and goals.  I’ve found that I don’t get anywhere without setting some boundaries for my time.  I’ll find myself wondering where the time went and end up frustrated if I’m not intentional about allotting blocks for specific activities.

Time Keeps on Slippin’

Time gets away from me so easily and I’m sure that you can relate.  As I get older, I’m in my 30’s as of this writing, it’s even more obvious and I feel pressure to do better with managing my time to help me make the most of it.  It’s amazing how quickly it seems that days, months, and years seem to pass by especially as life accelerates with family and other commitments. 

Knowing that I’ve made my best efforts with planning my time helps with the regret and is hopefully making me better with making every minute count.  We’ve got to keep moving forward with the best of intentions and look at each day as an opportunity to do better.  Each day that we wake is a gift and should be treated as such.  It may take a little coffee to improve your outlook but do what you have to do to create momentum on the days regardless of what you’re doing. 

Remember that you can’t change the past but you surely can create a better future.  Learn from past mistakes and stop doing the things that are hurting your progress.  Don’t beat yourself up over anything but respect that you may have a weakness or two that needs some help.

Protect Your Time

An important aspect to setting your time budget is making yourself and others aware of it.  Getting a mentor or accountability partner should help with this.  It could even be your spouse or significant other helping with this.  You should actually make them aware first to make sure that they’re on board with it!  You’ll certainly run into conflict if they’re not in the know and your career move, especially into something like Software Development, will go slower or may fail.

It’s easy to loosely set periods of time in your mind for things but getting it down on paper or in digital form helps with sticking to it.  For example, just saying I’ll get around to working on task A in the morning is probably not good enough.  I have to commit to it and be protective of that time down to hour.  I may even assign smaller periods of 15 or 30 minutes depending on the granularity of the tasks.  You have to set these boundaries and protect them with your WHY in mind.

Put barriers in place to help keep you on track.  This could be creating a space where you can work and learn distraction free.  It might be installing monitoring or restrictive software that only allows you to open certain programs and access certain things on the web.  Don’t let other people’s agendas take over.  Get good at saying No unless it aligns with what you’ve already planned to do.

168 Hours

Everybody has the same number of hours each week.  You may see others that are succeeding and wonder how they’re making such great progress.  It comes down to your priority, becoming a Software Developer, and aligning your time with it.  We make decisions constantly and each one affects the overall outcome.  If we don’t plan our time then somebody or something else will dictate it.  It’s easy to do but don’t let this happen!

Create Your Time Budget

You’re probably familiar and have likely done a personal finance budget.  I’m a big fan of budgeting my money as well as time.  Hey, time is money, right?  So doesn’t it make sense to budget both?  Being the focus of this post I want you to come away with an action to create your time budget.  Doing so will free you from the whims of life and put some guardrails around what little time you probably have to work on your move into a Software Development career.

  1.  Determine your non-negotiables – Sleep is top-of-mind here.  We all need sleep and probably need as close to 8 hours as possible to be effective.  If you say that you can get by on less than 6 then you’re probably not operating nearly as efficiently as you could be and fooling yourself.  Even at 7, which is closer to what I typically get, I feel that I’m not thinking as clearly as the days when I get the full 8 hours.  Other non-negotiables are things like eating and working or going to school.  For me, family and prayer time is in this category.
  2. What’s Left?  The remaining time is for working on your Software Development career, exercise perhaps, entertainment and so on.  Hopefully, you’ve got at least 10 hours per week remaining to work towards learning and doing things to get into your ideal role.

When creating your budget you don’t want to leave any time unassigned.  If you’ve come across Dave Ramsey then you may know that he advocates budgeting every dollar, he’s even got an app by that name.  I think that it’s equally important to budget every minute so that your time is not lost to the whims of the world, perhaps whatever is on TV or popping up in your social feed.

It’s difficult to stay on top of time and there will be days when you won’t be able to keep up.  I’m here to encourage you to keep going.  Keep you schedule or time budget top of mind but peaking at it frequently.  Let others know what your doing and that you’re going to be protective of your time.

I’ve created a template for download.  It provides entry for all 168 hours of your week.  Go ahead and fill it out.  I suggest filling it out weekly as it’s likely that you’re schedule will change.  Maybe come up with a baseline schedule and create variations of it week to week.  Good luck with staying focused and on schedule as you work toward becoming a Software Developer!

Get the Time Budget 

Just click here to download and fill it out!

How to become a Software Developer – Your 90 Day Plan

Why you need a plan. 

All good things start with a plan.  That’s especially true when you have a goal, such as becoming a Software Developer.  Any dream needs to be converted into a goal, meaning that it is something that you can clearly define and achieve.  Anything that I’ve tried with any varying complexity has not turned out too well without some sort of plan.  This includes things professional and in my personal life.

Without a plan or direction we end up ‘floating’ along to wherever life takes us.  Have you ever swam in the ocean and found yourself unexpectedly away from where you started?  Life throws things at us and acts a lot like the currents of the ocean.  If you don’t keep an eye on where you want to be then you’ll find yourself constantly fighting to get back to where you want to be.

The duration of the plan depends on the nature of the goal.  Becoming a Software Developer may not be a clearly defined or easy path to follow so that’s where I come in to be your guide and help you to not waste time.  

The idea is that you’ll be ready to go into your job search with full force at the end of 90 days.  Some may get there earlier, some a little later. If you put some thought into your plan and execute it with intensity and enthusiasm then you’ll be way further head in a few months from where you are now.

Your goal may not even be to get a job in 90 days but if it is then I want to give you the best chance to get there.  This is to give you momentum and get to a place where you can say with confidence that you’re a Software Developer or if you need to adjust at the end of the period.

Create Your Plan

I’m going to give you a framework to follow.  You’ll go from deciding on your focus, to learning, branding, and ultimately to a job.  The following is an overview of what we’ll cover.

  • Software Development niche or specialization.  
  • Setting monthly, weekly, and daily goals.
  • What to learn and where to learn it?
  • How to accelerate your learning.
  • Testing your skills
  • Gaining experience
  • Finding a mentor
  • Building your brand as a Software Developer
  • Create a position profile.  Define your dream position.
  • Create a career profile.  This is defining the ideal company that you’d like to work for.
  • Networking – Finding others like yourself where you can get help and even help others.
  • Interviewing and job offer.

You may be thinking that there’s no way you’ll be able to go form zero to job in 90 days.  This does depend on your current skill level, how much time you can put in, and your aptitude for writing code.  Whether you have no experience, 1 year, 3 years or 5 it’s good to get a plan and timeline in place to help you along.  The important thing is that in 90 days you’ll have a clear idea of your future and confidence to move into it.

 

How to become a Software Developer – Experience Matters

My real programming career didn’t begin until I got into a job where we were re-writing a system, going from C/C++ on Unix to .NET and Windows servers with SQL Server running as the central database.  Once I got to see my work in action, I was hooked and knew that I’d found my niche in technology. One of the major factors as well is .NET/C# development. I had done mostly C and C++ in my early career but .NET opened up so many possibilities to do things quickly and made it possible to provide a better solution.  In the early 2000 ’s .NET was new as well so it was exciting to be working on something that was ‘cutting edge’ or at least close to it.

We’ve covered your why and gained a better understanding of what it takes to be a successful Software Developer.  Today, I’m going to briefly talk about your past experiences and how they matter a lot to your development career.  I want you to be intentional so that you can have a meaningful career and avoid some of the pitfalls.  Think about how you can apply the things you’ve done to Software Development.  It doesn’t have to be things you’ve done in your career or work history but also your hobbies and things you enjoy doing otherwise.

This post and exercise is to help you relate past experiences to your future to help you move forward with confidence.  What has happened and who has helped you get to where you are? Did you take a class that sparked your interest in technology or programming? 

For me, the closest thing to a computer class that I had in high school was typewriting and then word processing.  I had computers growing up, but this was in the mid to late 90’s when the internet was in its infancy and software careers weren’t as prominent.  I mainly played games like Doom and performed web searches (pre-Google) for a few things for school research. I wasn’t introduced to programming until my college years and honestly wasn’t that into it.  I ended up going with a Information Systems major in college thinking that I wanted to work in technology in general and a lot of that was because the job market was strong.

If you haven’t had any technology experience yet then what is it that you’ve enjoyed doing?  Do you like creating things in general? Do you help people out when they have a phone (pocket computer) question?  How have you helped others?  Writing software is about enabling people and giving it your best when doing so. If you’re into helping and enabling people to live better lives then this career opens you up to do so.  Life is about helping others and the more people you help, the better off you’ll be.

I’ve met people with degrees and early background that don’t directly relate to Software Development or even technology at all.  For example, if your degree or experience is in English but you still have a knack for writing code then it will work.  Writing code does align with writing in general.  Software Development is an art and requires creativity.

You can even couple your background with it.  Let’s say that you work in Finance.  Financial institutions need software and could use your background to make a better solution for them.  It could be that your current employer is where you start your transition.  Before you make any big career moves, let’s make sure that development is your calling and then commit to it.  Once you’ve committed then start making it known to people, at least family and friends to start with, and you’ll start seeing doors open, possibly even at your current employer.

You’re creating your story and legacy right now.   What do you want your future to look like and how will your past help you?  Write down (or add to your favorite note app) at least 3 of your past experiences along with why they matter to your future in Software Development.

How to become a Software Developer – Common Traits

It’s taken years for me to develop the traits, that don’t come naturally, in the following list.  I’m still working on most of them.  There are some, maybe many, days when I’m a complete failure at some of them.  So, don’t be hard on yourself!  All of the items in this list are needed for you to get better as a Software Developer and apply to life in general.

In the previous post, I covered questions you should ask yourself before starting a Software Development career.  In this one I’m going to list 20 traits that I see are common in successful developers. I originally had 15 but kept finding more in my research and preparation for the post.  The list isn’t in any order of importance but most aspects are more important if you’re going to make this work.  Some of these may overlap with the ‘quiz’ in the last blog post but iteration is good, right?

  1. Learner – Do you have a drive to learn new things?  If so, good because technology, including the development field, is constantly changing.  Let’s put together a long-term learning plan of 3 to 6 months to help you stay focused with an intentional list of items/topics to work through that will help you achieve your goal.  Later in this blog series, we’ll dive into creating your learning plan.
  2. Tester – As a developer you have to test everything.  I’m not a Test Driven Development purist but I believe that you need test cases for every high level requirement down to unit tests for each module/class/method.  Always create a test before releasing code.  This will save you time/grief later.
  3. Problem Solver – Do you enjoy a challenge or does it get you down?  Every problem is a learning opportunity. Unexpected problems will arise or you’ll come across something that stumps you while developing a solution.  Make ‘problem solver’ part of your skill set.  You’re most of the way there once you master solving problems.  Learn how to work through problems in general and how to apply technologies to those problems.
  4. Implementer – You have to follow-through.  Executing the implementation phase can make/break the success of your system.  Creating software is fun and what we’re here for.  You’ve got to find enjoyment in seeing your product work flawlessly or as designed and make your users’ lives easier/better.
  5. Strategic – Some days will be more strategic than others.  I’m talking about being smart and intentional here setting long term and short term goals that you can focus on.  We’ll discuss goal setting a little later when we get into your 90 day plan to become a Software Developer.
  6. Visionary – This is having the ability to envision or imagine things and is akin to creativity.  I guess you could call it thinking outside of the box.  The idea is that you go beyond the base requirements to provide extra or better features in a product.  Now, you want to build these in at design time as you don’t want to create your own scope creep.
  7. Planner – I’m talking more day-to-day execution here.  You’ve got to be able to prioritize and focus so that you can get the small pieces done to eventually get the bigger ones done.  If you can’t execute your plan at every level then you’ll miss deadlines and get into trouble.  You need to come up with a system/routine.  I’ve used simple to-do lists at the basic level up to large projects plans to keep track of tasks.  A kanban board is an excellent way to visually see your work.
  8. Persistent – You’ve got to keep going and see things through to completion, this goes beyond implementation of a particular project.  I’m talking about an overarching mindset that drives you to make the best thing that you can.  If you leave things, even small things, undone or half-done then they’ll come back to bite you.  When you think you’re done, then go a step further.  You’ve got to be ‘done done’ before a task is completed.
  9. Curious – Question things and ask others why they did something a certain way.  Don’t be degrading though, if you think you can do it better, when asking a teammate about their code.  You need to take it on yourself to learn things that you’re hopefully interested in.  Always be on the lookout for new things to dig into.  This is a little different from the learner trait but compliments it.  Curiosity is more of the catalyst to get you into learning ‘mode’.
  10. Hopeful/Optimistic – It’s important to know that you can overcome a problem or a large project.  Attitude is a key indicator in success.  Also, you need to surround yourself with folks that are optimistic.  If you find that a teammate is constantly being negative then try to help them see the benefits of a positive attitude.  Now, you’ve got to be realistic and not delusional but you’re much better off believing that you can achieve something, especially when you have the strengths of a team.
  11. Detailed – I’ve already discussed the importance of being detailed in the quiz email/post.  Even one precision point on a data type can cause major problems with your program.  I like to call this going slow to go fast.  If you take your time and pay attention to things through all phases of development then you’ll save time later.  Don’t rely on the QA or testing group to catch issues.  Performing unit tests on all of your code can aid with this.  It’s going to reflect poorly on you if you’re constantly releasing buggy code.  It doesn’t matter how ‘flashy’ your stuff is, if it doesn’t work then it’s a failure and will cost you later when going back to fix things..
  12. Tool Oriented – The primary tool as a developer is the IDE or Integrated Development Environment.  This would be Visual Studio for me where I spend most of my time. Tools are available and you need to love the ones you’re using.  Nowadays, tooling and knowing how to properly use your tools are key to being a good developer.
  13. Mentor/Mentee – You need to be willing and want to help others.  You also need to be willing to ask for help. My advice is to ask as soon as possible and build healthy relationships with those around you.  Be on the lookout for a mentor.  Even if you feel that you don’t have the experience to be a mentor to someone else try doing this as soon as you can as well.  When you’re helping and seeing someone else succeed it brings out the best in you.
  14. Humble – We all make mistakes and each of us have our strengths.  Pride or arrogance will get you in trouble and eventually make you look like a fool.  Understand that you’re not always ‘correct’. I’ve seen this as a big issue for programmers so learn to humble yourself.  You’ll get way more respect for holding your tongue than jabbering too much to be heard.
  15. Confident – This is close to being prideful but it’s not.  Confidence is knowing that you’ve done the work and have the intelligence but need others to succeed. 
  16. Patient – You need to be patient with yourself and others.  Everybody learns and works at different paces.  Plan for things to take longer than you think.  When you get into writing systems there are always things that come up but you’ve got to build a time buffer in to handle them.
  17. Thick-Skinned – You will get criticized and won’t always be constructive.  People are going to be people.  If you run across some that seem like they’re out to get you don’t let them get to you.  Try to gain understanding and insight into what they’re saying and ask them to explain further.  This will only make you better.
  18. Salesperson – This is probably the last thing that you want to be right?  Think about it though.  Your employer or free lance client is your customer.  You need to treat them as such, just like your favorite store treats you.
  19. Leader – Even if you’re not the manager or a leader by title you’ve got to be able to at least lead yourself.  Lead yourself with excellence.  Leadership is serving others, not the other way around.  Go out each day looking to show somebody something new and provide value that only you can provide to the world.
  20. Listener – Listen more than you speak.  When you do speak make sure that it counts and you’re not doing it just to fill space.

I know there are more traits but I think that I’ve listed plenty to work on.  Pick you’re five areas where you need the most improvement and be intentional about working on them.  If you’re thinking that’s just who I am and you don’t think you can become a patient person then I beg to differ.  You’ve got to put some effort into it.  Remember your WHY?  If anything develop these traits for that reason!

How to become a Software Developer – The Quiz

It’s important to understand what you bring to the table, understanding strengths and weaknesses, as you prepare to move into Software Development.  This post is intended to quiz you and challenge you to think further before moving forward.  It’s to help you set expectations and get the right mindset so that you can go on with confidence.  I’ve tried to come up with the hard questions to help you to build a strong foundation for your career as a Software Developer.

Here are some important questions that you should ask yourself along with some commentary to help you along.

  •  Are you interested in creating things?  As developers, we’re constantly challenged with creating things and doing it as well as possible.  There needs to be a strong drive to create something seeing it all of the way through to completion.
  • Are you a detailed person?  The devil is in the details right?  I’ve been bitten and seen others get in trouble by missing small but important details in their design and/or code among other things.  If you tend to skip over details then you’re going to have to get better at drilling in so that you don’t miss important details during any phase of a project.  We’re human and mistakes will happen.  The idea is to learn from mistakes to get better and put things, such as solid unit tests in place to catch mistakes when they do happen. 
  • Are you curious?  Do you ask why something is done the way it is?  Do you want to find other ways of doing things, thinking outside of the box?  It’s important to ask a lot of questions when developing software.  It’s okay to even question yourself.  I often find myself looking at code from the day before or even earlier in the day and asking myself why I did it that way.  There’s so many ways to write software and often a better way.  You’ve got to be curious to find the better way so that you can continue improving.
  • Are you a problem solver?  Do you enjoy solving a problem?  It really matters if you see it as a ‘problem’ versus an opportunity.  Do you feel dread when you’re told of a problem?  It’s okay to feel this way but as a developer you’ve got to pull up your big girl/boy pants and move on taking on the issue with confidence.  Even if this is a problem that you created, it’s important to stay positive and confident that you’re going to figure it out.
  • Are you persistent?  When you’re stumped do you get frustrated and give up?  You’ve got to keep going until you find an answer.  Keep in mind that it’s never been easier to find answers and help to get you through/over the obstacles.
  • Does Software Development align with your personality?  If you’re an extrovert and feel the need for frequent contact with people then you need to think about being isolated from others as you work.  There will be collaboration time but if you’re primarily a coder then you may find yourself starved for some people time.
  • Would you rather work alone or on a team? Most likely, you’re going to be working on a team of other technology professionals and developers.  In my experience, I’ve had or seen the most success when a team comes together to accomplish something.  That’s when the best things are built.  I look for assignments where I can contribute to make a larger impact and encourage you to do the same.
  • Do you see yourself writing code every day, or at least most days, for a living?  If you’re not into sitting behind a desk (or maybe standing) then you might want to reconsider your path.  It’s good to break the day up but you’ve got to have the drive to get back to the task at hand which is going to require many hours at a computer screen.  This sounds obvious but I want you to really think about it!
  • Do you like learning? One of the most important aspects is being a continual and lifelong learner.  I think that everyone should be this way but it’s critical to working and succeeding in Software Development.

So, how do you measure up?  Do these questions scare you or encourage you?  I think that it’s good be have a little of both when starting something new.  Keep reading the “How to become a Software Developer” series and get in touch with me via the contact page with any questions.  Don’t forget to sign up for the newsletter (top right sidebar) to get posts like this one and other useful info in your inbox.