Level Up Your Programming Skills And Connections Through Volunteering

Do you feel stuck in your current job?

Maybe you are working on Line of Business desktop apps but you really want to be doing native iOS or Android work? Perhaps you are working for a large corporation–and have been for years–attending a lot more meetings than you used to, and you keep hearing about the good life at small startups.

I’m going to let you in on a little secret I accidently discovered just a few years into my career. I’ve pivoted multiple times, by choice, and last year landed my dream job as the technical co-founder of a local startup in downtown Austin. So what’s the secret?


That’s it!

Now, don’t click away just yet. Thar be some powerful concepts at work behind the gift I just handed you, matey! Stick with me so we can unpack this box.

First Volunteer Work: Sys Admin

First, let me explain how I figured this out.

Active Directory Users and Computers
About 15 years ago I setup a 25 PC, Windows 2000 network for a women’s crisis center for free. It’s a long story but the point is that at the time I didn’t really understand the value of what I did. I just needed
the experience because I thought my dream job was to be a Windows NT systems admin and I was studying for my MCSE at the time. (I aced the tests btw). I completed that project and landed a paying NT Admin job later that year while feeling good about helping a good cause.

Since that experience I’ve successfully voluteered my time to nonprofits, startups, and friends with small businesses. The project size and scope is really up to you to define just as long as it’s valuable to everyone involved.

Forget About Money (For Now)

First off, too many people I know won’t take this advice because they are stuck and failing at earning “market rates” for their work. Your compensation is going to be real world experience that deserves a prominent spot on your resume.

io1Or maybe they don’t have the time. Heck, it’s midnight, and I didn’t start writing this until after I put the kids to bed. I wanted to help a friend by guest posting and sharing some of my best ideas though. I happen to like writing and sharing knowledge with others. (Side note, guest posting is a great way to volunteer your time.) Look for projects which have a very defined scope that you think you can pull of in the time you used to spend power watching random two-star sitcoms on Netflix.

Trust in the fact that it will pay off in the long run. Good deeds don’t go unnoticed.

Problem Solving IRL

In addition to experience, there is something about listening to a client explain their problem forcing you to come up with the solution. That’s the type of knowledge that won’t appear in a textbook and that’s exactly the type of real world problem-solving ability that future employers are looking for.

Volunteering sends a message about the type of person you are. Explaining the project work you did for a nonprofit is interesting. Knowing that you did it to level up your game says a lot.

References Matter

You are also going to walk away with a solid reference if you are successful. Go check my LinkedIn recommendations that others have written.

I received a glowing comment by Kent Odland for volunteering my time to his young startup last summer after having coffee with him once. It was an interesting startup concept and I wanted to learn a specific skill he needed. He didn’t believe me at first. I think he thought I was trying to steal his IP or email list because he asked me to sign about 5 pages of legal documents saying I would be liable for missing deadlines, etc. I didn’t end up signing anything other than an NDA. I simply had the time and wanted to help him.

Do you think Kent would bend over backwards to get me an interview at his employer if I asked him to? I’m pretty sure he would!

Be Of Service To Others

As engineers we typically think of learning as a solo activity. We go buy a book, read through every search result on google and stack overflow, then maybe we create yet another Todo list project on Github, etc. Trust me, I’ve been there too and I still have to resist the urge to rely solely on this method of learning.

Thread Co-Founders
The Thread founding team

What’s interesting is the mental shift that happens when you are working for someone rather than simply working on something. The former requires accountability and relationship building, while the latter often lacks direction and purpose. I’m willing to bet you will learn more at a faster pace by working for someone or some cause than if you go it alone.

When I say “working for someone” I’m talking in the noblest sense that you are being of service to another person. Which is a very humanizing thing. People inherently care about people they know. Working side-by-side in the trenches is such a powerful mechanism. You simply cannot get to know a person by meeting for coffees alone. Work for them, work with them, in order to get to know them.

“The best way to find yourself is to lose yourself in the service of others.”
– Mahatma Gandhi

Engineering work can be isolating, while career building is a team sport.

Don’t Overthink It

Don’t be tempted to try to identify projects only for people or companies where you believe they could directly help you in some way. If you read about my journey to becoming the technical co-founder of Thread, you might think I had some master plan at work.

