The real story with big tech workplaces is that everyone wants to be in charge, everyone wants to establish credibility, no one wants to do the coding. I see this all the time. "I'm a part time coder" to me gets categorized with non-coder.
The fact is that from day one it's mental and political combat. Everyone is telling everyone else they are a "lead" or building a team, or whatever. Titles are meaningless as anyone can get their title changed to Sr tech lead or some acronym. If you are a software engineer and want to call yourself a lead manager all you have to do is blog about it and hope someone believes you. All that matters is what you know, what you can do, and can you manipulate perceptions enough to get credit for your own work. Having "influence" just means you've found some people that don't understand these thing yet or you got some dirt.
> "everyone wants to be in charge, everyone wants to establish credibility, no one wants to do the coding"
Have you worked at Google? My observation has been that most people here do want to do the coding. Which is not to say that they don't want to be in charge and establish credibility as well, but the culture is much more biased towards engineering than at many other companies.
Saying that you want to code while not coding is the oldest tactic in the book. I have been hearing 'gee, I wish I could code' since the 90's. Keep in mind I am talking about people who are hired specifically to create new software, one part of which is software construction. The trick is to maintain coder cred without revealing your true intentions or actually coding. The company doesn't matter. Maybe Google has more than most that are still trying to code, but I guarantee there are a ton of developers who are trying to maintain the appearance.
This seems largely in contradiction with the original post, unless you're saying Matt isn't being truthful. He says he spends 50% time coding, which seems like a huge chunk of his time considering his "unofficial" title, definitely not a non-coder amount of time.
What you're describing sounds pretty terrible, is that based on personal experience with Google?
The idea that you can be competitive developer with only a couple days of practice per week is not feasible. It's like being a pro athlete that only trains one day a week while telling the everyone you're a coach. They have the outward appearance of being a credible athlete while trying to gain the powers of a coach. When it's time to perform they are a coach. When it's time to celebrate the victory they're an athlete.
Please do expound on that. What do you think is it that a coder needs to do every single day, and what do they gain from it?
Yes, there is some value to practice. But it's perfectly possible to code and manage, and still be a good coder. Once you have passed a certain threshold, you will find that most of the knowledge you need is ephemeral - no need to memorize yet another piece of info, just how to find it.
So it's not knowledge per se. The idea that you forget the basics of software engineering if you don't code every day is hopefully not what you're referring to, either - after a decade or two, those should be settled.
It can't be "typing speed" or "editor efficiency" either, because both of them only matter marginally. Most of your work as a software eng. is with your brain, not with your fingers.
Skill matters and the most important skill is raw problem solving. Designing and typing in the code with tests and all is the easiest part of software development. The hard part are the insidious bugs and malfunctions. These take a HUGE amount of skill to solve effectively. If someone only writes code for a few hours a week they are not solving the hard technical problems. Why does the server deadlock? Why does the application sometimes crash after a click? Each one of these usually is a five hour problem. In a 40 hour week an average developer can solve eight of these if they do absolutely nothing else. The skill that is developed solving these issues cuts the problem solving down to maybe an hour and adds time that can be applied to coding, design, meetings, and everything else. Unskilled people are going to be stuck on the problem for weeks.
There was a recent kernel leap second bug that caused CPU usage to spike in certain applications. A part time coder is not going to have enough skill to even deduce that what they are seeing is this type of bug. They probably would not even know what the kernel is or what the code looks like. The usual reaction to showstopper challenges is to proclaim that there is just a really simple answer that should only take a few more minutes of effort to discover. In reality, for someone without the right skills, it is going to take weeks of full time effort to discover. Does a part time developer/manager go home on the weekend and read release notes and look at kernel code?
As far as raw coding, there are far too many tools and libraries in use to learn even within a full-time job. A modern large application will use several hundred packages (some use thousands). With only a few hours a week, a developer is only going to be able to learn what one or two of those packages do and their API. Looking up the API is not enough. If it can't be determined what the library does then it doesn't matter what the API says. The developer usually has to learn the internals and that takes lots of hours.
Contrary to what most people think, one cannot look up all the practices, idioms, and patterns used in programming. It's like saying a painter can just look up a technique in a book mid-painting. Can a surgeon sit in a surgery with an anatomy book open or a guide on cauterization? A developer has to have a very wide repertoire, not just for one language, but for 3-5 languages that are going to be used in a modern application. If you look up every bit of the thousands of pieces of information, nothing would ever get finished.
People who manage and code a few hours are usually being disingenuous, and I have worked with a couple. They do something very, very simple with one single component and use that as evidence that it's not really that difficult. For instance, make an form and then proclaim that web applications are easy because a form took 30 minutes to set up. The form, however, is microscopic in terms of the total effort needed to run an application or set of applications. They blow off entire requirements areas such as security or performance. Does the form have any security or performance requirements? Who cares, right? They're just part time developers, someone else will finish it. Part time devs are not even going to understand why performance or security are important. Most people that would be in the part time camp have less than two years of experience as a developer and are still in that formative early phase where the only requirement is 'does it work'.
Of course part time devs get to choose where to give up along the way. If the form is too hard maybe they add a few links or something and call it development. A full time developer does not have the luxury of picking and choosing tasks that are easiest. Part time developers simply try to redefine the meaning of 'good developer' to the point that they can reach their own weak standard and gain some developer credit.
Seriously? When I was at Microsoft, it was like "hot potato" to have to give up a coveted dev role and take on dev lead responsibilities. In particular, being a first-level manager was treated as a sort of curse with all of the worst bits --- not enough time to still work on big things (e.g. as a manager, I too owned logging for a while), but not high enough in the org to justify being full-time on hiring, coordinating teams, and fighting for 0.9 offices / headcount instead of 0.75.
Which sounds dumb until you're on a team with 0.9 offices / headcount and you see the productivity soar, for reasons I never bothered to quantify (if free fruit on Friday => productivity, just buy the fruit; don't ask).
By 0.9 offices / headcount I mean the ratio of space allocated to your team (number of physical offices) versus the number of people. The closer that is to one, the more people get their own, private office. At least when I was at Microsoft, private offices were about a 2nd year perk in good teams, and 3rd-5th year one in less profitable / high profile orgs.
I was sort of joking because that was "above my pay grade" - building and floor-level negotiations happen at the SVP->General Manager levels and down at the bottom we were mainly fighting for scraps or percentage of our allocation that was along windows vs. interiors.
Consider founding one. Heads you make a successful company which gets preferential access to the best local engineers because you don't suck to work for, tails you learn a new appreciation for all the non-coders in the business.
The real story with big tech workplaces is that everyone wants to be in charge, everyone wants to establish credibility, no one wants to do the coding. I see this all the time. "I'm a part time coder" to me gets categorized with non-coder.
Insightful and mostly correct, but this is a false dichotomy.
There are a lot of people who want to write code and do the real work, but end up in the nonsense you described-- they spend 50+ percent of their time extorting their weaker peers (for credit and image enhancement) and slugging their equals-- because, as you said, they need to win on the credibility market before the company will trust them with real work.
Corporate software engineers are a defeated tribe who work for managers. The nightmare of being seriously underpaid while writing boring software with a boss who thinks he can do your job in half the time, even though he hasn't written a line of code in 10 years (or ever) and has forgotten (or never knew) how hard it is... well, that's the norm for most software engineers.
You're talking about the MacLeod Sociopaths (people who hack credibility markets and rape the system) and possibly the Clueless (middle-managers in the classic depiction; but most startups are Clueless even down to the bottom, because Losers get culled in tough cultures). But there are also the Technocrats (socially positive subset of the so-called, and misnamed, Sociopaths) who bludgeon the credibility market because they have to, but have a genuine desire to do the hard work-- writing code, clarifying ideas, creating. We're not all prima donnas.
As a guy who has a genuine desire to work on actual software but is stuck in corporate hell while being underpaid, this rings too true for me. I spend more time gaming the bureaucratic system than I do actually coding.
The worst part is that in the country I am, software engineers don't get no respect. There's virtually no startup culture here. Companies like Google and Facebook don't hire software engineers here, as far as I know. Enterprise software is the only way to make any decent sort of living here, if you want to be programming.
Where are you? I would guess Japan, but they have a decent google job presence. It's a world market for good software talent, so you are high end and have flexibility where to live, there are plenty of ways out.
The worst part is that in the country I am, software engineers don't get no respect. There's virtually no startup culture here.
That's 90-plus percent of the U.S., too. The people you're talking to here are overwhelmingly concentrated in anomalous star cities (San Francisco, New York, Boston).
I grew up in Central PA. 100-200 years ago, Pennsylvania west of Harrisburg was Silicon Valley (that's why the South invaded) so a lot of smart, ambitious people come from western and central Pennsylvania (they don't stay, but that's another story) but there's certainly not the startup culture. Doctor, lawyer, professor, public servant (Harrisburg being the state capital) and small-business owner were the respectable careers. Computer programmers were seen as smart people who didn't have the social skills to get themselves out of grunt work. That's how computer programming is seen in most of the country. New York and Silicon Valley are different because good programmers can generate bidding wars for their talent whenever they want.
It's changing. In 2005, you had to choose between (a) living in a "star city" with hellish COL and suffering for 10+ years while you got established, or (b) having a second-tier career and being miles away from the exciting work. I don't think that dichotomy is as severe anymore. I'm in the job-search process (probably concluding in the next couple of days; I have offers but there are details to work out) and I've talked to people in TX, NC, and OR who are doing some really exciting stuff. Now that the Bay Area VC-istan scene's dominated by scene kids and social media, Real Technology (where 100% per year headcount growth is seen as irresponsible, because it requires lowering the hiring bar and becoming a trust-sparse, two-tier company that kills creativity) is moving out to places like Austin, Portland, and Madison where you can raise a family on a programmer's salary. I think that trend will continue.
Sure. If you have questions, please email me at michael.o.church at gmail.
I have a general policy of not disclosing employers or personal clients to the Internet but one of my front-runners is in TX. I'd be working in NYC 75+ percent of the time, but probably visiting.
I'd prefer to stay in NYC because my wife's job is here, and I have yet to visit Austin but I've heard it's great. I spent a year in Madison, which is probably like a smaller Austin with opposite weather (mild summers, harsh winters).
Yeah, I see this all the time. The best people leaves, leaving only the politicians to fight amongst themselves. Then the company implodes, or becomes a Zombie like Microsoft.
The fact is that from day one it's mental and political combat. Everyone is telling everyone else they are a "lead" or building a team, or whatever. Titles are meaningless as anyone can get their title changed to Sr tech lead or some acronym. If you are a software engineer and want to call yourself a lead manager all you have to do is blog about it and hope someone believes you. All that matters is what you know, what you can do, and can you manipulate perceptions enough to get credit for your own work. Having "influence" just means you've found some people that don't understand these thing yet or you got some dirt.