Or why you can't just give a student the fish No images? Click here Where to even startThe last newsletter wasn't that long ago so the updates since last time are quite few. I've been working on building a CMS as my secret project. That's very much on pause because I don't believe I've solved the issues I've wanted to solve with the design I attempted. It is still a need I see but the effort involved in making such a project really good is monumental. Even if done iteratively. In lighter things I have been playing around with Telegram bots, that's been fun. If you've been looking for a messaging app that doesn't suck too bad and has native desktop clients I'm really liking Telegram so far. When Elixir Mix (the podcast) had issues with people not reading the Discord channel we broke our panel conversations out into a Telegram group which seemed to help. Integrating with it via a bot has been quite fun so far. More on that later I'm sure. Complex systems all the way downAs part of running Underjord I do both mentorship and some teaching. Both with people I've worked with who've started out inexperienced and mentoring people of varying experience levels. I find it incredibly hard to transmit everything I think people need to get familiar with when they want to do development. Why? Well, I learned it all incrementally. HTML on Geocities, then some CSS, some JS. Oooh, PERL. Some XML. Local web server, exciting! Bam! PHP, MySQL, Linux. Years of Linux desktop use along with running my own server because young and no money. jQuery and AJAX. Onward to first paid work, paid hosting and CMS:es. WordPress, Joomla, Drupal, all of it. Tried to build web applications with those. That sucked. Better servers, Python, web frameworks, SPAs. Onwards to clouds. And on it goes to this day. It has been unending learning. And most of it has built on but also replaced most of what came before. I don't really like traditional CMS:es. I think they make empty promises and sneak up on you with hidden costs. But they are a pretty accessible place to start and learn. I don't like cheap hosting providers, but they are an accessible thing. The choices I make today are choices I can make because of the experiences I've had. I already know many of the tradeoffs. My choices might not make sense to a newbie. "WordPress is a huge and influential projects, surely they know what they are doing?" Yeah, but they can't change their design without breaking their golden goose of extensions. I bet they have some thoughts. When a student asks me "What is your thinking on MongoDB?" the answer is only simple if I lie. I know some people like it. I have heard enough to distrust it. The answer "Just use Postgres" isn't right, "It's probably fine" feels dishonest and if I add "but I'd never choose it for anything", that's hardly helpful. There is enormous context and choosing what to try to bring into a learning person's world is genuinely difficult. At the time I was learning the horizon wasn't visible. I had limited resources. Limited documentation. I had so many limitations. I pressed up against them constantly and eventually found the next thing that I could use to do cool stuff. If you try to teach someone to use an HTML form today you will need to decide if you are talking about the basic idea or reality. Do we need to cover CSRF, captchas and how to do it in React? How about the backend? Starting out I didn't hear about half of the things I didn't know, I think that made things easier. For example, in my thinking every developer working in open tools benefit from being comfortable in a terminal and on a remote Linuxish server. So that brings some POSIX and some Bash. But then you get SSH and public key crypto. And then you have basic networking, potentially firewall configuration, at the very least Nginx, a database or maybe a bunch of Docker and cloud native tools that abstract that away until you have to customize a config anyway. The domain of knowledge just sprawls out into countless dimensions. And people are supposed to get into this with a bootcamp. Or even with two years in school. I'm glad I started in my teens and don't have to feel like I'm playing catch-up any more than I am. If it feels overwhelming to you, regardless of experience level, that's because it is. It's fractal, look closer at any of it and there is more you could understand and benefit from, there are more concerns you could absorb into your fullstackness. This also rubs up against the thing where companies are only hiring "senior" developers and everyone starts out being a "junior" developer. I've even seen "making senior" become a thing on Twitter because it is now an arbitrarily codified level in the orgs career progression. And in some ways that might be good. The profession probably needs to mature. But I'll be very clear, my first senior and tech lead titles were clearly because I was the most experienced in the room, not because I was particularly experienced. But someone needed to wrangle the server, someone needed to stick their neck out. That was it. But where the hell are people supposed to learn? Is it always going to be the WordPress shops of the world that teach juniors. Because websites are lower stakes and in the CMS world poor technical choices go unnoticed? I keep trying to find better ways to bring people onboard, up to speed and hand them the tools they need. If I try to boil it down I get this: If you want to do this stuff and build your skills you have to know how to learn new things and you have to be able to sit with discomfort. The learning part is pretty commonly stated, the discomfort is not necessarily as common. You will never know the stack top to bottom to some specific granularity. You have uncertainty in every part of the profession. Your strongest guarantees build on top of systems on systems of unclear guarantees. All these things are learnable on their own but the entire system of a fullstack web developer is not. You are dealing with uncertainty and you need to be able to sit with the discomfort of that to get your work done. With what you know right now. I'd wager there's a case to be made that the discomfort is what makes us move forward and try to find new solutions that solve our particular discomfort. And at the very least you get to zoom deeper into that part of the fractal. Hand someone a fish and they'll never know that the ocean is vast. Teach them how to fish and they'll be forever lost at sea. Does this match your experience? Is it hopeful or distressing? Just reply or email lars@underjord.io, always curious to hear from you all. Thank you for your attention, I appreciate it. - Lars Wikman |