79 comments

[ 0.24 ms ] story [ 152 ms ] thread
this is a great read if you are an "Individual Contributor" programmer and want to stop coding and be a manager someday. What do I do with my time if not coding is such a hard transition to make. Because as a developer you already know everything in this article. Now just practice doing stuff to help the org with all this knowledge.
It’s funny, because in a sense tech people and non tech people have the same problem. Non tech folks want to get closer to the tech and tech folks want to get closer to the business.

Just like you can a non-technical person and not understand the tech, a technical person has the same problem of understanding the tech but not the underlying business decisions.

I’ve actually been working on this at work. Figuring out the right level to bring people over to the other side. I want to introduce my non technical coworkers to the code so it doesn’t overwhelm them but I also want to expose my coders to the business side in a way where they won’t get overwhelmed

For me the issue with the business side isn’t that it’s overwhelming, it’s that I find it boring. I have the mental capacity and adequate hard and soft skills to do the work, but it’s not sustainable to do a good job at something that burns one out just thinking about it.

In case it’s not crystal clear, I’m not saying it’s objectively boring work. Some people observably find it engaging and I’m glad they do.

And if you do understand both, nobody believes you/they spend their time undermining you. The problem is that a lot of technical people won't listen to anybody who didn't work in their precise subfield for X years, and the non-technical people won't listen to someone without (for example) an MBA, even when that person is bridging a gap.

