The Proactive Mindset

If this post resonates with you, and you would like help becoming more proactive, send me an email (tim [at] developerautomation.com) or leave a comment!  This habit can drastically change not only your career but your entire life.

What Does It Mean to Be Proactive?

I have recently started reading The 7 Habits of Highly Effective People.  This book outlines seven habits that are common in “successful” people.

Success

The first of these habits is being proactive.  This means rather than waiting for something to happen, you take action to make things happen.

A lot of people (myself included) just allow things to happen in life.

  • I want to be rich!
  • Why can’t I have a better job?
  • My spouse is SO annoying!  Why can’t he or she be like this other person?

Here’s a hard slap in the face: if you don’t like your current situation, you are largely to blame.

Yes, obviously there are things that happen in life that are out of our control.  For starters, however, we control our response to what happens to us.

In addition, we control what actions we take based on our environment.

Once you start taking ownership of your life, you also expand your control.  People tend to flock to people who take ownership of life and make decisions.  This will increase your influence over time.  Trust me – I’ve seen this in my own career and family life.

Do you want to be rich?  Start saving more money.  Make more money with a side business and/or a job that pays more.  Don’t know how to do these things?  Do some research or buy a course.

Want a better job?  Start sending out resumes.  Increase your skill set.  Get to know people at jobs you want to work at.  Build those relationships.

Need a better relationship with your spouse?  Start working on yourself.  Work on your attitude.  Have an honest, non-emotional conversation with your spouse on areas you can improve yourself.

Notice one common theme with all those examples?  Rather than waiting around for life to get better, these all take action.  Do NOT wait around for life to happen to you; you can affect your own life without anyone else’s permission.

 

My Story: Standing Out From the Crowd

I graduated college at the top of my class.  While this was an impressive feat, I was not really any better as a developer than many of my peers.  Less so, in fact, because many had a lot more work experience.

University

I started working at a company that had really good software engineers.  I learned a lot from these people.  (Hint: if you want to improve yourself, find good mentors.)

Over time, I became one of those good engineers.  Rather than a new college graduate, I was an engineer with a great skill set thanks to my peers and my willingness to learn new things.  When others on the team rejected task due to something new or complex, I tackled it to try to learn something new.

Eventually, I learned that this did not pay as well as other companies in my area.  I also did not have a lot of room for advancement.  For these reasons, I moved to another company.

At this new company, I worked with a team that was, as a whole, not as skilled as the software developers I worked with before.  As a result of both that and my own improved technical ability, I was able to really impress some people at this new job.

Good Job

Although my technical test solutions for the team was good, they were not being used.  I eventually got tired of this and started looking again.

Now at my current position, I once again stood out.  People started asking for my opinions on things even though I was not directly in charge of them.

I talked to management about my desire to try my hand at management.  Using both leverage and showcasing my skills, I was able to move into a management/technical role.  I now have direct reports.

This goal I had at my first job took a while, but I have been able to realize it.  I have now become a manager.  This all started with being proactive over my career.

Had I become complacent with my first job, I would not be in the position I am today.  It took constantly refining what I wanted and what my employer could provide.  I am now in a position where I have a lot of leverage.  I provide a lot of value, but I also get a lot back from my employer.  This is a win-win situation for both me and my company.

The whole point I’m trying to drive home is not a “Hey, look at how awesome I am!”  It’s trying to push the point of being proactive.

Yes, I was good in high school and college.  But I didn’t start with a huge leg up on any other college graduate.  Rather, I remained dedicated to my career and learned from some smart people.  I applied those to my own skill set, and over time, I have built up a technology foundation that works well.

I have also worked on soft skills (reading books, communicating with management).  Software development is a lot more than just writing code!

Having given this example, let’s explore applying this proactive mindset to software automation.

Being Proactive With Automation

There are a lot of things wrong with our test software.

  • While it is version controlled, it’s not done well
  • We setup a lot of servers manually every time with the same hardware (wasting time)
  • There’s no tracking of code quality
  • We are always busy – running around with our hair on fire

Fire

Things have been this way for a while at my company.  A lot of this has to do with not putting emphasis on test software.  It’s more of an afterthought.

So the software developers don’t really like this type of environment.

