Keep Your Portfolio Up-to-Date At All Times

I have a never-expiring calendar reminder for myself to update my portfolio. Otherwise I just won’t do it.

Make Yourself Do It


But it is surprisingly hard to make yourself do it even with a calendar reminder constantly dinging you. And unfortunately you only ever realize that you needed to do it – and didn’t – when you need your resume to be up to date when you are ready (or worse: when you aren’t ready) to move to the next gig.

resu1This added pressure means that you are now going to be under the gun to send out your resume in a not quite up to date form, or you will struggle to remember all the cool new things you have done in the past many months.

It won’t be your best showing. You won’t likely have all the detail you once had. And ultimately you are doing a disservice to yourself when thinking about this late in the game.

Use LinkedIn As Your Source of Truth

A long time ago I stopped maintaining a resume in document form.

Before there was a LinkedIn it made sense to constantly toil over the formatting of my resume. And it made since to keep a copy and several backups.

I needed a consistent place to go to for the source of truth for my work history as there wasn’t one clear winner on the internet for such things.  Back then I would keep a digital resume on Monster and various other job boards. It was a real hassle to keep them all up to date.

But now a days it is easy to keep your information in LinkedIn. It is now my source of truth.

I try to go there at least once a month to enter at least one cool thing I did that month. It might be something simple like solving a customer’s problem. Or something more complex like learning a new thing in a pinch prior to a sales call or speaking engagement.

sour1Similar to blogging, if you don’t pay attention to the every day details of your day job you will miss the really important parts that you can use later to sell yourself.

Additionally you are missing the opportunity of someone looking for that special talent that you just picked up. You may make good money doing a bang-up job with that 80% thing you do. You run up against some new fancy way of doing things. And that becomes your new norm.

But you never update your resume.

As far as recruiters and other hiring managers know you are only really good at that 80% thing. There is no mention of your new go-to-favorite skill – which is what they really need right now and can’t find anywhere.

This is a missed opportunity for you in a couple of ways. The recruiter won’t contact you to let you know that your new skill is in high demand. Which means you miss out on the possibility of shifting to a new gig. Or, if you really like your job, but want to earn more, you might miss the opportunity to bargain around your newly found skill. Either way, this is your loss in the here and now.

So what sorts of things might you keep track of on LinkedIn? When you have a job, you can use LinkedIn as a running log of interesting facts. When you don’t have a job you can scour through your profile and clean out the things that aren’t really relevant any more. Let’s look at what sorts of things are hand to keep track of:

Title and Responsibility Changes

There are a couple ways of tracking when your title changes and when your responsibility changes. The first is the easiest and doesn’t require much thought. Keep one entry per company you work at. Update the title. List the existing responsibilities.

promo1This is a great way to keep a short resume. And it is a great way to not tell your hiring manager about your history. This is where the difference between a traditional resume and a CV/Portfolio come in. When I am in the hiring manager role I like to see where a person has been and all the things at a high level they have done while at a company.

If you were a developer, then a team lead, then the architect, then the engineering director – list those out. They are very different jobs. They will have very different responsibilities. And being able to show that you have done them all is important to many hiring managers. It shows you are experienced.

We have interns at my current company. One of which we have had back three separate times. For a person like this it is very important to distinctly show that you came back at three different times. And detail out what you did on each occasion. This paints a different picture than someone who just worked somewhere with no timeline. It doesn’t show that we liked you so much that we kept hiring your back.

Business Goals Achieved

Business people, hiring managers, etc. – they don’t generally care that you learned the latest version of HTML. What they do care is that because of your mastery of this new version of HTML you were able to up the sales conversion of your check out process because more customers are able to complete the check out process on their phone and tablets.

roi1Geeks really care that you were able to write a mail sending tool in 100 lines of unreadable code. But business folks care that your tool took into account the bounce rate of certain domains and the rules around how you stay off of black lists so that your email penetration goes up 30% which effectively increased their over all penetration resulting in X number of new dollars for the month.

Now, don’t get me wrong. You need to swizzle this in a manner that you salt and pepper your business swizzle with some tech babble so that all audiences are made happy. If you just deliver the business numbers uber geeks may find your resume wanting. Add appropriate tech talk to sell that you know what you are talking about.

Use the Right Voice to Tell the Right Story

