Table of Contents
Crafting software is no walk in the park, especially in today’s dynamic landscape of ever-evolving requirements. It’s a maze of complexities that demands a savvy approach. While it’s a no-brainer that organizations should stick to top-notch engineering practices for an efficient and fruitful software development journey, let’s not kid ourselves — coding is just one piece of the puzzle.
Software development is a multi-disciplinary affair, intricately connected with various other aspects often overlooked in the grand scheme. In this article, I want to shine a light on these often-neglected areas. After all, constructing a robust foundation is the key to ensuring your software development process stands on the shoulders of solid practices. It’s not just about coding; it’s about setting the stage for success. I’d like to share some strategies that not only boost your chances of triumph but also save you the invaluable currencies of time and money, all while keeping your organization’s talent content and engaged.
Onboarding
The onboarding phase is the first chance for your organization to set itself apart. Beyond the usual paperwork and badge distribution, every aspect of this process should be carefully tailored to reflect your organization’s unique identity.
Different organizations have various approaches to onboarding, but one often overlooked aspect is the importance of formal training, which we’ll explore in the next section. Thinking back on my own experiences, I’ve come across only a few onboarding processes that made a positive impression; most were either lacking or non-existent.
Understanding the crucial role of onboarding, I spent time considering how this initiation phase should unfold in the context of the organization I work for. This reflection revealed many opportunities that, unfortunately, had been overlooked by management.
Prioritizing Formal Training
In many companies, the significance of formal training often takes a backseat during the onboarding process. Formality is key when introducing new team members to essential tools and processes, ensuring a structured and comprehensive understanding of their responsibilities.
Consider a scenario where a new employee, accustomed to using Perforce, transitions into a team utilizing Git for version control. A mere informal acquaintance with Git by a colleague may fall short of providing the necessary foundational knowledge. What’s required is a dedicated and formal training session tailored to the specific needs of the individual.
It’s a common misconception that individuals experienced with a particular tool, like Git in this case, might not require training. However, even seasoned Git users benefit from understanding how the company uniquely integrates it into its development pipeline.
Effective training sessions are characterized by their dedication, engagement, and directness. The goal is to impart crucial information in the most efficient manner possible. These sessions should be meticulously structured to allow for progress tracking, ensuring that new employees not only receive the information they need but also grasp it sufficiently to excel in their roles.
Consistency and Establish Way of Doing Things
In the complex world of organizational success, employers have the responsibility to set clear guidelines for consistency. These guidelines cover everything from workflows and naming conventions to Test-Driven Development (TDD) and Continuous Integration/Continuous Deployment (CI/CD). It’s the job of every employee to follow these consistent practices set by management.
The importance of consistency cannot be emphasized enough, impacting every stage of development. Imagine an airplane manufacturing plant where precision is crucial. Now, picture the chaos and risks that would arise if each stage operated inconsistently.
Consistency is the foundation for operational efficiency. Whether it’s streamlining workflows or following best practices in TDD and CI/CD, consistent execution not only increases productivity but also strengthens the foundation for successful outcomes.
In the next sections, we’ll explore various aspects of maintaining consistency and delve into its crucial role in achieving excellence throughout the software development lifecycle.
Documentation
When we talk about documentation, it’s not just about drowning in code jargon or slogging through API manuals and user guides. It’s everything you might need to know at any given moment, a go-to resource for all employees.
Think of it as the GPS for your organization. Documentation spills the beans on who’s who and what’s what in your teams, making it a breeze for employees to connect with the right person for the right job. But it’s not just a contact list; it’s the rulebook, the established way of doing things that keeps everything ticking with consistency. Remember that laundry list of disciplines we talked about earlier? Well, documentation is the glue that holds them all together.
Now, here’s the kicker – keeping this treasure trove up-to-date is non-negotiable. Think of it like a dynamic encyclopedia of your organization. And hey, why stick to the written word? Throw in some video tutorials to turbocharge the learning process and don’t forget, neglected documents would add to you debt.
Picture this: every department or discipline gets its own step-by-step tutorial, a kind of crash course for newbies. Let’s say you bring on a back-end developer. The tutorial walks them through the whole shebang – setting up their workspace, branching out in the code, running tests, making pull requests, and diving into the CI/CD pipeline if it’s in the pipeline. It’s the express route to getting acquainted with the daily grind. By the end of it, every question about their day-to-day duties should have its answer.
I don’t Have Time for This!
It’s a warning sign when an employee consistently relies on others, stating, “I don’t have time to read the docs or watch training videos; could you please show me?” This signals a potential gap in their training, a situation that occurs more frequently than we might recognize, and it comes at a cost – both in terms of valuable time and money.
This issue should not be confused with collaboration, as the distinction between seeking guidance and depending on others for fundamental training is crucial.
Choosing the Right Tools
Selecting the right tools is like picking the right gear for a mission – it’s make or break. Let’s keep it real. If your team is Python-savvy and you’re diving into the realm of REST APIs, stick with Python. Don’t complicate life with Java or JavaScript unless you’re up for dedicating time and money to recruit and maintain a squad for the job. That’s not just cost-effective; it’s common sense.
But it’s not just about the primary language. Your development playground needs to be like an all-you-can-eat buffet, not a limited menu. Imagine you’re juggling Python, JS, and even throwing in some C++ for a cross-platform application. Your environment management system needs to play nice with all of them, handling testing, production, deployment – you name it. Think PowerShell, Shell scripts, Python paths, libraries, executables – the whole shebang.
Skipping out on a robust environment management system is like asking for a headache. Companies overlook this more than you’d believe, and the price is steep. Time, money, and worst of all, your team’s mojo. When your crew spends more time wrestling with setup quirks than crafting top-notch products, motivation takes a nosedive. Keep this up, and they’ll start eyeing the job market for a place where their skills actually get used, and their careers get the boost they deserve. Let’s avoid that, shall we?
Culture
Having a successful team and delivering good software products that matter requires good culture. We can describe a good culture as where people come together in a respectful and professional environment, share same values, work for the mutual goal with best communication practices, enjoy working with great people and be happy about what they produce.
Needless to say though, it’s the employer’s duty to establish such culture. Management should literarily write down what the company values and train everyone about it. They also must lead the entire company by example and keep the vide alive.
So what culture should you have? Well, this question should be answered only by you, as culture is not something that can/should be imitated, but naturally nourished.
Hiring
Hiring isn’t just another HR hoop to jump through; it’s a culture thing. You’re not just filling seats; you’re building a team that vibes with your values. And trust me, that’s a game-changer.
When you’re on the hiring ride, don’t just throw job descriptions at candidates. Lay out your company’s core values. Let them peek behind the curtain and see why your culture is a big deal. It’s like a first date – you want to know if you’re on the same page.
So, sift through candidates with a fine-toothed comb. Do they light up when they talk about the stuff your company holds dear? Enthusiasm is the secret sauce. Skills can be taught, but you can’t inject passion. Remember, if someone’s a bit green in certain areas, that’s cool. With the right attitude, they can soak up new tricks like a sponge.
Here’s my take: I don’t lose sleep if a candidate doesn’t check all the boxes on the job description. If they’ve got experience and hunger to learn, I’m game to mentor them. But let’s be real, a candidate could be a walking encyclopedia of knowledge, but if they’re not grooving with the team vibe, if they’re missing that zest, it’s a hard pass. Culture fit and enthusiasm? Non-negotiable. Let’s build a team that not only gets the job done but loves doing it.