I enjoy reading things like this. It’s posts like this that have helped me build my command line text processing skills over the years.
If you are early in your career, I suggest you work on these types of skills. It is surprising how often I have found myself on a random box that I needed to parse application logs “by hand”. This happens to me even in fancy, K8-rich environments.
This is very similar to "a11y"[0] and "i18n"[1]. The abbreviation of words using this technique has become surprisingly common in the software industry.
I'd say the vision impaired are going to understand what "ay-one-one-why" means about as fast as the rest of us. I'm not a fan of the cutesy letter-number jargon either, if you're typing about it in Slack, sure, okay, but it shouldn't escape confinement.
But it's equal-opportunity annoying I reckon: no one knows what the hell `a11y` is about when they first see/hear it, but not in a way that's more onerous for screen reader and braille users than for anyone else.
Sure, that's reasonable. Kind of circles back to "a11y" being technical language, which refers to a term of art, "accessibility", which is not identical to the word "accessibility" itself. This is at least part of why it gets used, although the main reason is really that a11y is easy to write and fast to read, while accessibility is neither.
Some code challenge sites offer all their challenges in bash - I highly recommend working through these if you want to get better at this type of stuff. Some problems are surprisingly simple, others torturously difficult.
Been a couple of years since I did any competitive problems for shell and cannot recall - however this hackerrank page is how I do interview prep for anything shell related -
> If you are early in your career, I suggest you work on these types of skills. It is surprising how often I have found myself on a random box that I needed to parse application logs “by hand”. This happens to me even in fancy, K8-rich environments.
It’s surprising how many times you have to ad hoc parse due to the tools being so poor. It’s endemic.
Regex can help you with fairly complicated source code edits too, like changing the order of parameters in some multi language project where there's no automated tool that can just do it.
It is going to be close between my gmail (I was invited during the beta in 2004) and my bank which would have been 2002/2003 timeframe but I can’t remember for sure.
I can remember earlier accounts like deadjournal, Hotmail, something awful, but I don’t use those anymore.
I'd forgotten about gmail being in beta like that — hardly surprising, of course! My welcome email confirmed it; it begins "First off, welcome. And thanks for agreeing to help us test Gmail." Dated June 2004.
Think Python 2e changed the trajectory of my life. I took a single Java class and hated it so much I gave up on programming. A few years later as a network engineer I had a problem that seemed like it could be scripted and ended up picking up Think Python and fell in love with the language and programming in general.
I am considering changing the trajectory of my own life, towards a more community/maker/teacher role, and I have a freelance/small business idea about teaching but I need sort of "soft syllabus" materials.
I am learning Python myself, having just never had a need for it in all of my professional web development life (I've written apps in just about every other web-focussed programming language, including Perl and Ruby).
It looks like the right language to teach general concepts in, and having a book I can draw from will help.
But I am, well, mid-life at best, and the only crisis I am experiencing is that I think much of what I have done for years is worth less than I would have hoped.
I think it is ironic that technology seems to serve people less and less (and advertisers more and more) at just exactly the same time as every possible piece of technology is falling in price and increasing in availability.
Want to make a small device with a colour LCD display, buttons, an entirely custom enclosure, a rechargeable battery and a custom PCB? The cost of doing that has never been lower. Even if you only want one.
Want to give some tool a comfortable handgrip for accessibility reasons that needs to be parametrically adjustable? The software tools are free and the prototyping tools are incredibly cheap.
Want to find the answer to a question about your local area that would have required months of library time? The software is free and shockingly complete data sets are available from governments.
So why do so many people, even adults my age and younger, feel that technology is out of their control?
I have always felt as a freelance developer that the work I am paid for is just the seed in the middle of a larger fruit, where I listen and discuss and explain and educate.
I feel I should be turning it inside out. Making the listening, discussion, education the product, and the development work ancilliary to it (because it almost always is).
What I find interesting about Python, specifically, is how many applications it is suitable for, considering its ease of access -- CAD packages, 3D printing, PCB design, GIS, microcontrollers, statistics. Children's and adult education etc.
So while I have a little time I am spending it re-orienting myself into Python as a programmer "way-of-life", and away from the tools I have been using so far (which has never, really, meant Python).
And as I do so I am getting a sense of how it might fit into me turning my freelance work inside out to become a teacher/trainer/educator/facilitator, largely for adults, to help them have better concepts of technology (even for just the humdrum business of getting suppliers to quote for bespoke projects).
A vague sketch, sorry -- but I think this might answer your question.
Just as an counterexample, I started with bash/Perl, moved to Python and really liked it and then started getting issues due to dynamic typing. Around that time, Java was chosen to be the main language for our team and once I saw the benefits of static typing, there was no looking back. Since then Python has come a long way with optional typing support and IDEs to help enforce it but by now I am forever biased in favor of statically typed languages. I still enjoy Python for writing utility scripts because it is so much more polished compared to just using bash (which has its own place obviously) - but if I have the option of choosing a language for a full fledged application, I would prefer Java/Scala etc (Rust is great but the learning curve is way too steep for most mortals).
I do admit that I haven't had the first-hand experience of optional typing in Python supported by something like PyCharm so it is possible that the tooling has brought the experience to be comparable to working with a statically typed language. If someone has used IntelliJ community edition with Python typing-enforcement turned-on, please share your experience.
It's a lot easier to appreciate Java when it isn't your first language. I think it's really important for new programmers to have a streamlined experience to their first magical moment with programming, when they understand they can do cool stuff and succeed by being persistent. ("Streamlined" may be overstating it, there will be lots of friction along the way, but it should be caused by bugs they introduced themselves and overcome by debugging, not by tangential or environmental factors.)
There's a lot of context and drudgery involved in programming that can dissuade people before they get to that magical moment, and they can blame themselves and think they weren't smart enough because they don't understand that the deck was stacked against them. For instance with Python, broken virtual environments can be really dissuading for new programmers.
I think Java's opinionated and verbose nature can be cumbersome to beginners, who have never debugged a type confusion issue and so don't give a hoot about static typing. But I think after programming in Python for a while, they'll see why eg declaring what exceptions you'll raise is tremendously helpful.
Similar for me - I had learned some Java, Matlab, C, Perl here and there but it wasn’t until Think Python 2e that I was gripped and from there read many other books and changed my career to software.
Maybe, but I think the book really was different from any book I had read before. Most books teach the language, but Think Python showed me some of the why, what each data structure might be used for, it would quickly dip into some interesting implementation details to give me a more solid foundation and then zoom out and give me perspective on why something is useful and related software writing skills and tips. It was thorough, but also concise, and the exercises were engaging, so I found myself for the first time really getting sucked into the zone with the problems and time was flying by. This hadn’t happened to me with Java or Perl.
In the abstract, yes. But I also know that Think Python is a great book.
(I came across Think Python when I was trying to help other people learn how to program. So I did not learn programming from Think Python, and Python is also not my favourite language. (It's also not my least favourite language, either. Far from it.))
Same here. I moved cities and was looking for a job... I printed a copy of this book and started going through the chapters... This book made me into a software engineer :)
I had a brief, but passionate fountain pen phase and it was great. I mainly used Pilot metropolitan, and found the world of inks to be fun to learn about. Then I had a pen leak a bunch of red ink on me on a plane somehow and fell out of love. I have since moved on to fineliners for my handwriting needs, but have considered going back and getting a fountain pen.
My personal example of this is the security company “Thycotic”. They could be greatest InfoSec company in the world, but I really hate their name. It looks like the word psychotic said with a lisp.
At my previous company I had an amazing team that was very intrinsically motivated, they needed me to generally protect them from politics, participate in planning, and stay out of the way. They delivered wonderful results and saved our employer a lot of money. I would have considered myself “an engineer focused leader”.
New spot has challenged my identity a lot. I was expecting to come in and essentially do the same and it turned out the culture and people are almost completely different. My team needs a lot of performance management and cajoling to stay focused and deliver. For the first year I tried to be understanding, lead gently, and avoid awkward conversations, but I suspect my team was savvy to this and has weaponize my empathy a bit. I am now stuck in an awkward situation where I need essentially change who I am to the team and I don’t totally know how to do that gracefully.
This is 100% a problem of my own making. I am still figuring out how far I want to personally adopt a more “company focused vs person focused” mindset.
I've worked as an IC on both highly productive teams, and completely stagnant teams. All of the productive teams were lightly managed, while the stagnant teams were very heavily managed. Some developers are just not ever going to be productive no matter what you do. However, many will respond well if they sense a positive trajectory - less stress, enough autonomy to tackle some tech debt or play with idea they have. Daily standups, sprint deadlines, etc... are counter productive IMO. They offer a sense of control to management, while simultaneously making your team less productive in the long run.
Thank you for the response. I really want to avoid formal stuff like sprints and stand ups if at all possible. As a former engineer, I agree that it burdens ICs needlessly and would take up a lot of my time to manage. I am struggling with finding the balance of accountability and autonomy and how to meaningfully track that.
My current team is a hulk assembled from a few previously broken teams. Essentially no one is doing the work they were hired for and there is fairly intense resistance from other areas of the business when we try to make change.
Lesson here is to be diligent about finding out why the team you will managing exists and a bit of how it came to be during the interview process.
Thanks for the response, it gave me a grim chuckle.
Never used mint, but if you are looking for something to help you budget and categorize your transactions, I love YNAB. I have been a user for just about 3 years and it has significantly improved my relationship with money.
Given the massive impact that AI has had on the cultural conversation, I wonder how far away we are from a similar conversation about robots.