Equally important to what you did is how you tell the story. It is very off-putting to read about a guy that is singing the me-me-me-me-me-me-meeeee song! It is ok for you to say “I used tech X to achieve business Y” now and then. But equally important is how you enabled the team to achieve a goal. Or how you pulled bugs for a week to get to zero defects (sacrificed your enjoyment for the team). Tell a story of being a valuable team member.

If you are in a leadership role tell the story of how you are a shit-umbrella vs. a shit-funnel.  Give concrete examples of how you help you team get stuff done.

Bottom line: keep your portfolio up-to-date at all times. And LinkedIn is a great place to use for it.

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


Focus Your Technical Skills

As a programmer seeking to one day be considered an expert in your field, you must decide what technical areas you want to focus on.

Focusing on one area means you don’t focus on another. It’s a reality of life that you need not fear to embrace. The good news is, you get to choose the technical areas that interest you most.


Not too long ago, choosing a platform generally meant choosing a desktop operating system to develop on, with Windows being the 800 lb. gorilla. Cross-platform libraries were developed and came to maturity, and a stasis of sorts was reached.

Then the web came into its own and mobile followed, and suddenly the tables were upended again and all development was done in proprietary silos. Now, new cross-platform tools and frameworks are beginning to bridge the gap and make it so that you don’t have to commit yourself to choosing just one or two platforms and re-implementing your code multiple times.

You now get to choose from a wide area of places to focus your skills. Do you want to do web-related programming? Client-side or server-side?

Do you want to do mobile development? Android or iOS platform? Or maybe you want to use C# and Xamarin and write cross-platform mobile apps across both platforms and Windows Phone as well.

The critical question you need to ask is: where the world is going? Web and mobile are here to stay, while big desktop applications continue to dwindle in number and importance. You don’t want to be cut adrift on a shrinking iceberg of stale technology that leaves you with irrelevant expertise. If you can make a bet with your skills, bet on web and mobile over desktop.


Programming languages inspire religious wars (though ironically, fought mainly by agnostics and atheists). No need to get into them. The same question applies here: what languages are popular and growing, or at least holding their own?

dbqIf you are crazy about wanting to do low-level development, embedded systems, drivers, and real-time apps, learn C++. Or learn C++ if you want to really understand how memory allocation and deallocation work, how shared libraries differ from static libs, how the heap and stack operate, how classes are laid out and virtual function pointer tables are used, and other details.

If you want to work at a higher level and have an excellent object-oriented language, pick C# or Java. Both languages remain popular and powerful and can be used in a wide range of applications.

You could also learn Python or Ruby or Javascript and seek to master them.

I spent seven years of my career in C++, programming low-level systems and chasing insanely difficult bugs through the disassembly. The next seven years were C# dominated, and I never looked longingly back to C++. For me, the programming language that most easily helps me express my intentions and solve a particular problem is the best one. For some problems, C++ is better, but thankfully  I don’t have to solve those kinds of problems anymore, so C# is my choice.


Even when a platform and language are chosen, a myriad of different choices await us when we tackle any problem. Do we need a database? If so, should we go with SQL or NoSQL? Which NoSQL database?

Do we need a distributed messaging framework? Should we use RabbitMQ and perhaps another library on top of it?

What about our web backend: should we use Microsoft Web API or Ruby on Rails?

Should we use Redis, NServiceBus, and SignalR or choose a different set of competing technologies?

Is it best in this situation to use CQRS and event sourcing, or is another pattern better?

The important takeaway here is not so much which specific technology choice you make across these different areas, but rather that you are evaluating them and keeping abreast of where the industry has been headed. You don’t choose something new for new’s sake, but you are aware of what is gaining traction and the reasons why it is gaining steam.

I made the mistake of going head down at my job for year and years, only to wake up one day, look at some job listings, and realize I wasn’t qualified for any of them. They all required at least some relevant database experience, and I had none. Most wanted some web or mobile experience, and I had none. The world had passed me by while I was slaving away at an old desktop app that was still years away from seeing the light of day.

Stay up-to-date on platforms, programming languages (and their newest features), and technologies. You will then be able to learn them, evaluate whether your current job is staying relevant tech-wise, and find another job that uses them if not.

Technology changes rapidly, especially in our programming world. You aren’t a fossil yet, so you have to stay nimble and keep learning.

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

Read More

Computer History Museum

Three Career Mistakes I Made As a Programmer

Remember the old days, when you would go to work out of college and stay at the same company for forty years? They’d give you a watch and a pension, and you would be set for the rest of your life.

Those days are long gone.

