A Job Hopping Pattern: Seeing Opportunity in Drudgery and Paying Attention

There are reasons to feel disillusioned with the idea of tech companies and tech startups. Unicorn status is the primary goal these days and some put their valuation ahead of every other consideration: culture, impact, sustainability, responsibility.

If I look back on my career, the companies I have worked for were all tech startups that had grown into more mature companies. They have provided me with a really comfortable living. Since college, I haven't had to wonder how I'd make my bills on any given month.

I started on desktop work in college and when I finished college that's what I was doing. It is work with a lot of drudgery. Dull work.

You might ask why anyone would take on a job that involves drudgery but that's a key feature of most of the jobs available to a person just starting out, and it's a common characteristic of every job you can get at any level.

There is a duality that ensures that any job you get involves drudgery: Without the impetus of pain sufficient to drive an employer to hire in order to offload that pain, the job would not exist at all. On the other hand, if the job were just something that needs doing and is easy, you'd have a lot of competition for the job and it would pay very little. The sweet spot is always drudgery that isn't easy.

Now I'm going to say something profoundly important: In business, the opportunity is found in the drudgery provided that you perform the work with the best attitude you can muster AND you pay attention.

Paying Attention

There are two things which deserve your particular attention in any job:

  1. How can you improve the way things are done? Can you design a system that will make any of your tasks take less labor? Can you reduce errors or improve consistency? Can you template any interactions? This is the application of systems thinking to your job.
  2. As you do your job, what other functions do you interact with at the edge of your work? Are any of them something you have been curious to learn more about? Are any of them a truer fit to your personality and interests? If so, it is possible that these edges present possible next opportunities for you to grow into.

I look at the balance of my work life since 1998 and I've generally been able to niche into the most interesting work at some edge within the space I was working. As I said, I had started out doing desktop support. And I was immediately frustrated with the complete lack transparency on the internals of Microsoft Windows. They don't give you much diagnostic info with which to troubleshoot. It was not supportable. So far as I could tell there are two reliable operations implemented by Windows: format disk and install software. (It is not surprising to me that Linux has a larger market share on the server side of things.)

At the edge of working in Desktop support was software development and network engineering. I made sure to chat up the network engineer when we did the transition to Ethernet at my desktop job. This was likely what I was going to aim for and what I spent spare time studying.

But it was really specialized. And it would take a lot of years to get there. Working at an ISP would do. And... thanks to a college connection, I was hired a Sales Engineer at an Internet Service Provider out of college. UUNET. Back in 1998, this felt like the promised land of unlimited opportunity.

What they never tell you in college is that getting the job is the beginning of the story and the struggle. And boy did I struggle. I struggled with the bureaucratic jargon of telecoms. CFA/LOA. Demarc. Routers. BGP. There was a lot that I didn't understand and couldn't quite visualize. I had the job but I wasn't the strongest performer on my team. Eventually, when the opportunity came up, I transitioned into Sales Eng group for colocation and web hosting.

I didn't start thriving as a Sales Engineer until I was selling technology for which I had a crystal clear model of the system in my head. Web hosting is pretty-much just computers and software systems connected by Ethernet. It made much more sense to me and was a much better fit for my skills and interests.

In spite of the obviously better fit, I put in a lot of effort to develop key skills so that I could be successful at this job. I did this primarily by taking full advantage of the smart people around me who knew much more than I did and were willing to share what they knew. With their coaching, I taught myself the basics of Solaris administration by formatting my SPARC desktop and learned a bunch: How to download GNU packages and compile and install them. I learned grep and awk. These are things most people learned in college but I hadn't. Better late than never.

When I noticed a pattern of repetitive work, I turned my efforts to reducing labor and turnaround times. One example of this as a Web SE was customizing Visio templates to make diagram creation for custom web hosting quicker to produce and more consistent. There were really only a half-dozen variants. Create those and pretty them up once. Thereafter you're pretty much just adding the customer name to it.

I also implemented a crude PERL/CGI application for tracking interest in feature requests to provide feedback to product management. It was good times. But every job has it's downsides. The rub on being a Sales Engineer is that the more aggressive sales people will drop everything to get before some customers and I'd have to get on a plane or train with little notice. After that happened about twice, I decided it was time to get back to fundamentals: less sales, more engineering.

