KimSia Sim πΈπ¬π»π
/kimsiasim
Welcome to my Social Blog
KimSia Sim πΈπ¬π»π
4y ago
When I wrote this thread abt remote work on the 12th Oct week then scheduled it for publishing on 19th Oct week, I did not anticipate reading about data contracts on the 17th Oct
https://twitter.com/KimStacks/status/1582540027254300672
@yalisassoon wrote about data contracts here
https://twitter.com/yalisassoon/status/1580879268124700672
And this is already something I have been kinda moving towards in my interactions with my customer-users over the past 2 years of remote working.
In terms of my actual interaction, I am currently using excel spreadsheets with 3 separate teams for 3 very different workflows. I also use the term "agreement" and "data dictionary" in these interactions.
Obviously, going forward, I'm using the term "data contracts"
Also, check out Chad Sanderson's newsletter on the same topic https://dataproducts.substack.com/p/the-rise-of-data-contracts
Follow both Chad's and Yali's Newsletter. I cannot wait for more from them about this topic.
KimSia Sim πΈπ¬π»π
4y ago
Rewrote about page for my newsletter, the Specific.
The highlighted is the new addition.
I will proactively drop subscribers who have not been reading for months.
Life's too short for an inbox full of unread emails.
I don't want to add to that pile.
You can check out the past 3 issues at http://simkimsia.substack.com/
Issue 4 will be out Saturday. Is my most reviewed issue so far with 12 people (12!) who read & provided feedback.
As I said earlier, if you stop opening long enough, I'll drop you eventually.
So, no risk :)
KimSia Sim πΈπ¬π»π
4y ago
Why good writing matters
Evidence #178965
π
I wrote this a while back https://typeshare.co/kimsiasim/posts/complexity-certainty-cycle-of-web-development-history-us6d
Even had this image done in yED
Crickets π¦
I just saw same idea but way, way better explanation by @annapickard
https://twitter.com/annapickard/status/1567263244792008705
using Wedges and Buckets as analogies
100x better!
KimSia Sim πΈπ¬π»π
4y ago
There's this pithy advice (e.g., example) about how to make money in only 3 ways:
help people make money
help people save money
help people save time
Let's analyze all 3 using market risk and execution risk.
Market risk is the risk that people may not want what youβre building.
If we rank the 3 ways in order of market risk, then "Help people make money" has the lowest market risk of the 3.
Execution risk is the risk that y
ou may not be able to pull off executing the product/service.
If we rank the 3 ways in order of execution risk, this time "Help people make money" is the hardest to pull off hence, has the highest execution risk of the 3.
If you can pull off the "Help people make money", good for you. I cannot. This thread is not for you.
This thread is more for people like me who are engineer-brain first.
Fellow engineer-brains, you need to split your full brain in two.
Engineer brain and Marketing brain.
People like us, the trick is to
1) focus on the stuff we can build, i.e. help people save time or help people save money,
2) and then have better positioning to lower your marketing risk
Here's a great example by @asmartbear where after repositioning a ad costs saving software to focus on value, resulted in 8x jump in selling price.
https://blog.asmartbear.com/more-value-not-save-money.html
The pithy way to understand this is:
β help people save money
β help people save money .. so they make more money
It's like there's two parts to the help people save money. Your engineer brain still focuses on the save money part.
That's what you build.
Your marketing brain focuses on "so they make more money" part
That's what you sell.
In summary,
"Help people MAKE $" easiest to sell hardest to build
"Help people SAVE $" easier to build harder to sell
Solve with 2 π§ brain
Engineer π§ build product to help people save $
Marketing π§ position same product to ultimately make more $ for people
KimSia Sim πΈπ¬π»π
My Ship 30 For 30 Aug '22 Collection
4y ago
I've written about 17 or so articles for this Ship 30 experiment so far.
Good quantity, but quality-wise, I hated most of it.
So, I did zero writing this past weekend and meditate on how to fix it.
While having coffee, it suddenly dawned on me I was telling too much and not showing enough in my writing.
So, the obvious solution is "Show, Don't Tell", right? Not quite.
That very same night, I came across excellent Nicky Case's Youtube on, "How To Explain Things Real Good" which gave me 5 better tips than "Show, Don't Tell".
Tip 1: Show What Made You Care
Nicky's point is that most explanations are, "Tell People Why They Might Care".
And that leads to abstract writing and requires second-guessing the audience.
Instead, she recommends to "Show People What Made You Care" which results in more concrete writing and not second-guessing audience.
As an example, she spoke of her not caring about group theory until one day she encountered a question about why mirrors always flip a left-and-right and not up-and-down.
Which is an excellent example of "Show".
Tip 2: Show Then Tell
Nicky wasn't done with "Show" related tricks.
Her second tip of altering "Show, Don't Tell" to "Show Then Tell" is what motivated me to write this.
Because the non-fiction writing I do like follows "Show Then Tell" more closely than "Show, Don't Tell".
Tip within the tip: Use PEA for the Show part -- Pictures, Examples, Analogy.
Tip 3: Therefore, But
I've heard about "therefore, but" before from a book called "Narrative is Everything" by Randy Olson.
Essentially, "But" is about problem which creates tension. "Therefore" is resolving that problem which in turn leads to a new "But". And on and on it goes.
Though I learned before, I didn't apply it much in my past 17 articles.
Nicky reminded me of this trick again, so I've resolved to apply this more in future.
See what I just did? π
Tip 4: Write a Draft Then Cut 10%
Count the number of words in first draft. Then cut 10%.
The first draft of this was 385 words. Now it's 447.
So, I've definitely failed at this. π
Tip 5: Test Early and Often
The final tip speaks to me as a software developer.
In writing, Test Early means as early as showing people just the outline.
Then, Often means iterating based on critical feedback on it and future drafts.
I'll start by asking fellow ship 30-ers to be my beta testers for outlines at least.
Go Watch the Full Talk
Don't settle for my summary. Go watch the original talk. It's really good.
Instead of being half-assed practicing all 5 tips, I will concentrate on 3, 1, and, 4 in that order for the rest of Ship 30.
What tip stands out for you the most? Tell me in the Twitter comments.
KimSia Sim πΈπ¬π»π
My Ship 30 For 30 Aug '22 Collection
4y ago
I graduated with a degree in Computer Science, but I've never really felt I knew how to write software until I got employed many years ago.
Even then, when I subsequently ventured out on my own and had to pick up new technology skills, I still went on to Google and type questions like
βWhat's the best framework for PHP?β
βWhat's the best VPS hosting?β
And so on.
Spending 30 mins on this is okay. But, spending days is NOT.
If you do this, you are guilty, like me, of making two classic rookie mistakes when self-learning new technology stuff.
Mistake #1: Not Considering Entire End-to-End Path
I'm going to assume there's an end-product to the self-learning software that you are going for.
By end-product, I don't mean, "become a {Technology X} developer". I mean a project or a product, even if it's just a toy.
When a beginner asks a question like "What's the best {X}?", {X} is often just one part of the entire end-to-end path to produce a project or product.
You're blindly assuming that path to be the right one.
This is fine when there's obviously only one path. But, with so much diversity and options these days, there are multiple paths to choose from. And each path has its pros and cons.
Recommendation: Write down your output project or product as a superordinate goal and write down possible paths as intermediate goals to achieve that using this hierarchy.
The {X} you were originally researching for may be used in more than one path.
This way, you're forced to evaluate possible paths and question whether the default path you assumed is right.
Mistake #2: Choosing Best Instead of Good Enough
When you're first starting to learn how to build a project or product, the most important thing your completed first attempt produces for you isn't anything extrinsic.
The most important thing is that intrinsic realization of "Hey, I can do this!"
Yes, it may be a bit ugly, or is just a one feature product. But it's done by you. It's at least a complete product or project.
Which is why obsessing about what's the best individual technological components of your path or tech stack is premature optimization.
Even obsessing for the best path or tech stack is the same form of mistake.
What's ideal for a beginner is usually not the same as for an expert. So, changing the entire path is to be expected. And you do want to graduate to becoming an expert eventually, right?
Good enough is good enough.
These Mistakes Are Not Fatal But You Will Waste Time If Repeat Too Often
Making mistakes is part of learning. So making these rookie mistakes is also part of your learning.
Don't worry too much about optimizing to avoid these mistakes at all costs.
This essay serves as a gentle reminder not to repeat these mistakes too often as they cost you valuable time.
Make them once or twice, and try not to repeat again.
KimSia Sim πΈπ¬π»π
My Ship 30 For 30 Aug '22 Collection
4y ago
In the previous essay, I listed how a software developer who values their autonomy can make money in 5 ways, but I explained how option 4 and 5 are not using code as primary leverage.
So, they are not in this series.
What this series will cover:
Service-based and subcontractor to software agency
Service-based and main contractor to non agency business
Software product-based like SaaS or downloadable software
If you want to read the details about option 1, revisit that essay.
This essay is going into detail about option 2.
Service-Based and Main Contractor to Non-Software Agency Business Customer
In the first option, recall that somebody must be hiring the agency to give work to them. That somebody is usually another business that's not an agency.
The difference in this option is that other business customer directly hires you instead.
The benefit is you get paid more. The downside is you need to take on more of the business analyst task of understanding the customer needs and translating them into requirements.
The reason is because you move from solving code problems for an agency to solving business problems for the customer. Some people might enjoy this more.
If you only want to write code and dislike talking to customers, you should NOT take this on.
If you're considering this option, here are some recommendations:
#1. Go For Businesses > 50 Employees In Developed Countries
Startup clients are those who want to turn their ideas into working software. Don't go for these as clients.
Why?
You will be competing against the agencies in the first option and they have the advantage of bigger scale and based in lower-cost countries.
Try to go for businesses with more than 50 employees and based in developed nations instead.
#2. Target Their Mission-Critical, Cross-Department, Long-Running Business Processes
Suppose you found yourself a potential client that is a business of 50 employees or more, what should you do to help them?
Go for digitizing their mission-critical, long-running, cross-departmental business processes.
Why?
You have to write code and talk to people. This means time is an even bigger bottleneck for you than in option 1 being a subcontractor to a software agency.
By going after this kind of work, the system you do build will also likely be:
mission-critical,
long-running,
and sufficiently complex
This increases your bargaining power to charge for recurring payments. And you need that to have stability else you find yourself hustling for customers all the time.
Unless you like that sort of thing.
You may find yourself at the beginning having to charge milestone-based payments when new customers don't have high trust in you yet.
But once your system comes online, you will find yourself inundated with improvement ideas from the customer. If you charge for every improvement idea they want you to implement, recurring payments is going to look very attractive to them.
If not, somebody must maintain that system as well, which is also a great segue into recurring payments.
Next Essay is Software Product-Based Business
In our third and last essay, we are going to cover product-based software business that a solopreneur can run.
Stay tuned for that.