Chapter 1: Beginnings
Chapter 2: Further Beginnings
Chapter 3: Hello World
Chapter 4: More On GPIO
Chapter 5: Interrupts
Chapter 6: More On Interrupts
Chapter 7: Timers
Chapter 8: Adding Some Real-World Hardware
Chapter 9: More Timers and Displays
Chapter 10: Buttons and Bouncing
Chapter 11: Button Matrix & Auto Repeating
Chapter 12: Driving WS2812 RGB LEDs
Would you like to be notified by email when Jason Sachs publishes a new blog?
I recently completed a 16-year stint at an engineering company. I started there fresh out of college in June 1996. This June I just started a new career as an applications engineer in the area of motor drives at Microchip Technology in Chandler, Arizona. The experience I had in switching jobs was a very enlightening one for me, and has given me an opportunity to reflect on my career. I want to share some of that reflection with you.
Disclaimer: the opinions expressed in this and other blogs are my own, and not that of my previous or current employer. Also, the only advice I can give is that based on my limited experiences. Take it with a grain of salt, and please look for other perspectives before you make important life decisions.
While you're at college, do everything you can to gain a variety of useful experiences. Unless you've somehow managed to find your calling at an early age, it's best to keep your options open. What's useful, from an engineering standpoint? Just about anything. Companies like to see in young workers a sense of initiative, good communications skills, and an ability to learn quickly. I'm not sure I would recommend retail sales or waiting tables in a restaurant, unless it's the only way you can pay the bills; I did a series of odd jobs the summer after my senior year at college, including working part-time at the campus library and at the front desk in my dorm -- my thought was to take a break from engineering and lower my stress level, but I actually found it more stressful and none of those jobs were useful experiences for me besides learning some arcane trivia facts from the library job. (I still have a copy of a page the U.S. government sent out to Federal Depository Libraries in 1995 to revise part of the document that defines the geometry of the radiation warning symbol. Go figure.)
Start learning early about investing. Even if you can only spare a few dollars a month, it's worth gaining the experience, and the money you save when you're young will grow over time.
I think your first job out of school should be a pragmatic choice, not a perfect one. Don't try to find your ideal career right out of the gate. Instead, it should be an experience that is a mild form of mutual exploitation between you and your employer.
What do you get out of it? A salary, new skills and experience, a baseline for what the engineering environment is like, the chance to network with colleagues at other companies, and some personal references for your next step.
What does your employer get out of it? Recent graduates are the least expensive employees, have the most energy, and are usually the least specialized, so you will get asked to do a lot of miscellaneous tasks not covered by your more experienced colleagues.
Learn a lot. Show confidence and competence. Learn to listen. Speak your mind when you see an opportunity to make a difference. Let people rely on you, and become a valuable contributor.
Find a mentor
If you can figure out your career path on your own, that's great. But it's much easier to do so, if you can find a more experienced engineer who will mentor you. I recommend getting to know one or two people that you get along with well, with whom you do not work directly, and from whom you can get some perspective based on their experience. If your relationship with a mentor includes an opportunity for technical learning, that's great, but your primary goal should be to have someone within your industry that you can confide in and seek guidance.
How long should you stay?
How long should you stay? I'd recommend planning on working between 2 and 5 years. Unless it's a horrible match for you (something you want to avoid, so pay attention during your interviewing/hiring process), stay at least two years. If you're not happy, start looking elsewhere. If you've been there 5 years and you're fairly happy with your employer, start looking elsewhere anyway -- it will give you some perspective: if you find someplace that looks more appealing, great; if not, it will help you confirm that you've lucked out with your first employer and have made the right choice.
Let's look at three examples of successful careers:
Samuel Clemens (aka Mark Twain, 1835-1910)
Richard Feynman (1918-1988)
Jim Williams (1948-2011)
You'll note that in all three cases the individual in question had several employers but had settled down to a relatively steady career by their early 30's. This is a pattern I think is worth emulating.
I made the mistake of staying with my first employer for too long, mostly because I put too many constraints on myself:
Many of the projects I worked on were stressful and didn't bring me satisfaction, but there were a few that I enjoyed very much, and I kept up hope year after year that it was just a matter of time and effort to find the right fit. In hindsight, the best choice for me would probably to have left sometime between 2002 and 2005 (after 6-9 years there) -- that includes a lot of reasons I can't share, but it basically boils down to the following: I have some unique strengths (in my case, motor control and signal processing) in areas where my most productive years in gaining new experience were between 1999 and 2003. In the years after that, I have had more learning opportunities and am a much knowledgeable engineer as a result, but the rate at which I gained experience I can apply elsewhere had dropped to a fairly low level, and I became more cynical and lost some of the initiative and confidence I'd had in earlier years. If I had left by 2005, I suspect I would have kept that momentum going, and would have still had the benefit of most of the experience I have now. Or maybe not -- who can say for sure?
"Progress, far from consisting in change, depends on retentiveness. When change is absolute there remains no being to improve and no direction is set for possible improvement: and when experience is not retained, as among savages, infancy is perpetual. Those who cannot remember the past are condemned to repeat it." -- George Santayana
Make sure you spend some time on a regular basis -- at least a few times a year -- on positive reflection. Look at the big picture, both within yourself, and about your team or division within your company. What has worked well for you? How can you improve? Take the time to write these thoughts down, and look at what you've written previously.
In cleaning out my office, I found some notes I'd made to myself and others over the years, and it was really helpful for me to get that perspective not just of what I thought about the job right now but how I've changed over time. I wish I had done this more regularly, and I want to do it better as I enter into a new career.
Keep up to date with new technology. Don't ever stop learning.
It's also important not to abandon your strengths. One decision that has worked very well for me, is to be a contrarian. I don't like fads. There are a lot of new technologies that have been coming out in the last decade, like C# and .NET and Ruby on Rails -- and while keeping up to date with new technology is critical, jumping on the bandwagon puts you in competition with every other person doing the same thing. When the dust clears and a fad has passed, many of those people will be out of a job. Much of my skill set I have developed while observing what is not being handled well by other employees or by the newest software tools. I've chosen to learn how to do some things that are difficult. This skill set is hard to find.
Network, network, network -- it's really important to keep a good perspective for what else is out there. I didn't do enough networking, and as a result my perspective is skewed very strongly towards my direct experiences at my first employer.
So you think you might want a change of career. Repeat the following statement to yourself several times: It is not a bad thing to look at other opportunities.
I had several people I trusted tell me over the years that maybe I'd be better off working elsewhere. If this happens to you, don't ignore it. This doesn't mean it's time to hand in your resignation tomorrow -- on the contrary, maybe you'll be better off with your present employer doing something different. But there is a lot to gain by looking around, and it may well give you perspective on how to work with your present employer to change your role in a way that works better for you.
At the very least, start talking to colleagues at other companies. Find out what they like or don't like about their positions and their environments. Get some perspective about what a change in career might mean for you -- are there places you might use your skills directly? It may be really easy to switch jobs and do a very similar thing in an environment you like better. Or perhaps there are other opportunities that are different, which you may not have considered, either because you don't think you'd like it, or you don't think you're ready for it. You might be wrong about both of these things.
During my career search, I spoke with six different potential employers, and looked into several others. Of those six employers, three were local to my area, one was a large international company with an office in my area, and two others were large companies located elsewhere -- but all of them were companies where I had a personal contact I'd made over the years. Such is the power of networking. It is much easier, both for you and for a new employer, to make the first step towards your career change, if it's not your first step in getting acquainted with someone who works there. I was willing to send my resume to an HR department out of the blue, but I didn't find any other companies that seemed to offer an opportunity worth taking.
With a 16-year hiatus between my post-college interviews and this latest round, I was a bit rusty, and was caught a little off guard to find out that the interview process was different for me as an experienced engineer compared to when I was a recent graduate. When I went on interviews in 1996, nearly all of them were technical quizzes involving spur-of-the-moment circuit analysis. This time, nearly all of them started with what I would call "role-matching" questions: the interviewer explained what kinds of roles they were looking to fill, or they asked what kind of a position I was looking for. I didn't expect this (and in fact in one case I think it prevented me from getting a more in-depth interview, because they suggested I spend more time defining what kind of job I wanted), but in hindsight it makes sense: young college graduates are inexperienced but malleable, and problem-solving skills are very important -- whereas with an experienced engineer, in some cases it can be much more difficult to ensure a proper fit. After they had already talked to me and had some idea that my interest and skillset would fit their needs, I did get asked technical questions at my interviews, but that occurred later in the interview process. I'm glad they did so -- it shows that the employer in question wishes to find out how you think and make sure you know your stuff.
Make sure you ask questions of your potential employer and coworkers. It's not because you want to leave a good impression, but rather it's really your only opportunity to get a sense of what the work environment will be like before you arrive. I had some concerns from my experience at my former employer, and I wanted to find out whether things would be different at my new company.
There were two areas in particular I wanted to understand. One was how the product development process worked: formal requirements vs. no spec, strictness of process, how researchy vs. product-developmenty things were, etc. (For positions related to software engineering I would run the Joel Test by them.) The other had to do with the pace and work/life balance: If they could draw me a probability distribution of how many hours a week I'd be working, what would it look like? Was the average 40 or 50? Was the high end 45 or 50 or 80, and how often would those spurts happen? I worked a couple of 55-60 hour weeks my first few years after graduating, and it left me drained and those last few hours weren't very productive.
Sometimes companies want multiple interviews, where an "interview" is anything from an informal phone call to a cross-country plane trip. If you feel like you're making progress learning about a company and getting a good impression from the people you speak with, it's worth the effort. Both of my employers had multiple interviews: my first employer had 4 interviews (one by phone, one on campus, the remaining two at the company), and with Microchip I had 5 interviews (two by phone, one locally, another by phone, and then finally one at their company headquarters).
But it's also important to be up front about the job process: if you're applying for a particular position, after your interview, find out their time frame when they will get back to you to let you know what the next step is. If you're applying to the company in general, make sure you find out whether they have an opening they can fill. It can be rather frustrating to spend your time talking to people in a department that feels like you're a good fit, only they don't have any open requisitions right now and aren't sure when one will arise.
Finally, do your homework: unless the company is some secretive startup, find out as much as you can before your interview about what they do and what kind of information they post online that would relate to your job. If they're a hardware or software manufacturer, read up on their products.
I gave my previous employer 2 1/2 weeks notice and worked hard during those weeks to tie up as many loose ends as I could. I did so in large part because I wanted to maintain my reputation in good standing. This company has had numerous former employees return after an absence of several years. While I'm unlikely to return, I wanted to leave knowing I would probably be welcome in the future.
Nearly everyone in the company was surprised at my departure, because I'd been there so long I was now considered one of the "old-timers", but they all wished me luck. Those 2 1/2 weeks were among the best of my tenure there, and it has improved my mood and my confidence in the future.
I am neither a manager nor a business owner, so I can't give much advice in this area. But there are a few areas which stand out as things that were lacking in my former employer.
Provide a productive and comfortable work environment. My former employer had gone through several phases of renovation in recent years, each targeting a different area of the building, ripping out walls and offices and turning floors into large homogenous arrays of cubicles, with low partitions, along with a couple of lab benches. The ostensible reason for this change was one of increased "productivity" as defined by more employees in a given area and more interaction between those employees. I would dispute that the change helped improve overall productivity. I don't mind cubicles, but it can be very distracting when you're trying to concentrate on solving an engineering problem and there are 40 people nearby who can break that concentration whenever one of them picks up the phone. My ideal working environment is to be in a shared office with 4-8 other people. It's small enough that there's a chance to keep concentrated on a task, but large enough of a shared space that you have a sense of teamwork and the ability to easily interact with your colleagues.
During the last year I was working there, the copy machine and the laser printer and the color inkjet printer and the scanner on our floor were taken away and replaced with a single all-in-one color printer/copier/scanner, which broke down a lot, leaving several dozen people sharing at most one and often zero printers. Not only was it a waste of time -- I measured how long it took for me to reprint a document and run upstairs to the other printer to get it, then back down to my office: an extra 6 minutes for each printer run -- but the longer the interruption, the more likely my concentration was broken and the more time it would take to re-enter that state of "flow" for my best productivity.
On top of that, some of my coworkers were told they could no longer have filing cabinets. (I forget the explanation given; it had something to do with aesthetics.)
In the time I was at that company, we grew by about 400% in staff, but the total space in the company allocated towards break rooms stayed about the same, and the attention paid to keeping those rooms useful to us was minimal. Kitchen appliances were poor quality, and the tables and chairs in the break room when I left were the same ones that were there 16 years earlier when I started, only a bit worse for wear. In the last year while I was there, the company had maintenance workers come in more often to keep the break rooms clean, but nobody did anything to replace paper towels or dish soap when they ran out. One change we had in the past few years was a new area in the cafeteria where we could store lunch in refrigerators and there were some dedicated microwaves for reheating food -- but there was no place for employees to store utensils or plates, and no sink to wash them afterwards.
I could go on with this subject but that's probably more than enough to say about it. If you're an employer, and you want your employees to be productive, give them a space that makes it convenient and enjoyable for them to do their jobs. Two companies I would point out that do extremely well in this regard are Apple Computer and The Mathworks. From what I've seen of them, both have buildings that let lots of light in and are wonderfully architected office spaces.
Provide the opportunity for positive reflection. I mentioned positive reflection earlier in this post. During the years I was there, we had only one occasion after a stage of a project was completed where we had time to meet in groups and discuss how it went. Short intermissions of this type provide an opportunity to learn lessons and make improvements working on the next stage or on new projects.
Consider the cost-benefit tradeoffs of non-monetary perks, and aim for win-win situations. Engineering careers are often stressful -- it usually involves lots of fast-paced problem solving and races to meet technical and financial challenges. And that's just the work part of our lives. Note to employers: the more you can remove small stressful bits of our lives, or add small things that make our lives more enjoyable, the more of our brains we can use to solve those technical problems at work. Not only that, but we feel more valued in the process. Some companies have learned this. Here's an example: Apple has shuttle buses that will bring employees to work. Does it cost them more money? Sure. But it leaves their employees with more time and energy to focus on the problems of work. One of my own weaknesses is free food. For every dollar my employer has spent on food, I'll bet I gave back at least 4-5 times as much in extra effort to get the job done. It's an easy win-win situation.
Don't round down. This is a corollary of my previous point: if you've gone through the math and it looks like a perk has an unclear cost/benefit tradeoff (but not a negative one, like taking too much time to handle the logistics of it), err on the side of providing that perk to employees, not on the side of taking it away. I don't know if this is true for everyone, but the impact of bad news on my attitude has a much larger effect than good news: if I have a small perk and a small annoyance of equal magnitude, I'll end up remembering the annoyance more than the perk.
We used to have these interesting presentations given at my previous employer, maybe 4-6 times a year. Originally they told us we could count half our time as hours worked, and the other half as personal time. I thought that was fair; usually the ones I went to had relevance to my job anyway. Then a few years ago, the presentation announcements had changed and said we were encouraged to attend, but they were all to be counted towards personal time. The way I reacted to that was that I went only to the ones that I found extremely interesting or relevant. If I thought it might be interesting or useful to my job, but I wasn't sure, I decided not to attend: my employer wouldn't go the extra mile for me.
During my last few weeks there, I was reconciling my record of remaining vacation time with my employer's records, and I was off by about a day. When I looked more closely at it, I found out that the difference was due to the vacation time accrual policy: vacation days were not prorated, but only given when a calendar month was completed. I had worked 3 weeks in that last month, with a lot of extra hours to wrap things up. I told them this, and asked them if they could give me the extra day, or at least prorate it. I did get the full extra day: they rounded up, and it turned what would have been the only bad experience in my last few weeks into a much better last impression of the company.
So don't round down.
Finally: Don't undervalue achievements. Even minor ones. Praise can go an incredibly long way. It's a social lubricant to keep cranky engineers from building up resentment. If I saw something I noticed that helped me or my project out, I would try whenever possible not to take it for granted, and thank the person that made it happen. I like to hope that any manager, or project lead, that I work for will do the same for me.
Add a Comment