DEV Community

Habits of a Highly Effective Software Developer

Gift Egwuenu on February 26, 2019

I'm conducting a research and I'll love to gain more insight into how other developers stay productive and sustain new habits in their career.

What are some habits you cultivate as developers that helps you stay winning and productive?

Collapse
 
tonymet profile image
Tony Metzidis • Edited

Do whatever is necessary to stay in the flow. Flow means typing code. Non-flow means googling, using your mouse, switching windows, coffee breaks.

Here are common interruptions and fixes

  • googling / reading docs
    • download / integrate docs into your IDE (see devdocs) and use man pages. Also, retrieve the sources for your deps and make sure you have auto-complete (ctags) . Avoid googling as much as possible--it's a bad habit.
  • Waiting for builds
    • cache your artifacts to speed up your build, or invest in CI
  • Testing your software
    • make sure you can test quickly using CLI and not with interactive behavior. This usually means a unit suite or command-line experiments you can run. E.g. if you're building a service, write some curls that you can hit with assertions to make sure it works while you are building. If it's a UI write selenium tests.
  • Coding itself is slow
    • activate auto-complete and snippets in your ide. If you're new to the language, do kata to practice common blocks. Can you touch type? If not, learn and play typeracer to speed up
  • distractions (social media, chatting)
    • try rescuetime to identify pitfalls and block distractions

tl;dr Pretend your mouse is electrified. Any time you touch your mouse, think about why and automate it.

Collapse
 
jamesdengel profile image
James dengel • Edited

I agree completely on the don't google.
I have tried to make it a habit to go to the docs if I need to find something out, you learn some much more about the ecosystem that you develop on if you are working with the docs directly.

And automate autmate automate.

Even if it's only a few lines but might take you a little while manually, script it, it worth doing to get into the habit :)

Collapse
 
theodesp profile image
Theofanis Despoudis • Edited

I don't think that typing code fast the the answer to anything related with being effective. What do you mean by typing? Just typing? I actually type slow but I know I can deliver the features on time. It's what you type that matters and if you learn to type less and do more, that's efficiency for me.

Also I google a lot and read docs a lot. That gives me an array of solutions and articles that I can assess in a pragmatic manner before I implement something. Did you just tried to implement your own microservice architecture without looking, asking around, reading docs, comparing libraries and frameworks and googling the hell out of it? I think not. The same goes for every feature you may be asked to build. There will be always a better solution by the time you think you have the answer in your mind and where is the right place to find it? By googling of course.

Also I use the mouse a lot. I tend to forget keystore combinations

Collapse
 
lauragift21 profile image
Gift Egwuenu

These are great tips 🔥. Thanks

Collapse
 
molly profile image
Molly Struve (she/her)

Being able to work on my own schedule is huge for me! I am an early riser(wake up at 5:45am to run), I like to start work around 7:30am and my most productive hours are in the morning. Then, I usually head home around 4:15pm. If I was forced to work the standard 9-5pm I know I would be far less productive than I am now.

Another tip I like to keep in mind is one my mom taught me, "Only worry about yourself" It can be easy as a developer to compare yourself to your peers and worry about what they are doing. At the end of the day, the only one you need to worry about is yourself. Focus on growing your own abilities and learning the way you learn best.

Collapse
 
vergeev profile image
Pavel Vergeev

I'll try the early riser thing, it feels very promising.

Collapse
 
tonymet profile image
Tony Metzidis

humblebrag ;)

Collapse
 
samundefined profile image
Sam Undefined

Taking breaks when I need to, and always/consistently learning.

Collapse
 
lauragift21 profile image
Gift Egwuenu

I can't agree more with resting and continuous learning.

Collapse
 
vergeev profile image
Pavel Vergeev • Edited
  • I consciously limit my work day to 8 hours.
  • Once a week I stay away from writing any code for a whole day.
  • I sleep a lot.

I also believe that using an IDE instead of a simple text editor improves my performance, but this is secondary.

Collapse
 
lauragift21 profile image
Gift Egwuenu

Thanks! I think I'm struggling with not writing code everything single day. Because I can't remember the last I did not touch code for a whole day.

Collapse
 
anadea profile image
Anadea

Using a task management app to keep track of to-dos,
Using a version control system (git),
Going to gym during my lunch break.

Collapse
 
aleksanderwlodarczyk profile image
aleksanderwlodarczyk

Waking up at 4am/5am

Collapse
 
lauragift21 profile image
Gift Egwuenu • Edited

By default, I always wake up by 5 am. It's usually weird if I wake up past time that.