The truth is that I didn’t have a plan other than trusting in the process. In hindsight it’s easy to line up all the events that took place and draw a straight line between points A and B. However, that’s not the whole story. I volunteered to help four different organizations last year and three of them didn’t directly lead to my current opportunity. But I do have a stronger network filled with people who would love to help me if I called on them.

Takeaway: Volunteer To Learn Specific Skills

The final lesson I want to leave you with is that my only “plan” was to be of service to others while developing some very specific skills.

In this case, my thesis was that iOS development was in high demand and my enterprise mobile background was already a good foundation for this pivot. I made a ton of connections along the way and many of those relationships will just continue to grow. I never knew where it was going to lead me but I was always confident that I would find something interesting if I kept going.

I hope you consider volunteering time as a valuable career building strategy and a great way to help those around you.

Be hungry and trust in the process my friend.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More


Setting clear goals to help guide your career decisions

For the sake of argument, let’s say that you’ve been working as a software developer for a while and you’ve been able to advance in your career. You’ve gotten a few raises and maybe a promotion or two. If someone were to ask you how your career is going, what would you answer? Better yet, how would you answer? You might say that it’s going well considering that you’ve been able to advance financially and have been promoted to a more senior position. Is this a good enough answer? Are promotions and raises the only measures of success and failure for our careers. If you’ve been following the DREAM principles and have taken the time to DISCOVER who you are and REFINE your goals, then you have a lot more data points at your disposal to answer these kind of questions. Most importantly, you have the career goals that you’ve established and can use to quantify your success and measure how much progress you have, or have not, made towards them.

If someone were to ask you how your career is going, what would you answer? Better yet, how would you answer?

As I’ve mentioned in previous posts, when I came out of college I didn’t really have an idea of what I was going to do with my career.  I was not really prepared to be a professional software developer at all. Nothing in my youth or schooling had gotten me ready for the real world. In fact, for the first few years after school, I just did whatever was in front of me and took every opportunity I was presented with without much regard to career path or any other personal goals.

At first glance, you could say that this was working well for me. I was progressing rather quickly at work and I had become pretty good at my job. In the first 5 years or so, I had switched jobs once, gotten several raises and had already been promoted into a management position. To a certain extent, these minor successes had blinded me to the shortsightedness of my career choices. It took me a while to realize that although I was advancing, I wasn’t really doing well in terms of my career.

You see, the first job I took after college consisted mostly of writing backend applications in Perl. Then, I switched over to a job working at a small Cold Fusion shop.  Neither of these programming languages were what I considered cutting edge and, in fact, I could see that there was no future in them for me. Yes, I was gainfully employed, but I was losing a lot of ground with respect to the changes that were happening in the software development industry. There were new programming languages, tools, technologies and process that were taking off and I wasn’t getting any exposure to them. This realization hit me like a ton of bricks. I knew that if I didn’t do something about it quickly I would soon become pigeon holed into the niche programmer that I was becoming and it would be really difficult to regain all the ground that I had already lost.

I realized that if I did not set these goals for my career I ran the risk of digging myself into a hole that I would not be able to climb out of.

So, what happened? How did I get to this point? How could I have gone for so long without realizing that I was falling behind and coding myself into irrelevance? After thinking about this for a while, I realized that I had never really set any career goals for myself. Up until then, I had been reactive. I would only ever consider the opportunities that fell into my lap. I wasn’t proactively looking to take the next step to better my career or progress towards a goal. This was a HUGE eye opener for me. I realized that if I did not set these goals for my career I ran the risk of digging myself into a hole that I would not be able to climb out of.

goals-signI immediately pivoted and started working towards what I felt were more appropriate career goals. I decided that I would go back to working in the C# .NET programming language that I had started looking into a few years before. I would use that to try to get my career back on track. After realizing that this was not going to be possible at my existing position, I decided to leave my management role and take a developer position with a different company that was using C# and other leading edge technologies, tools and processes. I knew that it was a very risky move. I was essentially giving myself a demotion but I also knew that it was the right move for me in the long run. I was banking heavily on my ability to learn and excel at anything that I set my mind to. In hindsight, I know I was very fortunate that my gamble paid off in the end.

