jducoeur: (Default)

Time for that end-of-year tradition, taking stock of where I am now. This is kind of a diary entry, but I've been posting infrequently enough that much of it is probably news to most folks. This will be a pretty long braindump, but hopefully informative. Comments welcome -- it sometimes feels a little lonely around here nowadays.

Job

Not to bury the lede: remember my ruminations last month about how I wasn't fitting into Big Corporate Life perfectly? When I wrote that, I already knew I was on my way out the door. My manager knew, but she asked me not to announce it until four weeks out, lest I be too much of a lame duck for too long. (And she was right: while I got a colossal amount done those last few weeks, it wasn't easy to maintain motivation.)

Anyway, I'm no longer with Slack/Salesforce. My last day of work was the 18th, and my technical last day of employment is tomorrow -- I'm starting to pack up my laptop to ship it back.

It's kind of a pity: Slack was a pretty great company, and my team are uniformly great folks. But I just wasn't being as effective as either I or the company wanted me to be, mostly because succeeding at a senior level in a really large company calls for different skills than doing so at a small company, and those aren't skills I'm all that practiced in.

(I was great at the programming, of course. But once you're up to a really senior level half the job is about communication, and that's just plain harder at a really big firm.)

It's not entirely tragic -- Slack is slowly getting more deeply absorbed into Salesforce, and necessarily becoming more corporate in the process, which isn't really my ideal world.

And Salesforce is absolutely all-in on AI ("Agentforce" is the hot buzzword these days) -- I'm by no means as anti-AI as many of my friends, but I'm also not especially passionate about it. IMO the current situation is very, very similar to the Dotcom Bubble, circa 1999. I believe there's some real potential, and some companies will hit very big, but most are over-committing, there's an enormous amount of Dumb Money chasing anything with the word "AI" in its pitch, and I believe we're likely to see a massive crash in the next few years, with similarly huge layoffs. Having lived through the last big bubble, I don't necessarily need to focus excessively on this one.

Anyway, I'm going to be in the job market again in a couple of months, looking for a smaller company (ideally an early-stage startup) that is looking for a strong backend tech lead and preferably open to pure-FP Scala as its stack. (Happy to blather about why I firmly believe it's the best current stack for anybody who is actually serious about building something that will scale well.)

But first...

Sabbatical

It's been 12 years since I last took a break, and I could use a little time to get my head together and recover from the burnout. So I'm officially setting Q1 aside as a sabbatical.

That's specifically not a vacation, mind. Kate is still working full-time, and it would (quite reasonably) annoy the snot out of her if I was just sitting on my ass all day.

