Over a million developers have joined DZone.

Controlling Your Novelty-seeking Behavior

How to focus on becoming a person who gets things done, but not by taking away everything fun.

· Agile Zone

Reduce testing time & get feedback faster through automation. Read the Benefits of Parallel Testing, brought to you in partnership with Sauce Labs.

Getting started with a new technology is always exciting. You see all the things that it does right, unlike your current tools. The tutorial is fun, you have new toys to play with and you’re looking forward to cracking open that book or course. The first wins come in fast, giving you a rush of confidence and boosting your ego.

Unfortunately, since you don’t have any experience using that technology on a large, demanding project, you don’t see its flaw yet. If you have a more severe case of novelty-seeking behaviour, chances are that as soon as things get tough you’ll have switched to the next technology anyway for your new project, leaving a large pile of technical debt in your wake.

How do you break this cycle and focus on mastering technologies instead of just skimming?

You have to become a finisher: someone who has realistic goals and a habit of finishing what they start. Finishing projects is a habit like any other and can be trained. But to have a chance to be a good finisher, you need to know where you are going. If you know the specialization you want to focus on and what you wish to learn from your current project, you won’t wander aimlessly from technology to technology.

Also, you need to start each project with a deadline and a clear objective or you won’t be able to tell when it’s finished. If you get into the habit of escaping every time things get too hard or stopping projects before you reached your goal, you’ll start thinking that giving up is inevitable.

Becoming a better finisher doesn’t mean that you can’t leave space for experimentation and fun. Curiosity has an important place in learning and helping you discover new things, and playing with new technologies can give you ideas to improve what you’re working on. But if you want to go forward, the majority of what you learn should be hard skills that help you get better at subjects that matters to you.

On the other hand, it’s unwise to finish projects at all cost: if some goals were unrealistic, or you started a course or a book that did not live up to your expectations, it’s a good thing to move on to something that will help you learn better.

Developing your skills also requires getting comfortable with delayed gratification. You need to accumulate many small wins in the same field to reach mastery, even if those wins are not as immediately visible as adding a whole new skill to your resume.

When you start out with a skill, wins comes in quickly since everything is new. As time goes on, you’ll need to work harder since you’ve understood the basis and you’re often using familiar concepts. If you’re moving frequently to new technologies seeking those quick wins, you’ll start over and erase a good part of your progress each time.

Finally, you have to get used to working hard mentally and focusing on a subject. You probably won’t understand everything the first time and will have to absorb the concepts of a new technology or pattern over many learning sessions. It’s normal to feel dumb and struggle many times when you’re really learning, but it’s worth it in the end. You’ll be a better software developer for it.

The Agile Zone is brought to you in partnership with Sauce Labs. Discover how to optimize your DevOps workflows with our cloud-based automated testing infrastructure.


Published at DZone with permission of Cindy Potvin, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}