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 articleIn 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 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)
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)
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
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)
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.
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.
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.
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.
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.
Related
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)
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)
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
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)
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.