I went from Law to Software Development after 30. I was a lawyer for roughly 10 years before the change and even was a partner in a small law firm.
For me the key was just to see this huge change as a series of small steps instead of a big "flip the switch and change" move.
Before I changed, I took courses in programming to see if I'd like it, I build projects in my own time to see if I would actually pursue it.
Even once I decided to change careers, I still kept my old things ready in case I needed a fallback plan (this happened over 10 years ago but I still pay my Bar fees every year).
For me, doing it slowly, with a plan, and a backup, removed a lot of the pressure and risk of the change and it worked fine.
I haven't done anything in Law in over 10 years now and am fully "converted" to development.
My advice for you: buy some Cybersecurity courses on Udemy. They might not be perfect, but they are usually cheap (always wait for sales) and see if you will like it. You can take dozens of courses for 9-12 USD there to see if that is the path before committing to something more serious and expensive.
This is just to see if this is really the area you want. The day to day of most careers tend to be heavily romanticized from the outside.
Once you've done that, try to see if you can find some education with a Co-Op component. I found it is much easier to get your foot on the door of a new career as a Co-Op in a course, though that is not required.
I'm in my mid thirties and have often considering moving from software to law. My software path tops out at around $200-250k so the upside on law seems better if you look at the big opportunity cost and lower wage periods with some rose colored glasses ;)
Unlike the normal distribution in your link, earnings in the legal profession follow a bimodal distribution. The mean/median earnings of everyone from public defenders and law firm associates isn't typically representative of actual incomes.
No one “plans” on being average just like I’m sure a lot of software engineers “plan” on graduating from college working for BigTech and adjacent and making $160K+ straight out of college and not working for “Billy Bob’s Fish Tackle and Wordpress shop” making $50K.
Not really saying it is intentional by Google, but I'm a Firefox user and noticed this started happening again recently. YouTube for me is super slow, buggy, not registering clicks, locking the UI.
It did happen in the past and was fixed after around 1 month (which was good because it decreased my time spent on YouTube).
Right now YouTube is almost unusable for me on Firefox with uBlock Origin on M1 Max and has been for the last couple of days for whatever reason. Even disabling uBlock Origin doesn't help.
Just followed the instructions on that post to install the extension that spoofs the user-agent and, believe or not, all the issues are gone... YouTube works completely fine now on Firefox if the user-agent is Windows + Chrome.
As an ex-lawyer for over 10 years, this was a huge issue for me, specially when the other party is adversarial (e.g. another lawyer for the other part that is not exactly forthcoming with the changes).
Back in the day, to solve that (before I became a software developer and knew about git), I basically re-implemented "git in Microsoft Word version control".
On bigger contracts with dozens and even hundreds of pages, with more than 2 parties involved, we could have 3-4 parallel changes to the same documents at once. And a lot of times some of the parties didn't want to advertise their changes.
What I did was construct a table in Excel with each "version" of each clause, and where they were present omitted. It was a lot of work to maintain, but back then I didn't know any better, but worked.
By saving the versions of the files we sent for revision (think of the main branch), I could receive the version from other parties (kind of like feature branches), turn on Word changes, paste the complete content of the original, and we could visualize the difference.
It's been more than 10 years since I stopped dealing with contracts, but I imagine a lot of lawyers, specially older folks, are still either doing very convoluted processes to track changes like me or not even bothering most of the times.
The article is spot on on the issues (even brought back some memories). This is something I'd use for sure in my previous life.
> By saving the versions of the files we sent for revision (think of the main branch), I could receive the version from other parties (kind of like feature branches), turn on Word changes, paste the complete content of the original, and we could visualize the difference.
IANAL, but this was a key step for me as well. If you maintain copies of the versions sent out (and modified copies sent back), you can always get a clean diff of the copy sent out versus the copy sent back, or of an earlier version versus a subsequent revision.
The compare/combine tools in Word aren't great, but they are functional. Kind of like a local maximum, I suppose.
Exactly. The part where I used Excel was because Word didn't really scale for more than 2-3 sets of changes like that.
So my "copying current version changes" to Excel was kind of like git merging to the main branch.
People from outside the craft usually get super confused and frustrated by how many hours those contracts could take ("it is just a Word document!"), but that used to be a huge reason why.
Usually I create a Project in the UI, upload some files I think might be relevant, and just start asking things like refactoring, how can it improve the code, how to test (or which edge cases might be missing in the test files).
Once we get going, I start asking how can we change the code to do what I need to do, etc.
After the history gets too long and Claude starts bugging me about limits, I ask it to summarize the context of the whole conversation, and add that to the Project and start a new chat.
I test a lot of them, online and with Ollama, and Sonnet 3.5 is in a league of its own for practical coding purposes.
Still makes a lot of mistakes, but it gets things "more right" than any of the others in a much more consistent basis.
I've now cancelled my ChatGPT subscription to Claude and also mostly stopped using the APIs (I use Msty to compare most models, you can give the same prompt to multiple models at once and compare the results).
I created a personalized finance app based on a Google Sheet that I used to track my registered account contributions and performance.
Basically I enter the transactions and it shows a dashboard of my contribution rooms, how much is left, how much I have already contributed, etc.
Nothing fancy, but it just just a Remix frontend with MantineUI backed by an SQLite db inside Dropbox. Took me about 6 hours, and I only made it after I botched some changes I made into the Google Sheet that broke a bunch of formulas.
I thought about making it into a public app, but it is so tuned to what I want that it is probably not really that valuable to others.
I use it every time I save. Used to be weekly but lately monthly.
It is actually amazing how fast and thorough the connection attempts happen as soon as you put anything online.
I've been playing around Hetzner and Coolify recently, and notice that, as soon as port 22 is opened, it is bombarded by those attempts. Several per second. It might be due to Hetzner IPs being reused, but happened to me every single time. Same with Postgres default port (those were the ones I've seen).
I have defaulted to use Terraform and bash to only open those ports in the Hetzner firewall (and more common ones like 3000 or 8000) to my own current ip. It does mean I'll get drift and need to reapply the Terraform code if I change ips, but seems to be at least one way to defend.
I fear that a lot of devs jumping into the "you only need a VPS" crowd on Twitter will end up with a huge attack surface on their apps and machines and most won't even know they are being targeted like that most of the time.
To this day I still find it hard to find a comprehensive security guide for those newer Linux fresh boxes (and the ones you find are all so very different with different suggestions). If anyone knows of a good one, please share with me!
You just need to turn off password authentication so it's keys only. They can attempt logins all they want and never get in.
Also if you run ssh on a nonstandard port you get many fewer attempts. There are several groups that constantly scan all of ipv4 for open ports, if you use ipv6 they cannot scan that space anymore.
Optionally you can set up fail2ban but I find it's not a big deal.
I changed my SSH configuration to only listen on an IPv6 address 6 months ago and since then the number of SSH attacks has fallen from 1000+/day to less than 10/week.
This looks like more of an "ad" (or a very directed study by a competing methodology), but excess pragmatism can ruin even the most sensible ideas.
Agile, testing, design patterns, best practices can all tank and bury a project if applied excessively "by the books" without consideration of the actual problem to solve.
I've worked in teams that had about 10 people actual doing dev work that implemented the full suite of Agile "principles" as rules. Daily standups, grooming, retros, pointing as "poker", 1:1s every week. The result was that we had barely time to actual work since the week had 10-20 hours of meetings. Most retros and standups were literally just us saying "same as yesterday, only had a few minutes to work on this" the whole week.
Testing is the same. If applied without consideration for the actual problems, reaching that 90%+ code coverage is easy if nobody cares about how hard and time consuming it will be to change code later. Specially when a feature is in very early development.
I think all those things are good, but what I see sometimes is that they are applied as absolute rules that cannot be deviated from, which inevitably leads to poor results.
I'm now working in a "light Agile" environment with just 2-3 meetings a week, barely 1 hour total, and much less strict PR/testing requirements (we focus on testing the important functionality, not line coverage count) and it is so much better. Some of the same co-workers that were under the more strict rules are now twice or more more productive then before.
For me, a very simple "breakdown tasks into a queue and store in a DB" solution has help tremendously with most requests.
Instead of trying to do everything into a single chat or chain, add steps to ask the LLM to break down the next tasks, with context, and store that into SQLite or something. Then start new chats/chains on each of those tasks.
Then just loop them back into LLM.
I find that long chats or chains just confuse most models and we start seeing gibberish.
Right now I'm favoring something like:
"We're going to do task {task}. The current situation and context is {context}.
Break down what individual steps we need to perform to achieve {goal} and output these steps with their necessary context as {standard_task_json}. If the output is already enough to satisfy {goal}, just output the result as text."
I find that leaving everything to LLM in a sequence is not as effective as using LLM to break things down and having a DB and code logic to support the development of more complex outcomes.
Sad to see. When I started my journey into programming, PluralSight was one of the main resources I used, together with Lynda.com and Team Treehouse.
All 3, sadly, have seen the quality nosedive in recent years.
Today I mostly rely on Udemy. I know it has a bad rep and tons of garbage, but there are a handful of instructor that deliver really high quality content there. For example, see Fred Baptiste Python courses.
Even with AI taking charge, I still believe there is a place for a high quality, guided course like PluralSight used to offer back in the day.
For me the key was just to see this huge change as a series of small steps instead of a big "flip the switch and change" move.
Before I changed, I took courses in programming to see if I'd like it, I build projects in my own time to see if I would actually pursue it.
Even once I decided to change careers, I still kept my old things ready in case I needed a fallback plan (this happened over 10 years ago but I still pay my Bar fees every year).
For me, doing it slowly, with a plan, and a backup, removed a lot of the pressure and risk of the change and it worked fine.
I haven't done anything in Law in over 10 years now and am fully "converted" to development.
My advice for you: buy some Cybersecurity courses on Udemy. They might not be perfect, but they are usually cheap (always wait for sales) and see if you will like it. You can take dozens of courses for 9-12 USD there to see if that is the path before committing to something more serious and expensive.
This is just to see if this is really the area you want. The day to day of most careers tend to be heavily romanticized from the outside.
Once you've done that, try to see if you can find some education with a Co-Op component. I found it is much easier to get your foot on the door of a new career as a Co-Op in a course, though that is not required.
reply