But I'm going to take the time to focus on the many, many neglected personal projects that have built up. The list is as long as my arm (yes, there's a checklist), ranging from working on our overfilled basement to outlining some missing public documentation for Typelevel to getting our financial plans in order. (We're gradually approaching retirement, and I suspect there's a stock market crash coming in the middle of next year, so it's time for readjustments.)

Above all, the highest-priority project is getting Querki back on a decent footing. For complicated technical reasons, it is still running on an antique version of Scala, and its dependencies are unbelieveably out of date. It's time to pull the tablecloth out from under the running system, change the way it works under the hood, and get it to the point where I can begin seriously moving the project forward again. (In particular, get it to the point where developing it is fun again.)

Social

Part of the sabbatical, but worth calling out: even more than usual, I'm looking for opportunities to get together with my friends. That can be board games, dinners out, club activities, whatever -- the point is to reconnect socially, because I've been feeling a measure of loneliness lately, and that's likely to get worse with the cold weather.

Of course, we're also about to start Crazy Season -- the period when a lot of High Impact Social happens in quick succession. (Arisia, Birka, Intercon, etc) But that's not the same thing: while I love those huge events, I often find myself lost in the crowd, so they don't necessarily alleviate the loneliness. So smaller get-togethers are still super-important.

Socials

And speaking of "social", it's worth reviewing my current social media presence. People here aren't necessarily on all of these, but connecting is welcome if you are.

  • Dreamwidth -- obviously, I'm still here to some degree, but also obviously I'm not posting as much. With the rise of microblogging, I've tended to focus my DW usage more for long-form posts, where I have more to say and am willing to spend the time thinking about what I'm going to say. Over the years I've become a bit less comfortable posting brief hot takes and links here; those are winding up in the places below.
  • Mastodon has become my primary home for the time being, at https://social.coop/@jducoeur. I post way more frequently there: retooting multiple times a day on average, and tooting my own thoughts pretty often. I don't know if it's ever going to be the biggest social media outlet, but IMO it's the healthiest. I read a lot of feeds there (enough that I can't keep up with all of them), and I'm happy to connect to folks there. (And if you'd like help getting started there, I'm happy to provide advice.)
  • I have two accounts on Bluesky. My "real" Bluesky account is https://bsky.app/profile/jducoeur.bsky.social, but that's mostly reposts -- I rarely do main posts there. More important is the Bluesky bridge of my Mastodon account, which copies all of my Mastodon posts -- if you are only on Bluesky and want to follow me, that's the one that is more worth connecting to. Note that I only read Bluesky very erratically: since I mainly read Mastodon, I primarily follow accounts that are bridged to there, checking in on Bluesky itself mainly when I'm out and reading on my phone.
  • Quite recently, I set myself up on Bookwyrm, which is basically the Fediverse version of Goodreads, at https://bookwyrm.social/user/jducoeur. That's still an experiment, but I'm trying to at least record, and often review or comment on, the interesting graphic novels and audiobooks I'm reading. (I read relatively little text these days, but Libro.fm has enabled me to get back into audiobooks without feeding the voracious maw of Amazon and its abuses.)
  • Finally, it's worth noting that I'm on LinkedIn at (as usual) jducoeur. I do not follow the feed there (I find the idea of LI as a social network just daft), but I do use it as my Rolodex. With me planning to look for a job in a couple of months that's going to become more important, so I encourage folks who know me reasonably well to link to me there.

Health

Finally, if I'm going to do an honest braindump of my current state, it's worth talking a little about health.

I'm approaching a Big Round Birthday, and while there's a measure of "yay" to that, it's also faintly depressing. I'm feeling my age, and beginning to grapple with why and what to do about that. I think there's going to be another big post (possibly within the next few days) on that topic.

More immediately, I am slowly being driven spare by reflux issues.

I've had problems with reflux my entire adult life, mind, starting shortly after college. Esophageal reflux made me absolutely nuts for the better part of ten years, thinking something was deeply wrong with me, until I got a new doctor with a clue who realized what the problem was and pointed me in the direction of Omeprazole. I've been on and off of that ever since, which isn't great, but at least it was under control.

But ever since my last bout of Covid (just about a year ago now), I've been fighting laryngeal reflux, which is new for me. (Aside from a few months of it last year, after my previous Covid, which is why I have a nasty suspicion of a connection.) The symptoms are totally different: burping, a bit of a cough, some raspiness in my voice, sometimes "cottonmouth" and/or a touch of sore throat in the morning. It's just inconvenient, rather than painful, but it's not a great thing to have ongoing for long periods -- it's undoubtedly doing subtle long-term damage.

Nothing has yet succeeded in controlling that. The Omeprazole keeps the acid from eating away at my innards too much, but clearly haven't fixed the underlying problem. I picked up a Medcline pillow a while back, but it isn't obvious that it's helping all that much, and my sleep with it is only so-so.

So that's a constant, low-level stressor. And just to add to that, there is some confusion, because the problem seems to lessen when I travel, and I can't figure out why: on the road I tend to be dealing with worse pillows and mattresses, and not obviously any better foods. It's a puzzle, and distracting to say the least.

Finally, yes, I'm still on Ozempic, although still at a minimal dose. I'll likely raise that a notch at some point, to knock myself down out of the pre-diabetic range and get my weight back to something a bit more appropriate, but I'd love to fix the reflux first, before making more changes.

Conclusion

So overall, life is decent, but not perfect -- nothing awful, but lots of stuff to grapple with and try to improve.

How are you all doing? Please feel free to opine about any of the above -- conversation is what makes DW most fun, and I've monologued enough here...

jducoeur: (Default)

This is the last night of my work onsite trip. So let's do something I do too rarely: sit down and diarize a bit.

This is going to be long and fairly unedited, but focusing on what I thought were the high points; hopefully it won't be interminable.


The context here is that I work for Slack, as a member of the Platform Team, specifically the "3p Integrations Core" sub-team, still mostly known as Troops. (Which was the small startup I had been working at, that got acquired something like 18 months ago.) At some point, I should talk a bit about what I do. But for purposes of this rambling entry, the important concepts are the Platform Team (something like a hundred people), the Troops Engineers (eight of us), and the Platform Integrations Team (Troops plus two other small teams).

In this age of being heavily remote (all-remote in the case of Troops), the Platform team has made the sensible decision that we should all get together in-person a couple of times a year, for a bit of communication and a lot of team-building.

(tl;dr -- this is actually a good deal of fun. I approve of doing this a few times a year.)

Hence, we were all summoned to Salesforce Tower in SF for the week. (Did you know that Salesforce owns Slack? I did not know that before we were acquired. Yes, Salesforce owns Slack.)


Monday was, y'know, mainly about the flying. But time zones are funny things, so despite taking off from Boston at 11am, I nonetheless landed in SF before 2pm. So there was a lot of time to kill.

I wound up staying at the Galleria Park Hotel, a nice older hotel that has been kept up generally well. My room is a tad small; OTOH, they provide bathrobes and umbrellas (the latter an absolute lifesaver this week -- see below), and every evening, when I walk into the hotel after work, they shove a complementary martini into my hand, so I have no complaints. For the Bostonians: the general vibe reminds me a good deal of the Park Plaza -- older, a bit idiosyncratic, but nice.

(Note that we weren't all staying at the same place: instead of having a hotel dictated to us, we're told to go into Concur (hack, ptui) and choose from the recommended list. I chose the Galleria Park; most of Troops landed on the Omni instead.)

In the early evening, my immediate team had a quick Slack chat: several of us had gotten in by then, all of us were jet-lagged, and looking for an early dinner. My teammate Frank, whose wife comes from Georgia (the country, not the state), had been extolling the virtues of Georgian food, so other-teammate Thor found the restaurant Georgian Cheese Boat, and half-a-dozen of us went there.

Mini-review: that's quite tasty! I haven't tried the cuisine before, but there were lots of high points, from an excellent lamb stew to good kebabs to the eponymous cheese boats. (Basically low bread bowls full of melted cheese, into which you stir an egg and a bit of butter.)

A high point was the Khinkali: vaguely mushroom-shaped dumplings with a thick doughy "stem" that you use to hold it while you eat the stuff-filled "cap". (Fortunately, Frank had clued us into the fact that it's a novice mistake to try to eat the stem, which is just a big wodge of solid dough and not cooked to the point of being good to eat.)

The restaurant was about half a mile from our hotels; I walked with everyone back to the Omni, and then decided I wanted some exercise, so I set myself a mission. I didn't have room for dessert immediately (see: Ozempic), but I wanted a cookie to have in my room to eat later. So I set out down to the Ferry Marketplace on the theory that a tourist area like that would surely have something like Insomia Cookies still open at 8pm.

There ensued what turned into a stubborn five-miles trek up the Embarcadero through Pier 27, then back down to Mission and along that, finding absolutely nothing of the sort. The Embarcadro and Financial Districts are dead after 6pm, to a degree that I find astonishing even by the standards of Boston's comparable district. So while it was great exercise, it was rather frustrating.

(The irony, and lesson in "no shit, just ask freaking directions", was discovering the next day that, two blocks from my hotel in the other direction, is... an Insomnia Cookies. Sigh.)


Tuesday was the first day of the onsite proper, starting with a surprisingly good catered breakfast for all of Platform, some assorted welcoming and speechification, lunch, and presentations on various topics. Since it was work stuff it's mostly proprietary, and wouldn't be interesting to y'all anyway.

For dinner, the entire Platform team went out to ChinaLive. I suspect that if you eat downstairs off the menu, it lives up to its stellar billing. As it was, it was… fine.

The problem is, we weren't doing a sit-down dinner: instead, we had a single big room upstairs, designed as a wander-around-and-mingle cocktail party with passed appetizery things. They were the sorts of items I like (potstickers, char siu pork buns, etc), and good enough, but nothing better than that – I've had far better interpretations of each item. Similarly, the cocktails at the open bar were perfectly competent, but not even remotely innovative or interesting, and the selection was tiny.

Combine that with the fact that it was brutally loud (see "100 people at a cocktail party"), and most of us in the Troops team fled as soon as we could politely do so.

So we walked back to the Omni, I dropped everyone else off, and decided that for tonight's exercise I should do the opposite of last night. Since I'd already explored the Embarcadero thoroughly, I would instead walk up California Street in the other direction. (This is where the SF locals go, "oh, dear".)

The thing is, "up California Street" turns out to be a very literal description. You walk up an extremely steep hill, get to the top – and find yourself confronted with another extremely steep hill in front of you. Repeat half a dozen times.

By the time I got to the Mark Hopkins International and decided that this time really, truly seemed to be the top, I finally went onto my phone, looked it up, discovered that I had just climbed Nob Hill the hard way, and was now about 300 feet higher than I had started.

So yeah – good, but somewhat unintentional, exercise.

—---

Wednesday was smaller-teams day. After another surprising good breakfast (I will credit Salesforce Tower: their catering staff know what they are doing), we broke out into more manageable groups. Troops was grouped with the "3p data" and "Built by Slack" teams (the latter having flown in all the way from India) for some presentations to help us get to know each others' projects better. And then it was time for the inevitable Mandatory Team-Building Fun.

I will confess, I was dreading this bit. Last May's version was fun but dangerous: a cocktail-making class that led to my first hangover since college. This time, we had been told that we were going to be taking an improv class, and a lot of us were not looking forward to that.

As it happens, I needn't have worried. The class was with Leela Improv, and was surprisingly fun. They emphasized upfront that "funny" was not the goal here – they were trying to teach folks to loosen up, turn off the inner critic, be spontaneous and just play for an hour or two.

So for example, there was the game "Whoosh, Bing, Pow". (Similar to this description, with slightly different details.) That's a good enough warmup that I may well steal it for LARP purposes. Or "I am a tree", which consists of people posing as various things and riffing off of the person before you. And a whole bunch of "Yes, and" exercises. Ephraim, from the 3p-data team, wound up working with me in describing a fictional trip to Disneyland, while three other folks got to play the slideshow of the events we were describing. At the end, all twenty of us formed a giant flying dragon, which then fought, ate, and pooped out my teammate Neil.

All in all, kind of weirdly fun – a more effective exercise in getting folks out of their mental ruts than I would have expected.

Dinner was an interesting challenge, in a couple of respects. Will, the Troops lead, had been assigned the task of finding somewhere to go for dinner. But he had a more modest budget than the night before, and the combined group had a lot of vegetarians. (Because India.) So he'd been tearing his hair out, eventually landing on wildseed, a vegan restaurant. Some folks were skeptical (Frank, our confirmed carnivore, especially so), but I was intrigued.

Also challenging was the weather. One of the folks at the front desk of the hotel informed me that we were in the middle of a "pineapple express", where weather coming in from both Hawaii and the northwest hits at once, resulting in wind and rain. Everyone agreed that the weather was horrible.

I, OTOH, looked at it, said "pshaw – compared to a proper Nor'easter this isn't so bad", and resolved to walk. (Yes, I like to walk, and was using this trip as an excuse to do a lot of it.) So I took one of the hotel umbrellas, and set out.

It was, in fact, no-kidding wet, and my shoes were pretty well soaked through by the time I got to the restaurant. (2.1 miles from the hotel.) And it turned out that the route to get there was via Union Street – which isn't quite as steep and tall as California Street, but only a bit less. (The folks who Uber'ed there described the drive as a terrifying experience.)

So everyone thought I was a bit nuts, but it was again great exercise, and I'd left myself enough time that I didn't need to rush, so it was actually kind of fun – I just had to repeat "I am not sugar, I do not melt" to myself every now and then.

The meal itself was arguably the high point of my trip – summary: wildseed is great, and you should go. It's the sort of place that clearly committed to being no-compromises great food, vegan or not, and the set menu that Will had chosen was fabulous. Highlights included wild mushroom zeppoli, light and flavorful, on an herb aioli. Jackfruit "sausage" pizza with calabrian chiles and horseradish to give it serious zing. Mushroom risotto with garlic confit and coconut parmesan. (I don't even know what that last one is, but it was good.) And a gluten-free pan chocolate chip cookie to finish it off.

