
Ask HN: I'm starting a new job as a PHP developer tomorrow - grover_hartmann
I have to admit I haven&#x27;t touched a single line of PHP code in more than 8 years.<p>I&#x27;ve been working with Rails remotely since 2008 (~7 years in total). However, remote work has died out and decreased dramatically.<p>Is there anything you guys could recommend? I haven&#x27;t worked with PHP in years so I&#x27;m worried about my performance with PHP on the new job.<p>I know how to program but I&#x27;m not familiar with PHP anymore, in fact I don&#x27;t recall anything about it.<p>The reason I&#x27;m going back to PHP? Sorry, it&#x27;s not my decision, and there aren&#x27;t many local jobs in my area, so I&#x27;m taking what I can, and that&#x27;s work with PHP at the moment.<p>Hopefully I&#x27;ll find other jobs with saner languages in the future.<p>One other thing I want to mention is that I&#x27;m a Linux person, I can&#x27;t use anything else. However, I&#x27;ve noticed that the company that wants to hire me is a Windows shop, they use Windows mostly (Windows desktops, Sublime Text, and so on).<p>Do you guys think it&#x27;s acceptable if I use Arch Linux on a VM (VirtualBox) and I fullscreen the VM? I use things like i3-wm and vim and I&#x27;m really used to tiling WM these days, so using Windows would be very painful.<p>I asked if I could install Arch Linux on bare metal but they said no. They said I have to use a VM. They also mentioned I can&#x27;t bring my own hardware.<p>I&#x27;ve been using Linux for 15 years and I currently use Arch Linux at home and on my laptop.<p>Suggestions welcome.
======
akg_67
Based on your post, my concern is that you will stick out as a "sore thumb"
insisting on using Arch Linux in a Windows shop. Basically, you are signaling
to your employer and coworkers that you will be difficult to work with.

Please spend first 90 days building a good reputation and impression for
yourself with your supervisor and coworkers and later use your reputation to
drive any changes. By insisting on using Arch Linux, you will be wasting yours
and others time in accommodating your preferences in recreating the workflow
and tools that everyone else is used too.

You should focus on learning the tools and workflow used by your employer. You
are no longer a freelancer who can chose their own tools and workflow, you are
a cog in a machine now and learn how machine operates.

Your first priority should be to learn Windows and Development tools used by
your coworkers. Find out what PHP framework and technology stack being used.
And learning them is your next priority.

~~~
Osiris
The company likely has a processes setup around the fact that everyone is
running their dev environments the same way. Trying to do things differently
without yet understanding their process will only complicate things.

For example, at my job everyone runs OS X, so build scripts, etc are all
written with that assumption in mind.

~~~
akg_67
Agree with you 100% and that is the point of my comment. Understand the tools,
workflow and processes used by the employer first.

~~~
grover_hartmann
I'll do that. I've already asked what they use for their stack, they mentioned
they don't use any PHP frameworks.

They mentioned they use OOP and things like that, but their codebase appears
to be plain PHP with no frameworks.

