• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Learning Software Engineering/Design

tatteredpotato

Diamond Member
I'm graduating with a Batchelors Degree in EE in a few weeks and am starting a Masters Program in Comp Engineering this fall. One thing I'm interested in getting better at is my Software Design skills. I've written several small projects for school/work/fun and I've come up with designs that work for them, however I realize they wouldn't cut it in a larger project. I typically program in C#, Java, or C++, so my designs are all Object Oriented.

I realize one of my biggest issues is lack of preparation ahead of time, and too much "design at the keyboard". A big reason for this (for me) is that I'm not familiar with the tools and methods available to assist in designing programs on paper, so I essentially end up writing a program to test out ideas, and then essentially start over once I have a feel for what seems to work. Obviously this involves lots of wasted time and I'm interested in learning ways around that. Lately I've been looking at getting involved in an open source project to help expose me to some people who are more skilled and have experience in this area, but I figured I'd look for advice here too.
 
1. Check out Design Patterns.
2. Get an internship at a large software company, preferably one that has their sh*t together.
 
Thanks for the book links, I used the Head First series to learn my first language (C#) about 4 years ago and I enjoy the style of writing.

As for internships at good software shops, I always thought it was kind of a chicken-egg deal... Good companies can pick the more experienced applicants, but these experiences are what make someone more experienced.
 
Once you start your masters program you'll probably meet people who know people, and thereby you will do some networking of your own.

After all, it's not what you know, its who you know.
 
What is your definition of "Design?" Is it the specific step in your SDLC where you start the design phase? Is it the translation of requirements into an implementable code in regards to the language and environment?

High level design works very similar regardless of the technologies you are using, especially in OOD. Much of this work is analytical and there are tons of process methodologies you can use to put it on "paper." It all depends on how complex the project is to determine how detailed the high level design should be.

Low level design, where you are trying to find the "best" solution for your language and environment comes from experience or from other's experiences. This is, what I call, my personal repository. Once I hammer out a really good piece of functionality, I will reuse the same design if it fits the requirements. A best practice of sorts.

Of course, determining "best" is another skill altogether. Is the solution best because it meets requirements? It is fast? It is legible? It is reusable? Can it be implemented on time?
 
Read up on some SDLC methodologies and design patterns/models. There is so much more than being very good at programming to building a complex piece of software. People always put programmers and software engineers together but I've always thought of them as two completely different titles and responsibilities.
 
Read up on some SDLC methodologies and design patterns/models. There is so much more than being very good at programming to building a complex piece of software. People always put programmers and software engineers together but I've always thought of them as two completely different titles and responsibilities.

Yea I've definitely grown to realize this over the past few years, but I feel now that I have a solid foundation in programming I'm ready to start learning more design techniques.

I've been reading that Head First Design Patterns book and it definitely seems like a good start. Thanks for all the input.
 
Back
Top