Tag: Organization

5 Ways to Solve the Talent Crunch

It is undeniable that there is a massive talent shortage within the software industry right now. This is a problem that long predates the more recent, universal worker shortages and is a problem that will continue to get worse as more of the world moves towards living and interacting digitally.

Talented, inquisitive people are the core of Foci Solutions. We are nothing without the awesome developers and engineers who’ve chosen to build their careers with us. We return that loyalty with as much support and mentorship as we can provide. We’ve learned a great deal since we were just four people crammed into a small office. We’ve become extremely fortunate and successful at attracting, developing, and retaining top software talent. I want to share some of those lessons and observations both at the broader ecosystem level and as individual business operators.

#1 – Build, Don’t Buy

This is simply the reality of being a small company. We will not win in a bidding war for top talent with the likes of Google, Amazon, or Shopify. We hire team members based on their potential and not on the number of years with a particular technology and we invest in them to build them into better software engineers. This is effective as technology is constantly evolving and changing, but the core patterns, theories, and behaviours remain fairly constant. A junior team member who is highly curious, has an aptitude for learning, has good engineering instincts and behaviours, and is a good communicator can become highly effective very quickly with the right support system.

There’s also the simple mathematics of supply and demand. Doing a quick search for Junior Software Developer opportunities in Ottawa on a major job search platform returns around 20 results. Doing the same search for Senior Software Developer turns up around 280. There just aren’t 14x the number of senior developers as juniors. And there never will be. So if you’re trying to hire for experience, you’re competing in a low supply and high demand market. Simply put, investing in junior resources and building them up to be awesome makes mathematical sense.

#2 – Hire Teachers, not Just Doers

Hiring senior resources and asking them to spend the majority of their time writing code can provide immediate impact and productivity gains but to amplify their value over the long term, we want to tap into all of their years of knowledge, experience, tips and tricks and distribute that throughout the team. Having seniors spend more of their time acting as mentors and teachers will create a force multiplier effect, making your entire team stronger.

To do this effectively, focus more on their communication styles and willingness to mentor others rather than just their technical skills when interviewing for senior candidates, include mentorship of junior team members into their job descriptions and (most importantly) provide them with the time and the tools to do those things.

#3 – Communicate, Communicate, Communicate

Most of us are not great at identifying and articulating our learning and growth needs. This is particularly true for people working in task and productivity driven jobs like software development. It takes a tremendous amount of self-awareness to know what we’re not good at, let alone figure out what kinds of support we need to fill in those gaps. Consistent and frequent communications allows the team to collectively work through issues and identify things that each person can learn and develop to improve.

Implement formal code reviews, pair-programming, 1-on-1’s, quarterly learning reviews, basically any opportunity to talk about challenges, celebrate successes, and figure out how to do things better. This takes a lot of time, so it’s best to allocate budget to this. It will pay off in dividends.

#4 – Interview for Knowledge, not Skill

We’ve tried all kinds of things in an attempt to assess technical skills during the interview process such as live coding challenges and take home exercises yet never found a strong correlation between how a candidate performed at those activities vs how they performed on real projects. Even worse, those activities were extremely time consuming to administer and caused a lot of candidates to simply drop out of the process. What we realized is that asking someone to explain their code or how they solved a technical problem is a much better indicator of knowledge than a high-pressure, staged coding exercise.

Ask to see code that they’ve done instead, and get them to walk through it with you. Ask them to explain their design decisions, their thinking when they built it, and what they would do differently. You want to see if the person understands basic software concepts and principles, can think critically, can articulate technical concepts, and is able to learn from their mistakes. If the principles and concepts are there you can always teach them how to build a specific algorithm or use a specific framework.

#5 – Engage with Academic Institutions

Alright, this is a bit of a macro activity and frankly we haven’t been very successful at it. Universities and Colleges curriculums cannot keep up with the concepts and skills that the software industry needs for new grads to hit the ground running. We, as industry leaders, need to engage with academic institutions in our communities to help them modernize their programs.

Sure, there will always be a need for people to know Assembler and how to build Compilers, but that is not what the majority of the software industry needs today. If Computer Engineering and Computer Science programs were teaching about cloud computing models, 12-factor application design, Test Driven Development, APIs, application security, infrastructure as code, and other fundamental concepts that are widely adopted in modern software organizations their graduates would be better able to transition into real software roles.

The talent crunch can’t be solved by throwing money at it and having senior resources play musical chairs among the firms with the deepest pockets. We can build a better and more sustainable ecosystem of high quality software engineers by: constantly investing in their development; freeing up the flow of experience and knowledge within our teams; emphasizing the aptitude for teaching and learning rather than pure technical skill; and working with the academic community to ensure graduates entering the workforce have more relevant and up to date skills.

  • Shan
  • Gu

