Yes, yes. We're engineers and whatnot. But sometimes, we make choices based on gut feelings or hard to summarize experiences, or even just strong personal preferences that we can't shake.
What's something you believe to be true about software development despite the lack of any real objective evidence?
I believe agile methodologies are a major cause of developer burnout. This "always on" mindset takes it's toll after a while, the constant pressure to implement, bugfix and deploy, resolve production issues and start all over again ad infinitum. While there is no doubt agile is better for the customer, sometimes I yearn for the waterfall model where you have long uninterrupted periods of development where the pressure is off.
I feel the same way about Agile-as-practiced in most places. It has its use case, but making it the standard and sole process of development can turn things into an endless grind.
For the discovery and design process, I appreciate things like Basecamp's Shape Up method:
basecamp.com/shapeup
We use Shape Up philosophy at DEV and it's been really solid.
I sort of think the notion of software development as this highly intellectual field is kind of flimsy.
It's an odd conversation and I think it's hard to, as you put it, find objective evidence, but I just think the organization of labor where we pay often pay so much more than other fairly skilled professionals is not necessarily an idea that will be around for the long haul.
Will software ever become "blue collar" work?
Ben Halpern ・ Jul 15 '19 ・ 1 min read
"software development" is too general, there is a lot of different fields that require different skills in Software Development, some which may one day be blue collar but some may not be. CS derives from mathematics which is considered a highly intellectual field. Generalizing all development work into "software development" can be the equivalent of generalizing "construction". You can be an electrical engineer, an architect or maybe someone who just paints walls and be in "construction". I do think that some lower level work will one day be more "blue collar" work but i don't think the entire field itself will be, things will get easier as we continue to develop the field and create more layers of abstraction but i think it wont lose its status as an intellectual field just like mathematics has never lost it.
I think the reason that the pay gap is so large compared to other industries is that programming itself is such a low-level skill - similar to reading, writing, or math - and it has a very poor distribution within society.
In centuries past, those who could read or perform basic math were given great rewards for low-level skills; one of the most privileged of them all were the Scribes of Ancient Rome, Scribes became a member of the royal court and were exempt from both taxation and physical labor; this was the case despite that just a couple of hundred miles away Socrates demonstrated that even an uneducated slave child could teach themself math without much effort or help. How did society's relationship with reading, writing, and math recently change? Universal public education, this practice made sure that all young children could learn literature and math and this education made these skills more defuse in our society; this turned the Scribes of ancient history into modern-day librarians. Universal public education didn't make everyone literary or math geniuses, but it did make some and it also collectively raised all of our standards of living.
So, why is the market for programming jobs in its current state despite the fact that it is simple for a child to teach themself these skills?
It is because very few choose the path of programming of their own volition; the only people that do pursue programming it usually happened to be that they were exposed to it through their personal life outside of their education. The solution to bridging this gap is to include programming in our children's education which will make the skill of programming more defuse in society. This will not make everyone extreme programmers, but it will make some and it also will collectively raise all of our standards of living.
P.S.
Programmers think they are smart and their field is high educational because they are well rewarded and praised by others; this was also the case for the Scribes, but, in retrospect, all that they could do was read well.
The answer to your question will come in the form of the beliefs of our future generations; personally, I think that most of them will regard us just like we regard Scribes. The worst of us they might compare to the worst of the Scribes who hoarded their wealth and power for greed instead of trying to educate the public and move society forward with their generosity.
The book Thinking, Fast and Slow permanently broke certain assumptions I had about technical expertise.
And along those lines, I do think and even hope that large portions of software development do become blue collar work. As to whether it becomes so in a way that is worker-friendly or not, it remains to be seen.
For me, one thing I believe but have no direct evidence for is that focusing too much on automated testing up front in the early stages of the product design and delivery lifecycle can have a net negative impact on both software quality and speed of delivery, because it takes you out of problem space exploration mode and into under-the-hood solution-refining mode.
Another belief I have is that developers who focus too much on language and framework-level best practices and patterns are often less skilled at (or at least less interested in) in focusing on what the actual lived experience of their customers are. And while in theory these two things should support one another, they often end up in tension.
What is "too much"?
For automated testing, it really depends. I think it starts around zero and then ramps up over time, usually whenever you hit a situation where you actually feel the pain of not having enough tests, it's a sign that adding more would be good.
As for focusing on best practices and patterns, any more than 5% of your energy is a waste of effort. Have a reasonable set of defaults, tweak it over time, and only worry when it hurts.
(These are again, things that are just based on my own experience/feelings. Keeping w. the theme of the post)
That this time, this next sprint will be different...
Every retro seems like it might be the one that really sparks change and the next sprint is going to be straight and to the point. Never happens.
Something to try... Rather than looking for the big, transformative fix, look for something so ridiculously small, simple, and obvious that it would be shocking if you couldn't make the change.
If you can find one small positive change like that each sprint, it can gradually loosen things up so that larger changes can happen later.
(But if even that doesn't bear fruit, then it's a sign to start looking elsewhere for healthier environments)
Its true that devloping a full blown web app is easy.
But you must already know all the parts
Frontend,
Backend,
Databases,
Conversions,
Probably 2 or more languages
Security,
Two or three frameworks,
HTTP layer programming (get, posts, delete, updates),
GIT,
Devops pipelines,
A build server,
A dev server,
The prod server.
The web server,
The db server,
Network infrastructure,
Register Domain Name,
Learn about DNS and DHCP
Router config to ISP
Oh wait, you also want what?
FTP ability?
TCP/IP 6 support?
TLS 1.2 implementation?
Signed and Obfuscated code?
XML to Rest conversion?
HTTP2 implementation?
You want WebSockets?
AWS instead of Azure, or perhaps Google?
You want Mongo instead of SQL?
Google, FaceBook, Azure and AWS autentication?
A web page that does everything Excel does?
You want the website to do the same thing as QuickBooks?
Sounds like a cloud solution..so...
Pick right cloud provider,
Learn their ways to do all the items above (6 months minimum).
But wait
We have some other more important items to do first.
I have a tin-foil open-software belief. I believe that Microsoft should stop buying gigantic open-source projects, but it keeps doing that. Why does everything good have to join Microsoft... First it was Github, now NPM. What's next? Does Microsoft hurt OSS? Doesn't seem like it. It has most of its developer-oriented software open-sourced anyways. But do I like that major OSS projects are joining Microsoft? No.
"I can't"
This belief still haunts me
As a developer I have been part of teams where I used to go to office excited, working on new features, fixing bugs, not worrying about testing, deployment, servers, prod support, GUI issues etc
There were separate teams to handle this stuff.
With the full stack and agile, developers are expected to handle testing, setup CI/CD, releases, support, tooling and now cloud strategy..
It took away the pleasure of being a developer.. Most of my time goes into doing unenjoyable stuff. Not to mention that now documentation is also developers responsibility..
All things come together for good for those that love the code.