
A Fresh Graduate's Guide to Software Development Tools and Technologies (2012) [pdf] - federicoponzi
http://www.comp.nus.edu.sg/~seer/book/2e/
======
stevesimmons
Note that is a very old version of the book. I found the current version from:

\- The very bottom of the 2012 PDF page [1] mentions the related doc
generation project, MarkBind [2]

\- The MarkBind site mentions two software engineering courses whose materials
were written using it.

\- One of these is TE3201 [3], which links to the current version of the book
[4].

[1]
[http://www.comp.nus.edu.sg/~seer/book/2e/](http://www.comp.nus.edu.sg/~seer/book/2e/)

[2]
[https://markbind.github.io/markbind/](https://markbind.github.io/markbind/)

[3] [https://nus-te3201.github.io/website/admin/index.html](https://nus-
te3201.github.io/website/admin/index.html)

[4] [https://se-edu.github.io/se-book/](https://se-edu.github.io/se-book/)

------
geofftrojans
It is frustrating how widely applicable this book is. Universities across the
country are struggling to adequately prepare students for software engineering
jobs.

It is also frustrating that this book from 2012 is still applicable in 2018.
I'm not sure what the solution is or what would drive change here.

~~~
adrianN
In my opinion, it is not the mission of universities to prepare students for
jobs. Universities are research institutions that prepare students for
research. That's why all professors have to do research. Vocational schools
exist for the purpose of job training. Big companies can also train their own
workers.

~~~
hydrox24
In Australia, we intentionally collapsed most of our vocational schools into
our public universities a couple of decades ago. I guess that was fairly
unique because it was such a conscious decision. Universities in the modern
world _are_ in fact vocational schools for many professions. Class sizes and
student numbers alone often show this.

And while big companies can train their own workers, many choose to off-load
that competency to the universities as well. In Germany, many of the largest
export employers have a symbiotic relationship with local (to the factory)
Universities. The companies help determine the course structure and syllabus,
and in return the graduates are offered good living wage jobs straight out of
university with continued training and certification.

Australia is a long way off of the German model, so all I know is what I've
read in the Economist and a couple of other publications, but there are
certainly murmers of moving to such a model in Australia as well.

"University" just doesn't mean what it used to mean.

~~~
mattmanser
As I say elsewhere, just look at other disciplines taught by universities.
This is a totally untrue view of what universities are.

They are learning and research institutions. They've never just been research
institutions. And the vast majority of fields don't really bother teaching any
R&D to under-grads, they just teach them the subject and practical application
of it in the real, job, world.

In the UK we used to have vocational schools too, that all got changed to
universities. It didn't mean no vocational training went on in universities.

------
Waterluvian
Version control should be chapter 1!

~~~
davewritescode
Agreed, this was missing from my college curriculum and learning git well has
been a huge asset in terms of productivity.

When you understand version control, you can make changes without fearing that
you can't get back to where you are right now.

~~~
arjo129
We were introduced to version control in our first year. The only problem was
that till we started managing large code bases, most people found it very
difficult to understand why we used Git in the first place.

~~~
SiVal
Yes! Git is not merely _version control_ but a specialized sort of version
control. I've run into the opposite problem, when I've tried to use Git for
projects that weren't source code.

Without thinking about it, just by reflex, I'd create a project directory for
a new project: Web pages that were almost entirely English text, or a
Photoshop project, or an e-book project...and init my git to track it and set
up my server to push it to.

Before long, usually while trying to come up with a good commit message, I'd
wake up and ask myself, "Wait, why am I tracking this? Am I just assuming it's
the responsible, proper thing to do?"

It's not enough that the project be something that iteratively improves. Git's
usefulness comes mainly from _text_ data with extremely demanding constraints
(hard to get it to work, easy to break, harder to repair than to start again,
working/broken is not just a matter of taste), especially when you have
multiple contributors, each of whom is more likely to break something than to
fix it.

If you have non-text projects (ex: photo editing) or text that can usually be
"fixed" by just pushing forward rather than starting again, Git still has
benefits, but they may not be worth the costs.

You don't really see the value of Git unless you're writing code that you're a
little scared to write.

~~~
icebraining
I have to say I don't agree. I find git useful every time I do work that is
even just a bit exploratory - which is almost all of it. E.g. doing a mockup
in Inkscape - I'll commit, then create a new branch and try out some idea. If
I'm not satisfied, I'll just checkout master and keep working on the previous
version.

In fact, I think this is a common behavior; almost every PC I've seen has a
poor man's version control implemented by the user by copying the file and
renaming it (e.g. Report_1.doc, Report_2.doc, Report_2_valid.doc, etc),
despite none of them being programmers or working with code.

~~~
SiVal
But that's my point. I'm not saying that other things don't need version
control at all but that many don't need the specialized, heavyweight version
control features provided by Git. For many things that need version control
(I'm not saying they don't), the lightweight "poor man's version control" of
saving named copies is fine, so it will seem puzzling to someone doing only
that kind of work why anyone would go to the trouble of learning something as
complex as Git when a much easier solution is available.

It's when doing a specialized kind of work with more demanding constraints
that you see the benefits that justify the cost of learning and using Git. If
you never do that specialized work, the specialized VC of Git might not be
worth it. "Poor man's" VC might make more sense.

------
mettamage
Did anyone read this book? Any thoughts about it? I looked at it _really_
quickly and it seems good, but I haven't read it and then used the knowledge.
So how useful is the actual knowledge itself in a practical context?

Also, I would be curious to know if there is a 2017/18 version of it.

~~~
mtrn
> Did anyone read this book?

Just skimmed through a few pages, found a small name error:

> Java millennium (Java ME) which is made to create Embedded Systems

~~~
godelmachine
Thought Java ME stands for Java Micro Edition

~~~
ChristianGeek
It does. OP is saying that “Java Millenium” is an error.

------
azifali
I really like the structure / topics of the book, except EJB - the bloatware
packaged with Java for years.

------
mmjaa
No section for "Embedded" development? I think its missing a big part of the
current picture ..

~~~
carlmr
We're always the first to be forgotten.

~~~
cbHXBY1D
If anyone has a book similar to this for embedded - I'd love to know.

I've recently been reading Elecia White's _Making Embedded Systems_ which is
the closest thing to this book I can think of.

~~~
carlmr
That would have been my first suggestion.

------
godelmachine
Where can I get a full PDF version of this book?

Really wanna read this!

Edit → Got it! The links there are PDFs to each chapter. I can download them
individually and create a book :) Thanks all.

------
dreamygeek
Cloud computing should come later in the order. Students should build their
foundation from the basics. Cloud computing is more of an advanced topic.

------
mohangaradi
well written. Quick previews for all you need to get started as software
engineer

