Humanity is increasingly more dependent on technology solutions, intelligent systems, and timely communications regarding things that matter. On average, executives check emails 74 times, receive 46 smartphone notifications, and touch their smartphones around 2,617 times per day. Meanwhile, software developers strive to release more software while keeping up with the competitive landscape, pace of development, latest trends, an explosion of choices for development tools & environments, the velocity of new “best” practices and new frameworks, etc. As an industry, the decision to write a single line of code has a cascading impact on the wellness of the people that use and develop software.
The future of software engineering will require more than proficiency in the latest programming language, tool, or framework. In 2015, I had a conversation with Scott Hanselman on his show Hanselminutes, titled “Less Coding, More Thinking,” one of the most downloaded shows of that season. This past week at the Render Atlanta conference, Scott & I had an opportunity to continue our discussion.
Provided below are highlights of our chat:
I. FUNDAMENTAL SKILLS THAT ARE TIMELESS
There’s always something new to learn. Focus on the following:
1. Know how you learn best. To quickly adopt new technologies, have an awareness of your learning style. For example, do you learn best by seeing (visual), hearing (auditory), reading/writing, or doing (kinesthetic)? Align your training & professional development options with your learning style.
2. Develop your awareness of what happens “under the hood.” Low & no-code solutions are great (also an excellent method for quickly validating your product-market fit). However, it is still essential to understand how things work; at the very least, understand all of the components required for your code to work in production (there’s even code involved in low/no-code solutions, you may not have access to it). This skill set is also crucial if you need to port your solution to another environment or transition to another tech stack.
3. Become a Master Troubleshooter. Passing a coding test is not enough; your ability to fix things when they break better indicates your understanding of the code. Tip: Identify “sandboxes” to allow you to safely disassemble (break), reassemble & play with code (also a great learning technique for kinesthetic learners).
4. Optimize for real-world application – Your training should provide an opportunity for you to get code into someone’s hands QUICKLY (some that gives a damn). This creates a feedback loop that allows you to understand your ability to develop production-ready code. In addition, writing code that people will use will reveal an entirely new (and necessary) set of skills. Your most significant challenges are rarely technical.
5. “Hello World” apps are useless (I will die on this hill). Write code that you care about. No one cares to use a “Hello World” app. Instead, build something that you want to see in production.
II. COMMONLY MISSED SKILLS (IMPORTANT FOR CAREER GROWTH)
The following skills are rarely taught in technical programs but are vital to distinguishing you from “the pack” and preparing you for the next step in your career growth.
6. Storytelling – Your ability to concisely communicate your work to any audience is not an optional skill. You must understand how/where your code matters (in the larger picture). What problem are you solving? What is your solution? Who is your audience? How did your work deliver value?
Ex: "To address <a compelling pain point>, I/we created a <solution> using <platform/technologies> that allows <the audience> to <the value received>. I worked with <you/yourteam> on this <project>. My role was to develop <your code>. We released our solution to <audience> and to date <# of people> have used the product, resulting in <a measurable outcome>."
7. Purposeful Networking – Networking is an excellent method for identifying your tribe. You should have a community of people to discuss your ideas and technical strategies (online communities are great). The key is not the size of your network but that you have a safe space to ask “stupid” questions. If you can’t ask stupid questions without ridicule, you’re in the wrong place. Also, there are no stupid questions. Finally, remember that these relationships are reciprocal; you should seek to receive AND give support.
8. Systems thinking. As an entry-level professional, you may feel that your role is “small” (particularly in a large/corporate environment). However, it is still essential to understand the whole picture. Take a few steps back from your team’s work to see how your work impacts other areas of business (sales, customer retention, information distribution, etc.). Communicating your work on this level is important as your career grows.
9. Know Your Lane. Are you a generalist or a specialist (i.e., you know a little about a lot of things vs. a lot about a specific thing)? In certain environments, generalists thrive (particularly in startups where team sizes are generally smaller). In other work environments, being a specialist is valued. Know your lane to align your career search with work environments that allow you to give/receive the most value.
III. ON LEARNING EMERGING TECHNOLOGIES (COOL SH*T)
There’s always something new to learn, from Artificial intelligence/Machine Learning to web3/blockchain technologies to whatever is next. Definitely stay abreast of what’s hot, but don’t lose sight of its real-world application. Knowing when it is appropriate to use these technologies is key.
10. Why emerging tech? Be able to communicate the reason for your chosen technologies. Beyond the cool factor, how does your chosen technology enhance the project/solution/outcome? What are the pros/cons (costs, talent availability, time to market, scalability, etc.)?
11. Always evaluate alternative solutions (especially non-technical options). Be able to communicate at least one other approach that could have been used. Also, is there a non-technical solution to this problem? Solving problems “on paper” is a good method for testing your understanding of the problem? How would you solve the problem if you could NOT use technology?
IV. FINAL THOUGHT
Sustain a long career in technology by becoming a master at problem-solving, identifying opportunities for getting your work in the hands of actual people (that give a damn), and becoming skilled in communicating if/how technology can amplify/scale your solutions. Also, if your chosen training program is lengthy, expensive, and cannot point you in the right direction for creating a feedback loop that allows you to put what you’ve learned into actual practice, seek other options.
TITLE: “Future-Proof Your Tech Career” (RENDER ATL 2022)
Kishau is an award-winning technology entrepreneur on a mission to amplify human capability and solve the world’s increasingly complex problems with computer science, systems thinking, and creative intelligence. She is the CEO of Time Study Inc., which empowers leaders with intelligent tools to build a better workplace by optimizing time and creating more value for the enterprise’s greatest resource, people. Her work is featured in many leading publications, including Forbes, The Wall Street Journal, CNN Business, and Black Enterprise. Kishau has a deep background in Computer Science, over 25 years of experience building and shipping enterprise software solutions, and more than 15 years of entrepreneurial leadership.
Scott Hanselman has been a developer for 30 years and has been blogging at https://hanselman.com for 20 years! He works in Open Source on .NET and the Azure Cloud for Microsoft out of his home office in Portland, Oregon. Scott has been podcasting for over 800 episodes of http://hanselminutes.com over 15 years and 700 episodes of http://www.azurefriday.com. He’s written a number of technical books and spoken in person to over one million developers worldwide!