On top of that, the cocktail menu was everything the previous night's hadn't been, full of creativity. I had something called "The Nutty Professor", the usual sort of nut-forward cocktail that is usually cloyingly sweet, but this was built on top of good nocino, with an amaro and an aperitivo providing balance and just a hint of bitterness, so you got nutty flavor instead of a face full of sugar. (Heck, they even had an amaro on the menu that I don't own – most bars can't claim that good a selection.)

So yeah – if you get a chance, go there. If it was local, wildseed would probably be on my favorite-restaurants list.

(And no, even I wasn't foolish enough to walk back 2.1 miles though that rain: it would have been courting blisters on my feet, and a non-trivial chance of slipping and hurting myself on that hill, given my no-longer-sober state, so I shared an Uber back to within a dozen blocks of my hotel.)

—---

Finally, today (Thursday) was relatively quiet. Closing ceremonies were pretty brief, just the presentation of the "Platinum Platypus Awards" (the Platypus is the mascot of the Platform team), after which I spent a few hours actually, y'know, working.

But since I had the evening to myself (I'm flying home tomorrow), I contacted my sister (who is local), and we decided to try doing dinner at hed verythai, a whopping half-block from my hotel.

It says something about a restaurant when you walk into a restaurant that's invisible down a back alley, at 6:15 on a rainy Thursday evening, and the place is already full. Fortunately, another party was finishing off, so the three of us had to wait less than ten minutes.

If you like Thai food, this gets a high recommendation. The style is sort of bento-box: you choose one of the set meals, each focused on a particular protein, and get served around five small bowls centered around that.

So for example, I went for the Pork Belly (because mmm, pork belly). Besides that central main (relatively thin, well-cooked sliced with an intensely savory dipping sauce), there was a papaya salad with a hard-to-describe but strong back-burn spice, a coconut-based soup (also with some kick), a side of eggplant and three different rices.

The only caveat was that service was slow: they were explicitly short-handed, and slammed with customers. But we weren't in a tearing hurry, and the food was well worth the leisurely pace.

So if you are in this area, and are looking for very good Thai food (with some real kick), check out hed verythai: it also goes on the "I wish this place was near to us" list.

—---

And tomorrow morning I head home. It's been a generally good time – not perfect, but any work trip that turns out three restaurants that I quite like is a good trip. (I'm bemused that the world-class Chinese was the only one that didn't impress me.)

jducoeur: (Default)

Let's finish up the trilogy with a proper diary entry, shall we?

No shit, there we were, in the middle of Manhattan. Why Manhattan? Let's back up.

A month or so ago, we were told that there was going to be an all-hands get-together for Troops in New York City. This was a big deal, and rather exciting: the company went all-remote at the beginning of the pandemic, with the result that many of us had never met each other. (Thor was literally the only one I had met in-person to date -- I hadn't even met Patrick, who had been a frequent co-worker of mine at Rally and then followed me over to Troops.)

But beyond telling us that it would be in "early May", they were notably vague about when this gathering would take place; as time passed, this got increasingly odd. Finally, a couple of weeks ago, I pinged the CTO about my growing unhappiness about this -- he told me that everyone in the company was stressed about it, but we were dependent upon "external parties" for the final schedule, so we couldn't formally plan it yet.

That set off my radar in a big way, and occasioned several days of me thinking about it. That got even stronger when the plans did begin to firm up: we were all going to meet mid-day on Monday the 9th, in front of the fountain in Bryant Park in Manhattan, and then we would be escorted to a location-to-be-announced for the rest of the day. Uh, huh.

Somewhere around Wednesday the 4th I wound up talking through my reasoning with Kate. While there are a lot of possible explanations, the most obvious "external parties" would be that we're being acquired, and the timing depends on the acquiring company. And thinking further, the most obvious acquiring company (see previous entry) was Salesforce.

"Well," saith Kate, "are there Salesforce offices in Manhattan?"

So we pulled up Google Maps, and determined that the answer was yes. In fact, there is a "Salesforce Tower" in Manhattan -- across the street from the fountain in Bryant Park. That pretty much set my expectations.


The trip down to Manhattan on Sunday was pleasant enough. I decided to drive -- in principle the train would have been better, but getting to South Station is still a mild hassle and we're still in the middle of a covid surge right now. Hopefully in future years we'll have a little less plague, and the Green Line extension will make the train too convenient to pass up.

Sunday night was a trip. I decided to take the opportunity to actually go to an actual movie theater -- it feels almost transgressive at this point, but this trip was going to involve enough covid risk that the movie wouldn't be adding an awful lot on top of that.

(The movie was Everything Everywhere All at Once -- I may write a proper review, but suffice it to say, it is every bit as brilliant and bizarre as everyone is saying. Highly recommended.)

Wandering around the city was a real highlight, though. I had forgotten that Broadway had been mostly turned into a pedestrian thoroughfare -- walking up it is just plain odd, much less eating a gyro at a table in the middle of the street. But it was pleasant and uncrowded, and I poked my head into a few shops. (Including one of the random dispensaries that have cropped up all over NYC, and picked up a few caramels to see if I like them.)

After the movie, I continued uptown to Times Square, which was almost surreal. It is still the case that Times Square at 10pm on a Sunday night is more crowded than almost anywhere in Boston ever is. I tried not to get too deeply enmeshed in the crowds, but the people-watching was wonderful, and I scored a slice of Junior's cheesecake for dessert in my hotel room. All told, it was a wonderfully normal, high-energy evening.


Monday, mid-day, as planned, as all rendezvoused in Bryant Park, to get the announcement that (surprise, surprise) we were being acquired. The only nuance that I had missed is that we are being purchased by Slack, which is part of Salesforce.

So the off-site business meeting turned out to mostly be a party. We were escorted into Salesforce Tower, taken up to the 21st floor, and handed champagne as part of an open bar. There was a good fireside chat with our CEO and our new boss from Slack, with a bit of Q&A, but it was mostly hanging out, chatting, and finally getting to socialize properly with each other.

That set the tone for the rest of the day. From there, most of us heading over to the hotel's rooftop bar, for more drinks and socializing, and thence to Ilili, a delightful Lebanese restaurant where they had reserved a private room for Troops. (A nice thing about a 30-person company: we can all sit at a single long dinner table together.) Dinner was faboo: they had much of Ilili's menu served out family-style, so we could try loads of different things, all of them excellent.

After that, several of us headed over to another hotel bar; finally, after that broke up, a few of us (including one of the legendary members of the company, who had left a year or so ago) wound up at a pub near the hotel.

All in all, it was a great day, albeit a sodden one: I probably had seven drinks over the course of twelve hours, which is more than I've had in years.


Which was fine, but meant that I was exhausted and slightly hung-over the following morning, when everything got down to brass tacks. We all rendezvoused back at Salesforce Tower, to receive our verbal offers and the initial briefings of what to expect from the acquisition.

I can't go into too much detail, but I'm nervously excited by the whole thing. After the disappointing merger with Optum (and, ten years earlier, the experience of Memento being acquired by FIS), I'll admit to some trepidation. That said, the vibe of this deal is way better. It's very clear why they want us, and how we would fit into the company. Slack has a reputation of being a generally good employer, and it appears that being acquired by Salesforce hasn't wrecked that.

And really -- Slack is in some ways an almost weirdly good fit for me, personally. I've been saying for decades that, insofar as I have a professional speciality, it is "productive online conversational systems", and while that isn't precisely what Troops does (we're more about notifications than conversation), I suspect that I might well find loads of cool things to do at Slack.

So far, there aren't any red flags. The benefits at Slack seem to be even better than the quite-good ones at Troops (and miles better than what Optum was offering), and I'm getting a significant raise out of the deal.

So, fingers crossed. I really want this to work out well, and it looks like there is good reason to believe that it will.


The drive home was uneventful, although I was pretty bleary-eyed by the time I arrived back in Somerville.

The postscript of the story is exactly what I suspected it would be: one of my co-workers tested positive on Thursday. So I'm in watchful-waiting mode for a few days, testing regularly and mostly keeping at home. If I'm still testing negative on Monday afternoon, I'll probably let myself go do social (but masked) activities again.

jducoeur: (Default)

Okay, so as of last October I'm at Troops -- let's talk about that.

Troops has been very much me going back to my roots: a scrappy little startup. Unlike most such, it's been pretty well-run -- cautious without being timid -- with the result that when I got there the company was six years old and still only 30 employees. That's refreshingly sensible: too many startups fall into the Cult of Blitzscale, believing that the only way to succeed is to GrowGrowGrow as fast as possible, to weave illusions in front of investors, regardless of whether that makes any business sense. Troops thinks a lot more like I do -- you're trying to build a viable company, and that takes a lot of time and experimentation.

There's a lot to like about Troops: they started talking about the company's values from the first interview, and unlike many places, they tend to walk the walk. For example, Transparency is a very big deal, and I've been impressed on that front. Every Monday we have an all-hands that goes into serious detail for every department: not just what Product and Engineering are working on, but line-by-line breakdowns of how things are going in Sales, details about what Marketing is working on, what's going well (or not as well) in Customer Success, and so on. The result is that I've actually gotten to not only know everybody in the company, but also what they are doing, in a way that I don't think has been true of any employer since Buzzpad. (Which was only eight of us, so scarcely counts.)

The product is mundane but terribly useful: we provide analysis and notification services from "systems of record" (eg, Salesforce) to "systems of communication" (eg, Slack), so that you can get notified when something interesting happens, or just get updates on a regular schedule. The company started out just doing Salesforce-to-Slack, back when that was a new and somewhat heretical idea, but pivoted a couple of years ago to be more generalized. It's still pretty focused on customer-relationship applications in practice, but our tech is pretty general-purpose by now.

The stack is very much in my sweet spot: a pure-FP Scala backend, coupled with a TypeScript frontend. Aside from using ZIO instead of my preferred cats-effect, it's largely the same stack that I was pushing at Rally, so the coding is fun.

The company is small enough to not be hidebound -- we have a level of continuous integration and release that we were dreaming of at Rally, not too far from one release per engineer per day on average. We count on the engineers to take strong ownership of the application, working together and with Product to figure out how to make things better.

My timing could scarcely have been better. The company was just hitting market-fit in a serious way when I joined, with sales starting to really take off and the user base growing in serious ways. That's an exciting time to be at a firm, when you can look at it and say with some confidence that things are getting steadily better.

Mind, it can be a somewhat hectic environment: being a tiny group (just ten engineers) supporting a growing customer list and a hugely ambitious technical vision, we've had to work hard and stay focused. But the company has a generally good attitude, and doesn't push burnout-level stress -- folks understand that building a company is a marathon rather than a sprint, and are quite supportive of maintaining a decent work/life balance.

So it's been a good time, these past six months or so. Things got more interesting last week, but that'll be the topic of the last entry in this trilogy...

jducoeur: (Default)

Soooo -- looking back, I haven't talked at all about work for the past eight months. That's probably been a mistake, because boy, my work life has been complicated. Let's break the story down into three posts, for the three major phases. This is basically a trilogy of diary entries, bringing us from a year ago, up to present day.

When last we left our hero, he was working at Rally Health, and largely enjoying it. Rally was pretty huge by the standards I'm used to -- my first employer of more than about 300 employees -- but still small fry in the grand scheme of things. The tech stack was solid; the people were pretty great; maybe most importantly, the community and culture were really excellent.

(I started at Rally as a consultant, and jumped ship after about a year to join them full-time. When I was interviewing, they asked, "Why do you want to work here?" My answer was, "You've gotten to 1500 employees, and don't suck. I want to see how you manage that.")

Sometime early last year, they announced that Rally would be folded into its much-larger parent company, Optum. (Which is itself part of the gigantic monolith, United HealthGroup.) That caused a lot of consternation, including people panicking about layoffs. I initially dismissed most of those concerns, on the grounds that Rally was a primary engine of innovation for Optum, and to a non-trivial degree for UHG as a whole. Surely they wouldn't strangle the goose that laid the golden eggs?

By the late summer, though, I was starting to get nervous. It was clear that Optum's benefits weren't as good as Rally's, and I didn't love the answers I was getting on that front. The response to losing our unlimited PTO was, "Oh, we just don't track the PTO for engineers. But no, we refuse to write that de facto policy down anywhere." That did nothing to soothe my lawful-good heart, and the implied inequity of it burned.

Then the attrition started. Some of it was just natural, but certain highly-placed people who I considered "Rally lifers" suddenly left, which I took to be a bad sign. So for the first time in a long time, I started actually responding to the recruiter emails.

I did a few interviews, but as usual, the really interesting one came via networking. Thor, a member of the Boston Scala group, who I'd worked with on ScalaBridge a while back, pinged me because he had just joined a little company called Troops, and might I be interested in chatting?

I'll talk more about Troops next post, but suffice it to say, yeah -- it was up my alley, and the timing was impeccable. So I wound up interviewing during our trip to Hawaii last fall (with Kate rolling her eyes about that a little bit, but she understood the situation). It all looked good, so Troops and I were making encouraging noises at each other, with me asking for about six weeks' transition time.

Then I got back from vacation, during which the merger had happened. I'll avoid going into the details, but suffice it to say, I was deeply unimpressed by Optum. The benefits were mediocre; the internal politics were more corporately nasty; perhaps most importantly, the level of general competence just wasn't there. I was used to Rally, which had an ethos of hiring great folks into all groups and giving them lots of room to build high-quality stuff; it really hurt when I kept stumbling across Optum internal systems that just plain didn't work right.

It was a worse environment in all ways, with no salary bump. It hurt to leave my team (who I really liked a lot), but they just plain weren't paying me enough to put up with that nonsense. So I wrote back to Troops and said, more or less, "I've changed my mind. Give me an offer now, and I'll put in my two weeks' notice."

So: Rally Health, RIP. It's a real pity -- as a wholly-owned subsidiary, Rally was a really great workplace, and it still presumably has that great tech stack. But Optum feels much more corporate, which isn't my scene. So, on to something better...

jducoeur: (Default)

Physical limits, that is.

This week was the annual Hackathon at work. It's a delightful time: you get to choose your own projects, and while it is generally considered appropriate for them to have at least something to do with work, there's a lot of leeway to do what you think would be useful. All strictly optional, mind -- something under 10% of the people in the company take part, but I think it's a hoot.

I wound up going mostly solo, which was almost certainly a mistake -- it reminded me that no, I really don't know React at all well (and Typescript not at all), so trying to do major enhancements to a mildly complex React website alone was unwise. So I didn't finish, but will probably keep working on it in spare minutes over the next few weeks, teaming with the guy who actually owns the UI and knows what he's doing.

Anyway -- the main discovery is that this pushed right up to the limits of my stamina. After a full workday yesterday, the Hackathon kicked off at 5pm. I did about eight hours of coding, went to bed, got up and back to work around 8am, worked on my project straight through to 6pm, and then watched two hours of presentations of people who did get to the point of having something that was worth presenting. Total comes to 28 hours at work between two days, I think.

I am now approximately kaput. Even by my usual excessive standards from Arisia and Pennsic, that was overdoing it.

Still and all, it's fun to overdo it occasionally. One problem of living in Quarantinia is that daily life gets very routine, so kicking myself in the ass now and then is a nice change of pace...

jducoeur: (Default)

I should remember to diarize successes, so...

Yesterday was a big presentation at work. Basically entirely self-driven: I'm talking up a particular technology (Akka), so I figured I'd better do an introductory talk on the subject to educate everybody on the topic. Me being me, I publicized it to the entire engineering organization, nation-wide, and got a hundred-some-odd attendees.

My presentation style has evolved a lot over the past five years. I used to do the same turgid PowerPoint bullet lists as everyone else, but that always sucked, as was driven home to the community some years ago by this cartoon: Cut for violence to kittens )

The trend in tech presentations lately, though, has been really concise, fast, focused little slides that you flip through as you go.

So yesterday? 135 slides -- a new record for me, by a fair margin. Took a fair while to write and edit, but I managed to slide in at 56 minutes (right about as planned), and folks seem to have gotten a lot out of it, so yay. That's probably approaching as fast as I can talk, but I could probably manage even more slides in a talk that had less code and more visuals.

(Disclaimer: a fair number of those slides are really flipbook animations. It might well be possible to accomplish the same effects in fewer slides with a more sophisticated knowledge of Google Slides. The point, though, is to keep the visuals moving.)

Also, kudos to The Noun Project, land of All The Icons. I maintain a professional account there specifically for presentations like this -- there's nothing like being able to grab icons of dragons and swords to use as metaphors for slaying old programming problems to liven up a talk, or showing ActorSystems as communities of people sending letters around. (And sometimes dying when Exceptions happen.) If you ever need to do professional presentations, it's a really helpful library to have available.

jducoeur: (Default)

Got home last night from California, where I spent Thursday and Friday teaching a new course on Concurrent Scala. (We'll eventually get that listed on the company website.)

It's been an interesting experience. While I've done a fair amount of Scala teaching (both in conferences/Meetups and officially through Artima), and of course I've been teaching dance and stuff forever, this is the first time I've taught a whole programming course that I wrote largely on my own.

In general, I think it went pretty well. Some students thought parts were too elementary, while others thanked me for covering the basics, so I think we got the level-set about right. I didn't see too many people yawning, even through the epic three-hour talk on Friday morning, so I seem to still be pretty good at holding folks' attention and explaining stuff. It was a good class: larger than I'd expected, with a good deal of give and take with the students. As with dance, a lively group makes teaching a lot more fun.

The only serious fail came during the second day's Project Time. For this advanced class, instead of our usual approach of alternating short talks with half-hour blocks of formal exercises (with unit tests to check whether your answers are right), I instead did much more in-depth talks, and then had the students pair-program on less-formal projects. Basically, I gave them an initial skeleton app, and a stack of stories, which they were then to go off and implement. At the end of the day, we got volunteers to come up and show what they had written, and had the whole class talk about it.

All of which went fine until most of the way through Friday. Since it was a dead run getting the class finished, I hadn't gotten around to actually working through the projects myself -- after all, I knew the topics deeply, so I was confident it was all doable. Only I'd trusted the documentation while I was writing the skeleton app -- and as we all know, documentation lies. So the skeleton was actually misconfigured for what I had assigned them to do, and we lost half an hour during the projects figuring out the correct config settings.

But all in all, as fails go, I'll take it -- for the first run of a course, that wasn't too embarrassing, and I'm going to go fix it this week, so it's ready for next time.

And with that survived, I now get to do stuff that's a little less insane for the next couple of weeks...

jducoeur: (Default)
Friday was formally my last day at Memento, but I count it as yesterday. Way back in March, I gave a sort-of four months' notice, saying that I would likely be leaving "at the middle of the year". At their request I left that squishy, but the acquisition by FIS did nothing to change my feelings there, and I decided to take myself literally, with myself ending on June 30th. Part of why I was leaving is that I'm a small-company guy at heart, preferring fast, agile organizations that get results quickly, and for all that FIS seems more clueful than the average big company, there has to be more bureaucracy as a result.

That said -- it *is* a good company, at least the group-formerly-known-as-Memento part of it, and they're hiring like gangbusters. If you're looking, and you like a more stable environment than I do, it's worth checking out. The FIS job-search page is here. (Yes, it totally fails in Chrome, and yes, that says something about the fact that this is a big finanicial firm that hasn't managed to keep up with these newfangled browsers. Don't hold it against the Memento group -- I don't even know what *state* is responsible for the stupid job-search site.) Look under US / MA / Burlington for the Memento listings: they're looking for everything from a UI Architect (that is, someone to replace me) to an administrative assistant.

Anyway, my head is starting to adjust to me moving on. This afternoon, I started my ToDoList of tasks in the House and Estate projects: that got to 40 tasks in the first half hour and I suspect that I got less than half of what actually needs doing. So it's going to be a busy summer of getting my life in order.

In the meantime, I'm gearing up my programming. The nice thing about programming for fun, instead of working for someone, is that I'll likely get more done in 2 hours/day that I've typically been doing in an entire day. First up is The Great OP Compiler Project, as I attempt to take all the data in the existing Order of Precedence site (many, many hand-maintained HTML files, slightly grungy and inconsistent, with much of the semantics implicit in the formatting), and literally write a compiler from that into a nice clean SQL format. It should be an entertaining project, and will limber up my Scala skillls. The objective is to have that ready before Pennsic, so we can begin the actual port to the new site sometime after. And in the meantime, I'll be gearing up the Querki project in the background, to start in earnest in August.

And on the relationship front, things are going well. We ordered the ring yesterday, after much discussion of what we were looking for in a diamond. It's going to be very pretty.

Expect lots of diarizing and stuff, especially in the next month. There are no less than three major Jane anniversaries, starting tomorrow, and I've got a lot to process. I'm holding it together, but there are going to be some rocky days during July...
jducoeur: (Default)
... you finish your job and are packing your desk, and the tea selection on the back of your desk takes an entire moving box all by itself. (Yes, really. Even I am a little boggled.)
jducoeur: (Default)
Conducted an interview this morning; suffice it to say I wasn't blown away in general, but the worst of it was the resume, which was almost Platonically bad. Let's count up the problems, each of which serves as a cautionary tale:

Check your freaking English: seriously, if you're going for a professional position (and programming is definitely a profession), there is absolutely no excuse for poor English on the resume. It's not just a matter of using the right words -- syntax matters, and not knowing when to appropriately use "a" and "the" looks bad. (Moreso when you don't have the excuse of being Russian.) Having syntax errors in the very first sentence is going to handicap you from the get-go. If you're not a native speaker, have someone who is one check it over for you; if you can't even do that, I am forced to wonder whether you fail on "not a team player" grounds.

Additional buzzwords don't make it better: listing all of the source-management tools you've ever used doesn't impress me. Listing them all as "SourceSafe"s mostly convinces me that you don't know what you're talking about. So does listing "Agile" and "Scrum" as separate methodologies if you're not prepared to explain the difference to me correctly. Listing HTML as a "development language" isn't *quite* as bad as listing test-driven development as a "technology", but it's close.

Formatting matters: not quite as important as the proper English point above, but again goes to looking professional. Having most of the resume look like one run-on paragraph, with no variation in the line spacing to separate the jobs, makes it look like it was written by a tenth grader. (And really, most of the computer-savvy tenth graders can make it look better than that.) It doesn't have to be a work of art, but at least make the effort to find a decently readable template -- if it's slapdash and hard to read, it comes across as a disrespectful waste of my time deciphering it.

Know your resume: folks often point out that having a three-page resume can be a negative. Here's a sharper point on that: listing something on your resume that you don't remember clearly is a Very Very Bad Idea. As an interviewer, I'm going to ask you about the things you list. If you keep having to ask to look at my copy of the resume, and then have to spend thirty seconds remembering what that line was talking about, you're doing yourself a disservice. If it isn't important enough for you to make the effort to bone up on it and have it fresh in your mind, it isn't important enough to list on the resume.

Don't inflate: the uber-sin, that trumps all the others. If you list yourself as "Architect" -- if you claim that you have *ever* been an Architect -- I am going to treat you like one. And if I discover that your actual skills are those of a conventional Senior Software Engineer, it's going to go worse for you than if you said that in the first place. When you say that you "re-architected" a software system for a client, and I find on drilling down that all you did was perform fairly conventional refactorings, I'm going to get downright annoyed.

All of this boils down to two points, which (uncharacteristically) I'm willing to say are hard and fast rules if you're interviewing as a programmer:
  • Make the effort to make your resume look adequately professional.

  • Don't brag, don't inflate, don't fill it with puffery -- keep it real, honest, modest and limited to things you're prepared to talk enthusiastically and knowledgably about.
None of this is rocket science, and there's no good excuse for violating it...
jducoeur: (Default)
[A bit of introspection, caused by this week's LinkedIn trawl.]

I've largely stopped hiding the fact that I interviewed at Google a couple of times in recent years -- I wasn't unhappy with Memento or anything, but it's hard to avoid being intrigued by Google. The sheer size of the company was daunting to me (mind, I consider a 300-person firm "large"), but I have a lot of friends there, and the general attitude towards development sounded kind of cool. I was always a bit skeptical about the self-image of Google as a large number of startups lashed together in a single company, but projects like Wave demonstrated that they had room for cool skunkworks and fun ideas.

The first interview got scuttled by Jane's cancer (we got the diagnosis the day of my interview). That went quite well, but I had to shut it down -- it made no sense for me to be commuting to Cambridge when her health could get dicey. (And in retrospect, it was absolutely the right decision: besides simply not having to spend as much time away from her due to commuting, Memento was really good to me during her final months, better than most companies would be.)

By the time the second came around, the nymwars had brewed up -- indeed, everything hit the fan between starting the process and me actually coming in for the interview. The result was considerably less successful: while I liked the people I talked to, and think I presented myself decently, I'd bet that my intense distaste for Google's new policies came across as strongly negative, and I wasn't surprised that they opted to not continue from there.

My concern was less about the specific policy, and more about the decision-making process. The realname policy was dumb and naive, and IMO continues to be well short of appropriate -- while it's improved a good deal, they've promulgated a lot of nonsense about how people interact online, ignoring decades of experience and study in this field, and how online identity *works*. Once again, it was clear that Google's upper management had managed to screw up a fundamentally good product with a few bad decisions. (Very much like Wave, which I still think was a *great* product that was torpedoed by a few idiotic mis-steps.)

And the thing is, much of the company clearly *knew* that it was broken. Without going into too much detail, a bunch of people said pretty clearly that they knew the policies made no sense, but felt fairly powerless to do anything about it. Now *that* is what I expect from a 20k person company: bureaucracy, management fiat, and poor mechanisms for bubbling intelligence up the chain. Suffice it to say, over the course of the interview, I developed a pretty strong sense (and did nothing to hide it) that I could only cope with the company by being a fairly loud iconoclastic pain in the butt about these mistakes. So like I said, I wasn't really surprised that they chose not to pursue further interviews.

This all comes to mind because of James Whittaker's blog post this week, on why he decided to leave Google. I confess, the post comes as an odd relief to me. Google is secretive enough that I couldn't be sure that I was reading things right in that second interview, and in reading the other tea leaves around company policy and what was leaking out. But his description matches pretty closely what I was coming to suspect: that the company has crossed the line from being the scrappy world-beating startup to being a much more normal corporate giant. I'd sort of assumed that was happening, since it happens to every big company eventually -- I remember clearly the days when Apple and yes, even Microsoft were the little Davids taking on the evil corporate Goliaths.

It does make me a little sad: I have a suspicion that I would have quite enjoyed the Google of 3-4 years ago. But it sounds like they're gradually becoming a more typical big company, and I just don't enjoy working for those. Probably for the best that I stick to real startups, where the way that I deal with bad company strategy is to walk into the CEO's office and have a chat...
jducoeur: (Default)
One of Memento's better qualities is that the company has a fairly strong community-service ethic. Company policy is that employees get to take a half-day several times a year to do Something Good, and in order to make that a bit more real, management has a habit of occasionally leading field trips. And so it was that a half-dozen of us found ourselves serving lunch yesterday at Rosie's Place.

The place itself is quite a bit nicer than I expected. The usual impression from word of mouth is that it's a homeless shelter, and that's partly true, but the place thinks of itself more as a support center, providing women in need with necessary services. The shelter part is actually fairly modest -- a small number of medium-term beds. Their real pride and joy is clearly the classrooms: they recently bought the house next door, and renovated it to hold a large number of classrooms where they teach classes to help the women they serve to help themselves. And then, of course, there's the kitchen.

They provide hot lunches and dinners to all the women who come in, but the effect is deliberately *not* a stereotypical soup kitchen. The statement that they make (repeatedly) is that you should treat the ladies as you'd want your own mother to be treated -- with respect, and in a way that helps them keep their dignity. That tends to be self-reinforcing, with the result that the whole thing is very *polite*, making it much more pleasant for both the patrons and volunteers. The atmosphere is deliberately non-institutional: comfortable, well-lit, cafeteria style but not sterile.

So I spent the first hour or so on prep -- primarily on mixing the chicken and pesto for lunch. Then I ran one of the initial lines: bread and soup basically as requested. (The rule was that you'd serve so much automatically, but provide as much as requested if she asked.) Then on to plate-prep for the main lunch, which was served at table -- we had an assembly line making up plates of chicken-pesto burritos, a fairly ornate corn/barley salad, asparagus and an apple, and then several people taking those around to tables with full service. And then cleanup, starting quietly in the background as things begin to empty, and getting thorough once the dining room closes at 1pm, proceeding gradually enough that we were done by 1:10pm.

The politeness aside, they run a nicely tight ship: the schedule of what goes out when is firm, which I suspect plays into the dignity point -- they treat the women like grown-ups, and insist that they behave as such. And the volunteers are instructed on proper food safety from the get-go, with all the right nuances. (Including the point of, "We have lots of gloves. Do not attempt to save us gloves. When in doubt, put on new gloves.") The result is that it's a pretty satisfying place to work, with no surprises or panic. (Andy, who runs the show, reminds me a lot of a good SCA kitchener -- helping out as he has time, but always looking around for crises to deal with, understanding that his job is mainly to provide direction.)

All in all, a lot of hard work -- running pretty much flat-out for three hours -- but a good time. They do a nice job of making the volunteers feel useful, especially if you're the sort to go looking for ways to help out. Recommended as a way to spend some time, if you're looking for a opportunity to be societally useful...
jducoeur: (Default)
One of Memento's better qualities is that the company has a fairly strong community-service ethic. Company policy is that employees get to take a half-day several times a year to do Something Good, and in order to make that a bit more real, management has a habit of occasionally leading field trips. And so it was that a half-dozen of us found ourselves serving lunch yesterday at Rosie's Place.

The place itself is quite a bit nicer than I expected. The usual impression from word of mouth is that it's a homeless shelter, and that's partly true, but the place thinks of itself more as a support center, providing women in need with necessary services. The shelter part is actually fairly modest -- a small number of medium-term beds. Their real pride and joy is clearly the classrooms: they recently bought the house next door, and renovated it to hold a large number of classrooms where they teach classes to help the women they serve to help themselves. And then, of course, there's the kitchen.

They provide hot lunches and dinners to all the women who come in, but the effect is deliberately *not* a stereotypical soup kitchen. The statement that they make (repeatedly) is that you should treat the ladies as you'd want your own mother to be treated -- with respect, and in a way that helps them keep their dignity. That tends to be self-reinforcing, with the result that the whole thing is very *polite*, making it much more pleasant for both the patrons and volunteers. The atmosphere is deliberately non-institutional: comfortable, well-lit, cafeteria style but not sterile.

So I spent the first hour or so on prep -- primarily on mixing the chicken and pesto for lunch. Then I ran one of the initial lines: bread and soup basically as requested. (The rule was that you'd serve so much automatically, but provide as much as requested if she asked.) Then on to plate-prep for the main lunch, which was served at table -- we had an assembly line making up plates of chicken-pesto burritos, a fairly ornate corn/barley salad, asparagus and an apple, and then several people taking those around to tables with full service. And then cleanup, starting quietly in the background as things begin to empty, and getting thorough once the dining room closes at 1pm, proceeding gradually enough that we were done by 1:10pm.

The politeness aside, they run a nicely tight ship: the schedule of what goes out when is firm, which I suspect plays into the dignity point -- they treat the women like grown-ups, and insist that they behave as such. And the volunteers are instructed on proper food safety from the get-go, with all the right nuances. (Including the point of, "We have lots of gloves. Do not attempt to save us gloves. When in doubt, put on new gloves.") The result is that it's a pretty satisfying place to work, with no surprises or panic. (Andy, who runs the show, reminds me a lot of a good SCA kitchener -- helping out as he has time, but always looking around for crises to deal with, understanding that his job is mainly to provide direction.)

All in all, a lot of hard work -- running pretty much flat-out for three hours -- but a good time. They do a nice job of making the volunteers feel useful, especially if you're the sort to go looking for ways to help out. Recommended as a way to spend some time, if you're looking for a opportunity to be societally useful...
jducoeur: (Default)
Today's Lunch 'n' Learn was a seminar on the subject of effective verbal communication in the office, which I expected to be a pablum waste of time. In reality, it was surprisingly interesting, and even a bit useful.

Probably the most intriguing part of it was the quiz handed out at the beginning, which listed 20 *bad* habits in communication, and asked you to rate yourself on each, with a scale of 0 (I never do this) to 5 (I do this all the time). Fascinating opportunity for introspection, and I couldn't honestly rate myself 0 on anything. I think I do reasonably well at avoiding some bad habits (absence of substance, bullying, insincerity -- by and large, practices that feel vaguely dishonorable to me, so I avoid them very carefully), but am a bit more prone to some others (preaching, using cliches, excessive information -- mainly, stuff that can lead to being boring).

The other rather interesting exercise was assigning everyone into groups of three, and assigning each group to talk about what each person's *best* strength in communication was. I wound up paired with Jim, our tech writer, and Ildi, our head of training, so we were a pretty communicative bunch. Their assessment of me was that my primary strength was that they always feel like I know what I'm talking about when I speak -- which on the one hand is flattering, and on the other hand implies a slightly scary responsibility. It's good to know that folks take me seriously, but underscores the need to avoid BS'ing, because folks might believe me when I'm just talking through my hat. I am very good at sounding confident -- sometimes more confident than I really feel. So that's something to be careful about.

Overall, it struck me rather like an Agile seminar does: I didn't really *learn* much that is new and different (my apprenticeship to [livejournal.com profile] baron_steffan was mainly in rhetoric and philosophy, so I do know the subject moderately well), but the session served as a nice reminder of both good and bad approaches. One can always use a refresher of best practices, to help avoid falling into bad habits...
jducoeur: (Default)
Today's Lunch 'n' Learn was a seminar on the subject of effective verbal communication in the office, which I expected to be a pablum waste of time. In reality, it was surprisingly interesting, and even a bit useful.

Probably the most intriguing part of it was the quiz handed out at the beginning, which listed 20 *bad* habits in communication, and asked you to rate yourself on each, with a scale of 0 (I never do this) to 5 (I do this all the time). Fascinating opportunity for introspection, and I couldn't honestly rate myself 0 on anything. I think I do reasonably well at avoiding some bad habits (absence of substance, bullying, insincerity -- by and large, practices that feel vaguely dishonorable to me, so I avoid them very carefully), but am a bit more prone to some others (preaching, using cliches, excessive information -- mainly, stuff that can lead to being boring).

The other rather interesting exercise was assigning everyone into groups of three, and assigning each group to talk about what each person's *best* strength in communication was. I wound up paired with Jim, our tech writer, and Ildi, our head of training, so we were a pretty communicative bunch. Their assessment of me was that my primary strength was that they always feel like I know what I'm talking about when I speak -- which on the one hand is flattering, and on the other hand implies a slightly scary responsibility. It's good to know that folks take me seriously, but underscores the need to avoid BS'ing, because folks might believe me when I'm just talking through my hat. I am very good at sounding confident -- sometimes more confident than I really feel. So that's something to be careful about.

Overall, it struck me rather like an Agile seminar does: I didn't really *learn* much that is new and different (my apprenticeship to [livejournal.com profile] baron_steffan was mainly in rhetoric and philosophy, so I do know the subject moderately well), but the session served as a nice reminder of both good and bad approaches. One can always use a refresher of best practices, to help avoid falling into bad habits...
jducoeur: (Default)
When confronted with a monumental project, there's nothing quite like breaking it down into as many medium-level problems as you can, then sketching out the dependencies between them. The result still looks huge, but suddenly it looks *tractable*, with a lot more clarity of where the critical path is. I've had this huge bundle in my head for weeks, but only when I sit down and list each task and its preconditions does it become crystal-clear where we hit the bottleneck in the process, after which we can parallelize the heck out of the rest of development...
jducoeur: (Default)
When confronted with a monumental project, there's nothing quite like breaking it down into as many medium-level problems as you can, then sketching out the dependencies between them. The result still looks huge, but suddenly it looks *tractable*, with a lot more clarity of where the critical path is. I've had this huge bundle in my head for weeks, but only when I sit down and list each task and its preconditions does it become crystal-clear where we hit the bottleneck in the process, after which we can parallelize the heck out of the rest of development...
jducoeur: (Default)
This isn't helpful for everybody, and my apologies to those for whom it is just frustrating. But I think there's a point worth making to any young programmers in the audience, at least.

I often go on about self-education, in many different ways: my basic principle is that you should be trying to improve your skills in *some* fashion every single day. Doesn't have to be just raw programming skill -- indeed, it's often best to do this in a well-rounded way. So sometimes I'm learning about programming, but sometimes it's about project or product management, sometimes about usability design, sometimes about my current problem domain, etc. The point of the exercise is doing something that helps you advance your career skills every day.

Folks take this as being about job security, and there's something to that: I developed the habit largely as a reaction to watching several people wash out of the industry after Y2K, and others who have just gradually rusted and become unemployable. But it's just as much about *owning* your career and your life.

Specifically, I'm reacting to more than a couple of friends who have been buried by work, often in ways that I find a little abusive. When I find out that a friend is having to go into crunch mode on a regular basis, that work is eating their life, that it's making them miserable and lonely, my reaction is sympathy -- but also a pretty good reminder that I just don't *do* that. (At least, not any more. I did do that at Looking Glass, for five miserable months of working every single day. Buzzpad was founded by a bunch of LG refugees, mainly on the theory that there had to be a better way to do software development.)

Seriously: when I interview for a job, I am very clear upfront that I work 40-45 hours a week. I try to be reasonably focused and smart in that time, and when a genuine crisis arises you do what's needed to deal with it. But if the crises keep coming, or if you are in never-ending crunch mode, that's a sign of management failure, and I just plain don't tolerate that. And this loops back to the self-education point: I can get away with not tolerating it -- with saying, "No, really -- you need to fix the institutional problem here" -- by being the best.

Plain and simply, you get to be the best by deciding to be, and then working hard and constantly at it. And the payoff is that employers *need* you; that, in turn, means that you aren't at their mercy, and can push back when an employer is turning their management failures into your problem. And this usually improves the company, to boot. Scared employees let employers get away with practices that are, in the long run, detrimental. The 40-hour work week isn't about being *nice* to employees, it's that it is a good sustainable pace for the average person; companies that overwork their staff tend to suffer the results in the long run. By not putting up with "It's a startup, so we all put in 150%!" bullshit, I force employers to develop good habits instead of building a house of cards.

Ultimately, though, it's about owning your life. If you're good enough, you don't have any reason to be afraid of your employer and what they might do. And if you aren't scared of your employer, you're in a much healthier place all around. And while being That Good isn't enough in every field (especially in this economy), it definitely still is in programming: truly top-flight engineers, with deep and broad skills, are still in real demand...
jducoeur: (Default)
This isn't helpful for everybody, and my apologies to those for whom it is just frustrating. But I think there's a point worth making to any young programmers in the audience, at least.

I often go on about self-education, in many different ways: my basic principle is that you should be trying to improve your skills in *some* fashion every single day. Doesn't have to be just raw programming skill -- indeed, it's often best to do this in a well-rounded way. So sometimes I'm learning about programming, but sometimes it's about project or product management, sometimes about usability design, sometimes about my current problem domain, etc. The point of the exercise is doing something that helps you advance your career skills every day.

Folks take this as being about job security, and there's something to that: I developed the habit largely as a reaction to watching several people wash out of the industry after Y2K, and others who have just gradually rusted and become unemployable. But it's just as much about *owning* your career and your life.

Specifically, I'm reacting to more than a couple of friends who have been buried by work, often in ways that I find a little abusive. When I find out that a friend is having to go into crunch mode on a regular basis, that work is eating their life, that it's making them miserable and lonely, my reaction is sympathy -- but also a pretty good reminder that I just don't *do* that. (At least, not any more. I did do that at Looking Glass, for five miserable months of working every single day. Buzzpad was founded by a bunch of LG refugees, mainly on the theory that there had to be a better way to do software development.)

Seriously: when I interview for a job, I am very clear upfront that I work 40-45 hours a week. I try to be reasonably focused and smart in that time, and when a genuine crisis arises you do what's needed to deal with it. But if the crises keep coming, or if you are in never-ending crunch mode, that's a sign of management failure, and I just plain don't tolerate that. And this loops back to the self-education point: I can get away with not tolerating it -- with saying, "No, really -- you need to fix the institutional problem here" -- by being the best.

Plain and simply, you get to be the best by deciding to be, and then working hard and constantly at it. And the payoff is that employers *need* you; that, in turn, means that you aren't at their mercy, and can push back when an employer is turning their management failures into your problem. And this usually improves the company, to boot. Scared employees let employers get away with practices that are, in the long run, detrimental. The 40-hour work week isn't about being *nice* to employees, it's that it is a good sustainable pace for the average person; companies that overwork their staff tend to suffer the results in the long run. By not putting up with "It's a startup, so we all put in 150%!" bullshit, I force employers to develop good habits instead of building a house of cards.

Ultimately, though, it's about owning your life. If you're good enough, you don't have any reason to be afraid of your employer and what they might do. And if you aren't scared of your employer, you're in a much healthier place all around. And while being That Good isn't enough in every field (especially in this economy), it definitely still is in programming: truly top-flight engineers, with deep and broad skills, are still in real demand...

Profile

jducoeur: (Default)
jducoeur

May 2025

S M T W T F S
    123
45678910
11121314 151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags