1. Complexity from Aggregation
2. Few Clever Algorithms
3. Software is Never Done
4. Writing Matters
5. People Interaction
1. Complexity from Aggregation
As Martin Fowler famously said, “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” The syntax of functional programming just isn’t readable at a glance.
(Full Story: Functional programming: A step backward – JavaWorld)
For technical writers who haven’t had the experience of designing software requirements specifications (SRSs, also known as software functional specifications or system specifications) templates or even writing SRSs, they might assume that being given the opportunity to do so is either a reward or punishment for something they did (or failed to do) on a previous project. Actually, SRSs are ideal projects for technical writers to be involved with because they lay out the foundation for the development of a new product and for the types of user documentation and media that will be required later in the project development life cycle. It also doesn’t hurt that you’d be playing a visible role in contributing to the success of the project.
(Full Story: Writing Software Requirements Specifications (SRS))
SourceMaking — is the best information source on the Web on such software development topics as design patterns, refactoring and UML. A lot of information freely available through the site’s pages, so feel free to use bookmarklet to leave interesting chapters for further reading.
(Full Story: SourceMaking – teaching IT professionals)
The disappearance of one of the world’s most beloved computer programmers – Ruby, Ruby on Rails, and _why
Hackety Hack begins by introducing kids to Ruby, _why’s programming language of choice. Then it explains that programming is nothing more than giving a stupid, unthinking computer your commands. You are its boss. It answers to you. And you can make it do nearly anything with simple keystrokes and enough practice.
- 90% of programming jobs are in creating Line of Business software
- Engineers are hired to create business value, not to program things
- You radically overestimate the average skill of the competition because of the crowd you hang around with
- “Read ad. Send in resume. Go to job interview. Receive offer.” is the exception, not the typical case, for getting employment
- All business decisions are ultimately made by one or a handful of multi-cellular organisms closely related to chimpanzees, not by rules or by algorithms
The Five Essential Questions for the first phone-screen with an SDE candidate:
1) Coding. The candidate has to write some simple code, with correct syntax, in C, C++, or Java. 2) OO design. The candidate has to define basic OO concepts, and come up with classes to model a simple problem.3) Scripting and regexes. The candidate has to describe how to find the phone numbers in 50,000 HTML pages. 4) Data structures. The candidate has to demonstrate basic knowledge of the most common data structures.5) Bits and bytes. The candidate has to answer simple questions about bits, bytes, and binary numbers.
Please understand: what I’m looking for here is a total vacuum in one of these areas.
(Full Story: five-essential-phone-screen-questions)
A long paper trail of software engineering studies has shown that many internal code metrics (such as methods per class, depth of inheritance tree, coupling among classes etc.) are correlated with external attributes, the most important of which is bugs. What the authors of this paper show is that when they introduce a second variable, namely, the total size of the program, into the statistical analysis and control for it, the correlation between all these code metrics and bugs disappears.
(Full Story: Size is the best predictor of code quality)