I approached the manager in charge of the network design team for hosting and colo to see if I could work on his team. He knew I didn't have a perfectly filled out background but he gave me the chance anyway.

As it turns out, this is an ideal hiring situation for the manager as well. As a manager, you generally want to hire someone you have already worked with because you have some idea of the kind of work they are capable of delivering. Having a rich connection with direct co-workers means that you can get honest and frank opinions on a person's character and willingness to invest and learn. It's pretty low risk compared to hiring an unknown from outside.

The Opportunity of Drudgery

Nearly all of my job transitions have been new niches at the edge of my previous jobs. In all of my jobs, I did not do well at them until I developed enough new skills that I was able to implement new systems to deal with the dull work.

I am beginning to suspect that there is something universal in this that can applied to developing a business as well. I have seen at least one school that teaches an entrepreneurial pattern that involves talking to business owners, coming to understand their problems, developing a wireframe/prototype, and enrolling the customer to pay for it as you develop it.

Here's what I notice: the methodology I just described takes full advantage of the type of work ethic I described above in the Paying Attention section. Only, instead of systematizing your own work, you start by getting in touch with people and probing them to describe the kinds of dull work or pain points they have so that you can systematize their problems into a software solution.

This is interesting for me to consider. It's something I could visualize for myself (and I imagine this is true for a lot of the people I know). I can imagine what gaps I would need to fill in my skillset to make it happen. Getting in front of potential clients isn't something into which many Engineer/Technician types have invested sufficient time.

I love this aspect of being able to visualize a potential future: Things which seem impossibly far, only have the chance to transition to possibly far when you start to map the way there.

I also love that you can do a lot of good by focusing on dull work. It's easy to want a job that is comfortable. And it's easy (or at least, common) to do that job without trying to improve the way that it's done. What's less easy and more rewarding is to develop new ways to get the job done that reduce labor, that improve delivery time, or consistency, or with fewer errors.

Once again: In business, the opportunity is found in the drudgery provided that you perform the work with the best attitude you can muster AND you pay attention.

Inspiration

I think I could love the idea of a small software company that wasn't trying to become a Unicorn. It would solve a specific kind problem for a number of clients and would be able to function even if we didn't all work all the time.

This post was inspired when I read "Million Dollar Products" by Kyle Neath. It gives me a tiny bit of hope and bit of being able to imagine a future tech company that I start with friends so that we can do something meaningful.

Expiring in 2 Weeks? JNCIE-SP #1999

I have now reached the point where I am in a 2 week countdown until my JNCIE-SP expires. I had been toying with the idea of letting it do so since I spend as much time coding these days as I do network engineering things and more of my energy is on the coding side.

But this morning I changed my mind.

I have decided to renew it for another 3 years as insurance. Increasingly, I dream of a sabbatical. And if I have to provide for this myself, that will mean taking myself out of the work force and then finding a way back in. Having a certification will help.

Renewing involves taking the JNCIP-SP written exam: JN0-660.

My guess is that I can make myself ready after a few days of of study. I plan to put in a couple of hours each day studying and then take and fail the exam a week's time or less. There is no shame in this.

Veterans of the JNCIE-SP practical examination are well aware that failing the actual test is a key part of preparation. This is true for the written tests as well. There is not a good substitute to get you into the flow of thinking like the test other than doing it.

Incidentally, many things in life are like this. The only way to get real and hard data is to actually do something with the understanding that it may not work, but that in attempting to do it, you will learn things.

So... Expiring in 2 weeks? Probably not.

image.jpg

#JUNOS - Recovering from Alternate Media (YMMV)

Had a situation at work where I had to remind myself of something so that means it’s time for a new blog post.

--- JUNOS 12.3R3.4 built 2013-06-14 00:09:12 UTC
---
--- NOTICE: System is running on alternate media device      (/dev/ad1s1a).
---