At this point, you might be thinking “Wait, what’s so wrong with being a Perl or Cold Fusion programmer?” Well, nothing really. I could have stayed at the same job or even gone somewhere else and continued working in either of those programming languages. Maybe I would still be working somewhere in that space today. In fact, I have a couple of friends that are still doing really well as Cold Fusion developers. The problem wasn’t that I didn’t think I could make a career out of Cold Fusion or Perl. The problem was that I didn’t want to…and I had never intended to. I had ended up there because I had not been focused on my career and had made decision without setting or considering my long term goals.  I knew there were other things out there that I wanted to do and I realized that the only thing keeping me from doing them was myself. I had never really focused on my career or set any goals that I could work towards. So I just took what was available and didn’t really consider where I wanted to be in 5, 10 or 15 years.

Things that I didn’t think I was interested in when I was in my 20’s have become a lot more appealing to me now that I’m in my late 30’s

successAfter having refocused and refined my career goals, I took the necessary steps to align my career with them and start making progress in that direction. Soon, I was advancing just as I had at the onset of my career but this time it was more in sync with my long term goals. As it turns out, this wasn’t the only time I had to reset goals for myself. In fact, I’ve found that I have to do this fairly frequently. This isn’t necessarily a bad thing. We are all growing every day – changing as developers and human beings. Things that I didn’t think I was interested in when I was in my 20’s have become a lot more appealing to me now that I’m in my late 30’s. At the same time, our young industry is changing at an extremely rapid pace. New technologies, tools and processes are being developed every day that might make us reconsider our goals from time to time.

The key takeaway from all of this is that we should always be working towards some goal. That goal might change over time, but it’s crucial that we always have one to help guide us as we navigate through our careers. How can we really quantify our progress if we don’t know what we’re supposed to be progressing towards?

Without [goals], it is difficult to determine if you are heading in the right direction or not. In fact, goals are what will determine that direction.

In order to know whether you’re making progress in your career, you need to establish the goals that you are attempting to reach. Without them, it is difficult to determine if you are heading in the right direction or not. In fact, goals are what will determine that direction. Setting goals is not an exact science, so don’t expect to get it right the first time around. The key is to always have a goal that you’re working towards so that you can remain focused and make career decisions based on whether the outcome gets you closer to achieving these goals. So remember to stay focused on your career and frequently reevaluate your goals so that you are always working towards something.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More


You Can’t *Not* Do Something

What do you do when you don’t know how to do something? Or you have something you want to do but don’t have the time to do it?

The answer is easy but difficult: you simply do it.

Everyone has twenty-four hours in the day. To accomplish your goals of leveling up with your skills, learning new technologies, or working on side projects that you want to turn into your main income, you must make the time to work on it.

Make Time Stop

Most of us have to work full-time, requiring at least nine hours per day when counting commute time and extra hours. If you have a family to care for, you also need to spend time with them, caring for your children and spending time with them.

kanbaIf you don’t carve out time to work on your projects, you will never make any progress. You must look at your schedule and what you spend your time on and find ways to make it happen.

Wake up an hour early twice per week, or two hours early. Stay up late an hour and work. Take a lunch break but work on your project then.

Cut down on watching videos and television series, on playing video games, on facebook, and be amazed at how much time you gain. Ask your spouse to support you taking an evening per week or a day per month to work on your project. Explain how doing so will “buy your freedom” from having to punch a clock everyday.

Tools to Help

Use tools to help you in your work: a kanban board like Trello or Kanban Flow where you can add and track tasks you want to work on. Use the pomodoro technique to focus your work periods and give yourself small breaks.

Learn to use email (like Inbox Zero), reminder tools, and automated systems to streamline your efforts. The more you automate your processes and make systems, the more you are freed up to work on the next big project.

You can learn so much now with free YouTube videos, online learning academies, and tutorials. Figure out what you want to learn and start a side project with it. We are all constrained in varying ways by time, but also most of us waste a lot of it.

So get off your “buts” and start on your project today!

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More


Discover Your Priorities

After you get a good idea of who you are, but before you can set out on a career path, you need to understand what your life’s priorities are.