------
cholmon
Start with [http://www.phptherightway.com/](http://www.phptherightway.com/)

~~~
wyclif
I came here to say exactly this. Glad I scrolled down before creating a dupe.
Seriously, this is the most helpful thing I keep coming back to. You don't
have to read everything linked to here all at once; just progressively keep
looking at the resources linked to here as slowly as you need to in order to
understand what is going on.

------
joemaller1
PHP isn't as bad as it used to be. Yes fundamental operator order is erratic
and I'm forever googling basic functions, but the ecosystem has produced some
good stuff over the past couple years.

Read up on Composer and Packagist. It's basically NPM, Gems, or PyPi for PHP.
There are now solid interoperable libraries for most common tasks.

\- [https://getcomposer.org](https://getcomposer.org)

\- [https://packagist.org](https://packagist.org)

Laravel is a great framework, but quite a bit of what's out there seems to be
built on the Symfony foundation.

\- [http://laravel.com](http://laravel.com)

\- [http://symfony.com](http://symfony.com)

There are also great coding guidelines and tools that are evolving. The PHP
Framework Interoperability Group has produced some solid coding standards and
tooling has followed.

\- [http://www.php-fig.org](http://www.php-fig.org)

WordPress...it makes me sad. But it's ubiquitous. If you're stuck doing WP
work, take a look at the Roots project. It's a sane, modern approach with good
tooling.

\- [https://roots.io](https://roots.io)

~~~
gtirloni
I've been called a few times to troubleshoot slow PHP websites only to
discover they were using Symfony and could not sustain 5req/sec on fairly
beefy hardware. All kinds of PHP optimizations couldn't make it run much
faster (which complicated the infrastructure a lot later on). The last time
was 1 year ago so unless something impressive happened since then, I would
suggest against it.

~~~
giaour
Something impressive must have happened, as the symphony projects I've worked
on recently have been able to support far more load than what you're
describing on ec2 micro instances.

------
vhb
I did this mistake once... I'm also a linux guy, but I was working in a
company where everyone was using Os X. I did install an arch on my laptop and
used it for almost a year.

Now, with the hindsight, it was a big mistake : it did make me loose so much
time ! I did had to fix one script out of 2, the build system was not working
properly, etc... And linux and Os X are not that different !

Don't do that... Use the tools that you company gives you, and try to fit in
the company. Otherwise, you will be seen as the guy who does not want to do
stuff the same way as the others. Even if everything goes well with your
coworkers, you will end up waisting time every day.

You can install vim on windows (and sublime text does have quite a few almost
decent vim plugins). You will miss i3wm a lot, but you don't need it to do
good work.

Learn how to use the most efficiently the tools your company gives you
(Windows and PHP). If you want to change something (at least for your first
couple of month), try to change something that will make everyone life easier,
not more complicated.

~~~
grover_hartmann
I don't think it's a mistake at all to prefer to run GNU/Linux on a OS X or
Windows environment.

If they have trouble helping you just because you run a different OS then they
don't sound like they're skilled enough to begin with.

And it's probably them who can't adapt rather than you.

------
bdg
PHP is quite possibly one of _the_ best languages to use for a project these
days.

The community is massive and full of people who are deeply passionate about
best practices. There are more quality frameworks than you can hope to keep up
with (if your ranking of quality is the meager toy that rails is, you'll be
happy here). The frameworks are really good at abstracting away the awful API
choices the language makes.

That said, if you're writing in "PHP" instead of a given set of frameworks...
you're working at a company that hired someone who wrote a lot of code with no
experience of what makes a good system... but you'll soon find the JS looks
exactly like that too, because that's not a PHP problem.

For your OS: You can get windows analogues to all those things (in the case of
vim, you can also just... use vim on windows). They offered me a mac or a
windows machine where I work and I opted for mac because it's just BSD4... but
like... the WM is a pile, and I wish I was using Windows98 over mac. But none
of that has stopped me from making huge contributions to the team.

~~~
mathgeek
> I wish I was using Windows98 over mac.

You can always install Windows via Boot Camp. There's little reason to even
have this kind of discussion these days.

------
deftnerd
Modern PHP is a sane language. A lot has changed in 8 years. I second Cholmon
with his recommendation for phptherightway. I also highly recommend using a
modern and developer friendly framework like Laravel. You can learn about it
quickly by watching some tutorials at LaraCasts.com. Check out the Laravel 5
Fundamentals series which is free.

[https://laracasts.com/series/laravel-5-fundamentals](https://laracasts.com/series/laravel-5-fundamentals)

------
joshstrange
Quick rundown (in no particular order):

* The language has comes leaps and bounds since you last used it

* Install composer and learn how to use it (PHP package manager)

* Read up on Laravel, IMHO it's the best PHP Framework out there right now. They guy behind it is a genius and has great vision for it.

* You'll want to use nginx + php5-fpm (No more apache and php_mod)

* Check our PHPStorm, if you are going to use an IDE you can't bear intelij IMHO and PHPStorm has support for a myriad of things

* ORM's have greatly improved, even if you aren't going to use Laravel read up on it's ORM to see what is possible

* Much more OO now especially when it comes to interacting with the DB (no more mysql_connect/mysql_query nonsense)

~~~
minot
As a satisfied PHPstorm user, I'd like to say that the parent probably meant
beat when they wrote bear

> if you are going to use an IDE you can't bear intelij

if you are going to use an IDE you can't beat intelij. They are also the
people behind resharper.

Readers, if you are a student, please check out
[https://www.jetbrains.com/student/](https://www.jetbrains.com/student/)

------
kijin
> _it 's not my decision, and there aren't many local jobs in my area, so I'm
> taking what I can, and that's work with PHP at the moment._

> _I asked if I could install Arch Linux on bare metal but they said no. They
> said I have to use a VM. They also mentioned I can 't bring my own
> hardware._

Beggars can't be choosers :(

Whether your Linux VM setup is acceptable will depend entirely on what the
rest of the shop is used to. For example, if they develop on Windows desktops
and deploy to Windows servers, you may need to use Windows scripts and test
for Windows-specific corner cases, which would be difficult to do on a Linux
VM. You may need to adjust all of your tools to use Windows line endings
(CRLF). You may find that some of your tools don't work correctly on a vboxsf
or samba filesystem. Be prepared to make compromises where necessary.

On the other hand, if they deploy to Linux servers, your knowledge of Linux
and your VM might end up being a valuable asset for the shop.

In any case, don't say that you "can't use anything else". Of course you can.
Learning to use a new OS or editor is not terribly different from learning a
new language. If you can learn a new language, you can certainly learn to use
Sublime Text or whatever.

Unwillingness to try a new tool just because it's outside of your comfort zone
could reflect poorly on you, no matter how well justified you think your
choices are. Your employer has shown flexibility by letting you run a VM. Try
to show some flexibility in return.

~~~
e12e
Forgot one thing in my previous comment: Active Directory/Kerberos. For
deployment etc - it's not likely to be feasible to get single-sign on to work
correctly without running on your windows Desktop/uid. If they won't let you
bring your own hw, they're not likely to allow you to join your vm to the AD
domain either. Unless they're deploying to Linux and/or using github/bitbucket
and/or plain pw auth etc.

------
mmilano
Sounds like your ability to adapt is extremely low. If you're truly stuck and
there's no other jobs available immediately for you, then this is a great
opportunity to work on that problem.

Another thing you should consider is to stop apologizing for using PHP. That
should only be coming from people with a fair bit of experience with it before
they decide to hate it for themselves, and followers who express that opinion
because they think it's cool.

~~~
grover_hartmann
Why would you think that I have a problem to adapt just because I prefer to
run Linux as my development environment?

~~~
elechi
You literally stated in your top post that "I'm a Linux person, I can't use
anything else". That doesn't sound like someone who is adaptable.

~~~
grover_hartmann
I just like Linux a lot, it's not that I can't use Windows, I just don't want
to.

I'm more familiar with Linux, so I'm faster with it. What's wrong about that?

------
getsat
>They said I have to use a VM. They also mentioned I can't bring my own
hardware.

>Suggestions welcome.

Keep looking for a new job. I guarantee this is the tip of the nightmare
iceberg you're about to hit.

I hope I am wrong, but I've seen this enough times before to know that I'm
probably not.

~~~
grover_hartmann
Can you elaborate on this?

------
bkanber
PHP is a decent language and ecosystem these days. Perhaps one of the minority
of ecosystems that are actually on the rise rather than on the decline. It
still has lots of warts, but whatever. Forget the idea that PHP is "taking
what you can" or not a sane language -- you're in it now so might as well get
up to speed with best practices and use it the best you can. I promise you can
build compelling software in PHP.

[http://www.phptherightway.com/](http://www.phptherightway.com/) is a great
resource for most things you'll need to know when working with modern PHP.
Definitely start here.

Familiarize yourself with the ecosystem by poking at the most popular
frameworks, at least skimming the docs to understand the types of things they
provide and how they're structured: Zend, Symfony and Symfony Components,
Laravel, Slim, Silex. Study WordPress, the "stereotypically bad" piece of
software, for anti-patterns, but there's also a lot of good stuff in there and
some improvements on the roadmap.

Composer is the npm of PHP. Check out packagist (horrible UI though) or browse
github's PHP repos to find some of PHP's commonly used packages, like Monolog
and phpunit. You can build a simple app in minutes in Laravel, and even put
together a small product MVP using 90% boilerplate code within a matter of
days on Laravel. Since there's a growing ecosystem for these tools now, it's
getting easier and easier to write quality software in PHP, and it's actually
a relatively pleasant experience.

Plus shipping and managing PHP in production is a breeze -- it's the most
widely supported web platform, after all. We've got support on great CI
systems like circleci and scrutinizer-ci.

Anyways, start there and good luck!

------
bliti
Bringing your own hardware is not allowed in the majority of places (not
located in SV). Its a security matter. Running a VM is fine. That shows they
are flexible. you might run into issues if their whole development environment
is built around windows and windows tools. Be open to it.

PHP is a language like any other. it has good and bad parts. what might prove
useful is to focus on learning the codebase.

Good luck!

------
gargarplex
I am shocked you can't get remote work with 7 years exp. Rails.

~~~
fowkswe
This was my thought. I'm happily employed so I haven't been looking, but are
others finding that Rails work is drying up as well?

~~~
jbhatab
I am pretty new to rails, 3 years, and I haven't had any trouble finding work.
Remote work is definitely not the easiest thing to find but it hasn't been
that hard to find. Although I have a front end speciality which is much more
in demand than traditional backend heavy developers right now.

------
grover_hartmann
What about the fact that they all are using Windows on the desktop? I'm a
Linux person and I can't use anything else. I've been using Linux for 15
years.

I asked if they can let me install Linux on the computers, they said I have to
use a VM.

I'm fine with a VM but I also need my window manager of choice (i3-wm) and so
on.

Would it be okay if I install Arch Linux on VirtualBox and I fullscreen the
VM? What about performance then?

All the other developers are using Windows and putty shells and Sublime Text
as their editor.

I asked if I could bring my own laptop but they said I can't.

Suggestions welcome.

~~~
eli
Have you actually tried VirtualBox? Depending on the underlying hardware, the
performance really might not be an issue.

~~~
e12e
I'm not sure VirtualBox have an edge compared to "native" Hyper-V. If you're
running windows 8.1 pro (which would be the sane choice, before 10 arrives) --
you have to change the boot options[1] if you want proper hw support for
VirtualBox.

Changing from Linux to Windows is indeed rather painful. As others have
mentioned, depending on deployment/process etc -- you might still be better
off trying to live on the windows side.

I'm not a windows dev, but from what I've seen mentioned by others -- running
php on windows w/IIS and SQL server works fine -- but you'll want to have a
test/dev environment that matches prod -- or you'll just constantly run in to
pain points -- especially if the team isn't on board/interested in investing
in a full heterogeneous environment.

For a small example with node, see eg:

[https://github.com/keithamus/npm-scripts-
example/issues/5](https://github.com/keithamus/npm-scripts-example/issues/5)

Hopefully your new team has some automation in place -- it's unlikely it'll
work out of the box under linux if it's never been tested/linux has never been
a requirement.

On the bright side, vim works fine under windows, and with some mingw32/64[2],
things aren't entirely painful. If you're used to script things with ruby,
that should be even easier. Having to work with cmd.exe and it's nasty
find.exe rather than grep, feels like running with one leg tied behind your
back.

Lack of proper tabbed/keyboard-friendly window manager is probably the biggest
productivity drain -- thought there are some alternatives for that too[3].

[1]
[http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxA...](http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx)

[2] [http://msys2.github.io/](http://msys2.github.io/)

[3] [https://github.com/fuhsjr00/bug.n](https://github.com/fuhsjr00/bug.n)

~~~
mauricemir
You can migrate Virtual box vm's to hyperv which works very well.

------
fsloth
If it's a small shop then depending on the atmosphere being the only linux-vm
guy might cause undue friction? If you are really talented then sticking out
of the crowd with odd stuff might be considered as a positive characteristic
but since you are not yet a PHP god I would approach the job from the point of
view of learning their tools first - it's just me, though so I would not
presume to give you any tactical advice.

A few things come to mind of Windows if you choose to give it a try. 1\. Vim
for windows works pretty well 2\. It's pretty fast to switch to a different
application context on windows using win-key. On windows 7 still win + 1-9
switches to the cirresponding application on task bar - and the order of
applications can be reordered by dragging a mouse.

Windows nowadays is pretty solid tech but it's aimed at a general demographic
so finding all the power user levers take a while. Of these:

-powershell ISE is a really nice command line (well, better than cmd) and it comes out of the box

\- some people swear by automation through autohotkey scripting

\- win-r is a fast way to start apps and scripts

\- hitting win key and typing the name of an application is a fast way to
start applucations by just the exe name

Good luck on the new job!

------
RossM
Politically and practically, I'd suggest you use Windows and their tooling to
start with. When you're getting started they'll likely need to help you get
setup and that's going to be difficult for them if you're using other tools.
Later on, you can make more informed decisions about switching tools after
getting familiar with their applications.

If they run production on Windows as well, there are likely bits of the
software that won't be cross-platform (file paths, encodings are common ones).
We have a mix at our shop (Windows, OSX and Linux) and I think we only get
away with it due to everyone knowing what to avoid (through experience). We
still step on each other's toes occasionally. It wouldn't look good if you
spent a lot of time at the start fixing things just to get it to work on your
platform.

I think Sublime has a vim mode (or plugin) that should give you similar
keybindings and it has panes a bit like vim.

As to getting back to PHP, some good links have already been posted. Get up to
date on Composer and PHPUnit, look at whatever framework they're using and
build some demo apps on it.

------
tomasien
PHP is totally fine, it gets a bad rep it doesn't deserve. It's not as elegant
as Python or Ruby but it's acceptable and it'll be more familiar than you
think. If you're looking for the Railsy-est thing in PHP it's Laravel. If you
can move them to Laravel (if it would be a good MVC fit) you'll be happy you
did. Otherwise, don't stress about it too much.

~~~
digitalzombie
Its bad rep was well deserve with PHP 4 and below.

It wasn't OOP at the start and had weird warts.

As PHP mature it's much better than its past and have fixed some complaints
but unfortunately the bad rep still stuck. Plus there are some fundamental
warts that you can't just fix.

In general, I'm happy that PHP is thriving and continue to improve. It looked
bleak for a while and I regretted choosing PHP over Python or Ruby for web
dev.

I find that it doesn't matter much if you're using MVC frameworks such as
Laravel. You hardly need to memorize or use crazy stuff with PHP and most of
the time you're just googling framework stuff how to grab param from route,
etc...

I've done Scala Play framework that that language get in the way a lot on top
of googling how to do stuff with play framework.

But I suspect that this observation is because more of dynamic language vs
type language more than PHP vs Scala.

\--

I think in general it's just language evolve and got better.

Perl started web dev and then PHP was better then Python came along and after
that Ruby. With each subsequent programming languages the languages got
prettier and had more thoughts into the design.

------
twunde
I'm working at a PHP shop that also uses Windows and we've had a python
developer with a strong linux background come in and make the same transition.

I'd strongly just using windows for the first month or two. Which would you
rather spend time on? PHP (the code you're being paid to build/support) or
getting Arch Linux set up and working seamlessly on your machine. Besides
you'll probably be running your PHP in a vm anyway. Also I'd suggest checking
out fiddler, which is windows freeware.

PHP is a fairly sane language especially if you're using something like
Laravel which is very similar to Rails. That said be prepared to run into some
PHP oddities. One of them is that PHP will die with uncatchable fatal errors
if there is a syntax error. PHP -l is a linter that should catch that. Also
it's worth knowing that PHP is a wrapper over C, and really moved to OO in 5.3
so some build in functions will return an error code or true /false instead of
throwing an exception

~~~
grover_hartmann
They are using raw PHP, no Laravel or any other frameworks are involved.

------
jakejake
If you look into composer and start writing code using and contributing
packages, you may be surprised at how similar modern PHP development is to
other popular languages. Also look at the PSR standards, especially for auto
loading at [http://www.php-fig.org/psr/](http://www.php-fig.org/psr/)

------
homulilly
PHP and Windows seems like an odd combination to me, but definitely get a feel
for how things are run, both in terms of workflow and interpersonal
interaction before you start insisting on certain tools/environments. I work
at a company that's a windows shop (it's possible to use other operating
systems but requires jumping through a bunch of hoops that make it not worth
it) but I rolled with it until I got a better feel for things.

PHP is honestly a pretty swell language despite its irregularities and
reputation amongst people who work with newer, more trendy language. It has a
great community, and the language its self keeps getting updated with modern
features, even if they're sometimes done in a slightly awkward manner.

------
gremlinsinc
Sounds to me like you're too needy and stuck in your ways, no offense.. I love
my ubuntu desktop as much as anything, but there are PLENTY of ways to make
windows into winux. gitbash for one, you can install vim, nano, and pretty
much all the linux command-line tools onto windows. It's not perfect, but
doable...personally I don't like the performance of VM's, they're slow and
buggy from time to time. As for php, it's not so bad, especially if you use
Laravel as I found moving back and forth from rails to laravel and vice versa
they're very comparable frameworks, Laravel mirrors rails in lots of ways
better than most php frameworks, if you're doing wordpress God save you. lol

------
CamTin
Don't worry. PHP itself shouldn't be an issue. It's bog standard ALGOL-y
syntax with some weird corner cases that aren't that hard to avoid.

The bigger gotcha will be getting used to the execution model, if it's
standard LAMP-y type application hacking. Remember that, in this style of app,
all of your state has to be either explicitly stored in a backend or in the
browser cookies. The script begins not knowing anything, lives briefly,
excreting HTML or JSON, and then dies, leaving behind only what it's
explicitly saved. In some ways it's more complex than a Rails-type model, and
in others it's simpler.

In any case, you should be up to speed in a week or two of hacking at it full
time.

~~~
eli
Aren't there pretty popular PHP frameworks that take care of magic like
parsing variables and routing URLs and persisting state?

~~~
krapp
Of course, tons. But there's also a lot of PHP out there that doesn't use
frameworks. Knowing how things like sessions and headers and requests actually
work is probably more immediately useful for PHP than other languages, for
which there's likely one de facto framework that everyone uses by default.

In PHP-land you're just as likely to walk into a job where interns have been
hacking crazy stuff into a Simple Machines forum for the last year as
encounter something built on a framework. And of course, mixing javascript,
css and php together with whatever happens to come out of a database query
(which is encoded in who knows what) is not at all uncommon, so even frontend
knowledge is helpful.

------
syntropy
If you want to run Windows 7 in a VM using a Linux box, I would recommend
using KVM ([http://www.linux-kvm.org/page/Main_Page](http://www.linux-
kvm.org/page/Main_Page)) instead of using VirtualBox. I initially tried using
Virtualbox to run Windows on Linux... but it had a hard time running multiple
applications (multiple Visual Studio's, etc...). When I switched to using KVM,
it was light years faster. All performance/reliability issues disappeared
instantly. Never going back. So I now have all the goodness of Linux with an
almost bare metal Windows VM.

~~~
grover_hartmann
I agree, KVM on Linux is amazing and there's nothing that comes even close
with performance IMHO.

However, my problem is that I'm stuck with Windows 7 at work, so I have to use
something like VirtualBox to run Arch on it.

I'll try getting one of those SATA-over-USB converters and I'll get my SSD to
the office, hopefully they'll allow me to boot over USB so I can run Arch and
bypass Windows completely.

------
imakesnowflakes
>Do you guys think it's acceptable if I use Arch Linux on a VM (VirtualBox)
and I fullscreen the VM?

Yes. This should work provided you have a system with memory > 8GB, but you
might face some issues when using a folder shared from windows. If something
involves symlinks, then tread carefully. And file access to a shared folder is
pretty slow too.

I am not going into how bad of an idea is going back to php since you have
already considered it. But I will just say that php is every bit as bad as it
was. I recommend /r/lolphp for an updated list of php gotchas...

~~~
okbake
I wouldn't say that php is every bit as bad as it was 8 years ago, its
certainly made a lot of progress. There are now namespaces,
generators/iterators, closures, traits, interfaces, type hinting, and with
composer theres even a dependency manager. The zend engine rework coming later
this year in php7 gives really promising performance boosts and some other
niceties like ASTs.

Granted some (most?) of these modern php features aren't quite as nice as they
are in other languages, and there is still some weirdness (/r/lolphp as you
mentioned), and an inconsistently named standard library... But php has made
some strides in the past 8 years. Once you're aware of the gotchas its not as
bad as everyone makes it out to be.

~~~
imakesnowflakes
This is the important bit

> Once you're aware of the gotchas (and keep your head stuffed with this
> useless info the whole time you are working with PHP) its not as bad as
> everyone makes it out to be..

First, you need to be aware of the gotchas. But this is not possible because,

1\. We are still counting (take a look at /r/lolphp).

2\. Even experienced (8+ years) php programmers know a very small percentage
of the php gotchas. See this
[http://www.reddit.com/r/PHP/comments/2zhg6z/how_true_is_this...](http://www.reddit.com/r/PHP/comments/2zhg6z/how_true_is_this_php_bashing/cpjhx04).
You can see one commenter. who is an experienced php programmer who was not
aware of that at the time. I myself had 8 years of experience when I was
bitten by this bug..ahem..feature. So unless you haven't gone through all of
/r/lolphp and commited the relavent ones to your memory and check them for
every single line of code you write, you are bound to be bitten by one of
those.

3\. And documentation does not help. Even php core develpers agree that some
of the important parts of documentation is incorrect but NO ONE CARES about
things like that. Every one is out to implement flashy new stuff that fanboy
can brag about. Even the existing documentation is does not go much deep into
details. eg this is the php.net page regarding exception handling

[http://php.net/manual/en/language.exceptions.php](http://php.net/manual/en/language.exceptions.php)

compare this to Pythons documentation

[https://docs.python.org/3/tutorial/errors.html](https://docs.python.org/3/tutorial/errors.html)

[https://docs.python.org/3/reference/compound_stmts.html#try](https://docs.python.org/3/reference/compound_stmts.html#try)

If you want to find how a return statement behaves inside of a finally block,
the info simple isn't present in the php's documentation. Because "who cares
because we copy stuff from java, so we probably does not not what is important
to document anyway."..

I mean, it is very subtle and the recent 'facelift' that php received makes it
hard to see its truly shitty nature for newcomers. When they look, they see
all the shinny new features (often half assed) and think that php is on the
same level as Python or whatever....

------
grover_hartmann
I've just noticed the Windows machine I'm supposed to be using to write code
doesn't even have admin access.

So I'm limited to what is installed, I can't even install anything on this
machine.

This is bullshit.

------
crispy770
I work at a Windows shop and have a few coworkers who prefer linux. I run
Debian at home and occassionally need to help the non windows guys with
windows specific issues. What's important is that you are able to produce as
much on a non windows environment as a windows environment, and that you don't
have to tap resources in order to do so.

Whether you run in a vm, whether it's windows, osx, arch-linux, gnome, mint,
etc is really just semantic.

------
chrismcb
Use the tools they provide you. It will be easier, otherwise you will be
constantly fighting differences between your version and everyone else. As a
professional using a different os shouldn't be that big of a deal. There is a
bit of a learning curve, but there always is when you join a new company. What
editor do you use? You can probably find something similar on windows. Pretty
much every other tool you need the company will provide

------
sparrish
Your dev environment should ALWAYS run the exact same versions of the stack as
production. With PHP, there are too many little gotchas between even minor
versions.

~~~
mauricemir
Amen brother/sister. You should ALWAYS be working on a dev server set up
identically to the test and live servers.

At one place we insisted on having machines from the same production run and
ideally all the DASD (disks) would be from the same batch.

~~~
brianwawok
Eh. Sometimes variety is nice. Exposes some new bugs sometime.

If your tools are sane, dev how you want.

~~~
mauricemir
Sorry if your developing software professionally you DO NOT take risks like
that.

------
tdy721
I would suggest you get a PHP server going right away. Install WordPress or
another PHP framework. Make the server do something useful. Use PHP to receive
POSTed CURL messages.

Use PHP... and you will become familiar with PHP.

------
grover_hartmann
I've already got Arch Linux working on a VM and I have it on full screen now,
I can't notice the difference.

It took me 10 minutes to set up Arch this way. And this was on my first day at
this job.

Why should I go back to Windows?

------
grover_hartmann
I've just asked if they use Laravel here or another framework and they
mentioned they don't use any frameworks at all.

Other than AngularJS, they stick to plain PHP.

------
umren
are you trolling?

1) if you switching from ruby to php because there is no remote jobs.. well,
there are plenty of them

2) you didn't touched php for 8 years, so why go php?

3) they are locked to windows and you can't install linux, well, don't go
there

4) you can't even bring hardware! wtf! don't go there x2

~~~
grover_hartmann
No.

1) Show me where are the remote jobs you're talking about. I've been looking
for a long time on different sites, e.g."Who's hiring" (Hacker News), We Work
Remotely, and so on.

The standard response I always get is:

\- "Thanks for reply. No this is Full time only."

\- "Thanks for getting in touch. Unfortunately we are looking for someone to
join our London team."

\- "Unfortunately, we’re not looking for remote engineers at this time."

I've got enough of this shit.

2) Because there's nothing else I can find. I don't live in SF where you have
a lot of options about where to work and the toolsets you can use.

3) They allowed me to use Linux on a VM so I _can_ use Linux. I'm just stuck
with a VM for now and while that's not optimal, it's still better than
nothing. I'll try booting Linux from USB and see if they allow me to do this,
so I can bypass Windows completely.

4) Lots of companies don't allow this, and this is full time employment, not
your cool and fancy startup in SF where they allow you to play video games in
the office.

------
stephenr
This is why we can't have nice things.

