Philosophies for Software Engineers
&gt; 1. You do not have to prove yourself.<p>&gt; Software is a new field and nobody knows how to do it. If someone says you are unqualified and therefore you must do maintenance work, you should question that person. We have an upside down system where the people who are paid the least do the crappiest work. They tend to be young and naive.<p>Software development has been meticulously studied for over 40 years. From Dejurka, &#x27;Goto&#x27;s considered harmful&#x27; to Parnas, &#x27;On the Criteria To Be Used in Decomposing Systems into Modules&#x27;, Design patterns, academic studies, Pair Programming etc.<p>&gt; 2. You are not a commodity.<p>Your HR department has a list of &#x27;potential hires&#x27; to replace any position in your company at a moments notice. The quickest way to build a bad reputation is to think you are not replaceable and act accordingly.<p>&gt; 3. Software engineering is an art and a science but rarely both at once.<p>&gt; The planning and design process is an art, but once the requirements are in place you can proceed more deterministically.<p>No matter how brilliant you architecture and plan is there will inevitably be new requirement or changing requirements that cause you to continuously revise re-architect and re-write large part of your code base. Both design and Implementation are a messy evolving process.<p>&gt; 4. You are not your job.<p>If you do not love this then its not for you. Thats true in many professions and Programming is no different.<p>&gt; 5. The world is a distributed system.<p>I could not parse any overall point to this passage.<p>&gt; 6. You are not a lottery ticket.<p>???<p>&gt; 7. Choose action over planning.
Talk is cheap and execution is scarce.<p>&gt; This is why nobody cares about your ideas, they care about seeing your prototype. John Mayer said that all he had to do to become successful is finish his songs.<p>Writing a plate of spaghetti code that does some neat thing is not what makes you an employable dependable developer. Writing clean well documented well though out efficient code that meets the specifications is what does that. That take planning and discipline.<p>&gt; 8. Software engineering is full of lies and people who will try to take advantage of you.<p>This is a bit psychotic.<p>&gt; 9. You are not your credentials nor your past.<p>You very much are. You do not necessarily have to be an Academic golden boy but you will be judged by your previous experience and projects.<p>&gt; 10. As a software engineer, you can take career risks aggressively because your downside is fundamentally capped.<p>That works out great unless you have to pay 2500$ rent each month or buy food and clothing for your children etc. Not everyone that writes software is a 19 year old trust fund baby...