As a programmer, what do you think of when you hear "software development"?
Do you think about code?
Perhaps about frameworks and design patterns, or technologies and computers?
Do you think about all the technical stuff you like, or the things that make software development challenging and lots of fun for you?
These things are important. They are part of the software you create. But how about things that are not technical in nature?
When you hear "software development", do you also think about how the software gets built? What methodologies are used to do the work? How decisions are made to steer things in one direction or another? How goals and deadlines get set? Do you think about everyone involved in building the software, or how business people interact with developers? How everyone behaves? Do you also think about these things? Or do you pay attention only when they negatively affect the work you do as a programmer?
Programmers tend to focus their efforts and attention on technical aspects. Again, that's important. But it's insufficient.
"How" software gets built is just as important as "what" goes into it. You can't leave everything else besides tech stuff and writing code to just happen to you, or you will be in for some nasty surprises. I'm referring to annoying and disruptive situations that will make your job as a programmer difficult and frustrating. If you enjoy programming just like you appreciate a walk on the beach, these disruptive situations will be like the quicksand you can step into if you're not paying attention to where you're going.
This book is about such situations, and possible solutions to avoid them so that developing software doesn't feel frustrating. It puts up some signs to warn about the quicksands. It's a "Heads up!" for the new generations of programmers to know what else to expect from the job when pursuing a career in software development.
So don't step into quicksands. Get the book now and learn to recognize and avoid them.
|Intro||[Heads up] [Nothing new]|
|Staff developers||[Neglected process] [A different approach] [Prepare] [The interview] [Loopholes] [Match check] [Performance reviews] [Frequent discussions] [Bad apples] [The working environment] [Exit interview] [It's really important]|
|Continuous learning||[English] [Solid foundations] [Mistakes] [Mentors] [Technologies] [Specialist vs. Generalist] [Too much information] [Problem-solving skills] [Business domain] [Your investment] [Unlearning] [Programmer vs developer] [Team Lead] [Team Lead first] [Delegate] [Motivation] [The working environment] [Trade-offs] [Health] [Sustained effort]|
|Software projects||[Estimations] [Requirements] [Negotiations] [Forgotten bits] [Risks and assumptions] [The plan] [Change] [Measure] [Define success] [The deadline] [Sacrificing quality] [Other sacrifices] [Lessons learned] [It takes longer]|
|The Business-IT divide||[Us versus them] [Cost] [Shadow IT] [The real cost] [Bridging the gap] [Trust] [Build trust]|
|Meetings and reports||[Interruptions] [Bad meetings] [Bad reports] [Better reports] [Better meetings] [Necessary]|
|Bad bosses||[Technical (in)competency] [Cogs in the machine] [A losing battle] [Not bad] [Not as bad]|
|Bad managers||[In the middle] [Communication] [Failed communication] [Tools of the trade] [Project Manager first] [Overdoing it] [Just another boss] [Management style] [Lost cause]|
|Bad developers||[Lack of skills] [Poor attitude] [Over-Engineering] [Not code? Not interested!] [Failed communication] [Lost cause]|
|Outsourcing||[Still your people] [Hidden costs] [Different cultures] [Final responsibility]|
|Scrum||[You do it!] [The Scrum Master] [The Product Owner] [Values and principles] [Empowerment] [Technical considerations] [It takes time]|
|Picking up the pieces||[Professionalism] [Just one layer]|