July 15th, 2024

Lessons learned in 35 years of making software

Jim Grey, with 35 years in software, stresses simplicity, frequent releases, relationships, visibility, challenges, social understanding, iterative improvements, and balancing perfectionism in software development for professional growth and success.

Read original articleLink Icon
Lessons learned in 35 years of making software

In his 35 years in the software industry, Jim Grey shares valuable lessons learned. He emphasizes the importance of simplicity in building software to ease maintenance in the future. Grey advocates for frequent software releases to enhance company value and recommends building strong relationships to advance professionally and bring visions to life. Visibility at work is crucial for career progression, as well as maintaining a network outside the current company. He advises being open to challenges, pursuing interesting opportunities over titles or salaries, and stretching beyond natural tendencies. Grey highlights the significance of understanding different social classes' perspectives and the transient nature of software, suggesting focusing on small, iterative improvements. Lastly, he acknowledges the need for balancing perfectionism with practicality in software development.

Related

The software world is destroying itself (2018)

The software world is destroying itself (2018)

The software development industry faces sustainability challenges like application size growth and performance issues. Emphasizing efficient coding, it urges reevaluation of practices for quality improvement and environmental impact reduction.

Software Engineering Practices (2022)

Software Engineering Practices (2022)

Gergely Orosz sparked a Twitter discussion on software engineering practices. Simon Willison elaborated on key practices in a blog post, emphasizing documentation, test data creation, database migrations, templates, code formatting, environment setup automation, and preview environments. Willison highlights the productivity and quality benefits of investing in these practices and recommends tools like Docker, Gitpod, and Codespaces for implementation.

No Matter What They Tell You, It's a People Problem (2008)

No Matter What They Tell You, It's a People Problem (2008)

The article emphasizes the crucial role of people in software development, citing teamwork, communication, and problem-solving skills as key factors for project success. It highlights the importance of job satisfaction and team cohesion, underlining the significance of positive personal relationships within development teams.

A Bunch of Programming Advice I'd Give to Myself 15 Years Ago

A Bunch of Programming Advice I'd Give to Myself 15 Years Ago

Marcus offers programming advice emphasizing prompt issue resolution, balancing speed and quality, improving tool proficiency, deep bug investigations, leveraging version control, seeking feedback, and enhancing team collaboration for optimal problem-solving.

The saddest "Just Ship It" story ever (2020)

The saddest "Just Ship It" story ever (2020)

A developer shares a cautionary tale about the importance of releasing imperfect products promptly. Delaying a project led to missed opportunities, contrasting with a competitor's successful approach of shipping and updating continuously.

Link Icon 5 comments
By @punk-coder - 4 months
I’ve seen a lot of these lists lately, but this is the first one I can say I really agree with a lot of the points. I’ve been a professional developer close to 30 years, and have picked up a lot of these same lessons. I like lesson number 1, as I think sometime developers feel they need to come up with some clever way to stand out or show off and you learn over time that every line of code you write is a line of code that needs to be supported. Straight forward code may not show off your skills, but other team members and future developers will like it.
By @jamesfinlayson - 4 months
> The software we are building right now will one day be decommissioned and not be used anymore, probably before your career is over.

That one hits close to home, although I think around half of what I did at my previous job and half of what I did at the job before that is still running.

By @deterministic - 4 months
> Do things in the most straightforward way possible

Everybody agrees with this. Nobody actually does it. With very few exceptions (in my 30+ years of experience).

And the secret is that it is a 1000x productivity super power. If you learn this skill you will be far more productive.

For example: A developer I know recently implemented a real-time instant fail over hot backup/server system in 2 weeks. Because the architecture he had chosen for the system made it easy. Another developer (when asked) said that doing the same for the system he worked on would require a complete rewrite of the system. Because of different architectural choices.

In other words, it is most definitely true that some developers, by making better choices, can be 1000x more productive than other developers. They don’t type faster or have a higher IQ. They “simply” decide to not make things complex.

However it is not easy to make better architectural choices. You actually need to deeply study software architectures, and implement toy examples, to truly understand what “simple” means and the trade offs involved. Most software architecture articles are garbage.

By @meowtastic - 4 months
> being relentlessly helpful to others, even in things that aren’t strictly your responsibility, keeps you as someone everybody wants on the team

I often see this advice, but to me sounds like a speed run to burnout. I've seen tech leads leaving the industry because of this too.

By @tiffanyh - 4 months
> When you deliver work you’re really proud of, you’ve almost certainly done too much and taken too long.

This one is way more difficult in practice.

Because the difference between something you’re super proud of vs mediocre work, could just be 5%.

But that 5% might be the most challenging work to complete.