What’s Your Organization’s Rocket Fuel?

The conversations I regularly have with clients, other executives, and my mentors are usually around “what’s your org’s vision?” or “what do you want your org to do”. Foci has gone through a tremendous period of growth and change over the last 12 months and the answers to those questions seem to be ever changing. This has led me and the rest of the management team to have some very interesting discussions around how we define Foci and our purpose.

The “what” and the “how” doesn’t matter

Photo by John Baker on Unsplash

Regardless of how well thought out your vision or strategy is, the reality is that $%*@ happens. Your clients can change their mind, you may lose some key contracts, the market will evolve and change, competitors will emerge, or you may not be able to get that unicorn architect/developer to run that world-changing product you want to build. And every time you have to make a pivot to adjust to those changes, it can be a very painful experience, both for you and your team.

The identity of an organization is very important, especially if you have a strong team culture like us. Team members imprint themselves onto that identity and subconsciously use it as a reference point for their everyday work. We started life as an Oracle Fusion Middleware company, then became an Architecture and Integration company, and now we’re doing more Cloud-Native custom dev with a broader range of system integration and program management services. Each of those shifts in focus created quite a bit of disruption in the team. People asked “Wait what? I thought we were doing the other thing? What does that mean to our existing projects? Will we stop doing the other thing altogether?” These were all fair questions, but after working through it all, we noticed that none of it actually impacted our team culture or our core behaviours.

What we took away from this were 2 things:

  1. What you did as a firm or how you did it had very little alignment to your culture.
  2. Our people are very emotionally connected to Foci’s identity and feel any change in that identity keenly.

It’s all about the “why”

This naturally led us to look at why our folks joined Foci and what made them excited about coming into work each day. Turns out no one was really driven by the prospect of writing thousands of lines of C# code, installing and configuring Oracle SOA Suite, or creating a stakeholder engagement plan. Sure, those things interested people, but they weren’t really core motivators.

We ended up landing on 2 aspects of motivation that were the most important:

  1. What brings you the most satisfaction (e.g., solving a problem, having an impact, getting recognition, seeing something you’ve built be used)
  2. What is your metric of value (e.g., complexity of the problem, number of people impacted, transaction volume, financial savings)

Problems are our rocket fuel

We always joked about having a generic tagline like “we solve problems” (it’s on our website) because we were constantly evolving the business. Appropriately that turned out to be the answer. What we realized is that our entire team and our hiring processes all coalesced around the core desire to solve complex and interesting problems. We weren’t motivated by how many people were using an app that we had developed or whether the systems we helped our clients build were processing 100 or 1,000,000 transactions a day.

The thing that gave us all a real sense of accomplishment and gave us that little shot of dopamine we humans naturally crave was when we were able to solve a problem for our client. The bigger the complexity greater the satisfaction. As long as we had a healthy supply of complex and interesting problems to feed our team, we could go anywhere.

The destination and the things you do to get there will always change over time. The things that motivate and drive you to move forward are more constant and core to your being. Defining your organization based on the goal you want to achieve or the tasks that you do makes every pivot feel like an identity crisis. Putting in the time to identify the rocket fuel that constantly propels your team forward creates a solid corporate identity to anchor against regardless of the path your organization decides to take. Interesting problems are our rocket fuel. As long as we as a management team ensure that our team has a steady flow of interesting problems to solve, we can have every confidence in Foci’s ability to achieve any goal that we set for ourselves. Until we change our mind, of course.

  • Shan
  • Gu

The Digital Transformation Road Trip

Too often, we see articles shared preaching the importance for organizations to adopt a digital strategy without encapsulating what that really means. To remove some of that confusion, I like comparing an organization’s digital transformation with something everyone knows – a road trip!

Let’s start with some truth – a digital strategy can be enormously beneficial to a department or organization and its ability to deliver value to customers. BUT, like a good road trip, becoming a digital organization isn’t an overnight journey – and it doesn’t always follow a set path. It requires planning, understanding, commitment, and the ability to embrace the detours along the way.

Oh the places you’ll go!

Before setting out on a trip, you need to have a destination in mind.  Similarly, executives need to agree on what ‘digital’ means for their organization. What problems are you really trying to solve?  Once you have these identified, your organization can begin to evaluate the possible ways of getting there.  

Loading up the car

Digital transformation is as much a business transformation as an IT one. Digital processes are about re-examining your business from top to bottom in order to have the right information, available at the right time, to make the right decisions. Cooperation, communication, and most importantly – organization-wide understanding is key to making sure this happens.

