- Is Manual Testing Needed?
- Exercises in Programming Style
- Programming for Grade 8
- 6 Years of Thoughts on Programming
- Benefits of Continuous Delivery
- More Good Programming Quotes, Part 2
- Developer Testing
- Programming Conference – QCon New York 2017
- Developers – Talk To People
- Code Rot
- Programmer Career Planning
- Software Development and the Gig Economy
- Book Review: The Effective Engineer
- Things Programmers Say
- Developer Book Club
- Book Review: Release It!
- 18 Lessons From 13 Years of Tricky Bugs
- Learning From Your Bugs
- More Good Programming Quotes
- The Wisdom of Programming Quotes
- Ph.D. or Professional Programmer?
- Social Engineering from Kevin Mitnick
- Recruiting Software Developers – Initial Contact
- Coursera Course Review: Software Security
- Lessons Learned in Software Development
- Book Review: Clean Code
- Coursera Course Review: Computational Investing Part 1
- Programmer Knowledge
- 5 Reasons Why Software Developer is a Great Career Choice
- A Response to “Why Most Unit Testing is Waste”
- What Makes a Good Programmer?
- Switching from Java to Python – First Impressions
- Antifragility and Software Development
- 5 Unit Testing Mistakes
- Unit Testing Private Methods
- A Bug, a Trace, a Test, a Twist
- Session-based Logging
- Finding Bugs: Debugger versus Logging
- TDD, Unit Tests and the Passage of Time
- Automatically Include Revision in Log Statement
- 7 Ways More Methods Can Improve Your Program
- LinkedIn – Good or Bad?
- Great Programmers Write Debuggable Code
- SET Card Game Variation – Complementary Pairs
- Programmer Productivity – Interruptions, Meetings and Working Remotely
- What Do Programmers Want?
- Coursera course review: Algorithms: Design and Analysis, Part 2
- Blog stats for 2012 (by WordPress)
- Working as a Software Developer
- 4 Reasons Why Bugs Are Good For You
- Book Review: How Google Tests Software
- Top 5 Surprises When Starting Out as a Software Developer
- Programmer Productivity: Emacs versus IntelliJ IDEA
- Why I Love Coding
- Coursera course review: Design and Analysis of Algorithms I
- Mac OS X Break Programs Review
- Favorite Programming Quotes
- How I Beat Repetitive Stress Injury
- Introduction to Databases – On-line Learning Done Well
- 10 million SET games simulated using “Random among ‘most similar’ Sets”
- 10 million SET games simulated using “Random among available Sets”
- 10 million SET games simulated using “First found Set”
- SET® Probabilities Revisited
TAG CLOUDalgorithms book break program bug bugs career code coding coursera creativity databases debugging emacs ergonomics face to face Google hiring ide idea integration testing intellij interruption job knowledge learning linkedin logging logging framework logging level love Mac OS X meeting meta methods office on-line course probabilities production software productivity professional software development programmer programming programming course programming job python quotes recruiting refactoring Repetitive Stress Injury review revision RSI security session session-based SET game simulation software development statistics stats stretches subversion surprises svn tdd test-driven development testing time trouble-shooting unit-test unit testing university version work working
Many software developers have a tendency to avoid talking to people. They would rather just rely on written communication in chats, email or issue tracker tickets. However, talking to people more can make them more effective as software developers. Here are some examples: Continue reading
In my experience, code can rot in two distinct ways. The first case is code that hasn’t been used in a long time, but where the environment has changed so it is no longer possible to run the code. In the second case, the code still works, but has gradually become complicated and hard to work with. The first case is unusual, but straight forward to fix. The second case is very common, but unfortunately hard to fix if left for too long.
Here are my thoughts on programmer career planning. You should always stay employable, mostly by changing jobs regularly (every five years or so). When changing, don’t wait until you have to. Your negotiating position is much better when you can turn down a potential new job.
These days it is common to hear arguments that software development is becoming gig based. In other words, companies will not hire programmers for permanent positions. Instead, they will put together temporary teams of independent contractors from anywhere in the world to complete projects.
This is no doubt true for some software development tasks. However, for companies whose core product is software, this model makes very little sense. Continue reading
Last month we finished reading “The Effective Engineer” by Edmond Lau in the book club at work. It is a great book full of practical advice on how to get more done as a software developer. In fact, it is one of the three books I think all programmers would benefit from reading (the other two are Code Complete and The Pragmatic Programmer).