views:

54

answers:

4

Is it harder to develop a low level module in such domain as networking, database, etc?

I find it's harder to me to write one, if it is the base of a large project and everyone

in the project will use it. It seems experienced gurus always make it perfect.

I want to know are there guidelines to develop that and what should I do to get these work

done in the future?

+3  A: 

As an EE graduate, and I SE by profession, I would say that one is not necessarily harder than the other, they're just different.

When writing low level software such as drivers, kernels, etc. one has few abstractions tools available, which makes writing the software somewhat harder. When writing systems, however, one has plenty of abstractions that make development easier; but the sheer magnitude, complexity and size of "enterprise" apps, makes it just as hard as any other kind of software or engineering for that matter.

I'd say that writing different kinds of software is like writing different kinds of stuff: poetry, prose, etc. When you haven't practiced one style much, you'll find that it's difficult to write it.

Esteban Araya
A: 

Study, study and more

I thought, to develop any modules with any level, you must have basic knowledge of these. It can refer to many departments.

You must have an plan and project management to do this.

You read some other project to understand what you should do.

noneno
+1  A: 

It depends on your experience and what counts as "harder". I, for one, prefer writing low-level and library kind of stuff and am somewhat bored by plain application logic. So to me, writing the latter is actually harder because I have to spend more time doing things I don't want to do to design it and make it work.

More objectively speaking, while low-level modules are not able to rely on as many abstractions and require better implementation precision than front-ends, you also have a much more control environment in many cases. You can control your interface and test it with less real-world interference. You have more creative control over the design because developers can put up with more weirdness than users can.

And naturally, if the task your module has to accomplish is well-defined, then it will probably be easier to implement. But that's true of any part of software, be it low-level or end-user-facing.

siride
@siride: I don't think low level modules the OP is referring to is the "libraries" you speak of. I think he's referring to code that controls the movement of your printer head, for example.
Esteban Araya
He didn't really say what level, specifically, he was talking about. Even so, I think the same type of thinking applies.
siride
+1  A: 

I highly recommend this presentation: http://www.infoq.com/presentations/effective-api-design

The key factors to developing a successful low level module:

  • Good computer science knowledge, which comes from university
  • Good Architecture, which comes from experience and clear thinking
  • Good API design, which comes from lessons learned from using (programming with) other libraries
  • Good Software Engineering, to ensure high quality (few bugs) and timely delivery

Large scale low level modules are usually a large-scale collaborative effort. It may take a long time and many iterations for the module to improve to a high quality.

rwong

related questions