A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.
Thanks for the great articles. In fact I've discovered myself all that information during designing software for several years. I also noticed one important thing - almost noone can do the same. In my company there were several software engeneers and they could not learn how to design good software even after several conversationa covering what you wrote in your book about UI. All of them has been very resistant to this knowledge.
It seeme to be a general problem - while doing recruiting I prepared one test to check design skills. After testing several hundreds of candidates I've found maybe one or two who did the test on almost acceptable level - almost. There was no candidate which I could hire as a designer righ away. Probably those two could do this job after some training. Almost all of those candidates had masters degree in computer science and some of them could not even write two line procedure, but that's a different story (with one loop deleting items from a collection - one of candidates even managed to make it with an exponential complexity).
This fact leads me to two conclusions: first - I'll always be able to find a good job as I can design software :) and second - most of the software will always be designed poorly due to the lack of good designers. Even software build in big companies, especially where the management are those MBA guys, who don't fully understand what their company is doing.
I think that there is one main reson for the above. Almost all programmers don't think about design. For them - it's just something that can be done any way and the most important is the code. So they just take their first idea how to desing the product and it then goes to the public that way. And usually this first idea is really terrible.
Regarding the loop coding test, I suggest you need to find a new recruitment agent - whoever you're currently using is clearly sending you all the dross from the bottom of their reject pile.
Alternatively, you've not told said agent (or agents) your full requirements for the job!
People mostly have huge trouble in thinking simple. It's probably true to say that "they can't teach that in college". Especially as many geeks are attracted by the complexity of computing, finding one that likes to make stuff simple is like stumbling on an etruscan treasure trove.
revert my buffer
Friday, January 27, 2006
I agree in part that it is hard to find good designers. I have worked in many small software companies that require you to do most of the design yourself.
What I find is that most will do a sub-standard design in the first place, but with fast passing requirements always changing the design process is never re-visited; so what starts off as a poor design is even worse by the end of the project as things are thrown/hacked together.
The other challenge is to convince your manager (who doesn't have a software background) that: design is not a once over process; requirements should be documented and agreed; things take longer if you change your mind; etc etc.
Good design not only requires a good understanding of the problem and the end user; but flexibility in being able to adjust to changing requirements and knowing when to (and not to) adjust.
Friday, January 27, 2006
"Design" is a big word. Having been in this biz for 20+ years I've seens lots of bad and some good. It was fun to see all the C++ coders fresh out of college in the '90s, who had NO concept of what it took to manage large databases (but were hot in pursuit of the OOP holy grail), freak when code they tested on a 100 record Access table ran badly on a large SQL Server install. Their code was really good, but their overall concept and design of the entire system was bad.
You advertise for "the software developers". People often think that means "coding". But breaking down the entire problem, determining the best possible way to solve each piece given all the contraints, and tieing it all together into a strong, reliable, easy to maintain and modify, cohesive whole -- now that is not easy to do.
Developing a feel for good design is like developing a great jump shot -- it takes practice, and then, bliss!
This topic is archived. No further replies will be accepted.Other recent topics
Powered by FogBugz