Jesse Seymour recently asked this question on Twitter:
Hey #sqlfamily, need some research help 🙂 Your opinion, top ten skills to master for entry level MS BI pro? Could be tech or soft skills
— Jesse Seymour (@JesseBizInt) August 11, 2016
This is a GREAT question because many people starting a path in business intelligence, SQL Server, or other technical fields often struggle to figure out what skills are important. Early in my career, I struggled with this too because I simply wasn’t thinking about professional development. I was focused on putting one foot in front of the other, only solving the immediate problems. If I were to begin my career again, here are ten skills I’d start building as soon as possible:
1. Listening for and understanding the desired outcome
The ability to listen is critical.
I repeat: The ability to listen is critical.
Every project, every assignment, every task has a desired outcome. As technology enthusiasts, it’s easy to start mentally sketching blueprints as soon as we hear someone say, “We need a data warehouse in the cloud.” The funny thing is, sometimes that’s not at all what they need — it’s what they imagine they need. What really matters are the requirements and the desired outcome. Maybe what they really want is a lot of historical data with 24/7 uptime, and “the cloud” just sounds like the best approach.
Here’s the catch: right now it’s up to the people above you (senior developers, architects, or managers) to figure out how to pull it off. They understand the technology, the inner workings of your company, the political landscape, etc., much better than you do. Ask what they heard and how they’re translating requirements into a solution. You’ll get valuable insight into the business, established relationships, and why proposed solutions are likely (or unlikely) to work.
Eventually you’ll be asked to do the translating, so start learning how to do that now.
2. Listening for and understanding concerns
In addition to understanding what people want to happen, you must understand what about this outcome worries them. There may be negative consequences associated with this solution, even if it’s successful. For example, implementing a new data warehouse adds new overnight processes, making it more likely a DBA will have to fix it in the middle of the night. Or perhaps launching a new web portal means more openings in the corporate firewall and increased risk of breach. Whatever solution you end up building needs to account for these concerns. Whether they’re legitimate concerns or not, they are real to whoever is expressing them.
3. Understanding how any previous attempts/initiatives failed
The concerns about your solution may be rooted in history. If you’re in an entry-level or junior position, odds are you haven’t been with the company since its inception. Before you arrived, there were other projects — some successful, some not. If the desired outcome has been attempted before, you want to understand why it fell short. By paying attention to what has/hasn’t worked in the past, you’ll learn to match the right solutions to the right problems. Also, if something was such a spectacular disaster that it got people fired…yeah, you want to avoid repeating that mistake.
4. Technical curiosity
There’s a common refrain among the people who rise to the top of their technical field. When they observe a behavior, for example a function returning unexpected results or a report rendering strangely, they wonder why that is. Then they dig in to find out why. They have a scientific curiosity for technology. When Kendra Little introduces herself at a presentation, she often mentions she’s a Microsoft Certified Master, which means she broke SQL Server a lot.
Without technical curiosity, you won’t feel the urge to explore and understand. You won’t spend your spare time reading blogs, building a virtual lab at home, or coming up with your own open-source script to share with the world. Your career ceiling will be lower.
Senior developers and DBAs become senior because they care about why things work. How far you go depends on how much you care.
5. Learning to research efficiently
This is a vital skill, so much so that it’s the basis of the best compliment I ever received in my career. The era of finding what answers you could by scanning a cabinet full of 800-page books is over. (Hey, at least now they’re sold in searchable, portable e-book form.) There’s now an abundance of helpful people on the internet who want to share what they learned in solving a specific problem. By leaning on their experiences, you can reduce a frustrating, days-long quest to fix an error down to a hiccup easily solved before the ten o’clock status meeting.
If you know where and how to look, that is.
The more research you do, the more you learn about which sites and blogs will help you the most and which ones to avoid. You learn what phrasing and keywords get you to the answers you’re most likely seeking. Over time, you learn who is giving you the answers that work. You learn how and where to ask questions that get responses quickly.
An added bonus is that your colleagues will start coming to you for answers, knowing that even if you don’t have the answer, you’ll be the fastest at getting it for them.
6. Self-control to stick to the problem
It’s called “scope creep”. In the consulting world, it’s a reason to say no to adding a feature. In the junior developer world, it’s a reason to say yes. It’s tempting, as you learn new technological tricks, to try integrating them into the project. After all, why not put that new-found knowledge to good use? What you just learned is a shiny object, a squirrel darting in your peripheral vision. You can recommend this new technique or feature be added to the project, but be ready to a) defend it as completely relevant and important and b) have it shot down immediately.
Don’t get discouraged though. It may be the right technology for the wrong project. File it away as something to remember for future projects.
Also, make sure you get approval to explore a new method or feature before diving in. I’ve had a simple chunk of code eat up two weeks of my time just trying to prove it can run before I ever mentioned it to my boss. When I did finally tell him, it was not a fun conversation.
7. Communicating progress clearly
Estimating time is really difficult. One of the most awful questions you can get is, “How many hours do you think it’ll take to complete?”
I hate that question with the fire of a thousand suns.
(I’m not alone in that sentiment.)
It seems especially unfair if you are junior-level because you’ve probably never done this particular thing before. How the hell are you supposed to know how long it’s going to take? Frequently, the last 20% of the work takes 80% of the total time. It’s the nature of software development. You don’t have much control over that.
What you do have control over is communicating your progress. Consistently and clearly state what you’ve done, what has yet to be done, and any anticipated challenges. This demonstrates your willingness to be transparent and held accountable. It also means your boss will be able to better recognize when it’s time to have someone else help you along.
8. Willingness to ask for help
Tenacity and grit are wonderful things. So wonderful that you can grit yourself into being three weeks behind because you just know you’re going to get this feature to work. Be real with yourself. You’re a junior developer or DBA. You’re not going to have all the answers, and you’re not always going to have enough time to find them on your own, either. This is where you can lean on your more experienced colleagues to pull you up. You may be surprised how eager they are to help by explaining a difficult concept, sharing a useful piece of code they keep handy, or offering to help debug your code.
You may not know how to return the favor, but here’s one subtle yet powerful way: let that person’s boss know they helped you. Bosses love when senior staff are willing to teach and mentor others.
9. Willingness to yield for the project’s greater good
You might have to face the fact that the feature or code you’re working on isn’t going to make the cut. Or worse, they want what you’re working on — they just want someone else working on it. If your tasks get cut or reassigned, be a good sport about it. You’re a newbie at this and it’s not about you, it’s about the project’s success. (If this is a continual pattern, however, it’s probably a bad sign that you aren’t trusted to get things done.) Don’t sulk or mentally check out. Instead, gracefully take a back seat, watch and learn, and keep contributing however else you can.
Take heart that this happens to people many years ahead of you, too — senior-level people, even. Rather than delay a project until in-house staff can learn a skill, consultants who already have that skill often swoop in and cover that gap so the project can stay on track. Remember, it’s all about the outcome, and better to be a bit player for a successful project than be the star of a failed one.
10. Entry-level technical skills
The previous nine skills make you good at your job, and able to pivot from one technology to another. This skill set makes you good at doing the work itself.
The proof is out there
Begin investing in these skills now, and like a savings account, the interest will compound. Over the years, you will stand out more from those who chose not to invest. Don’t just take my word for it. The skills listed here will look familiar if you search for SQL Server jobs with the word “senior” in the title. Your skills will match the responsibilities employers are asking for right now. Seriously, these are plucked right out of current job listings for “Senior SQL Server [Something]”:
- “Work with business users, management, and executives to analyze, define, and document business requirements for the company’s data needs.”
- “Initiate discussions and advocate for a common approach to data management and data definitions for multiple business areas.”
- “Coordinate implementations while maintaining a high level of accountability and transparency in order to safeguard the platform and customers.”
- “Keeps abreast of evolving Database technologies and best practices and recommend improvements as appropriate.”
- “Ability to manage development resources, assigning and reviewing tasks and providing timely status to management”
- “Someone who enjoys trying new technologies and techniques, and has experience with high availability and disaster recovery techniques as well.”
- “Stay current with Microsoft SQL Server tools and technologies.”
- “Excellent written and verbal communication skills are required as well.”
Note that none of these requirements say anything about a particular version or feature of software. These are the requirements you’ll still see ten years from now. They are evergreen, and always in demand.
Aren’t tech skills important? Yes. Job listings have plenty of technical requirements, too. You want the tech skills to deliver great solutions. But technologies change. People change. You will likely pivot from one technology or product to another at some point in your career. You may get promoted to management and not be a hands-on DBA or developer anymore. These less-technical skills will serve you wherever you go. Your career is an interest-bearing account and the best time to start investing is now.
Gavin says
These are really great skill that we all need to keep sharp at any level.
One caveat I would add to “Communication” – know your audience. “Reply All” is not your friend 🙂
For example, we have a team email that is the route in for many questions and incidents. Often the email conversation will include quite senior business people. If you have a point or response to make, run it past your team leader or senior mentor. They will know the people, personalities and politics that can affect how a reply should be framed. Clarity and honesty are appreciated, but delivery matters too. Don’t be afraid to ask your TL why they said what they said. Advice on managing people is as valuable as technical advice.
Doug Lane says
I hear you there. One badly-phrased sentence can cause panic three levels up that everyone below then has to relieve.
It’s yet another reason I loathe email.
Alaina says
These are all solid recommendations. I would also add to #1 ‘Always ask one more question’. You need to be sure you’re getting to the root of what the user actually needs. They may say that they need a cluster in each data center, with AlwaysOn replication, but if you ask ‘why’ you may get the answer that they really just need to be able to restore the Production database to within a week, and you have 24 hrs to have it available. Just listening wouldn’t ferret this out, you’d end up spending time and money on a solution that goes way beyond what’s needed, and takes time and money away from a project that may go the other direction by being way more complex than a simple change in backup retention.
But don’t stop asking though! It may be their responsibility to know what they want, but then think of things they may not have thought of, maybe something like “OK, I can make sure we can have backups available that ensure you lose no more than a weeks worth of work, but what about at the end of the month when you import (whatever)? Will you need to be sure that’s not lost?” Obviously this will change based on the situation, but by asking additional questions you’ll be seen as a team player, and can head off future ugliness if (or should I say when) something bad does happen (patch gone wrong? unexpected reboot? data corruption? I could go on but you get the idea!).
Collaboration goes a long way in building trust and the ‘we’re in this together’ mentality. Reiterating what you will deliver, the potential drawbacks, asking clarifying questions and getting it all agreed to in writing helps to smooth the process. Most places I’ve worked this won’t actually CYA totally if, say, a weeks worth of data is actually lost and a manager is upset because they have to redo the work; they’ll still be upset, but it will definitely be easier to deal with the issue if you keep the agreement (SLA) to tactfully refer back to, you truly approach it as an ‘we’ issue instead of an ‘us’ vs ‘them’ issue, and they feel that you’re on their side and doing everything you can to help.
I can honestly say that I got to where I am today because of interpersonal skills. Many people can gain the technical knowledge, but being able to work effectively with other teams is priceless.
Doug Lane says
Thanks for your comments, Alaina. I agree — asking questions and digging for the real need is an important skill. It takes practice and as you get more experienced, you get better at matching those needs with solutions.
And like you, I’ve found that you can only get where you want to go once you’ve developed your interpersonal skills.
Rafael Colon - Senior DBA says
Hey Doug:
This is an excellent summary that also teach people how important are soft (non Technical) skills to develop people’s careers. I think this not only for beginners but also people with experience can benefit of coming back to the basics from time to time to keep our careers on the right perspective. I plan to share this with my team.
Thank you
Rafael
Doug Lane says
Thank you, Rafael!
turtle_sensei@halfshell.com says
I am pleased Ralph shared the article with the team. A reminder to always be brilliant at the basics.
Respectfully,
Splinter
Thomas Strike says
Great post Doug. The soft skills are something I seriously need to get better at. I’m great at customer service but I tend to speak to high level people in the same tech talk I use for teammates. All they usually want to know is can you do it, how long will it take, and how much will it cost.
I’m really looking forward to seeing you developing this site again and seeing what it becomes.
Thomas