It’s important to start with the problem without focusing on what the solution might end up being. Challenge pre-existing assumptions and ideas about who should be doing what, when, and how. Break down your tools and processes so that you can rebuild it in a more efficient, modern way.

Digital organizations have governance and management frameworks that are very different than paper-based organizations. Keeping everyone involved ensures that you have multiple sets of eyes on the road. Making sure they know why this journey is happening means they’re looking out for the right kind of obstacles and opportunities.  

Take advantage of the bumps along the way

A digital organization embraces speed, communication, learning, and also, failure. It’s less important to have a map setting the route in stone from  start to finish than it is to be aware of what’s going on around you. Being aware of your surroundings lets you be prepared to change direction when a better path becomes available (or to avoid that head-on collision up ahead)! A digital organization uses this awareness to stay relevant and ahead of the curve. Approaches and methods like incremental development, democratized governance, Test Driven Development, and Agile are all designed to support teams in this way.

This can be a big change in thinking, especially for larger, more traditional organizations. Understanding which tools are available, and when to leverage them, can significantly improve your chances of finding success in your transformation.

Embrace being off the beaten path

So – before embarking on your digital journey, make sure you understand where it is you want your organization to go, focus on the journey, and be prepared to embrace being off the beaten path. You might not take the path you first imagined, but digital transformation is about the journey, not the destination.

  • Kevin
  • Steele

IT Organizations Need to Practice More, Dunk Less

Whenever I walk into a new client, the first things I hear from the Technology Executives are typically: “We need to modernize”, “We need to transform”, “We need to adopt <insert trendy tech buzzword>”. What I never hear is: “We need to bring our development and testing methodologies up to date”, “We need more collaboration across our teams”, “We need to inventory our skills and see what’s missing”.

If we think of the IT organization as a basketball team, that would be the equivalent of the coach saying: “We need more 3-pointers”, and “We need those fancy new shoes to be able to dunk”.  Whereas even the most inexperienced youth coach knows that the key to winning includes: “We need to practice dribbling and footwork”, “We need to communicate better on the court”, and “We need to improve our free throws/jump shots/rebounds”.

While it is both valid and necessary for IT organizations to push towards the big picture objectives highlighted by glossy Gartner and Forrester whitepapers, these have to be supported by continuous and deliberate investment in foundational concepts.

Let me step in as coach for a moment and propose a strategy for focusing on the foundation…

1)    Invest in the basics: Invest in good basic IT delivery concepts, kind of like dribbling, footwork, and basic fitness in basketball:

  • Make Business Analysis about teasing out the requirements from the Business’ objectives, rather than simply asking the Business to write down their requirements
  • Encourage good testing rigor and embed it throughout the entire solution delivery lifecycle, and not just at the end just before go-live
  • Promote good documentation habits and create templates for common documents (e.g., logical solution architecture, functional designs, interface specifications, data models)
  • Spend adequate time and budget to implement solutions which improve developer productivity (e.g., continuous integration, 3rd party frameworks)
  • Allocate budget for developers to learn different languages so they can be exposed to different software concepts and improve their coding skills
  • Spend generously on training for system analysis, modeling, design methodologies (e.g., domain driven design, SOA, microservices architecture, semantic modeling, BPMN), and not only on those being standardized by the organization, but to improve people’s ability to make smart decisions

2)    Communication is key: Create an environment that promotes collaboration and teamwork:

  • Create communities of practice across your organization (or connect to external groups) to build on collective knowledge and experience
  • Implement real-time collaboration tools (no, Sharepoint and instant messenger don’t count)
  • Make governance less about formal approvals and more about ensuring the right expertise is pulled in at the right stage of a given project
  • Adopt iterative delivery methods to promote frequent touch points between IT and Business obtaining feedback and ensuring alignment

3)    Focus on the right skills: Build the skills that support your strategic objectives. After all, dunking is only made possible by training to jump higher:

  • Strengthen Information and Data Management capabilities as a foundation for Big Data Analytics
  • Educate the team on hashing algorithms, binary trees, digital contracts, and distributed storage to bring Blockchain to the table naturally
  • Leveraging Cloud means good distributed system design, loosely coupled interfaces, container-ready applications, and security frameworks that can deal with 3rd party infrastructure
  • Adopting COTS requires strong technical Business Analysis, ability to negotiate requirements with the Business, and strong platform administration skills

We all want to work with the cool new tech and follow the latest trends. Working with the latest and greatest is what draws people to technology work. But the team will be stronger if the foundation is strong and the team is well connected so take time to build our own skills and our teams’ foundations so we can all up our game.

  • Shan
  • Gu