So, right now I'm inspired to write about something a little less than fun - pinkeye. It's nothing horribly detrimental to the overall picture of my wellbeing, but alas - I have come down with it in the last 72 hours. And, I can say that it itches. Frequently.
I got to thinking about how my dry, itchy eyes could translate into a post about software engineering and money. Then, the phrase "scratch the itch" occurred to me. In my case, what I imagine that referring to is making a career change. Even if you find yourself comfortable and content in your current role, sometimes you have to jump to something new to find out if your comfort was from complacency or not. Though, you have to be careful scratching itches. If you scratch too often you rub the skin/eye raw and make things even worse. So, plan carefully if you do intend to make a job jump - because the last thing anyone wants on their resume is "Unreliable" or "No follow through" or "Flighty". (Contractors/Consultants - this last line doesn't really apply to you as much.)
Now, it's pretty easy in some cases to know when to start looking for a new job. There's a slew of evidence that make it relatively obvious that you might be in a toxic work environment - I'm not really interested in diving into those right now. What I'm talking about is considering changing jobs even when things are going very well for you.
Software engineering as a profession sits on a pretty steep demand curve. Though I won't go into my current pondering about elasticity of demand around development salary, suffice it to say that even as developer talent continues to get more expensive, the current demand for developers in most jobs continues to increase dramatically. US News and World Report lists 3 of the top 10 in demand jobs as IT related. The rest are in healthcare. Similarly, CNN Money reports that 3 of the best 10 jobs in the US are in the technology field. As far as hiring goes, technically inclined people (vis-à-vis geeks) have reached rock star status. While I wouldn't recommend throwing your next latte in your intern's face because the foam wasn't airy enough, engineers can command excellent things from their careers. Just because things are going well for you now doesn't mean they can't be better, as long as you're willing to look.
To be fair, if you're already working for one of the top 14 tech companies to work for then the most you can hope for is ensuring your needs fit the company's needs - because it's usually pretty difficult to improve on "the best". There are ways, but they're much more subtle than outright job jumping.
What do you think? Is it worth it to scratch the itch?
3/23/2015
3/15/2015
How Do I Work From Home Effectively?
Imagine the kinds of things we are capable of now, when we have things like Google Hangouts, Skype, GoToMeeting, Join.Me, WebEx, etc. etc. etc. If my dad could fix a problem in 15 minutes in Japan, over the phone, oh how the technology of today should afford us the luxury of such much better communications.
Sadly, based on what I've seen of the available technology for teleconferencing - talking to someone half way around the world still suffers from drawbacks. First of all, if you're talking to a country with less than adequate network infrastructure you might get cut off mid conversation or suffer from extremely garbled voice data. You might also get to experience the joy of a nasty feedback loop. Because of the limitations created by infrastructure and technology boundaries that still exist, I strongly encourage you to make face to face contact in person with your team mates.
I've telecommuted full time, in fact quite recently within my work history. There are some things you can do to help the telecommuting pain become less of a burden, and I strongly encourage you to do the same.
- Use instant messaging. You cannot possibly expect synchronous conversation to take place all of the time. Send someone an IM. They're going to get back to you as soon as they can, even if it's to tell you "I'll get back to you tomorrow."
- Set up a dedicated chat room for your dedicated team. You likely have a close knit group of people working on solving the same set of problems. You should communicate as a team using team chat, and take conversations to one-on-one chat only when the rest of the team cannot benefit.
- Show up in the office on occasion. And plan on it regularly. I made a point of being in the office during our every other week planning sessions when I worked from home full time. And I asked the other members of my team that worked from home to do the same thing, which they all willingly agreed to do. Camaraderie comes from sharing a room and solving a problem together. It's much harder to build a team without this.
- Use video, not just voice. It's impossible to get non-verbal cues from team members about when they want to join a conversation, or when they're getting angry, or any of the other things we take for granted in a real live person setting.
- Get really good at writing emails that are succinct and effective. Get to the point. And do so without being as expansive as I am when I write. My blog tends to get wordy. Most of the time, my emails do not. I write an email and then serve as my own editor to pare it down to its bare essence.
Working from home is a beautiful luxury that I'm glad is opening up to professionals across the country. Many bosses still don't trust it as a full time solution, many bosses feel like its the only way they can keep their best employees from looking elsewhere for a job. Regardless of which boat you're in, making a point of communicating early and often will always ease the tension off of working from home (or Hawai'i). Do you currently get to work from home sometimes? Do you have any ideas about the best ways to make it work for someone who's hired you if you do?
- I grew up in a house full of programmers. Not only has my dad been a programmer for a long time, my younger brother also writes software for a living.↩
- I wasn't even a teenager yet in the early 90's. From what I know of what dad did back then, it was probably SQL. But, SQL and every other kind of programming talk might has well have been Klingon to me then.↩
3/08/2015
Should I Do Pro Bono Work?
| This is Bono. Pro bono means something else. |
Yes, I am. I've done it a few times, for various different reasons that made sense for me at the time. My examples, in chronological order:
I worked on a website for an animal rescue organization based on http://www.petfinder.org. It wasn't elegant. It wasn't well designed. And it was one of my first. But it taught me some of the most critical fundamentals of using HTML and CSS, so it was worth my time.
I worked on a website for a local musician working on breaking into a bigger career. I didn't charge anything for my time because, well, the musician was just wanting a starting point anyway. I figured that the experience I gained in building and administering a simple site was worth the few hours I put into it. Also, hopefully someday maybe that musician (not Bono) will make it big and remember me from "back in the day".
The most recent website I worked on is WordPress based for my daughter's preschool. Once again, the value I got out of this experience didn't come from the need to get paid. First, and foremost, the emotional fulfillment I got out of helping put something together that was so useful for so many parents and teachers really mattered to me. And, second of all it gave me something else valuable - WordPress/Digital Ocean administration experience.
When you do something for free, you get to make the rules and tell the "client" the best option they have based on the needs they have to fulfill. It gives you a chance to expand your experience into something you may not have already known. Or it can give you a chance to practice using skills you need to sharpen further. And, by golly, it's just good for the community at large!
Go, create, find someone you can help! I promise by helping them, you will help yourself too.
3/07/2015
Book Review - The Art of the Start 2.0
For anyone bitten by the "entrepreneurship bug" - this book provides deep insights into pretty much every subject that goes along with starting a successful business. Even if your "successful business" is to have a strong career within someone else's business, this book helps to inform intrapreneurship also. For anyone that's an "ideas guy/gal" that really feels like they want to take ideas to the next level, do yourself a favor. Spend a few bucks on a copy of this book and spend some time understanding what it's teaching.
3/01/2015
How Do I Manage My Personal Finances?
An important question to ask yourself - do you control your money, or does it control you? With the plethora of "debt relief" agencies offering to save people from their mountains of debt, obviously there are plenty of people who let their money control them. Successful businesses know where they spend money, where they earn money, and carefully protect themselves from ever maintaining a deficit whenever possible. As an engineer thinking as a one person business, taking care of your own finances has an important impact on your ability to work (and to not work).
Individuals who spend some portion of their day worrying about their personal financial situations add additional stress. Stress in small quantities has proven positive benefits. Stress in massive quantities has proven negative drawbacks. Having control of your money reduces the stress caused by financial burden. Getting control of your money takes some careful planning and execution, but it's well worth it. Here's the steps/rules we follow in my family to keep control of our money:
Individuals who spend some portion of their day worrying about their personal financial situations add additional stress. Stress in small quantities has proven positive benefits. Stress in massive quantities has proven negative drawbacks. Having control of your money reduces the stress caused by financial burden. Getting control of your money takes some careful planning and execution, but it's well worth it. Here's the steps/rules we follow in my family to keep control of our money:
- Maintain a family budget and reconcile it once a week (or at least once every other week) against actual expenditures. We use a pretty cool spreadsheet system to help us keep track of cash flow, income, expenses, and upcoming budgeted expectations. If that's not really your cup of tea - maybe http://www.mint.com or something similar can help you get a better picture of what you're spending your money on.
- Work towards entirely eliminating consumer debt. If you have credit card debt, don't buy anything else with the credit card until you've eliminated it. Credit card debt is absurdly expensive - at least now credit cards show you how much money you'll spend if you do nothing but pay minimum payments to your grave. Numbers like that are pretty stark compared to the original price of something. I found a good little tool at http://www.creditcards.com/ that can also help show you just how expensive consumer debt is.
- Do your best not to take on a car payment, either. One of the most expensive things we own as consumers in the USA is a vehicle. Also, don't buy a car brand new. In less than one year the car is worth 50% less than it was when it drove off the lot. Let someone else spend 50% so you can save your wallet.
- Take advantage of the benefits your employer provides. Specifically, if your employer provides matching into a retirement fund - maximize that benefit. In my experience an employer will match something like 50% of your investment up to 6% of your total income. What this means is that if you willingly set aside 6% of your income into the employer provided retirement account, you just gave yourself a 3% raise with employer matching. Just watch out for what the vesting rules are. If you don't stay in a company for at least 5 years (in most cases) the company will re-claim at least some of the matching they put into your account.
- Have enough cash on hand (or in your checking account) to deal with any emergency that might arise. Also, plan for the depreciation of your assets, so that you don't have emergencies that are related to "things". Every object has a shelf life. So plan to replace it the moment you buy it, and work that into the budget. But if for some reason something breaks down before you're ready for it to, that's where the emergency fund comes in handy. Obviously nobody can foresee medical emergencies. Have enough money on hand to deal with them - whatever that means in accordance with your insurance policy.
- Have a diversified investment portfolio. Outside of the 6% you're setting aside with your employer's retirement plan, at the bare minimum an additional 4% should be set aside for retirement, (10% is the goal) which you should invest on your own. This money doesn't have to go directly into an IRA, but you should invest it in long term assets that are less liquid. Then, only in the case of an extremely catastrophic emergency you'd have access to these "back-up" funds. But in no situation should they be for something like taking a vacation early or buying a nicer car.
I think I may be forgetting a few of the items we do to protect our finances, but these five do a pretty good job as a starting point for how to keep your money working for you. My wife and I rarely have to stress about our money. We know how much comes in. We know how much goes out. And in general, our lives are much less stressful because of it.
2/25/2015
How do I Set My Goals?
I spent some time today working with my boss to define my goals for the year. I'm glad I work in a place where I get to help define my goals, and don't just have a task load handed down to me from the nether where I'm not even sure where a task originated. One of the great benefits of having goals is knowing how to do my absolute best to exceed all expectations of my performance. Another benefit of having goals is to have something to measure myself against. And, goals also help me as a person better understand if my boss' expectations of my output match my expectations of what I'm capable of as a worker.
When I was taking a course in operating systems (and at the same time taking a course in operations management...) it occurred to me that the algorithms used for processor scheduling, specifically determining which process/thread gets processor priority at a given moment, isn't very different from operational management. However, instead of working on an application process, usually operational management focuses on a project or output of a product.
The operating system has "goals" for its processor. It knows which applications get more priority based on the importance of the process for the user, and for maintaining system operations. In the same regard, goals as a developer give us the direction that we need to focus our attention.
I can't speak for every developer out there, but for many of the developers I've worked with, solving one problem can lead to research and implementation that may not actually solve the immediate problem at hand, or even really have much of a relationship to the original problem being solved. I, myself, have regularly had programming problems/algorithms invite my brain to start contemplating P versus NP Problem, but I have the added benefit of goals to look at and remember that solving P versus NP has 2 issues:
When I was taking a course in operating systems (and at the same time taking a course in operations management...) it occurred to me that the algorithms used for processor scheduling, specifically determining which process/thread gets processor priority at a given moment, isn't very different from operational management. However, instead of working on an application process, usually operational management focuses on a project or output of a product.
The operating system has "goals" for its processor. It knows which applications get more priority based on the importance of the process for the user, and for maintaining system operations. In the same regard, goals as a developer give us the direction that we need to focus our attention.
I can't speak for every developer out there, but for many of the developers I've worked with, solving one problem can lead to research and implementation that may not actually solve the immediate problem at hand, or even really have much of a relationship to the original problem being solved. I, myself, have regularly had programming problems/algorithms invite my brain to start contemplating P versus NP Problem, but I have the added benefit of goals to look at and remember that solving P versus NP has 2 issues:
- It's an impractical use of my time in the current situation I am in because it doesn't really help me reach the goals my boss and I have set for one another
- Theoretical thinking is great. But it's even greater if it applies to the problem I'm trying to solve
Sometimes goals are used as extrinsic motivation (I think this is a horrible idea. So does this guy: Dan Pink: The Puzzle of Motivation) and if this starts happening, it's probably time to re-evaluate the goals system, and also potentially your current employment situation. If, however, the goals you define closely mirror what you're intrinsically motivated to excel at anyway, goals give us a clear picture of what we "Should" and "Shouldn't" be working on. For me, that's a clear removal of cognitive dissonance, and something that I really appreciate having.
2/22/2015
How Do I Stay Connected?
Something interesting happens when you start professionally networking. People start to notice you. The number of connections that I have on LinkedIn currently exceeds 400. These are all people that I know personally, or have in one fashion or another interacted with professionally. This isn't the same thing as a Facebook friendship. I don't currently use Facebook (which is a long and rather non-relevant story here) and even when I did, I had less than 400 friends. Yet, each one of the interactions I have on LinkedIn has some kind of relevance me professionally.
Something interesting happens when you start having a wide professional network. People start to notice you. I have recruiters contacting me routinely with new potential positions. Most of them are just desperate and trying to meet a head count for a nameless entity that they may or may not really care all that much about. Some of them don't even really speak fluent English. I even had one ask me if I was fluent in "C Pound". <phone click>
However, if you can tolerate a little bit of "recruiting noise" networking is one of the best ways to find employment - whether through a conventional "career" or by acting as a consultant. When you put your experience and your knowledge on the internet for everyone to see, you expose yourself to potentially amazing things. My current position is absolutely no exception to this rule. Every job I've held has been "better" than the last one, whether through an internal move or by changing to a different company. Because of my family responsibilities and the relatively low need for contract work in the market I live in, consulting hasn't really been a viable option for me to consider. Plus, I really do love my current job.
However, with the wide berth you get having a global profile on the internet, companies from all over the country/world know about you. And there's a talent shortage for good engineers right now. But, the best companies want to ensure they get the right people. And they're going to dedicate resources to researching finding the right people for their organization.
Amazon has contacted me twice about starting a position with them. Unfortunately, moving to Washington isn't really in the cards for me. But it's exciting to me that large companies like them take notice of my capabilities. And it was easy to do. LinkedIn is really a powerful tool that no professional should ignore.
There's other kinds of professional networking available, too. Believe it or not, Twitter is a great resource for professional networking. As long as you use it properly. There's also this archaic medium called face-to-face conversation that works pretty well too.
Most of the engineers I know either consider themselves socially inept, or just really don't care about the socialization aspects of their careers. A small core group of guys that I know really well all stay in touch via Google Hangouts. I think this kind of communication is critical. A few of them even keep me honest on this blog, making sure I'm not screwing up spelling, grammar, and other important things. And they're giving me content feedback, too.
Your professional network may just be one of the most important tools you can rely on for growing your career into the thing you want it to be. If you ignore it, you'll likely be stuck just applying blindly for jobs that you may or may not even want. If you capitalize on it, I really don't feel like there's a limit to where it can take you. What do you think?
Something interesting happens when you start having a wide professional network. People start to notice you. I have recruiters contacting me routinely with new potential positions. Most of them are just desperate and trying to meet a head count for a nameless entity that they may or may not really care all that much about. Some of them don't even really speak fluent English. I even had one ask me if I was fluent in "C Pound". <phone click>
However, if you can tolerate a little bit of "recruiting noise" networking is one of the best ways to find employment - whether through a conventional "career" or by acting as a consultant. When you put your experience and your knowledge on the internet for everyone to see, you expose yourself to potentially amazing things. My current position is absolutely no exception to this rule. Every job I've held has been "better" than the last one, whether through an internal move or by changing to a different company. Because of my family responsibilities and the relatively low need for contract work in the market I live in, consulting hasn't really been a viable option for me to consider. Plus, I really do love my current job.
However, with the wide berth you get having a global profile on the internet, companies from all over the country/world know about you. And there's a talent shortage for good engineers right now. But, the best companies want to ensure they get the right people. And they're going to dedicate resources to researching finding the right people for their organization.
Amazon has contacted me twice about starting a position with them. Unfortunately, moving to Washington isn't really in the cards for me. But it's exciting to me that large companies like them take notice of my capabilities. And it was easy to do. LinkedIn is really a powerful tool that no professional should ignore.
There's other kinds of professional networking available, too. Believe it or not, Twitter is a great resource for professional networking. As long as you use it properly. There's also this archaic medium called face-to-face conversation that works pretty well too.
Most of the engineers I know either consider themselves socially inept, or just really don't care about the socialization aspects of their careers. A small core group of guys that I know really well all stay in touch via Google Hangouts. I think this kind of communication is critical. A few of them even keep me honest on this blog, making sure I'm not screwing up spelling, grammar, and other important things. And they're giving me content feedback, too.
Your professional network may just be one of the most important tools you can rely on for growing your career into the thing you want it to be. If you ignore it, you'll likely be stuck just applying blindly for jobs that you may or may not even want. If you capitalize on it, I really don't feel like there's a limit to where it can take you. What do you think?
Subscribe to:
Posts (Atom)