D'Arcy from Winnipeg
Solution Architecture, Business & Entrepreneurship, Microsoft, and Adoption

Software Development is Hard, Get Over It!

Tuesday, August 3, 2010 12:18 AM

So I'm on this private email group and a discussion starts by someone pointing out this blog post which talks about the Microsoft.Data.dll and the Microsoft.Data namespace. From the blog post:

It’s an awesome new assembly/namespace that contains everything you’ll ever need to access a database. In ASP.NET WebPages we wanted people to be able to access the database without having to write too many lines of code.

...

The user doesn’t have to learn about connection strings or how to create a command with a connection and then use a reader to get the results.

Check out the full blog post for all the details, but remember the context of this is around the Webmatrix product release. Still, it created a shitstorm of discussion on the private email group I mentioned earlier on whether this type of functionality should be available as many would see this as not a good practice for accessing a datastore.

Some people commented that we try to make software development too hard or too complicated and that this may scare of people from entering the field; that we also dictate best practices and shun those that don't follow them; and that if you don't use language-x then you aren't a *real* programmer.

But software development is difficult, sophisticated, uses complicated IDE's, and if you aren't creating software according to professional standards then no, you shouldn't be doing it.

We're building complex systems that have to take into account business process, security, scalability, availability, and maintainability. We need to consider laws (local, territory, and country), understand client business policies, and create the most ideal user experience. We need to provide metrics such as code coverage of unit tests to prove and meet client expectations of quality.

I could go on, but the point is that I think what some may see as haughty or snobby devs ranting and raving are really people that realize we need to mature and who get frustrated when mixed messages get sent to new developers as to what's *really* involved in software development. Software development is hard, just like electrical engineering is hard, just like being a bio-chemist is hard. When we try to show how "easy" it is in our industry, that's when we do a disservice by pretending to be something we aren't to prospective students and job seekers.

I think that releasing tools for the student and hobby levels of developers are great, but what I'd love to see is a roadmap that these people could be provided to help guide them. Start on Webmatrix and play with the tools provided, but know what they should look at next to continue their progression. I also question if students and hobbyists should be grouped together: one will eventually move on in learning, while the other one might be happy to just play on weekends or in free time. One is not equal to the other.

Anyway, intersted to hear thoughts. I'm always reminded of what a former boss said to me: If what we did was easy, then companies would just hire high school kids to do it.

D




Feedback

# re: Software Development is Hard, Get Over It!

Isn't there a saying that goes something like "guns don't kill people, people kill people"?

You can use this crazy new code and shoot yourself in the foot. You can do the same thing with something like NHibernate. It's a tool to get the job done. You have to know when to use it and when not to use it.

There has to be tools and technologies out there that bio-chemists can misuse, I just don't know of any because I'm not in that field. 8/3/2010 9:11 AM | Chris Missal

# re: Software Development is Hard, Get Over It!

Software development/engineering is hard, certainly. But programming doesn't need to be. We're fooling ourselves if we think all valuable programming is (or even should be) done by professional developers.

This is what the post announcing Microsoft.Data should have looked like:
http://blog.andrewnurse.net/2010/08/03/MicrosoftDataItrsquosNotAsEvilAsYouThink.aspx

Cheers ~
Keith 8/3/2010 9:13 AM | Keith Dahlby

# re: Software Development is Hard, Get Over It!

Programming *with good practices* does not have to be hard. Programming *with bad practices* actually makes things worse, not better, for beginners.

If you start with decent practices, it does not have to be that hard. What we need less of are organizations like Microsoft continuing to demonstrate such an "I don't care" attitude about bad development practices. 8/3/2010 9:36 AM | Aaron Erickson

# re: Software Development is Hard, Get Over It!

@Aaron there are community leaders that post just as bad code samples, Phil Haaack posted a how-to in handling uploading files via a MVC controller recently.

When I looked at the sample there was no validation on the kind of file to be uploaded. As one commenter posted "what was stopping someone from uploading an aspx page and an exe to the server and then executing the exe from the page".

Is that a decent practice too? You should rethink who you throw your verbal daggers at. There are probably as many "community" bad apples as there are Microsoft bad apples. It's just the "community" does not throw it's own to the wolves as often.

8/3/2010 9:58 AM | WilliamH

# re: Software Development is Hard, Get Over It!

@WilliamH

