STDIO Ghana
CABP
STDIO Ghana:
a course on
Software Engineering
STDIO Ghana
CABP
The Course:
Two Weeks, starting today
Each Day:
Warmup, Discussion Session (AM)
Framework Session, Project Work (PM)
Group Activity / Instructor Presentation (evening, optional)
Course concludes with Group Presentations of Product
STDIO Ghana
CABP
Instructors
- Carl Pearson
- Dane Brown
- Tom Hladish
STDIO Ghana
CABP
Instructors
- Carl Pearson
- Dane Brown
- Tom Hladish
STDIO Ghana
CABP
Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project.
-- Linus Torvalds
STDIO Ghana
CABP
"Normal" coding process?
STDIO Ghana
CABP
The process we want to avoid:
have some data, need some answer
When the answer is obtained, move on to the next problem
do {
slap_code_together()
} while(getAnswer(data) == null);
STDIO Ghana
CABP
Why avoid that?
STDIO Ghana
CABP
Lifecycle associated with Bad Habits:
need answer => code-code-code => get answer*
...need slightly-different answer 6mo later?
try to re-use code-code-code,
...try-harder,
...waste time,
ultimately start from scratch
...some else needs to use code?
they try to re-use code,
...try harder, waste time,
but ultimately start from scratch
...and now don't like you or your work
*not necessarily a right one!
STDIO Ghana
CABP
Lifecycle Possible with Good Habits:
frame question =>
code/test/document =>
get answer*
...need slightly-different answer 6mo later?
review docs, write test for new requirements,
code/test/document to pass new + old tests,
deliver
...some else needs to use code?
they review docs, solve their problem
...are so happy with how easy it was,
they give you their modifications
*still not necessarily a right one, but better odds!
STDIO Ghana
CABP
So what ARE these Good Habits?
STDIO Ghana
CABP
CABP
CABP
Some Good Habits We Will Practice:
- framing the problem (what is needed, when),
also known as: requirements
- breaking big problem into small pieces
(and re-assembling them)
- using the right tools, using the tools right
- delivering a product that is not just an answer
Some Perspectives:
- code as expression of problems, transformations
- (programming) languages as being a way of thinking
- balancing grace vs gritty pragmatism
STDIO Ghana
CABP
bad habits can be faster
obsessing on good habits can make for more work, same crap product
Software Engineering is NOT a formula;
it's a recipe, it's a style
We can learn good vs bad, but
there is a lot of room for taste between them
&
there's no equation to guarantee success
!! WARNING LABEL !!
STDIO Ghana
CABP
What tools do you normally use?
STDIO Ghana
CABP
Some Software Engineer's Tools:
version control
team coordination:
e.g., schedule, assigned tasks
documentation
automation tools:
e.g., build tools
understanding tools:
e.g., syntax highlighting