<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Dan Heller on Medium]]></title>
        <description><![CDATA[Stories by Dan Heller on Medium]]></description>
        <link>https://medium.com/@daniel.heller?source=rss-94254bb837a8------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*EGeTMzM6izZUOULbkIaiKg.jpeg</url>
            <title>Stories by Dan Heller on Medium</title>
            <link>https://medium.com/@daniel.heller?source=rss-94254bb837a8------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 04:43:26 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@daniel.heller/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[My Book: Building a Career in Software]]></title>
            <link>https://medium.com/@daniel.heller/my-book-building-a-career-in-software-e8d9df4cbb09?source=rss-94254bb837a8------2</link>
            <guid isPermaLink="false">https://medium.com/p/e8d9df4cbb09</guid>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[career-advice]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Dan Heller]]></dc:creator>
            <pubDate>Tue, 06 Oct 2020 00:15:41 GMT</pubDate>
            <atom:updated>2020-10-06T00:15:41.161Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CjXtgNH9zPLJdMkPplz-UQ.jpeg" /></figure><p>I’ve had the privilege in my career of mentoring dozens of talented junior colleagues. When I wrote <a href="https://medium.com/@daniel.heller/ten-principles-for-growth-69015e08c35b">Ten Principles for Growth as an Engineer</a><em> </em>based on those experiences, I was startled by how strongly other engineers responded; people reached out to me again and again for guidance about career, professionalism, and just about every flavor of engineering challenge. That hunger for advice solidified my belief that our industry has a wasteful gap in how we train software practitioners. Programmers leave universities and bootcamps equipped to write code, but they typically have only trial and error to teach them every other aspect of professional software engineering. In many cases — very much including my own — that means a lonely struggle to figure out how to navigate the real world of building software as a profession.</p><p>My book, <a href="https://www.amazon.com/dp/1484261461"><em>Building a Career in Software</em></a>, is now available; it aims to fill this gap. The book is a manual for the transition from training to industry, a guide to the essential skills that instructors don’t need and professionals never think to teach: landing jobs, choosing teams and projects, asking good questions, running meetings, on-call, debugging production systems, writing documents and emails, making the most of a mentor, leading projects, etc. etc. etc., as well as a small selection of industry-focused technical subjects.</p><p>I hope this work can help anyone trying to build a technical career in the software industry, from university students starting internships to bootcamp attendees applying for jobs to working engineers building momentum for the promotion to “Senior Engineer.”</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e8d9df4cbb09" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ten Principles for Growth as an Engineer]]></title>
            <link>https://medium.com/@daniel.heller/ten-principles-for-growth-69015e08c35b?source=rss-94254bb837a8------2</link>
            <guid isPermaLink="false">https://medium.com/p/69015e08c35b</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[career-advice]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[software-engineering]]></category>
            <dc:creator><![CDATA[Dan Heller]]></dc:creator>
            <pubDate>Mon, 24 Jul 2017 03:53:12 GMT</pubDate>
            <atom:updated>2017-07-31T16:01:02.167Z</atom:updated>
            <content:encoded><![CDATA[<p>In February, an engineer I’d managed for over a year moved to a new team. In one of our last 1:1s, I mentioned that he’d recently done some good project management. He replied that he’d had an epiphany about self-direction; he’d decided that he needed to own everything about his work, not just his code, to make sure his projects succeeded. I was impressed with him and, instantly, disappointed in myself — I’d long considered ownership the most important thing for young engineers to learn, but I’d somehow left this engineer to discover that for himself.</p><p>I decided then to write up the practices that I think lift a newly minted software engineer from amateur to professional: the path from fixing bugs as an “Engineer 1” to leading major projects as a “Senior Engineer.”</p><p>I firmly believe that those skills can be taught, but for my part, I learned the ideas you’ll read below The Hard Way over ten years in Silicon Valley. I’ve covered some ground in that decade; I hacked on the kernel at a well known fruit company in Cupertino for six years, threw away everything I knew to pursue an interest in distributed systems, spent a year at a startup that became a Unicorn and was subsequently acquired (AppDynamics), became a manager, ended up managing over 20 people at Uber, and eventually returned to my roots as an programmer. I hope that reading this list, however incomplete it may be, saves you some of the mistakes that educated me; I sure wish someone had sent it to me when I was 22.</p><ol><li><strong>Reason</strong> <strong>about business value</strong>: Reason like a CEO. Understand the value of your work to your company and take responsibility for reasoning about quality, feature-richness, and speed. Your job isn’t just to write code; your job is to make good decisions and help your company succeed, and that requires understanding what really matters.</li><li><strong>Unblock yourself</strong>: Learn to never, ever accept being blocked; find a way by persuasion, escalation, or technical creativity. Again, your job isn’t just to write the code and wait for everything else to fall into place; your job is to figure out how to create value with your efforts.</li><li><strong>Take initiative</strong>: The most common misconception in software is that there are grown-ups out there who are on top of things. Own your team’s and company’s mission. Don’t wait to be told; think about what needs doing and do it or advocate for it. Managers depend on the creativity and intelligence of their engineers, not figuring it all out themselves.</li><li><strong>Improve your writing</strong>: Crisp technical writing eases collaboration and greatly improves your ability to persuade, inform, and teach. Remember who your audience is and what they know, write clearly and concisely, and almost always include a tl;dr above the fold.</li><li><strong>Own your project management</strong>: Understand the dependency graph for your project, ensure key pieces have owners, write good summaries of plans and status, and proactively inform stakeholders of plans and progress. Practice running meetings! All this enables you to take on much bigger projects and is great preparation for leadership.</li><li><strong>Own your education</strong>: Pursue mastery of your craft. Your career should be a journey of constant growth, but no one else will ensure that you grow. Find a way to make learning part of your daily life (even 5 minutes/day); get on mailing lists, find papers and books that are worth reading, and read the manual cover to cover for technologies you work with. Consistency is key; build habits that will keep you growing throughout your career.</li><li><strong>Master your tools</strong>: Mastery of editor, debugger, compiler, IDE, database, network tools, and Unix commands is incredibly empowering and likely the best way to increase your development speed. When you encounter a new technology or command, go deeper than you think you have to; you’ll learn tricks that will serve you well again and again.</li><li><strong>Communicate proactively</strong>: Regular, well-organized communication builds confidence and goodwill in collaborators; knowledge-sharing creates an atmosphere of learning and camaraderie. Share knowledge and set a regular cadence of informing stakeholders on project goals, progress, and obstacles. Give talks and speak up judiciously in meetings.</li><li><strong>Find opportunities to collaborate</strong>: Good collaboration both increases your leverage and improves your visibility in your organization. Advancing your craft as an engineer requires you to have an impact beyond the code you write, and advancing your career requires, to a certain degree, building a personal brand at your company. Cross-functional projects and professional, respectful collaboration are critical to both.</li><li><strong>Be professional and reliable</strong>: Think of yourself as a professional and act like one. Come to meetings on time and prepared, then pay attention. Deliver what you say you will and communicate proactively when things go wrong (they will). Keep your cool and express objections respectfully. Show your colleagues respect and appreciation. Minimize your complaining; bring the people around you up, not down. Everyone appreciates a true professional; more importantly, it’s the right way to behave.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=69015e08c35b" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>