Getting started in the field of software development is difficult.
No doubt, if you are just starting out as a programmer, you have already experienced how difficult it can be to get a job without having much or any experience.
If you’ve been a software developer for any amount of time, you’ve probably experienced how difficult it can be to rise up the ranks in this highly competitive industry.
I’ve talked to many developers just starting out who are frustrated because they don’t know where they should be devoting their energies to best advance their careers and secure their futures.
There are so many options. So many technologies you could learn. So many paths you could take. Which is the right one?
Thinking the right way from the start
I’ll give some concrete advice in a little bit, but before any of that advice is useful, it is important to make sure you are thinking about your career in the right way.
It is really important to think about your career as a business. A business you own which employs you. Thinking this way will help you make the right objective decisions about what you should be doing with your time and how and when you should invest money in your career.
Too many software developers think about their career in terms of their current job or the job they seek to obtain—that kind of thinking is short sighted.
Have you ever noticed how it is easier to advise someone else on a decision than to make that same decision for yourself? The reason is because when you advise someone else, you are able to be objective and not let fear and other emotions influence your advice.
By thinking of yourself as a business, you’ll be able to create that same kind of separation and objectiveness which will lead you to better decisions.
Actually start a business
In fact, why not go the extra step and start a business right from the start?
It is difficult to get experience without having experience. Most software development jobs require you to already have experience.
So, how do new software developers or developers with limited experience actually get experience?
Often, you get a lucky break and perhaps you come into an organization in a QA position or other role and eventually work your way up to developer.
That is the long way.
Here is the short way.
Just start your own business from the get go and employ yourself. It isn’t hard to start a business. You don’t even have to file any paperwork to start out. You can just do business as yourself in most places.
But what about work? I need to actually make some money.
Ah, but the point of this starting out business is not to actually make money, but to gain you experience. You can keep your current job and you can run this business on the side. You just need some projects to work on so that you can put some real experience on your resume.
It is pretty unlikely that a prospective employer is going to ask how much money your business made last year, (even if they do, you don’t have to tell them.) So, don’t worry about making money. If you are able to get some paid jobs, great, but there is no reason you can’t do jobs for clients for free in order to gain experience.
Create a website for a friend or family member’s business. Talk to local businesses and ask them if they’d like you to develop an application for them for free or very low cost. It doesn’t matter where you get the business from, the point is to get something on your resume that is real work you did—then it isn’t lying. You don’t want to lie on your resume.
Develop some mobile applications
Here is another great thing that your business can do that will not only get you some experience to put on your resume, but will also possibly generate you some extra income and give you something to show at a job interview.
I often recommend that developers just starting out build mobile applications, because mobile applications can be built by a single person and are a great way not only to learn how to build an application from end to end, but to create solid proof of your ability to write code.
One of the biggest fears that companies have when hiring developers is whether or not that developer can actually produce anything. You can completely alleviate that fear if you can show the source code for an application you created yourself, and if you have it in a mobile app store and people are actually using it, even better.
If you are looking to find out where to get started with mobile application development, I have two Pluralsight courses on the subject: Introduction to Android and Beginning iOS 7 Development. You can check those out or find a good book on the subject.
Here are a couple I’d recommend:
Besides gaining experience to put on a resume, building your own mobile application will help give you confidence in your ability to create real working code and it will help you to develop well rounded skills in software development.
Sure, it may be a bit difficult to get started and there is a decent amount to learn about mobile development, but it is a good investment regardless, because mobile devices aren’t going away anytime soon and the demand for developers that can develop for mobile platforms is only likely to increase over time.
Plan your career
I talk about the idea of marketing yourself as a software developer quite often, because it is something I truly believe can help software developers to get better jobs and earn higher incomes.
Much of this advice comes down to actually planning out your career rather than just looking for the next job.
You want to set yourself up early on in a position where you are building a brand and reputation for yourself that will benefit you later in your career.
A great way to do this is to create your own blog. Don’t wait to do this until later on. I wish I would have started this blog 5 years or more earlier in my career. Every developer with a successful blog that I have talked to has said the same thing.
Don’t just create the blog, use it. Strive to write an article each week. Even if you don’t have anything interesting to say, do it. After a few years, you’ll be a better writer, have a nice history of your thoughts and be all the better off for it.
I’m not going to go into all the details of marketing yourself in this post, but if you are interested, I do have a course that covers everything you need to know about marketing yourself as a software developer.
The key point here is to plan your career and think for the long term. Create a blog, establish a brand, do other things that will benefit you years down the road, but start doing them now.
Find the right friends (mentors)
I’d advise you to make friends with experienced software developers and utilize the wisdom they can impart on you.
It can be difficult to make friends if you come off as needy. It is unlikely that if you ask someone to be your mentor, they will accept. Being someone’s mentor doesn’t really offer much to the person doing the mentoring.
The key is to have something to offer in return so that you are providing value as well.
Here are a few ideas to make some friends in the industry:
- Offer to buy lunch. This is a good opportunity to have a conversation with someone who you otherwise might not be able to. Who doesn’t like a free lunch?
- Start commenting on software developer’s blogs that you admire. You’ll eventually gain their attention if you provide useful, insightful comments.
- Find something to trade. Do you have some knowledge in some other area that someone might be interested in? Can you trade your knowledge of fitness or diet in exchange for information about software development? The best relationships offer value to both parties.
- Go to user groups. There are many user groups all over the world that you can become a part of. If you are a regular, you will meet other regulars and build good friendships.
Read the right books
One of the best ways to really get ahead of the curve is to read the right books. Reading the right software development books can help you to understand concepts that take years to discover on your own and give you the benefits of the collective experience of many successful software developers.
Here is my personal list of books that I’d recommend all software developers start out with.
Code Complete – A classic book about the structure of code. This will make you a much better programmer and help you write clear code.
Clean Code – A great book by Bob Martin that really distills down some key concepts about writing good code. A must read book.
Design Patterns – Read through this book several times and learn these patterns. It may take some time to grasp them all, but they will show up again and again in your career.
Programming Pearls – Work through the problems in this book. They are hard, but the effort is worth it.
Agile Software Development, Principles, Patterns, and Practices – Another Bob Martin book, but also a must read.
Good luck. I hope you found this advice useful. Starting out is hard, but if you are smart about it and deliberate, you can boost yourself several years ahead of others in your same position.
If you found this post useful, don’t forget to sign up here to get more content like this delivered to your inbox.
How to Create a Blog: Getting started
One of the biggest barriers that many developers have with creating a presence on the web is getting started. I’m going to try to make getting started as easy as possible, but not gloss over some of the important details that could hurt you later on when you grow.
In life, I have learned there is always a balance that needs to be achieved between doing things the best way and doing things in a way that is easy enough that you will actually do them.
So, I am going to present you with a few options for how you can get started with creating a blog and you can choose which path to follow based on what fits for you.
The first thing we should talk about is blogging software. What kind of software should you use for your blog?
There are quite a few options out there, including writing your own custom made blog, but I think the best option for most developers is to use WordPress.
I don’t say this lightly, and I realize that in the developer community WordPress might not seem like the best option, but let’s dissect this a little bit.
When you are creating a blog, most of the time your goal is not to show how good you are at creating a blog or using blogging software, but instead your goal is to get your message out, control your image, and build a home base for yourself on the web.
In business, we’d say that your blog software is not your core competency, instead the content you put on your blog is your core competency.
Many developers are tempted to start out by creating their own blog or use a less popular blogging software solution, and they end up wasting a huge amount of time messing with or creating software instead of blogging.
I choose WordPress, because it is the most popular and widely used blogging software, which means it is well supported, has tons of plugins and just works.
You can literally get a new WordPress install up in minutes, even from a bare server, and you can find plugins for just about anything you can think of.
Sure, I come from a .NET and C# background, and WordPress is PHP, but I can’t deny how easy it is to use and customize WordPress.
You can, of course, use another popular piece of software or write your own blog from scratch, but if you want to get up and running quickly, I’d recommend you just use WordPress for now and you can switch later if you want to, once you have a better idea of what you are doing.
Buying your lot
Your first goal should really be to create something that belongs to you and only you.
If you spend a large amount of time producing content for a blog and someone else is ultimately in control of that content, you are putting quite a bit at risk.
Just like you wouldn’t build your house on someone else’s lot of land, you shouldn’t build your blog on someone else’s domain.
So, the first thing you want to do is buy your lot. You are going to need your own domain that is owned by you.
Several free blogging platforms will gladly host your blog for you and give you an address within their domain. Even though this is free and the cheapest way to get started, you need to look a little bit deeper into the future and realize it is worth the $1.99 or whatever it costs to buy a domain for a year.
Whatever you do, don’t botch this one up, because you will regret it. Everything else can be changed later on, but moving domains and trying to keep your search rankings and all your content in place, is a pain that you don’t want to have.
You can register a domain pretty cheaply by using a service like GoDaddy. I usually use GoDaddy for initially registering my domains, even through I may move the registration later.
Choosing a hosting method
As long as you have your own domain, the choice here won’t be as important when you are first starting out, but it is still good to consider your options.
There are three main options to choose from for hosting your new blog.
Completely Free Hosting
This option is the cheapest and will allow you to get a blog up without having to do much management of any software or any operating systems, but it has the drawback of giving you the least amount of control over your blog.
I started out my blog with this option using WordPress.com, but you can also use a fee service like Blogger, from Google, or one of the other free blog hosting companies.
I originally started out with this option, because I didn’t want to make a big investment in something that I didn’t know if I would stick with. But, I later came to regret that decision, because of the lack of control over my blog.
With this option, you basically just register a new blog and can start posting immediately. The hosting company gives you access just to create and edit posts and a few management functions, but you don’t have access to more advanced options that you would get with your own install of WordPress or other blogging software.
This might not seem like a big deal, but if you eventually want to put ads on your site, sell something, or customize your theme, you may quickly regret this decision.
If you do go with this option though, make sure you pay the optional fee most of these services offer to allow you to use your own custom domain for your blog. Don’t make the mistake of skipping this. You do NOT want to change your domain later—trust me.
With this option, you are usually using some space on a web server that is shared with other blogs or websites, but you are in control of a large portion of that space.
Shared hosting companies usually will have some options to preinstall or automatically install WordPress or another blogging platform for you and give you access to that blogging software as if it were installed on your own machine.
You usually access your “server” through the use of a control panel application that gives you options to add and remove certain software applications, access your database and files directly, and do other administrative tasks that you can’t do with a free hosting platform.
Once I got off of free hosting on WordPress.com, because I wanted to be able to fully control my theme and add plugins to my blog, (something you can’t do with free hosting,) I switched to Bluehost.com, one of the most popular shared hosting platforms for WordPress. I was able to get everything migrated from WordPress.com to my WordPress install on Bluehost pretty easily, and my readers never even realized it.
This is actually the option I’d recommend for someone starting out, but I’ll get to why a little later on.
The other thing about this option is that it is pretty cheap as well. The prices can vary based on features, but you can expect to pay around $6 – $10 a month for a fully hosted setup when starting out. (In my opinion well worth it compared to the free hosting.)
I ended up moving off of shared hosting pretty quickly, because by the time I had moved from free hosting to shared hosting, my blog was a little too big already. I ended up having a little more traffic than the shared hosting could easily handle and I wanted to experiment with the 3rd option, which I’ll tell you about next.
I could have stayed on shared hosting, but my blog was getting frequent enough spikes from articles becoming popular on Hacker News that I decided to try and optimize things myself.
Virtual Private Server or VPS
This brings us to the 3rd category of hosting options, VPS or virtual private server hosting.
VPS hosting is pretty close to what it sounds like. A VPS is basically a virtualized private server in the cloud. Most VPS hosting solutions will give you the ability to create your own virtual server running Linux and configure it how you wish. You are basically given the keys to the car and you are on your way.
This of course can be a bit intimidating for starting out, but if you know what you are doing, or you are willing to learn (sometimes the hard way), this can be the most cost effective and efficient option to choose. But, you can definitely get yourself into trouble—I know I have.
With great power comes great responsibility!
This blog is currently hosted through a VPS provider called DigitalOcean, but there are several other VPS solutions out there as well. I found DigitalOcean to be the best priced option and it also seemed to have a very simple to use interface to create new virtual servers. I actually run several VPS’s for my different blogs and sites through DigitalOcean and I only pay for what I use, since DigitalOcean bills by the hour based on what kind of hardware configuration you are using for your server.
So, like I said, the big benefit of a VPS is that you have ultimate control of pretty much everything. You are just given a Linux server and the root password and you are on your own.
But, this can also be the big disadvantage with a VPS. You have to know or learn enough about Linux and installing your blogging software to be able to get up and running, and you’ve got to be able to troubleshoot your own problems.
For me, it is worth it because I get quite a bit of traffic to this blog, so my optimizations really make a difference, but for someone just starting out, I really wouldn’t recommend a VPS until you feel you’ve outgrown shared hosting.
My recommendation: shared hosting
If you are just starting out with your blog, I’d really recommend going with shared hosting with a company like Bluehost.
Going with free hosting is nice, really easy, and you can’t beat the price, but it comes at a cost of not really having control over your blog. I felt this pain pretty quickly with my blog, but I didn’t have enough knowledge to know what to do about it and to know what my other options were.
Free hosting really restricts what you can do and diminishes a large amount of the value of using something like WordPress for your blog. WordPress has a huge number of free plugins available that allow you to add many different features to your blog and really customize the appearance of it, as well as integrate with other software systems. For example, I use a WordPress plugin with my Get Up and CODE podcast to automatically publish my podcasts to iTunes when I publish a blog post of a new podcast episode.
Free hosting also tends to hide you from what is really going on with your blog. When I first moved from WordPress.com to shared hosting with a real WordPress install, I was a bit overwhelmed, because I had to try and figure out how to add the same functionality I had with my free hosting on my new shared hosting install. I had really wished at that time that I had just started out with shared hosting.
The other thing to consider is that you’ll probably eventually want to move off of free hosting when your blog grows, especially if you want to monetize it somehow, and even though migration is possible, it isn’t the easiest thing and it is a bit nerve wracking. I was very concerned that something would go wrong in transferring my blog over to shared hosting—that was not a very fun time in my life.
On the other end of the spectrum, is the VPS, which really is not something I’d recommend for starting out, because you won’t see any real benefit when your blog is small, but you’ll inherit quite a bit of headache. I’d still rather see you use a VPS than free hosting, but if you do go with a VPS, just know what you are getting into.
So, all things considered, my recommendation for starting out is definitely shared hosting. You get the benefit of a very low price to get started, good support, and the power to do what you want with your blog.
Bluehost is the shared hosting provider I’d recommend, simply because the price is really reasonable, the customer service was excellent, and I felt like the setup was extremely easy. I was able to sign up for an account and click a single button to install WordPress. (It appears that Bluehost actually has a VPS offering now as well, but I haven’t tried it yet.)
Hopefully this two part series has helped you realize why having a blog is so important to promoting yourself and advancing your career, and given you enough information to get started creating your own blog.
I’ve just talked about the basics here, but I’ll be posting more about marketing yourself and creating a blog in the future. Make sure you sign up for my newsletter, so you don’t miss any of these kinds of posts and I can let you know when I release a few products I am working on that cover more about marketing yourself and creating a blog than I can fit here.
And be sure to let me know what you think. If you use this information on how to create a blog to create your own blog, send me a link to it or leave a comment below.
What would you think if you were interested in buying some new product you heard about, but when you went to the company that created the product’s website you found it wasn’t there, because they didn’t have a website?
Today, we expect pretty much every reputable company to have a functioning website.
But, many developers—web developers included—don’t have any kind of online presence of their own.
Sure, you may have social networking accounts, like Facebook and Twitter, but do you have a website that you own which you can point people to as your castle on the web?
The importance of having a home base for marketing yourself
I’ve talked before about how important it is to market yourself as a software developer, but I’ve never really gone into the details of how.
I’ll be creating a series of posts dealing with the subject of marketing yourself over the next few months, starting with this post on what I believe is the cornerstone to any success software developer’s self promotion strategy, building a blog.
As you’ll see in this series, it is actually pretty easy to get started creating a blog—probably simpler than you may think. But, before we get into the details, let’s take a moment to talk about why it is so important to have a home base on the web, especially for a software developer.
It really begins with how you view yourself as a software developer and your software development career. Many, if not most, developers view themselves as a software developer who does a job. For the most part, there is nothing really wrong with this view, but it is not the best way to think about what you do.
Instead, you are better off thinking of yourself as a business. Sure, it may be a one man or one woman business, but the truth of the matter is that you are providing a service to a client, even if that client happens to be your boss.
When you think of yourself and your career as a business that you are building, you suddenly are no longer exempt from needing a web presence. Just like we might think it would be pretty bizarre for a company that we do business with to not have a website, your clients and customers will think it is bizarre if you don’t have one—especially if you are a programmer that specializes in web development.
For most developers, your blog will be your main presence, or your home base on the web. Your blog is a chance to tell the world about what you are doing and show what you can do, and to completely control the message and image you present. This is an extremely powerful concept, because it allows you to shape the way potential and present customers and clients see you and can really increase your exposure.
This really is the key to marketing yourself online.
But, I don’t have anything interesting to talk about
Hogwash. That excuse is just no good. Everyone has something interesting to talk about.
This is an excuse I hear pretty often, and it seems like a good one—until you really sit down and think about it.
As a beginner, it can seem like you are not good enough; like what you have to say isn’t important; like there are so many other people that have much more valuable advice and opinions. But, the truth is different people at different levels in their knowledge of a subject, or with different kinds of combination of subjects they have knowledge about, can reach and provide value to different sets of people.
Let me break that down a bit.
What I mean to say is that just because you are learning C++ and there are C++ gurus out there with 30 years of experience and more knowledge about C++ then you may ever have, doesn’t mean that you don’t have something valuable to offer.
Sure, Herb Sutter might know more about C++ than you, and other C++ experts may gain valuable information from his blog, but can he reach the C++ beginner, like you, that is just starting out as well as you can? Probably not.
The truth is sometimes an amateur can reach other amateurs better than a professional can.
The truth is sometimes a woman can reach other females better than a man can.
The truth is sometimes a younger 20 something person can reach other 20 something people better than a programming dinosaur can or vice versa.
Chances are if you find it interesting, someone else does to. So, stop using that excuse. You can create a blog and it can provide value. You just have to be willing to put in the work.
I’m not looking to advance my career or sell something
Again, I have to say this excuse is a bit short-sighted. You might not be looking for another job right now, or to move up the ladder, but chances are, at some time in the future, you will be.
The biggest mistake I see developers make with career advancement is waiting until they need a job to start doing things like networking or blogging.
This is a bad idea, because it reeks of desperation and building up momentum, be it with blogging, networking, or something else, requires time.
Ideally, you want to start your blog and start using it to market yourself and your skills, before you need to. Then, if the well ever dries up, you’ll have plenty of prospects.
The same goes with selling something. You may think that you’ll never have something to sell, but if you ever write a book or decide to sell some consulting hours, having a blog can bring you clients and prospects instead of you having to go out and search for them.
Ok, so hopefully, I’ve convinced you to at least consider creating a blog that will serve as your home base on the web– which will be your primary tool for marketing yourself online.
I can’t tell you how many opportunities have come to me from having this blog that I would have never expected.
But, you may be wondering how to get started with creating your blog. If you are like me, you probably want to know what options you have and how to pick the best one.
In my next post, I’ll talk about the 3 main options for creating a blog, give you the one I personally recommend, and give you one really important piece of advice that you won’t want to ignore.
Just check back next week, or you can sign up here to get updates, so I can let you now when the next post goes live or when something else interesting is happening at Simple Programmer.
And if you can’t wait till next week, take a look at this book: Technical Blogging: Turn Your Expertise into a Remarkable Online Presence. (It is from a fellow developer who gives some tips on creating a successful blog.) I really enjoyed this book and found some great tips in it.
Oh, and if you are super excited about the idea of learning to market yourself as a software developer to boost your career, I am taking limited pre-sales for my new complete course and package “How To Market Yourself as a Software Developer.” I’ll announce more about this later, when it is ready for an official launch, but if you are quick, you can get in early and help shape the course.
I like to procrastinate.
I don’t really enjoy procrastinating, but it is one of my weaknesses. I’ll delay doing something that I know is important until the last moment that it needs to be done.
I’ve learned to overcome this weakness of mine by trying to be more productive to compensate for it.
Blah, blah, blah, productivity system… procrastination… blah blah blah!
I know you’ve heard it all before, but here is the strange part—I almost always get things done well before the deadline.
So what is my problem then?
My problem is that when I sit down to actually do the work, I end up doing a million other little things.
Even though I am overcoming the results of my procrastination by self-imposing much earlier deadlines, I am still fighting against the core of my procrastinating nature.
It is like I have put the angry demon of procrastination in a cage where he can’t harm me, but because I have to constantly feed him and deal with his demands, he’s still slowing me down.
I call it micro-procrastination
Perhaps you suffer from it to.
The symptoms are as follows:
- Sit down to do work and first check Facebook, Twitter, emails and every other single site that could have something interesting and updated for you.
- Justify in your head that you need a 10 minute or so transition period to check all this stuff before you sit down to actually do the work you intend.
- Pick something smaller that is not important and work on that instead. (Clean out email inbox, etc.)
Just about every week, my goal for the week is to record 2 modules for whatever my next Pluralsight course is.
I really never miss this goal, but it would often take me a while to get started each night. I would sit down to do the work, but not actually get to working until about 30 minutes to an hour after when I had first sat down at the computer.
Once I got started, I usually found that I didn’t have any problem continuing with the work until it was finished.
I tended to do the same thing with my blog posts as well. I know now I need to get a blog post down each week, but it would always take me a while to get started writing the post itself.
Even when I went to write code or solve a programming problem, I noticed that I would try to do many other work related activities like answering emails or further investigating a problem, rather than just working solely focused on the task at hand.
I started to notice a common occurrence between all of these situations in my life. If I got about 15 minutes into actually doing my Pluralsight course, writing my blog posts, or coding up a feature, I’d almost always end up staying focused on the task.
I found that I would often not want to quit something once I got started. I’d even miss lunch or be late for lunch or bed because of this.
The 15 minute rule is born
Based on this observation, I decided to try a little experiment. The next time I was going to work on something, instead of doing my usual ritual of checking email, checking twitter etc, I did the following steps:
- Pick out the single task I am sitting at the computer getting prepared to work on. (It helps to define this very clearly.)
- Turn of all distractions for 15 minutes or just decide not to let them bother me for that time period.
- Work without pause, without break and without excuse for 15 minutes straight.
- At the end of 15 minutes, if I want to quit, then I can quit or multi-task.
What I found is that after 15 minutes of working steadfast and diligently on a single task, I didn’t want to quit.
I found that something that I had no motivation or desire to actually be working on 15 minutes before was now all I could think about.
I found that just like it takes the first few chapters to get into a book and actually feel compelled to continue reading it, it takes about 15 minutes for me to get drawn into my work and want to see it finished.
I’ve been applying this “15 minute rule” pretty regularly now, and I have been having some pretty fantastic results.
I’ve also slipped up on occasion and reverted back to my old ways and have had quite the opposite of results.
I’ve tried other systems
Now I’ve definitely tried many other systems that attempt to solve the problem of procrastination or productivity or both, but none of them seemed to work all that well for me.
I know these other systems work, and I know plenty of people are successful with them and that my system isn’t really much of a system at all—it’s just what I do.
The problem I have found with other systems though, is that they are either:
- Too complicated to apply regularly unless you are 100% devoted. (Big barrier to entry.)
- Only address productivity, and priority, but not actually doing work.
- Assume you can sit down and actually do what you have set out to do. (Which remember, was the hardest part for me.)
I am a big fan of Getting Things Done and I highly recommend it. At the very least read it, because it just has some great overall advice, but…
I don’t apply it anymore, because I don’t need to organize what I need to get done. My life is currently so packed and scheduled every day that I already know exactly what I need to be doing just about every hour of my day.
I don’t even watch TV or movies… Ever. No really, I mean never ever.
So, with my schedule being so packed, my biggest problem isn’t figuring out what I should be doing—I’ve got that covered. Instead, my biggest problem is doing it efficiently.
The closest technique to what I am doing is probably the Pomodaro technique. I also think this is a great technique and is likely to work for many people.
I’ve just found that my mind tends to defeat the technique by telling me that I don’t have enough time to get a whole Pomodoro done right now, so I should just do part of one.
You could call what I am doing a modified Pomodoro technique, whereby I set the duration to 15 minutes and actually try to avoid taking breaks for as long a possible.
Why the 15 minute rule works
I suspect the main reason why this technique works is because of momentum.
When we start to get momentum going for us (and 15 minutes seems to be just about enough time to do so) it is much harder to change course.
Focus is also a big part of the 15 minute rule. The world today is a fast paced multi-tasking parallel processing rat race in which we are conditioned to switch our attention between multiple things all at once.
If you are reading this post right now, you probably have even switched back and forth between multiple browser tabs or chat windows or something else and aren’t focusing 100% on reading. I don’t have 15 minutes to grab your full attention and draw you in (unless you are a very slow reader, in which case I congratulate you for making this far.)
The point is, we have to purposely focus on a single thing in order to turn off that natural tendency to try to be omnipresent.
Doing the 15 minute rule forces me to focus, and that focus tends to shut off everything else in my mind with has the potential to distract me.
The 15 minute rule also prevents me from overthinking about a problem and standing back to admire the problem instead of working on it.
It frees me from obligation. If I know I have to work for 15 minutes, I am not afraid of not making much progress. My only obligation is to be working on the task at hand, without interruption and with complete focus for 15 minutes.
I also find that after 15 minutes, I’ve developed a commitment to the work. Because of the time I’ve already invested in the task, I feel more compelled to complete it.
Applying the rule
Hopefully you’ll find this technique useful and if not perhaps you have a better suggestion or technique. If you do I’d very much like to hear it, since I am always looking for some practical ways to be more efficient.
Before I let you be on your way, I’ll leave you with some parting advice that I’ve found useful when applying the 15 minute rule.
- Remove all distractions. That may mean closing browser windows or turn your phone off or just deciding to ignore everything else.
- Don’t forget to focus. Removing distractions is not enough, you must also focus intently on what you are doing. Be present in the moment.
- Work, don’t think. I know thinking is working, but the mind wanders too easily and merely thinking about a topic doesn’t seem to create that same mental traction. This might mean you start writing a first draft or first hack, but it is important to be actually “doing.”
- If you feel like you can’t start “doing,” make your “doing” brainstorming, but brainstorm by actually writing a list or making a mind map.
- If at the end of 15 minutes you are still not into the work and want to quit, go ahead. Come back a little later and try again.
- Take breaks when you need to, as long as the initial focused 15 minutes has passed, I’ve found that I can take a break and actually want to get back to my work.
- Put a sticky note on your monitor or somewhere you’ll notice that reminds you that when you sit down to work to start off with the 15 minute technique.
Strangely enough, this post is about why I blog.
I try to avoid posts about blogging, but I thought it might be worthwhile to think about and explain why I blog.
The mental exercise of blogging provides an opportunity for me to…
Refine my own thoughts
When I think about the why I blog, this one reason sticks out the most to me.
Sometimes, I don’t enjoy writing. Sometimes a post doesn’t end up just flowing out of my finger tips—it feels more like I am yanking a tooth out. But, I always have to go through a process of refining my thoughts on a subject and there is definitely value in that process.
Since I’ve started writing and teaching, I’ve found that my head is full of plenty of undeveloped ideas about many different topics. I’ve learned that on almost all subjects that I haven’t thoroughly examined, I have large holes and gaps in the path which leads to the conclusions I’ve formed about those subjects.
I’ve often said that you don’t truly learn something till you teach it, but before you can teach it, the thought must be refined in your own head.
Sometimes I like to think of my blog as a place where I am teething on my own thoughts. It’s often a painful process that takes a long time, until finally the enamel of a fully formed hardened idea erupts from my skull.
I’ve found that as I do blog, I start to really refine my thoughts about a subject and develop strong convictions on that subject.
Holding them loosely
I’ve come up with a saying that explains quite a bit about me.
I have strong convictions which are loosely held.
At first, this might seem like a contradiction, how loosely can you hold convictions that are strong, or how strong can they be if they are loosely held?
To me, the answer lies in the alternative. How useful is it to have weak convictions about things? To me having a weak conviction is akin to not having thought long and hard enough about a subject to form a strong conviction.
As for holding onto that conviction loosely. I basically say that I reserve the right to change my mind. There is no point in holding onto any conviction tightly, because that conviction’s soundness should be based on logic and reasoning. When that conviction’s foundation fails, so falls the conviction.
I try to live my life adhering to this principle. This is one of the reasons why you’ll find some of my posts contradictory. I’ll start out being sure of one thing, but a year later, I’ll be convinced of just the opposite. You, as a reader, are watching me grow.
Now, some people might say this makes me a waffler and unsteady, but I think I’d rather be called either of those than be stubborn or wishy-washy. I don’t see that there is a middle ground in this area.
I also tend to think of and use my blog in that way.
There are many times when I do a search on my own blog to either look for a solution to a problem that I can’t recall, or to find out why I did a certain thing a certain way. I find the blog not only captures the solution, but how and why I was thinking about a particular problem or technology.
Sometimes I just search my blog to find out what the heck I was thinking at a particular time or to self-check my progression through time to see if the present me has gained any wisdom over the past me.
In that same regard, I find that perusing my early posts is often a humbling experience. It is good to humble yourself every once in a while. It is much better to do it yourself than to have someone else do it for you. I try to remember that.
Also this reference often comes in handy when needing to quickly explain my thoughts on a matter to someone without having to try and rehash it right there on the spot. In a discussion or in answer to a question, I can often give someone a link to a blog post I have written on a subject which gives a detailed explanation of my thoughts on that subject.
Career and opportunity
I’d be lying and doing you a great disservice in representing the truth, if I tried to claim that none of my motivation for blogging comes from my own material gain.
Now I don’t get paid to blog—and I assure you when you click on one of my few Amazon associate links, I don’t get paid anything more than it basically costs to host this blog—but I cannot tell you how this blog has helped my career and opened opportunities which I would have never had before.
I’ve always felt that a blog is far better than any resume. Want to know what I think on a subject or my knowledge on an particular area? Search my blog. What to see if I am consistent or if I am actually improving my skills and learning anything over time? Check my blog.
With a traditional resume, we are often constrained to what can fit on a page or two. It is very difficult for me to explain the totality of my experience and journey as a developer in two pages, especially when I have to cram 50 keywords in there as well so that it doesn’t get filtered out by resume scanning software.
Now, not every prospective employer will look at my blog, but the ones that do and really take it into account are much more likely to be the ones that I would like to work for anyway.
Aside from just W-2 or salaried income, I feel that my blog is a launching point for so many other opportunities. Through my blog I’ve gotten opportunities to meet people I would never have met before, invitations to speak at various events, invitations to write books and plenty of opportunities to train on consult.
I’ve also found that my blog is a great medium for conveying ideas or viewpoints sometimes subtly to coworkers or management. It’s not always easy to come right out and say something, and often that approach is not best anyway.
Posting a blog post on a subject affords me the opportunity to really think about an idea and to make sure my ideas are well baked before they are presented. It also assures that my message will be heard and digested instead of quickly reacted to.
One of the main reasons I blog is that I am planting seeds that will grow my professional career. I like that idea. It makes me feel like I am building something that has lasting value rather than just getting work done for the day.
A sounding board
Often my blog serves the purpose of checking my ideas against reality. It is amazing what kind of crazy notions you can come up with just thinking about ideas in your head.
I’ve often posted on certain topics, because I am not sure what I think or I have an idea of something and I want to get a gauge from the general community if my idea makes any sense outside my head.
I’ve had plenty of posts where I’ve learned much more from the comments than I have in preparing the post. (Although sometimes it is a painful process to do so.)
Learning to write
When I look back on my earliest posts, I can definitely see a progression in my writing skills.
Writing is an important skill in just about any career, since we are always communicating our ideas.
I’ve found that the ability to effectively communicate ideas in writing ties directly to my ability to communicate ideas in all other mediums as well.
Writing, to me, is an exercise in thinking. The more I write, the better I learn to think and to express my thoughts.
So the next time you read one of my blog posts and you think "hey, that guy doesn’t know what he is talking about." you are probably right!
Remember, I am just teething on my thoughts; I may come to a completely different conclusion tomorrow or next year.
Feel free to set me straight, I won’t be offended.
As a developer trying to stay sharp and keep up on the latest technology, frameworks, and best practices, you probably find that you are overwhelmed by the sheer volume of information that is coming in every day.
I often feel like I am swimming hard in a river against the current, sometimes making ground, sometimes losing ground.
So many sources of data
There are so many sources of information coming at us every day:
- Trade magazines
- Technology news
- Software and tool updates
- User group meetings
Sometimes sitting at my desk is like having my eye-lids taped open and being forced to watch a Nazi brain washing video. ”You will kill the prime minister of Malaysia!”
With all the sources of information coming in all the time, there is really no way to keep up on all of it, but that is okay. At least I keep telling myself it is. What you really need is a good strategy for dealing with all of this. I’ll be perfectly honest here. I don’t have one, but I have a few tips that I have been using and just maybe it can help you.
Pick your priorities
You have to know what is important to you in order to make decisions about what content to consume. If you can’t pick it all, you want to make sure you are getting the best and most important information.
As a developer who has been straddling the line between Java and C# for the past 2 years or so, I have found that my number of information sources is close to double the number of sources for a purely Java or C# developer. If you are Ruby/.NET or Scala/Java or any other kind of dual casting class, you’ll have the same problem.
Fortunately, there is a simple solution, as far as priorities go, to this problem. Prioritize language agnostic sources of information as the highest. What I mean by this is, instead of reading a book about C#’s or Silverlight, read a book about writing better code, or being a better programmer, or design patterns. You want to prioritize those kinds of things near the top of your list because those skills have a long shelf-life. Learning better ways to express yourself in code or design patterns is likely to benefit you regardless of the technology or environment. Those kinds of things go to the top of my list.
Next, I try to pick as a priority the technologies that I am currently working on right now. If I am working on building a DSL using ANTLR then I want to read things about ANTLR. If I am working on an ASP.NET MVC application, then I want to be picking blogs about ASP.NET MVC. The idea here is that I am learning about something that:
- I know has value because I am using it right now
- I can immediately benefit from as it will help me do my job
- Is interesting to me because it is about what I am doing
- Doesn’t lead me in a different direction because I want to use what I just learned
Finally, I try and pick as priorities things that I am interested in. Perhaps something that I would like to learn about or do as a hobby. For example, I don’t get paid to write iPad or Android applications, but I am really interested in both of those technologies and I might like to someday write a little app as a side project. Having a bit of diversity into some technology you’re not really working in for a living but you are interested in can be good. It can prevent you from being too narrowly focused and becoming a technology or language bigot.
Pick your data sources
I absolutely hate cable TV. I haven’t had cable TV for about 7 years now. Why? It is a lousy data source. The signal to noise ratio on cable TV is horrible. You sit down and almost end up spending as much time watching commercials as you do shows. Plus, when you are flipping through channels you end up losing hours watching stuff you are not really interested in just because it is on.
Instead, I use a service like Hulu or PlayOn to only watch the shows I want when I want with almost no commercials. (And it is free.)
My point here is that you have to be picky with your information sources. You want to pick the information you want to get, and you want to pick sources that have high signal to noise ratios.
To do this takes some effort and some time. The best way I have found to do this is to figure out strategies for determining quality.
- For books, look at reviews and recommendations, don’t pick up a book because the cover looks cool. Make sure you’re not going to waste your time reading something that is not good material.
- For blogs, put them in your RSS reader, read all the ones in your reader. Over time, the ones that you feel like you don’t want to read, remove from your reader, or put into a folder for checking every once in a while, instead of your must read list. You can scan the lists every couple of days or so and read just the things that interest you.
- For podcasts, recognize the difference between entertainment and information. It is okay to listen to podcasts just because they are entertaining but make sure you know which ones you consider good information and which ones you consider good entertainment. The best ones are the ones that combine both.
Keep your lists active. Add things, remove them, always optimize it. Sometimes information sources that were good go sour. Sometimes new good ones pop up. Don’t get stuck in a rut reading stuff that doesn’t benefit you anymore. Your own growth will change what is valuable to you also.
Figure out your schedule
You have to know how much time you are going to dedicate to the fire-hose drinking. If you have more things than you have time you end up becoming stressed out. Your reading list backs up and becomes a pile of work instead of something you enjoy doing. Don’t let that happen, make sure you have a plan and stick to the plan.
You need to figure out when you are going to do particular things and about how much time you have. This will force you to set some limits on the number of things that you allow in each day.
For example, I know that I will spend about 45 minutes to an hour each morning catching up on blogs and things in my RSS reader. I know that I have a commute each day which allows me about 40 minutes each day to listen to podcasts. I know that during the day I have about another hour of doing something mindless where I can probably listen to a podcast while I work. I know that I want to dedicate about 30 minutes each day to reading a book.
Based on my schedule I know that I can’t really have more than about 8-10 things in my RSS reader to read each day. I have to pick about 3-4 podcasts to subscribe to (depending on frequency of updates and length of episodes) and I can pick a book off my reading list on average about a month.
Use your knowledge of what your schedule is to put hard limits on the amount of information you allow into your world on a subscription basis. Remember also that things like tweets are going to show up at different points during the day and leave some time for discovering new sources from recommendations.
Do you like wasting hours of time with nothing to show for it? Avoid the temptation to mark things off your RSS reader or your book list just for the sake of marking them off. If you are going to subscribe to an RSS feed, read the content. Read the whole thing. Don’t skim through it and not gain the information. The same goes for books and podcasts.
If you feel like you don’t want to read it and you want to skim it instead, then simply remove it from your subscription, close the book and move on or stop the podcast. Don’t waste your time, and don’t do things just to check them off a list.
Hopefully my advice has been of some help to you. I am still trying to figure how to do all these things myself, and I still do feel overwhelmed at times, but I do feel like I am getting better at it. What do you think? What kind of strategies do you employ to “drink from the fire-hose”?
As always, you can subscribe to this RSS feed to follow my posts on Making the Complex Simple. Feel free to check out ElegantCode.com where I post about the topic of writing elegant code about once a week. Also, you can follow me on twitter here.
Earlier this week I was invited to join the developer community of bloggers at Elegant Code. I had to think about it for a bit because I wanted to make sure that I would be able to fulfill all my obligations and still maintain the quality of postings and work that I hold myself accountable to. I am very glad to say that I have accepted the invitation to join Elegant Code, because I do feel that I can embark on this adventure while still maintaining my standard of quality.
What does this mean for Making the Complex Simple?
There should be no noticeable change. I know this might be a little confusing for some readers of this site because I will now be blogging in two places, so let me outline what you can expect to see.
- I will continue to blog about 2-3 times a week on http://simpleprogrammer.com
- The content on simpleprogrammer.com will continue to be the same type of general programming, best practices and technological reviews, not tied to a specific theme.
- I will blog about 2-3 times a month on http://elegantcode.com
- The content I post on elegantcode.com will revolve around ideas about how to write elegant code and improve your code in general.
- I will not cross-post. This means that content will appear in only one place, not both. I may link to either site, but the content will have a definite home on one or the other.
- I will be exclusively writing COBOL from now on, and all my posts will be about programming in COBOL and the secret lives of COBOL programmers. (Ok that one is a lie, but the rest are true.)
My first post at elegantcode.com was just posted today entitled “What Does Elegant Code Mean to Me“.
One last thing before I go.
Here is a picture of a dog biting its own tail.
Here is a picture of a blue mushroom.
That is all.