We all have different ideas of success, differing motivations, and differing constraints in our life. Maybe you had a child at age 18 and are a single parent. Maybe you are a double-income no kids couple in your late 30s whose only real financial worry is how many vacations you can go on this year. Those circumstances will influence–and possibly even dictate–the career direction you choose.


Ask yourself a simple question: What is your primary measure of success at your work?

Do you want to be wealthy? Do you want to make the highest salary or consulting rate possible? if this describes you then you want to go where the money is and level yourself up rapidly to get more and more money at each new job.

Or maybe you want to work on projects that make a difference, locally or globally. You want to change the world and do something that matters. If so, then where you work will be vitally important. You may be willing to get paid half of your possible salary but work for a non-profit that helps underprivileged children, or that helps police find women being trafficked. The bottom line is that you want to make a big impact on humanity and that is your driving purpose.

startup1I’ve also met people who want to work on interesting problems. They don’t care much what it is as long as it is complex and satisfying. They salivate at debugging a multi-threaded deadlock involving semaphores, mutexes, and thread-local storage. They want to work at one of the few companies that still make compilers because implementing new optimizations sends them into a titter.

Other people desire to become famous or well-known in the industry. They want to speak at conferences and have popular blogs. They want to be known as the guy who implemented the awesome thing that everyone uses. They want to write the definitive work on X programming language or Y library. This desire will guide you to find a company or project–even open-source–where you can do something big and make a name for yourself. Nerd adulation calls to you.

A final measure of success is freedom. You want to work so that you have the freedom to live your life as you want. Freedom means different things to different people. My brother-in-law is a hotshot fire fighter in New Mexico and California in the summer, then collects unemployment checks and skis all winter. Your idea of freedom may mean not having to clock into a job everyday, or it may mean being able to go on nice vacations whenever you want, or do mission trips to orphanages in Africa. Whatever freedom looks like to you, you want to work to enable you not to work in some significant way.

Priorities and Constraints

Related to your measure of success are the priorities you decide for your life, and the constraints you operate under.

For me, spending time with my family is a high priority. I made an unspoken promise to myself that I would spend several hours everyday with my children. That promise, while I have not kept it everyday, is a driving force behind my career decisions and even daily work hours. If I have to choose between working for an extra three hours and spending that time with my children, I will spend it with my children (barring some work deadline that is actually meaningful and attainable).

You see how this priority also becomes a constraint. And constraints can hinder our careers. It is a balancing act that we must learn to accept and optimize. How can we meet our career goals for success while also being true to ourselves and the other priorities we have made in our lives?

Maybe family is not your priority, but recreation is. You love to dirt bike or play board games. Maybe you have a hobby that is your true love–you want to play music and hit it big with your band. Your band practices three times per week for four hours and it’s a long drive there and back, so you have to balance that with your work hours.

For some people, their career is their priority. They want to hit it big at a startup and have it all: freedom, fame, technical greatness, and a big impact (though from what I’ve seen, usually such people will take two out of the four). Or they want to hit their one primary success goal (e.g. fame or big money) and that drives them. In this case their priority aligns with their success goal and is not a constraint for them at all.

A word of caution here. I have seen people work their tail off for years and years at one startup after another, the pot of gold always just being slightly out of reach. They end up with the worst of all worlds: they work all the time, don’t pay attention to their families, and their children grow up without them. They were so busy working to live that they never lived and discovered that, even if they did find success, it was empty because there was no one to share it with. This is not intended to be a sermon, but we would not be honest if we acted as if all priorities are equally valid (relativism). While in these introspection steps, it is worth examining the nobility of your motivations and reflecting on whether they will truly make you happy at the end of the day.

Accept and Transcend

Whatever your measure of success and life priorities, decide what they are and accept the constraints that they and your life circumstances entail. It is of no use to always be saying to yourself: “If only I didn’t have X children or such-and-such a spouse, I could be successful.” I have a herniated disc in my back that makes doing my day-to-day job painful. Oh well, that is life. I do what I can to solve it, but I refuse to let it defeat me.

Accept your circumstances and then transcend them. Wake up an hour early everyday. Cut out television or other time wasters. Cut expenses and save enough to make a go at creating your own business that you’ve dreamed about. Realize your limitations but then find ways to work around and through them.

With your priorities and success metrics set, you are ready to discover which technical path most fits you as a programmer.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More