Documentation and training
Coding when it’s needed
Coding when it’s needed
User interface design, interface inspections
User interface design is not that difficult, you just have to make it a priority and base your decisions on the reality of the user experience. simple techniques like user interface inspections are incredibly useful. Paying attention to the UI results in better designs and better code – the whole program is better structured when it’s based on a solid understanding of the user experience.
Use cases and software requirements
I believe I was the first person to teach use cases in the United States. I was on a panel with Magnus Christerson, one of the co-authors of Object Oriented Software Engineering, so I had the luck to be introduced to that book a few months before its publication. Use cases are only one of the great ideas it introduced, and I immediately began using their method. That was a lot of fun, to finally have a method that worked and could be taught. Here’s a link to some of my advertising from that time.
Object oriented design
Object oriented design is about finding classes – kinds of objects – that will be easier to code and maintain. Some of these represent things in the world and some of them are computer world objects like buttons and textboxes. But the key classes in a good design don’t really represent anything – they are defined by what they do for us. In programming terms, the key classes use polymorphism and inheritance to allow for program maintenance. I discussed these ideas in a paper published in the Journal of Object Oriented Programming in 1994:
C, C++, C#
I’ve programmed and taught the C family of languages for more than 30 years. Here’s some of my advertising from the early 90’s.
Documentation is an afterthought in most software development, and it’s really hard. Even when we try, it is very difficult to describe something as dynamic as a program. In this post, I describe the Programmer’s Picture Book, a project to improve communication about software, by treating the code as a graphical object.
Training and presentation
I have more than thirty years experience speaking in front of groups. I’ve taught a variety of technical subjects, done comedy and storytelling on stage, acted in award winning dramatic productions, and spoken before crowds at political rallies. My strengths are rigorous thinking, clear and simple language, humor, and attention to the audience.
I have built programs in all of the following areas. I know enough about them to design to them, and I can program in these languages, but somebody who does it all the time would be faster.
R and statistical analysis
Recently I’ve been working in R, writing a package which uses R and C++ to do smooth regression.
SQL, data modeling
I’m good at SQL and data modeling, but I’m reluctant to call myself an expert in this area because it gets into database admin issues like capacity planning, security, and so on. I am quite fast at designing tables and keys, SQL procedures and normalization, but I don’t know a whole lot about DB admin issues.
Adobe web tools
I have enough knowledge of Fireworks, Dreamweaver, and Flash to get a site built, but guys who do it full time are a lot faster than I am.