Personally, had I read Haack's post, I would have called that out just as quickly. We do let people off too quickly that have better reputations or more friends in the community.

Generally, there is this meme coming out of MSFT that bad practices are ok for "novices" - which is infuriating. We don't sell novice surgery kits to hopeful DIY surgeons, nor should we be selling "DIY software" platforms that creates database tables or otherwise involves code.

That said, there are perfectly good tools, like Rails, that are accessible to true up and coming developers, which allow you to write code that uses better practices. 8/3/2010 12:10 PM | Aaron Erickson

# re: Software Development is Hard, Get Over It!

Software development has nothing in common electrical engineering or bio chemistry. They are highly regulated industries; I cannot read “Electrical Engineering for dummies” and call myself an electrical engineer. Nor can I read “Prescription drug making for dummies” and start producing tablets to sell.

I can however read “PHP for Dummies” (and get perhaps, ¼ of the way through) call myself a software engineer and whore my skills on Rentacoder. Clients don’t have a clue about best practices, if horrible code spits out a pretty page than that’s all they care about. If good code spits out an ugly page, they will be disappointed. Eventually clients will learn that some coders are better than others, some will produce code that can be maintained and others not. Its there choice what type of coder to pay for. For some projects a hobbyist might be okay, or a high school kid. A bridge is not required; coders will pickup the skills the market demands them to pick up. If tomorrow every client suddenly only desires coders with a B.C.S.c, than people will move towards getting them. If clients are okay with cheap, they have a hobbyist or high school kid to go to.
8/3/2010 12:17 PM | Will

# re: Software Development is Hard, Get Over It!

Bad code spit out by novices costs very large companies, governments, and people generally *billions* of dollars. The costs to the economy of this kind of guidance from Microsoft are astoundingly high, and completely avoidable.

The code gets written. It becomes expensive to maintain, because of this crap, which leads to CIOs buying crapware packages instead of using crapware code written by novices embedding SQL into web pages. Then these same novices integrate stuff together the same crappy way, making the mess bigger and bigger.

The only reason more companies don't go out of business is because the practice is so fricking pervasive, that most companies suffer more or less equally as a result of this learned helplessness. 8/3/2010 12:35 PM | Aaron Erickson

# re: Software Development is Hard, Get Over It!

pfffffft! :-)

There is hard things to program and easy things. Programmers *can* be really snobby and buy into a whole lot of bollocks about doing things "properly" without realizing the only reason they have to use *cool* patterns and abstractions etc is because we have made things harder than they should be.

web apps? pump data into html? pump requests through a few rules back into data. It is a pretty simple process that should be simple for most people to put together, Its not hard, its only hard because of the tools, languages, and frameworks.

Whats hard about a lot of web apps is the User Experience. Other than that, they are often fundamentally simple

The hard stuff, well, image processing, , architecting enterprise systems, real time control, providing some kind of "smarts", games, etc.

just because you put your web app together with Dependency injection, testing frameworks, mocking frameworks, repositories, MVC, design patterns, etc etc.....does not fundamentally its hard, its just an *overly* complicated way to achieve something thats essentially easy.

note: the "you" is the general random "you" as opposed to anyone in specific :-)



8/5/2010 4:39 PM | Keith Nicholas

# re: Software Development is Hard, Get Over It!

But software development is difficult, sophisticated, uses complicated IDE's, and if you aren't creating software according to professional standards then no, you shouldn't be doing it.... We're building complex systems...

Let me FTFY:

No. In a word... No.

SOME of you are building complex systems. SOME of you are concerned with enterprise security. But that's just SOME.

I do not know for certain, but given 20 years experience doing this, I'd say that the "productivity developers" outnumber the "enterprise developers" by a LARGE margin.

When the switch from VB6 to .NET came, from where came the loudest outcry? From Application developers, that's where.

For every attempted "enterprise" app, there are literally dozens, if not hundreds of productivity (that is, departmental, or small business) apps that actually get written, delivered and implemented.

I have written and implemented hundreds of such one-off, and single purpose apps. And it is not uncommon for me to get a "call back" from some of those clients years, even a decade later, and they are still using them just fine.

"Enterprise" sounds big, but small and medium size businesses (and their small and medium size apps) eclipse the enterprise market by far. And so do their developers.

11/13/2010 4:35 PM | Kirby L. Wallace

Post a comment