fluong@tickle-me-elmo-re0> show system storage | no-more 
Filesystem              Size       Used      Avail  Capacity   Mounted on
/dev/ad1s1a             3.5G       283M       3.1G        8%  / <<<<<
devfs                   1.0K       1.0K         0B      100%  /dev
/dev/md0                 41M        41M         0B      100%  /packages/mnt/jbase
/dev/md1                 32M        32M         0B      100%  /packages/mnt/jkernel64-12.1R1.9
/dev/md2                 73M        73M         0B      100%  /packages/mnt/jpfe-X960-12.1R1.9
/dev/md3                5.0M       5.0M         0B      100%  /packages/mnt/jdocs-12.1R1.9
/dev/md4                 78M        78M         0B      100%  /packages/mnt/jroute-12.1R1.9
/dev/md5                 28M        28M         0B      100%  /packages/mnt/jcrypto64-12.1R1.9
/dev/md6                 46M        46M         0B      100%  /packages/mnt/jpfe-common-12.1R1.9
/dev/md7                388M       388M         0B      100%  /packages/mnt/jruntime-12.1R1.9
/dev/md8                7.9G        22K       7.2G        0%  /tmp
/dev/md9                7.9G        15M       7.2G        0%  /mfs
/dev/ad1s1e             394M        42K       390M        0%  /config
procfs                  4.0K       4.0K         0B      100%  /proc
/dev/ad1s1f              18G       2.3G        14G       14%  /var

Here’s the initial scenario. Routing-Engine re0 is booting from alternate media. IN MOST CASES this means a compact-flash on the routing has gone bad and has to be replaced by RMA, but in this case I happen to know that it’s a new RE and we had a USB install that went south. Keep this in mind and know that your mileage may vary with this one.

Other interesting considerations for this scenario is that for this router, a remote hands technician is not on site so we don’t have cheap easy options to do another USB install. Luckily JUNOS provides a means to rewrite the image on the compact-flash if you’re able to boot off the HDD/SSD: “request system snapshot partition

{backup}
root@tickle-me-elmo-re0> request system snapshot partition
Clearing current label...
Partitioning compact-flash media (ad0) ...
Partitions on snapshot:

  Partition  Mountpoint  Size    Snapshot argument
      a      /           671MB   root-size
      e      /config     400MB   config-size
      f      /var        2GB     var-size
Running newfs (671MB) on compact-flash media  / partition (ad0s1a)...
Running newfs (400MB) on compact-flash media  /config partition (ad0s1e)...
Running newfs (2GB) on compact-flash media  /var partition (ad0s1f)...
Copying '/dev/ad1s1a' to '/dev/ad0s1a' .. (this may take a few minutes)
Copying '/dev/ad1s1e' to '/dev/ad0s1e' .. (this may take a few minutes)
The following filesystems were archived: / /config

{backup}
root@tickle-me-elmo-re0> exit   

We verify that the compact-flash is in the boot list before rebooting.

root@tickle-me-elmo-re0% sysctl machdep.bootdevs
machdep.bootdevs: usb,compact-flash,disk1,disk2,lan

root@tickle-me-elmo-re0% cli req sys reboot

*** FINAL System shutdown message from root@tickle-me-elmo-re0 ***            

System going down IMMEDIATELY         

When your router boots next time, you should be able to verify that the root “/” partition is /dev/ad0xxx (for RE-S-1800). (marked below with “<<<<<<”)

fluong@tickle-me-elmo-re0> show system storage | no-more 
Filesystem              Size       Used      Avail  Capacity   Mounted on
/dev/ad0s1a             3.5G       272M       2.9G        8%  / <<<<<<
devfs                   1.0K       1.0K         0B      100%  /dev
/dev/md0                 40M        40M         0B      100%  /packages/mnt/jbase
/dev/md1                 19M        19M         0B      100%  /packages/mnt/jkernel64-11.4R3.7
/dev/md2                 60M        60M         0B      100%  /packages/mnt/jpfe-X960-11.4R3.7
/dev/md3                5.0M       5.0M         0B      100%  /packages/mnt/jdocs-11.4R3.7
/dev/md4                 78M        78M         0B      100%  /packages/mnt/jroute-11.4R3.7
/dev/md5                 28M        28M         0B      100%  /packages/mnt/jcrypto64-11.4R3.7
/dev/md6                 45M        45M         0B      100%  /packages/mnt/jpfe-common-11.4R3.7
/dev/md7                382M       382M         0B      100%  /packages/mnt/jruntime-11.4R3.7
/dev/md8                7.9G        18K       7.2G        0%  /tmp
/dev/md9                7.9G       744K       7.2G        0%  /mfs
/dev/ad0s1e             393M        44K       362M        0%  /config
procfs                  4.0K       4.0K         0B      100%  /proc
/dev/ad1s1f              18G       1.7G        15G       10%  /var