Of course I'm not as good at coding as a developer who's done this full time for 2 decades or as good at business decisions at most C-suite people (or I'd be running my own business), but I've been doing web development for over 20 years, and I've managed a few projects + have studied how to run an organization at the graduate level. Most of the time when I notice things and bring them up, all it does is either get me more work or it's just ignored anyway.

Part of it is that the tech and non-tech people don't understand one another, but another part is that they each think their way of thinking is the one best way.

What about the people who don't want and don't care about the other side.

I see business focused people who don't understand basic operations of a web browser - where most of the business is running via web apps...

I see developers who don't want to attend any meetings because they would rather spend time coding and then if someone delivers a screenshot with red underlining that was supposed to well underline they implement literally what is on the screenshot...

I would like to hire only people who want to "work with all to deliver value for the customers" but it is not easy to get only people like that.

I really enjoy working like that as a developer, but it's sometimes difficult to find companies working like that.

The product owner is supposed to eliminate all developer/customer contact and know just the right solutions it seems like.

Quibble: tech != SW. Outside of programming there's a ton of technical work where it's helpful but not necessary to know how to program.

Beyond that this is a very good read.

Coding is a specialty, not the end all be all of tech knowledge. You don't want developers configuring your switches and firewalls. If I had a dollar for every time I had to help a developer setup VPNs and database connections...
It really depends. There certainly are developer roles where actually understanding networking is vital. Of course they are a tiny minority, but it’s where you find some of the most interesting people.
Indeed, some tech is based on things like physics, math, chemistry, manufacturing, and so forth. We've figured out how to have people managing a tech business, who couldn't grasp all of the disciplines that go into the tech.

The danger with any technology is that it will start extracting rent from your business if you don't understand it. At the very least, I'd advise any manager to read The Mythical Man Month, which I think is still fresh after nearly half a century.

The problem is for me atleast, the people I want to colloborate who are technically competent in non-programming fields don't see programming as crucial as we see it to be. In many situation there is nothing I could offer in terms of efficiency or profitability that they can't get done with exisiting software solutions, contractors/freelancers etc. In most case what programming has to offer for successful small to medium businesses is just novelty, I often think and having someone constantly trying to integrate programming solutions has little marginal value.

When it comes to selling, programming often isn't first thing to address for technically successful people who aren't already fascinated with startup, hacking, sideproject etc. If you have a counter point I would love to hear that.

I thought the title was a great pun, but didn't see Excel mentioned in the article. The article even mentioned low-code/no-code, which Excel - and offspring like Google Sheets - IMO is the original and still best tool in that space.
Exactly.

Excel occupies that magical space where the users aren’t really thinking about coding, they are thinking about solving their business problems (and don’t even realize they are coding)

During the pandemic, my employer added an entirely new business offering using Excel. It's a beautiful monster, and will eventually be ported to our main codebase, but he was able to build an income generator when we desperately needed it in a fraction of the time any "agile process" could have.
Access and QuickBase also are good examples.
I will add that the next step beyond this is relational/referential thinking. The idea that you can have all the low-level events or transactions in your system, bring in (join/lookup) data from their parent entities without duplicating data entry, and then aggregate in different ways… whether you use Excel with VLOOKUP or Airtable or SQL, you can design user products and analytics projects. Airtable in particular is an amazing no-code way to experiment with database design and wrangle a data entry project in a way that can easily be imported into a relational database in a highly normalized way.

If you know these things and are curious about the world, it’s a quick path to being able to lead a technical project. Add a skill like design or domain knowledge and to the right team you’re suddenly a unicorn even if you’ve never officially typed a line of Python or JS.

I'm really thankful to my dad (a database analyst) for sitting me down one time when I was home on break from college to give me a basic overview of how relational databases work.

I eventually did more reading on my own, but just knowing about this general concept made it so I could see when I had a situation where it would be useful. My first job was in an architect's office and I had a project that involved tracking details of a hundred different doors and windows of a historic building, so I used Access to create a database and saved so much time keeping track of everything!

In my current position as the combined accounting/HR department of a small company, I've been able to build a lot of tools using Airtable that help us track deals and commissions in a less-manual way, allowing us to scale the team a lot faster than we would have been able to otherwise.

Pipedream is another great tool because it has very granular coverage of the whole spectrum from no-code to real-code. At every step of the learning journey, there's an opportunity to get a little more sophisticated, but the whole time I'm also able to be productive in solving the business problems in front of me.

As someone who aspires to become a developer someday, it's really cool to be submitting PRs as part of my not-officially-technical day job :)

https://pipedream.com/

Likewise I am forever grateful to my dad for the same thing. He had me learn relational dbs and SQL 20+ years ago and am still benefittinng greatly from that. Unfortunately, beside SQL almost everything has seen drastic changes since then.
I came to the comments section planning to say the same thing. We used to throw around the term "computer literacy." It meant being able to use a word processor like WordPerfect and a spreadsheet like Lotus 1-2-3, and it meant understanding enough about file storage that you knew when it was OK to eject your floppy. A lot of water has passed under the bridge since then. Basic competence with word processors and spreadsheets is no longer assumed. It's not unusual to meet a young person who, despite having been immersed in technology since birth, is unaware that Chromebooks support screenshotting and copy-paste between apps. (Source: spouse is a teacher whose students not-infrequently take pictures of the screen with their phones and email themselves the pictures to paste into documents.) There's a lot of low-hanging fruit to be had, just gaining what we used to regard as basic computer literacy.

(I would not recommend learning how to use floppy disks. That information is of almost no use to the layperson.)

Seems pretty obvious to me that we are going backwards.

I always worried about this stage of my life as a non-software engineer that I would get lapped by the younger generation who had been immersed in technology since birth.

Smart phone immersion though not only seems useless but counter productive. No computer skills or attention span. At least I got a ton of computer skills while my attention span was shortened.

Is this going to change with Generation Covid? That seems like an easy bet no.

Remember many more people now use computers. That does mean that some of them aren’t as familiar with them, but a lot of that is just that everyone uses them a bit at least
I hang out on reddit subs for things like mechanical engineering, CAD, FEA, electronics and PCB design. It's not uncommon for people to be asking for help with their software (solidworks, fusion, abaqus, kicad, altium, etc) and posting a picture of their screen taking with a phone, apparently unaware of the "screenshot" feature of their OS. Often these are ME/EE students.

It's somewhat mind boggling.

Admittedly, as someone who takes screen shots at least weekly, I have taken a photo of my screen simply because it's faster and easier than the alternative.

A. On my computer, browse to the site I'm already using on my phone. Find the thread I was reading and the comment I wish to respond to, if applicable. Post the screnshot.

Or B, take a screenshot, upload it somewhere that I can access on my phone. Download it to my phone. Then share it on my phone through whatever means my OS makes available.

That seems perfectly reasonable to me depending on the specifics. If you already have reddit on your phone but not on the computer, then it is much more convenient just to take a pic and post it.
I'm a software developer and I'm one of these people. It's because I don't use the screenshot tool often enough to know the shortcut key or how to open it. I can't remember. It's faster to use the phone as the UI to access the camera is 10x more intuitive.

If I care enough to post something nicer I'll google how to do it.

CMD+shift+5 on Mac to open up the screenshot tool

Snip app on windows which you can pull up by hitting the windows key and typing the name

Both allow for easy cropping of a screen, and snip has a built in marker for drawing on the screenshot

Usually I use Greenshot on Mac but maybe I can map it to the default keystrokes
Oh thanks. Like I said, I won't remember this. Also I switch between 3 OS's so technically I need the shortcut key for gnome as well.
Gnome I can’t help with.

I was in the phone screenshot camp with you until I realized these had the cropping feature built in. Not needing to clear my screen of information I don’t want included in the screenshot was enough of a boost to incentivize me to remember these

But no worries if you don’t, it was unsolicited advice and I won’t be offended if it’s ignored

CMD+Shift+4 takes you directly to the snipping screenshot tool as well.
Yeah I remember 20 years ago not knowing how to screenshot, but to be fair it wasn't exactly obvious that the Print Screen button meant Screenshot, and I don't remember anything in Windows telling me what the Print Screen button did. But now the Snipping Tool is moderately obvious I think.
That's because the screenshot functionality in Windows is unusable. Don't you still have to do some strange dance with MSPaint to get a file out of it?

Emailing yourself things is also never going to go away because of how well it works.

Win-Shift-S - you're welcome.
Isn't it because they're using reddit on their phone and there's no easy way to transfer images from a computer to a phone?
To piggyback off of this, I kind of have a similar issue with coding bootcamps. They pump out novice programmers that are lacking basic tech literacy. Sure, these folks learned how to write a CRUD app, but you hire them and they can't setup SSH without massive handholding, etc.
Asking a software engineer to be aware of environment setup intricacies does not make sense. Once you hold their hands once by writing a comprehensive document, they will learn and not guess how you want things to be done. I write a lot of such documents. :)
For engineers Blockpad (https://blockpad.net) is making a good case for itself as an Excel replacement. I believe they will be adding Excel import capability within the month and already have it for common CAD software.
Some of the most important jobs in tech don't require coding skills, they require problem-solving, planning, due diligence, and operations skills. A great tech lead or department manager merely asks the right questions and gets people to do the right things at the right time. Most of the non-software-dev roles have various skillsets and can be huge assets if they can think about the big picture and put decisions/work into better context.

And actually now that I think of it, just reading the documentation of tech is a huge benefit. You can know more about some tech than a software dev purely because the dev may never have read all the docs and aren't familiar with all its capabilities. Architects for example are voracious readers and don't really write code.

What I've always wondered, is when getting into one of those roles (i.e. Tech Lead) without coding history or expertise, wouldn't you be missing credibility?
Not as long as they have a good understanding of what's involved, and can ask questions leading you to deliver better value to business.
Leadership is about managing risk, so that is a hard disagreement from me. Any good leader, especially a tech lead, needs to be able to both define the path and execute the path. If you don't have the skills or background to execute the path, you often have no clue what is involved and aren't of much help.

Even when well versed in a domain and related tech, we get surprised all the time.

I've said this before. The very best managers at FAANG and similar cannot code out of a wet paper bag and yet they are productivity multipliers for their teams which is why their compensation is so much higher than what most people think.
> The very best managers at FAANG and similar cannot code out of a wet paper bag

You'd be surprised - there are some sharp VPs out there that identify code-level problems instantly.

Sure, but that's not why they are VPs.
TLDR: Learn some basic coding while developing related skills
I disagree, it is more that - "one does not have to do any coding but still can be technical" would be more accurate.

Understanding how web browser works to understand how things can be implemented, understanding that there is a server and database server. Understanding that if website is not loading there might be 100s of things that can cause it and it might be just something wrong with your browser. Understanding what happens when one types in address in the browser.

Understanding which parts of browser behavior developers can change and which ones are nonnegotiable.

For example "navigate away" popup - how is it protected and why it is ugly looking, and why you should not implement custom one in your application.

In my experience there's a lot more need for people who understand the data and data systems of a company and how to analyze that data than someone who can write some code. This is also technical work in my mind. Data analysis done correctly is very hard, because it's rarely the case that a company's data systems are well-formed, gather the right information without any gaps, and organize it effectively. Knowing how to wrangle that can make you incredibly valuable to everyone, and there's no need to know how to write product code to do it.
> there's a lot more need for people who understand the data and data systems of a company and how to analyze that data than someone who can write some code

(discloser: I run a company that builds software for data professionals, so I have a bias)

This is a very interesting topic I spend a lot of time thinking about.

I don't think, in the aggregate, there will be more positions available for folks to "analyze data" (i.e. data professionals) than positions for those that "write code" (i.e. software engineers).

Software has been infused into virtually every industry - that is to say most companies are "technology companies" - the global labor market for software engineers reflects that.

BUT I do think we are in the nascency of data and data analysis (ironic since we closing in on a century of being in the "information age") and the number of folk s doing this professionally is about to grow astronomically.

If you spend enough time, like I do, talking to companies and seeing how they handle data, it's almost staggering how few companies get this right, and that the bigger the company, the worse the effort. Sometimes I cannot even comprehend how big of a wave is coming towards the shoreline.

Honestly I’ve seen the opposite. Business leaders usually ignore data insights, and the pay that goes to the average data scientist or business intelligence engineer reflects that. Building an actual product, aka coding, is where the money is.
I think both your and the parent's comments can both be accurate at the same time.
This article is about reaching just a level of proficiency in the technical aspects of your company and product that helps you excel in your non-technical role. The author specifically advises against learning to code because of the time and financial barriers to entry. Is there a way to gain an employable data science skillset that doesn't necessitate those same barriers?
Eh, maybe, but usually you'll have to write software to wrangle/manage the data. And even if you can go without software it would be a lot slower (like a few orders of magnitude slower with a human in the loop). But your main point about the cost of data wrangling vs the cost of "actual data science" is correct.
Yes-data granularity, structure, architecture, and systems. Having worked with many customers in the difficult-to-define "magical" space (as a commenter put it earlier) of using Excel and it's successors (Smartsheet, etc.) to solve problems without realizing it's a kind of code, understanding how the data flows and forms can be leveraged.

Both Smartsheet and Excel are offering a kind of "insight" or ideas feature which attempts to provide a foothold on this data wrangling aspect of an organization's data flow.

To another poster's point, yes, sometimes the insights gleaned are ignored or misapplied for various reasons.

To me, this is the challenge of the digital revolution: getting enough humans to properly interpret and use the data that is staring them in the face, day after day. Coding may not strictly be necessary. Communication skills surely are.

Id like to believe theres a potential future where every human is a software engineer, and makes art or music or something. Also maybe there's solar powered blimps.
The article missed the number one non-technical tech industry success vector: the charlatans and bullshitters. These are the people who like to call themselves things like "Technologist", and they like to make technical decisions about things like architecture, but without ever having to get their hands dirty dealing with the consequences of their decisions. That's always someone else's problem.
Considering the amount of those in the a16z orbit, not a surprising omission
“Enterprise Search” - where non-technical, self-styled experts turn FUD about how Google’s index works into career security.
WeWork and Theranos comes to mind.
That sounds boring, I want to learn cool stuff like programming and circuit design.
Yeah seriously. Becoming an expert user of software (without being able to dig into its guts) sounds miserable.

Anyway, there are plenty of roles where you're not writing code day to day, but if you don't understand how to program a computer (eg, writing simple assembly for an 8-bit CPU) and how machine code is executed, you're missing a fundamental piece of how computers work from which everything else derives.

> eg, writing simple assembly for an 8-bit CPU

I don't think most of the professional software devs I know could do this, maybe not any.

Maybe not tomorrow, but I bet many of them could learn how in a relatively short period of time. At least enough to build an adder or something.
I don’t feel that you need to code well, but it would help if you actually understand the very basics of programming. There are so many quick, free to use, and easy to understand resources now; like games, that I feel that there are only poor excuses for actively avoiding not learning to code.
>How to excel in tech without learning to code

Idk, read Steve Jobs' biography. Passion and dedication are powerful forces for any type of success not only Computer Tech success.

That biography was remarkably poorly written (constantly goes into cheap human interest without questioning anyone's statements, Bill Gates is directly quoted as saying a "floppy drive has too low latency" instead of "high") but it might be possible to learn something from it.

Personally I think it makes the strongest arguments for 1. be born in the 50s 2. do drugs 3. marry Laurene Powell Jobs. "Dedication" doesn't describe a lot of his life, especially not before #3.

So, it's possible. But why? Basic programming is trivial.
In my (long) experience it isn't a spectrum though. I think there's this pernicious lie that anybody could learn anything "if they just work hard enough" and it's not really true.

There's a certain base level of analytical ability that's required - and if you have that you can learn anything in tech given time.

Everybody else who cannot think analytically like this - including many who work in tech and basically fake it - has a very limited understanding that is close to useless and often very dangerous because of their role.

How the hell is it that product managers have the kind of free/unsupervised time to meander around learning this bit of technology and that while the actual developers are expected to account for every minute they spend in the time-tracking tool two weeks in advance, every two-week period?
Okay, so basically, tell other people to code. Got it.

The only special thing about someone who ‘can code’ versus someone who ‘cannot’ is their persistence to do whatever is necessary to solve the problem at hand. At some point that skill was required. ‘Coders’ end up doing everything in a business: talk to customers, validate use cases, test, financial projection, write marketing copy, design interfaces, make a presentations to investors, build a web site, manage the database, onboard new hires, interview. They just do it for someone else to take the credit, because they’re too busy to play that game.

If you want to see this principle in action, try giving a coder a critical assignment from any other department/discipline, anything that is obviously more critical to the business than whatever they are doing. Watch them attack the problem relentlessly, failing over and over again until they get it. Then find someone from any other department: ask an HR person to do the CFO’s job, or a sales person to do security operations. They’ll tell you they don’t know how to do that, and that will be the end of it.

This is an absurd take. Coding is just a skill like anything else - plumbing, writing, cooking, playing guitar.

Some people have learned how to do it, some haven’t, and anyone can learn even if they won’t be great.

It’s not a superpower.

Yeah, that’s the point; it’s not a superpower. I happen to be a pretty handy as a plumber too, but not because I was born that way, and not because I had dreams of being a plumber; it’s because I’ve had to fix nearly everything in my house. Now, mind you, everybody in the house has faced the same set of problems, but not everybody in the house has become an expert handyman over the same span of time. I wonder why. Must be my preternatural talent at turning screws. Others are all quite certain they would be terrible at it.
I’ve worked with plenty of coders who just says “I don’t know.” When faced with a problem.

I’ve also seen plenty of non coders who go the extra mile (even learn to code!) when faced with a new challenge.

You can maybe make the argument that persistence/grit is more prevalent in coders (not that all coders have grit). I’d guess maybe internally motivated and curious people tend to gravitate to specialist roles - not necessarily just coding.

When interviewing a candidate, I always look for the willingness to admit "I don't know". Not knowing how to do something is not a defect. It's a sign someone is self aware of the bounds of their current knowledge. The differentiator is between someone that says "I don't know" and drops the problem there versus one that says "I don't know, but I'll figure it out". The former is useless to me. I want the latter person is of great desire to me: aware of their limits, but willing to work to grow beyond their current limits.
Right. I meant the former in my comment. I agree with you completely on that you really want the latter.
So the coder who works for a hospital can be assigned to heart surgery and fail over and over?
(comment deleted)
One thing that is extremely useful IME is to learn how to read code, but don't worry about writing code. For example, check out the APIs of a service using its API explorer, and then read some of the code behind those APIs. Most code is very straightforward and the code that isn’t, is either a.) well documented, since SDEs also have to grok it, or b.) only understood by a few SDEs on the team, but those SDEs are willing to take the time to explain it to newcomers.
Well I'm sure it isn't news to everyone that tech isn't just coding.
I agree with the author’s take for the most part. That said, the best line managers I’ve had have done some IC work in the past of the same nature. The best PMs I’ve worked with vigorously attack the customer facing aspects of the problem and trust their technical reports completely on the implementation details, including pushback when the ICs see problems in the product scope.