Wednesday, October 13, 2010

The Passionate Programmer : Part 2: Investing in your product

This are my notes from part 2 of The Passionate Programmer: Creating a Remarkable Career in Software Development written by Chad Fowler.

Part 2 : Investing in your product

Learn to fish

How does it work ? Why does it have to happen ? You may not even be able to answer the questions, but the very act of asking them will put you into a new frame of mind and will generate a higher level of awareness about your work environment.
Pick one of the most critical but neglected tools in your toolbox to focus on. Allot yourself a small period of time each day to learn one new thing about the tool that will make you more productive or put you in better control of your development environment.

Learn how businesses really work

Get a basic book on business (e.g. "The Ten Day MBA").

Find a mentor

Be a mentor

Look for someone to take under your wing. Help out on an online forum.

Practice, practice, practice : work through the 21 kata's, keep a diary of your experiences with the kata. When finished write your own and share it.

The way that you do it

Pick a software development methodology, and pick up a book, read websites and join a mailinglist. Look at the methodology with a critical eye.

On the shoulders of giants

Studying the work of masters is an essential part of becoming a master. Pick a project and read it like a book. Make notes. Outline the good and bad. Find at least one trick or pattern that you can use from it. Find at least one bad thing that you observed that you will add to your "What not to do" checklist.

Automate yourself into a job

Pick a task your normally do repetitively, and write a code generator for it. Think of a way to raise the level of abstraction of what your generating. Research Model Driven Architecture (MDA).

Friday, October 8, 2010

The Passionate Programmer: Part 1: Choosing Your Market

The next notes I want to publish here are my notes from The Passionate Programmer: Creating a Remarkable Career in Software Development written by Chad Fowler. As the subtitle says this book is all about creating a remarkable career in software development.

It's a nice book with a lot of short chapters with useful advice. Here are my notes from Part 1.

Part 1: Choosing your market

Lead or bleed ?

Make a list of early, middle and late adoption technologies based on todays market. Push yourself to find as many technologies in each part of the spectrum as possible. Mark the ones you consider yourself strong in and the ones you have some experience with. Where are most of your marks. Are there any technologies around the far edges you have some special interest in ?

Supply and demand

Research the current technical skill demand. Use job posting and career sites to find out which skills are in high demand and which in low demand. Find the websites of some offshore companies. Compare the skills available via these companies with the high demand list you compiled.

Coding don't cut it anymore

Know your business. Schedule lunch with a business person. Pick up a trade magazine for your company's industry.

Be the worst

Find a "be the worst" situation for yourself. Check for developer group meetings nearby. Pick an open source project that you admire and whose developers appear to be at the "next level" and create a patch for a bug or a new feature.

Invest in your intelligence

Learn a new programming language that makes you think in a new way? Work through enough code that you truly feel the difference.

Don't listen to your parents

For each career decision : asses how much the decision was driven by fear?

Be a generalist

List the dimensions for which you may or may not be generalizing your knowledge and abilities. For each dimension write your specialty. To the right write one or more topics you should put in your "to learn" list.

Be a specialist

Learn about the internals of how your VM works, study what happens when you compile a source file. Teach a class on some aspect of a technology, teaching is one of the best ways to learn.

Don't put all your eggs in someone else's basket

Try a small project twice, once in your home base technology and the once in a competing technology.

Love it our leave it

Go find a job you're actually passionate about. 2 wees log excitement to go to work (1-10). Next 2 weeks : plan every morning how you're going to make tomorrow great. Each day log yesterdays excitement level. If after 2 weeks things look sad you might consider a major change.

Next: Part 2: Investing