And yet, somehow I never got that memo. I worked at the same company out of college for almost 14 years. And it was a mistake to do so.

But before I tell you why, let me give you a little background. I was a star student, straight As through high school, full scholarship to a good school studying electrical engineering. I graduated but never loved electrical; my heart was in developing software.

So out of college I landed a job at a good tech company in the scientific and engineering area. Which brings me to my first mistake:

web11. The Blinders

I started out my work on a C++ project. Pretty cool actually, a utility app that internal product groups plugged into to get their hardware to show up in it.

I learned a good deal on this project, but I put the blinders on technology-wise. I wasn’t keeping track of what was going on in the world around me. This was from 2001 to 2006 or so, when the web was continuing to evolve at a break-neck pace.

“Web programming?” I scoffed. “That’s not even real programming. This hardcore C++ embedded and desktop application programming is the real stuff.” Ah, foolish Devin. How wrong you were.

While I was cutting my teeth on interesting problems, I was also getting very narrow in my skillset: desktop app development in C++ using antiquated UI technologies like Win32/GDI and MFC.

The takeaway here is to make sure you are continually learning and keeping track of what is happening in the world outside your office and even your company. Work on side projects to play around with new technologies. Read blogs and if you are a luddite like me force yourself to buy the new technology gadget at least once every two years.

2. Dinosaur Syndrome

I worked on my first project for over 6 years. And I finished my time at the company with a second project that I labored on for over 7 years. Yes, a combined total of over 13 years at one company essentially only working on two things.

I thought I was loyal to the company and that the company would be loyal to me. But when the rubber met the road, the company wasn’t willing to budge an inch to show me that they cared that I had invested so much of my time and thought with them.

I took it personally at first but not anymore. The company had grown in my time there, quadrupling in size to almost 10,000 people. When you get that big you are not a close-knit group; you’re a medium to large sized big-corp. The little guy doesn’t matter anymore, nor do you have to act like he does. Should you? Yes, but that’s another blog post.

Bottom line is: don’t work at a company for 13 years. Unless by the end of it you are the CTO or CEO and make millions of dollars per year, get out of there after two to four years, especially for your first company. Level up to at least Staff Software Engineer and jump ship. Try a small company if you’ve been at a large one, or vice-versa. You are in the growing and gaining experience phase in your career, so think diversity of experience over going super deep and long at one place and with one technology.

I wished that someone had told me this when I was three years into my first job, the one I remained at for far too long.

3. Perception Problems

I used to brag that other companies had politics but that the company I worked at was a pure meritocracy. I was serious and had been told that, and I believed it for about ten years.

Then I started to realize it was not a pure meritocracy, and that politics did exist (duh). I had not played the game or been wise on how to make sure that I was working on projects with good visibility, doing things that senior management saw and rewarded. Instead, I thought that if I just kept doing a good job they would realize the value of it and recompense me.

Meanwhile, smarter coworkers were constantly getting the bosses’ attention and demoing little things to them. Even things that I and others had worked to make happen but didn’t think to brag about and show demos of. Hey, it’s a team thing right? Right and wrong. There’s nothing wrong with showing what you’ve done, and we as programmers tend to do it less than we should.

clearmeasureworkAlso, I realized after some time that I had gained a perception as someone who put in his hours but didn’t go above and beyond. I was late in noticing this and worked hard to show that I could make a powerful impact on the company, bringing new development methodologies that were proven in the software craft but that we had ignored. Too late: the company tech culture was built to look skeptically at outside ideas, even proven ones, and people like me who pushed them were dinged for not being good culture fits.

Perception influences reality. If that perception is objectively accurate (aka “true”), then that is a good thing. But when the perception is false, erroneous, it leads to bad decisions and actions. Be aware, be mindful, of how you are perceived at the company, by your supervisors, by your coworkers. Not to suck up or something like that, but to understand if a false perception is being built up that you need to counter, or a true but critical one is developing that you can change about yourself.

New Trails

I left that job and worked at a startup developing their cross-platform mobile app using Xamarin. Then I left that job and work at a custom engineering company where I’ve implemented a Web API backend for an iPad app and web client, using NServiceBus, SignalR, CQRS, TDD, and many other good practices and technologies.

I’ve learned more in a year than I did in the last five years at my old job.

Avoid my mistakes: be nimble, externally aware and self-aware, and bypass the long slog that I went through to get to a good place in your knowledge and career.

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

Read More