google, banking, surgical robots, etc. look at companies that kill if they fuck up. dont count on random crup web app shop to give a crap about clean code.
Banking software more often than not is the epitome of software held together by duct tape. It's a jumble of obsolete systems communicating via convoluted and opaque protocols. Think COBOL, mainframes, huge, cumbersome application servers and database systems. It's just that banks have enough money to throw at problems that arise with these systems.
Do companies exist where software isn't done with chewing gum and duct tape?
11–20 of 34 posts
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#12Re: Do companies exist where software isn't done with chewing gum and duct tape?
#13- danluu.com (user luu) on testing in the hardware world (e.g. https://danluu.com/tests-v-reason/) and at Google
- in general, mature high-quality engineering organizations like Google and modern Microsoft
- e.g. Praxis (Google "Tokeneer report") and Galois practice semi-formal and formal methods to produce useful software
- e.g. TrustInSoft and seL4 go to full formal verification
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#14The bigger the company, the larger chances to see code that is far from perfection are. Business process and large amount of teams make it harder to acquire all information needed to engineer things.
Also, most of the time it is about satisfying a customers needs. That is not about doing it right, it is about making it work.
Companies building solid code exist. They are rare and usually not the ones making billions in the market.
I find it pretty amusing that people assume Google, Microsoft, etc. would actually be rock solid as those have a sufficient amount of damaged legacy code that for thousands of reasons needs to stay broken.
Parting words: ditch perfectionism, embrace the 80/20 percent pattern instead.
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#15The problem is worst in certain sectors. For example I've worked in banks where quick fixes are slapped on top of other quick fixes, often written by other people which creates on monumental pile of spaghetti, not mention they're still using legacy mainframes from 40 years ago. But you have to remember that the customer only cares about money generation, they couldn't give two hoots about the elegancy of your code. But if it works it works.
On the flip-side have worked for startups and I am the CTO of a startup and I can safely say we prioritise speed of features over maintainability and elegancy. We do what we can now but you have to remember that products and its requirements are ever changing and can never be 'perfect'.
Reid Hoffman, the founder of LinkedIn famously said:
'If you are not embarrassed by the first version of your product, you’ve launched too late.'
There is no such thing as perfect code or perfect process, there are spectrums in between. At the end of the day you have to maintain focus on what the customer/users want to see. That's not to say you should roll over for all customer demands, but you should always keep that in the back of your mind.
The other thing is that what you may regard as good code may not be what it others see as good code, it's subjective.
My advice would be if you want to create what you regard to be perfect code then you should work for yourself, whether that's creating your own open source Github repos or trying to start your own company. Otherwise embrace the imperfections of IT and indeed the world we live in see it as challenge to make perfect (too deep? I'll see myself out ...)
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#16Maybe join an open source/non-profit software company (like Mozilla). I don't know that those places have better code, but probably less pressure to ship product to satisfy customers.
1) Many users won't report bugs because that takes effort and they just want to solve their problem
2) Users won't report when the UX is bad.
3) Not being able to change a product to add clear business value...prevents you from adding value. This is bad because it makes it harder for your product to help the business grow and solve more problems.
4) Not being able to change the code to be cleaner and more well designed makes it hard to add more maintainers and to add or remove features.
I don't know how to explain why you should want to be able to change your product. I've only moved on to an org which had a much different approach to technical debt.
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#17What people might be missing is that you don't do anything "lean" without refactoring sprints. So as you grow, you keep considering the macro structure. If not, you should use TDD at least. Nevertheless, validation is key, from an executive POV. It makes sense that things are dirty in the beginning, but they should start being encapsulated, object oriented, properly interfaced, etc. as soon as you feel in need for a…
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#18google, banking, surgical robots, etc. look at companies that kill if they fuck up. dont count on random crup web app shop to give a crap about clean code.
CRUD != crud
I don't know if you are making this error, but I it all the time on /r/cscareersquestions and it is a foolish conflation.
crud: crappily-built product
CRUD: a set of UI operations on records in your data model.
You can totally have a well-built CRUD app maintained by a team that cares about code quality.
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#19Look in the aerospace industry, things may be better there.
That's also exactly what I don't want. It's more paperwork than code in such places all full of rigorous validation.
Re: Do companies exist where software isn't done with chewing gum and duct tape?
#20* A belief that code quality lets us deliver faster in the medium-term
* We start projects by asking "why does this need to be done?" and pushing for a fleshed-out explanation of that. This lets us write less code and do sometimes do projects without writing code. It also reenforces that we are building sonething that we will then need to mainain.
EDIT: * We also follow that up with writing out a 1-2 page document explicitly outlinibg the scope of the project, the approaches we considered but are not taking, and the approach we are taking. This helps us keep a 1 week project from taking 3 weeks.
* Our hiring process includes a take-home coding test and a pair-programming exercise. We explicitly grade these on code quality and testing, so we filter for hires that value these things.
Feel free to email me at amfarrell@gocardless.com if have questions.