What are we going to do?  We could either accept this as inevitable, or we can work on changing it.

Version Control

We are moving from Subversion to GitLab.  There are several reasons for this:

  1. Better documentation
  2. Built-in method of code reviews (with merging a development branch into a master branch)
  3. Better ability to share our code with others (this isn’t necessarily a feature of SVN or GitLab, but simply the way we use the two different tools)

Setting Up Servers Manually

Server

Debugging drivers on these servers takes up a lot of our time.  An intern and contractor are working on setting up Ansible and Semaphore so we can click a button to setup this software in the future.

This will save so much time!  Rather than spending hours on setting up a new server, we will click a button.  This will deploy software that has already been successfully installed on other machines.  So it’s also repeatable.

In addition, this will be easier to version control.  We can now identify what’s on the OS environment of our servers.

Tracking Code Quality

Before we had no visibility on the quality of our code.

I have setup a Jenkins server, and we are developing our code in such a way as to allow unit tests to be written against it.  Each time we commit code, Jenkins will report code coverage and test results on that new commit.

Quality

In addition, we run nightly system tests on some of our systems to verify they pass a basic set of tests required before we release hardware.

It’s nice to come to work in the morning and have an email telling me that the system test passed or failed the previous night.  It’s automatic quality – once setup, it doesn’t take extra work on my part.

I can also go to any software package at any time to see the current state of it.  Does it pass all of its unit tests?  Does it have good code coverage?  If not, can I allocate time to improve that now or in the future?

Always Busy

We haven’t completely solved this one.  However, the above improvements in infrastructure are going to buy us more time in the future by making us more productive.

In addition, I am taking on a lot of work so others on the team can work on this infrastructure.

So short-term, I work on not-so-much-fun stuff.  But longer term, I will get to work on the more fun things as we buy more time with our current investments in infrastructure.

How Did You Know How to Do All This?

My work experience of continuously trying to learn new things has helped solve all these problems.  (These problems aren’t ‘solved’ per se, but they are being worked on.  Over time, they will be solved.)

I don’t have the perfect solution.  The point is that it is one of many solutions.  It is one way to get us out of our current situation to a better place.

Because that’s what proactive people do.

But I Don’t Have Time!

Make time.

Clock

Seriously.

There were times at work when we were extremely pressured to deliver something.  If this describes your work environment 100% of the time, talk to your management.  Hire more people.  If you can never get out of this cycle, leave.  It’s just not worth it.  You took proactive steps to try to fix the situation, and nobody helped you… so the proactive step may be to find a better place to work.

Once you are out of that mode, you can spend some time on investing in software practices or tools that will make your life better/more efficient.

Here’s the key: don’t ask for permission!

(As a caveat – don’t do something stupid like buy a $1,000 machine on a company credit card.  Or watch Netflix at work.  I’m talking about working on things that have a legitimate business purpose.)

When you ask a manager for permission, there are many things that can happen:

  • A deliverable is coming up, so you need to work on your normal work
  • The manager doesn’t understand the tool, so rejects the idea… even though you KNOW it would improve efficiency
  • You can spend 1% of your time on it, and no more
  • He or she may… just MAY… say yes

Why risk getting rejected?

Here’s the deal – when you are hired as a software engineer, you most likely know more about software than your boss.  (Not always the case, but it’s quite common.)  So when decisions need to be made about software, you are going to have more expertise than your manager.

Be proactive and just work on it every now and then with your normal work.  I’m not saying to work extra, but to work on it instead of working on your normal stuff 100% of the time.  Be smart about it – don’t push a deliverable out a lot because of it.  This is why it’s important to not be always working at 100% or more of your capacity.

Conclusion

Being proactive has helped me achieve a lot of success in my life.  The most successful people don’t let life happen to them; they take control of their lives.

This has applications for both automation and for every part of our life.

Pay attention to the questions you ask and the way you talk.  If you ever hear yourself saying “I can’t” or “I have to”, change that phrasing.  Instead of “I have to”, say “I choose to”.  Perhaps instead of “I can’t”, say “I can’t right now” or “I will in a day”.

Want help becoming more proactive?  Send me an email (tim [at] developerautomation.com) or leave a comment!

Leave a Reply

Your email address will not be published.